CA2598312C - Multimedia filesystem having unified representation of content on diverse multimedia devices - Google Patents
Multimedia filesystem having unified representation of content on diverse multimedia devices Download PDFInfo
- Publication number
- CA2598312C CA2598312C CA2598312A CA2598312A CA2598312C CA 2598312 C CA2598312 C CA 2598312C CA 2598312 A CA2598312 A CA 2598312A CA 2598312 A CA2598312 A CA 2598312A CA 2598312 C CA2598312 C CA 2598312C
- Authority
- CA
- Canada
- Prior art keywords
- filesystem
- multimedia
- devices
- media
- applications
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/60—Information retrieval; Database structures therefor; File system structures therefor of audio data
- G06F16/68—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/686—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using information manually generated, e.g. tags, keywords, comments, title or artist information, time, location or usage information, user ratings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/60—Information retrieval; Database structures therefor; File system structures therefor of audio data
- G06F16/63—Querying
- G06F16/638—Presentation of query results
- G06F16/639—Presentation of query results using playlists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/464—Multimedia object, e.g. image, video
Abstract
A multimedia system comprising at least two multimedia devices having differing filesystems and/or no filesystem(s), one or more applications, and a media filesystem adapted to communicate with the at least two multimedia devices and the one or more applications is disclosed. The one or more applications are adapted to issue filesystem commands and/or receive filesystem responses in a common filesystem representation with respect to files of the at least two multimedia devices. The media filesystem may accept the filesystem commands from the one or more applications and may provide responses to filesystem commands to the one or more applications using the common filesystem representation.
Description
MULTIMEDIA FILESYSTEM HAVING UNIFIED REPRESENTATION OF
CONTENT ON DIVERSE MULTIMEDIA DEVICES
INVENTORS:
Dan Dodge Peter van der Veen BACKGROUND OF THE INVENTION
1. Technical Field.
[0001] The present invention relates to a filesystem for use in a computer, embedded io controller, or the like. More particularly, this invention is directed to a filesystem that represents content from various, disparate multimedia devices in a unified filesystem representation for access by one or more higher-level applications.
CONTENT ON DIVERSE MULTIMEDIA DEVICES
INVENTORS:
Dan Dodge Peter van der Veen BACKGROUND OF THE INVENTION
1. Technical Field.
[0001] The present invention relates to a filesystem for use in a computer, embedded io controller, or the like. More particularly, this invention is directed to a filesystem that represents content from various, disparate multimedia devices in a unified filesystem representation for access by one or more higher-level applications.
2. Related Art.
[0002] Multimedia systems may employ multiple media players for playback of multimedia content. Such players include cell phones with Secure Digital (SD) Cards that play encoded music files, Sony PlayStationPortable units that use Sony Memory Stick technology for storage and playback of encoded music files, iPod devices that employ internal hard disk drives for storage and playback of media files, including video media files, and other media players, including those that employ Universal Serial Bus (USB) flash memory. Media files may be encoded on these devices using a variety of different formats such as MPEG layer III (MP3) encoding, Windows Media Audio (WMA) encoding, Windows Media Video encoding, RealAudio encoding, RealVideo encoding, DVD video, CD audio, and the like files.
[0002] Multimedia systems may employ multiple media players for playback of multimedia content. Such players include cell phones with Secure Digital (SD) Cards that play encoded music files, Sony PlayStationPortable units that use Sony Memory Stick technology for storage and playback of encoded music files, iPod devices that employ internal hard disk drives for storage and playback of media files, including video media files, and other media players, including those that employ Universal Serial Bus (USB) flash memory. Media files may be encoded on these devices using a variety of different formats such as MPEG layer III (MP3) encoding, Windows Media Audio (WMA) encoding, Windows Media Video encoding, RealAudio encoding, RealVideo encoding, DVD video, CD audio, and the like files.
[0003] Such devices do not include filesystems that are organized in a readily accessible manner. Rather, these systems may use proprietary formats, often with digital rights management (DRM) protection, which makes it very difficult to access and manage their data content with a generic personal computer or embedded processor. As a result, many software and hardware systems that interact with these devices and systems must be custom designed to accommodate their proprietary device formats.
These multimedia systems and devices therefore are not readily adaptable to today's interconnected world in which a vast interactive network of personal computing devices reside in almost every home and office, as well as a quickly growing proportion of automobiles, wireless personal digital assistants and telephones.
SUMMARY
These multimedia systems and devices therefore are not readily adaptable to today's interconnected world in which a vast interactive network of personal computing devices reside in almost every home and office, as well as a quickly growing proportion of automobiles, wireless personal digital assistants and telephones.
SUMMARY
[0004] A multimedia system that comprises a plurality of multimedia devices having differing filesystems and/or no filesystem(s), one or more applications, and a media filesystem adapted to communicate with the plurality of multimedia devices and the one or more applications areis disclosed. The one or more applications may be adapted to issue filesystem commands and/or receive filesystem responses in a common filesystem representation with respect to files of the plurality of multimedia devices.
The media filesystem may accept the filesystem commands from the one or more applications and may provide responses to filesystem commands to the one or more applications using the common filesystem representation.
The media filesystem may accept the filesystem commands from the one or more applications and may provide responses to filesystem commands to the one or more applications using the common filesystem representation.
[0005] In one construction of the system, the common filesystem is in the form of a POSIX, UNIX, or the like, interface. Still further, the one or more applications may include a human machine interface (HMI) module and/or a multimedia engine (MME) module.
[0006] Other systems, methods, features and advantages of the invention will be, or will become, apparent to one with skill in the art upon examination of the following figures and detailed description. It is intended that all such additional systems, methods, features and advantages be included within this description, be within the scope of the invention, and be protected by the following claims.
BRIEF DESCRIPTION OF THE DRAWINGS
BRIEF DESCRIPTION OF THE DRAWINGS
[0007] The invention can be better understood with reference to the following drawings and description. The components in the figures are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention.
Moreover, in the figures, like referenced numerals designate corresponding parts throughout the different views.
Moreover, in the figures, like referenced numerals designate corresponding parts throughout the different views.
[0008] Figure 1 is a block diagram of an exemplary multimedia system 100 that may include a unified filesystem representation of media files on a plurality of media devices.
[0009] Figure 2 illustrates one manner of implementing the filesystem shown in Figure 1 and its relationship to other modules/components.
[0010] Figure 3 illustrates one manner in which a media filesystem may access the content of a PFS device.
[0011] Figure 4 illustrates an exemplary directory structure for a first occurrence of an iPod(R) in the system of Figure 1.
[0012] Figure 5 is a flowchart showing a number of interrelated operations that may be associated with the media filesystem of Figure 2 pursuant to obtaining a list of files from an arbitrary media device.
[0013] Figure 6 is a table illustrating exemplary fields that may be employed in media file records of the database shown in Figure 1.
[0014] Figure 7 is a table illustrating exemplary fields that may be employed in playlist file records of the database shown in Figure 1.
[0015] Figure 8 is a table illustrating exemplary fields that may be employed in a media stores table of the database shown in.Figure 1.
[0016] Figure 9 is a table illustrating exemplary fields that may be employed in a slots table of the database shown in Figure 1.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0017] Figure 1 is a block diagram of an exemplary multimedia system 100 that may include a unified filesystem representation of media files on a plurality of media devices.
As shown, the exemplary system 100 may include a Multimedia Engine (MME) module 105 that interacts with a human machine interface (HMI) module 110, as well as interacting with an 10 media module 115, that provides an interface between a plurality of different multimedia devices 120 and the MME module 105. The HMI module 110 provides an interface that may include multimodal user inputs such as voice, touch buttons and touch screens that are employed by the user to identify the content to be played and to request certain playback operations. The information acquired by the HMI
module 110 as a result of these user interactions is passed to the MME module 105. The MME module 105 obtains media file information for a requested file name, file type, genre, artist, etc., using metadata from consolidated media file information stored, for example, in a database 130. Database 130 is used by the MME module 105 to store and retrieve metadata for media files that client applications, such as the HMI
module 110, access. The client applications may use this information to display media files to a user or otherwise arrange for playback of the media files in a desired manner on one or more playback output devices/zones 125. Database 130 may support multiple connections from multiple clients in a concurrent manner. The information in database 130 may be divided between multiple files. Each database file can be stored in RAM, flash, or hard drives in a configurable manner that does not affect access by higher level applications.
As shown, the exemplary system 100 may include a Multimedia Engine (MME) module 105 that interacts with a human machine interface (HMI) module 110, as well as interacting with an 10 media module 115, that provides an interface between a plurality of different multimedia devices 120 and the MME module 105. The HMI module 110 provides an interface that may include multimodal user inputs such as voice, touch buttons and touch screens that are employed by the user to identify the content to be played and to request certain playback operations. The information acquired by the HMI
module 110 as a result of these user interactions is passed to the MME module 105. The MME module 105 obtains media file information for a requested file name, file type, genre, artist, etc., using metadata from consolidated media file information stored, for example, in a database 130. Database 130 is used by the MME module 105 to store and retrieve metadata for media files that client applications, such as the HMI
module 110, access. The client applications may use this information to display media files to a user or otherwise arrange for playback of the media files in a desired manner on one or more playback output devices/zones 125. Database 130 may support multiple connections from multiple clients in a concurrent manner. The information in database 130 may be divided between multiple files. Each database file can be stored in RAM, flash, or hard drives in a configurable manner that does not affect access by higher level applications.
[0018] The HMI module 110 may be used to implement a variety of different functions, including the following:
1. Sending requests to the MME 105 for playback and copying of media files on the devices 120. It may be allocated to the HMI module 110, as manipulated by a user, to decide which media is to be played and in what order.
The resulting request is then sent to the MME 105 for processing. Playback of the selected media to one or more of the playback output devices/zones 125 may be placed under the control of the media playback module 165 of the MME
module 105.
2. Browsing the media file contents of devices 120. The MME module 105 may access database 130 to expose soine or all of the available media to the HMI
module 110. User commands may be input to the HMI module 110 to direct the MME module to return information relating to selected media to the HMI module 110.
3. Supporting the MME module 105 browsing interface. Some devices require that the client application browse them directly. For example, when a DVD Video is played, its on-screen navigation menu appears. The HMI module 110 may be used to send navigation commands (such as up, down, left, right, play, etc.) to the device through the MME module 105 to navigate the DVD
menu.
4. Accepting notifications from the MME module 105 and responding accordingly. The MME module 105 provides event notifications to a client application. Soine examples of events that generate notifications are "song changed," "new device inserted," and so on. The HMI module 1 10 may remain synchronized with the MME module 105 and media by, for example, accepting such messages and updating itself accordingly.
1. Sending requests to the MME 105 for playback and copying of media files on the devices 120. It may be allocated to the HMI module 110, as manipulated by a user, to decide which media is to be played and in what order.
The resulting request is then sent to the MME 105 for processing. Playback of the selected media to one or more of the playback output devices/zones 125 may be placed under the control of the media playback module 165 of the MME
module 105.
2. Browsing the media file contents of devices 120. The MME module 105 may access database 130 to expose soine or all of the available media to the HMI
module 110. User commands may be input to the HMI module 110 to direct the MME module to return information relating to selected media to the HMI module 110.
3. Supporting the MME module 105 browsing interface. Some devices require that the client application browse them directly. For example, when a DVD Video is played, its on-screen navigation menu appears. The HMI module 110 may be used to send navigation commands (such as up, down, left, right, play, etc.) to the device through the MME module 105 to navigate the DVD
menu.
4. Accepting notifications from the MME module 105 and responding accordingly. The MME module 105 provides event notifications to a client application. Soine examples of events that generate notifications are "song changed," "new device inserted," and so on. The HMI module 1 10 may remain synchronized with the MME module 105 and media by, for example, accepting such messages and updating itself accordingly.
[0019] The MME module 105 may be implemented as a resource manager that handles device discovery and synchronization using, for example, a synchronization module 170.
The synchronization module 170 may be used to synchronize the consolidated media file information of database 130 with the media content of devices 120. The MME
module 105 also may provide a high-level API for managing playback (play, stop, and seek commands) using the media playback module 165.
The synchronization module 170 may be used to synchronize the consolidated media file information of database 130 with the media content of devices 120. The MME
module 105 also may provide a high-level API for managing playback (play, stop, and seek commands) using the media playback module 165.
[0020] The MME module 105 may be responsible for a wide range of functions, including the following:
1. Playing media. Such media operations may be executed by the media playback module 165 and may include seeking, pausing, stopping, changing volume, adjusting balance and fade, and so on. The playback module 165 may abstract the type of media and how it is played from the client application level, such as HMI module 110. For example, when the HMI module 110 instructs the MME module 105 to play some media in a DVD player, the HMI module 110 does not need to know whether the media is stored on an audio CD or DVD in the drive. In most cases the playback is handled by the media playback module 165 of the MME module 105. However, for some devices like iPod players or PlaysForSure devices, the MME module 105 passes the playback request to the device itself.
2. Synchronizing devices 120 and the database 130. The synchronization module 170 of the MME module 105 may be used to update the database 130 with metadata corresponding to all the media files and devices that it detects.
Client applications may browse the database 130 either directly or through, for example, the MME module 105 to browse music, create playlists, and so on.
When a media device 120 is connected to the system 100, the MME module 105 detects its presence and begins synchronizing the information on the device with the database 130. The information in database 130 may consolidate metadata from multiple, diverse devices 120 into a single format that is independent of the types of devices attached to system 100.
3. Providing a browsing interface for devices. Because of the large list of devices that the MME module 105 may support, it may be provided with a browsing abstraction layer that is the same for all devices. This allows a client application, such as the HMI module 110, to browse all devices supported by the MME 105 without having to support them directly.
1. Playing media. Such media operations may be executed by the media playback module 165 and may include seeking, pausing, stopping, changing volume, adjusting balance and fade, and so on. The playback module 165 may abstract the type of media and how it is played from the client application level, such as HMI module 110. For example, when the HMI module 110 instructs the MME module 105 to play some media in a DVD player, the HMI module 110 does not need to know whether the media is stored on an audio CD or DVD in the drive. In most cases the playback is handled by the media playback module 165 of the MME module 105. However, for some devices like iPod players or PlaysForSure devices, the MME module 105 passes the playback request to the device itself.
2. Synchronizing devices 120 and the database 130. The synchronization module 170 of the MME module 105 may be used to update the database 130 with metadata corresponding to all the media files and devices that it detects.
Client applications may browse the database 130 either directly or through, for example, the MME module 105 to browse music, create playlists, and so on.
When a media device 120 is connected to the system 100, the MME module 105 detects its presence and begins synchronizing the information on the device with the database 130. The information in database 130 may consolidate metadata from multiple, diverse devices 120 into a single format that is independent of the types of devices attached to system 100.
3. Providing a browsing interface for devices. Because of the large list of devices that the MME module 105 may support, it may be provided with a browsing abstraction layer that is the same for all devices. This allows a client application, such as the HMI module 110, to browse all devices supported by the MME 105 without having to support them directly.
[0021] A number of diverse multimedia devices may be attached to the system shown in Figure 1. The devices 120 may include one or more MP3 players 135, one or more DVD players 140, one or more iPod players 145, one or more PSP devices 150, one or more USB storage devices 155, and/or one or more memory stick devices 160. At least some of the media devices 120 may include their own proprietary filesystem while others may be accessed using conventional file systems such as POSIX, UNIX, or the like. IO-media module 115 may include a plurality of device drivers 175 to facilitate hardware interaction between each high-level application and media devices 120.
[0022] High-level applications, such as the HMI module 110 and MME module 105 may require direct access to the files on devices 120. For example, MME module may access the files on each device in order to synchronize the metadata in database 130.
Since the filesystems of media devices 120 may differ substantially from one another, the MME module 105, as well as each high-level application attempting to access all of the devices 120, may require individual modules providing an interface between the high-level application and the individual devices. Such architectures may prove to be quite inefficient and difficult to implement, particularly when a wide range of multimedia devices are attached to system 100.
Since the filesystems of media devices 120 may differ substantially from one another, the MME module 105, as well as each high-level application attempting to access all of the devices 120, may require individual modules providing an interface between the high-level application and the individual devices. Such architectures may prove to be quite inefficient and difficult to implement, particularly when a wide range of multimedia devices are attached to system 100.
[0023] Rather than requiring implementation of specific drivers in each of the high-level modules for each of the attached media devices, system 100 employs device drivers 175 that cooperate with a unified filesystem module 180 to present a common filesystem for presentation to the high-level modules. To this end, high-level modules may access the media content of devices 120 using a single set of filesystem commands, such as those associated with POSIX, UNIX, and the like.
[0024] Figure 2 illustrates one manner of implementing the filesystem 180 and its relationship to other modules/components. In this exemplary implementation, filesystem 180 is comprised of a high-level interface io-fs, such as a POSIX interface, that is accessible to user applications 205, such as the HMI module 110, using filesystem commands. The filesystem 180 also may include a number of low-level interface modules/components that interface with a device access layer 225. The modules/components of filesystem 180 may include a TMPFS module 210, a devf-generic module 215, and a media filesystem 220.
[0025] The media filesystem 220 may be an io-fs module that presents a POSIX-like file system view of media devices 120. The filesystem may be implemented as a QNX
Neutrino resource manager that handles file system semantics, including path name resolution, file and directory access, symbolic links, permissions, and block caching.
Media devices that the media filesystem 220 may access include portable music devices such as iPod players and PlaysForSure devices, as well as UPnP devices that attach to a network.
Neutrino resource manager that handles file system semantics, including path name resolution, file and directory access, symbolic links, permissions, and block caching.
Media devices that the media filesystem 220 may access include portable music devices such as iPod players and PlaysForSure devices, as well as UPnP devices that attach to a network.
[0026] In the system shown in Figure 2, a high-level portion of the media filesystem 220 interfaces with a device access layer 225 that may be implemented separate from the media filesystem 220 or integrated with it. The device access layer 225, in turn, interfaces with individual drivers that are tailored to access individual media device types. Here, a serial port driver 230 is used to interface with an iPod device 235, a USB
driver 240 is used to interface with a PlaysforSure device 245, and a TCP/IP
driver 250 is used to interface with a universal plug and play (UPnP) device 255. The media filesystem 220 allows access to the contents of devices 235, 245, and 255 using, for example, POSIX functions related to file and directory operations.
driver 240 is used to interface with a PlaysforSure device 245, and a TCP/IP
driver 250 is used to interface with a universal plug and play (UPnP) device 255. The media filesystem 220 allows access to the contents of devices 235, 245, and 255 using, for example, POSIX functions related to file and directory operations.
[0027] The MME 105 may use the media filesystem 220 to control and browse media devices 120. When a physical device is detected to be in some way attached to the media filesystem 220 (via USB, serial port, wired network or wireless network for example), a filesystem representing the device appears under the /fs directory of the filesystem. The contents of each device is made available as a filesystem with, for example, the root directory of the device mounted on /fs/dev_id, where dev_id is a name that indicates the type of device with a numeric suffix representing the instance number of the device. The first device discovered, for example, may have an instance number of 0. For example:
- if the first device is an iPod device, then the media filesystem 220 may make its contents accessible at /fs/ipod0.
- if the first device is a PFS/MTP device, then the media filesystem 220 may make its contents accessible at /fs/pfs0.
- if the first device is a UPnP device, then the media filesystem 220 may make its contents accessible at /fs/upnpO.
- if the first device is an iPod device, then the media filesystem 220 may make its contents accessible at /fs/ipod0.
- if the first device is a PFS/MTP device, then the media filesystem 220 may make its contents accessible at /fs/pfs0.
- if the first device is a UPnP device, then the media filesystem 220 may make its contents accessible at /fs/upnpO.
[0028] The device access layer 225 will generate a device information file that can be accessed as if it were a file in a traditional filesystem. The information file is located at a root directory for each device as .FS_info./info.xml. This device information file may be in the form of an XML-formatted information file which is used by higher level applications and also may be useful for human viewing.
[0029] The following sections list some file-related POSIX functions that may be supported by the media filesystem 220 and that may be used in a user application. For example, the following directory access operations may be supported:
- opendir() - readdir() - closedir()
- opendir() - readdir() - closedir()
[0030] Additionally, the following file access operations also may be supported:
- open() - read() - write() - lseekO
- devctl() - closeO
- open() - read() - write() - lseekO
- devctl() - closeO
[0031] The media filesystem module 220 makes disparate media devices 120 appear, for example, as POSIX-compliant filesystems to the MME 105 and other high-level applications. Further, it may provide some proprietary extensions specific to one or more of the media devices 120. The exemplary media filesystem module 220 shown in Figure 2 includes a PFS module 260 for connecting with PlaysForSure devices, and an iPod module 265 for connecting with Apple iPod devices. P1aysForSure is a Microsoft media standard for devices using the Media Transport Protocol (MTP).
It implements Digital Rights Management (DRM).
It implements Digital Rights Management (DRM).
[0032] Devices that support MTP provide a view of media content that comprises objects with properties. These objects and their properties may be accessed via a command and response protocol with an optional data transfer phase. Commands that deal with objects may be executed in the context of a session. When a session is started, each command within the session has a sequential transaction identifier.
Within any particular session, each item of media content is assigned a 32 bit "object handle," which is unique for the duration of the session. Given the object handle, properties such as the object's name, format, and metadata can be obtained. Each object has a parent object, which facilitates viewing of the media in a hierarchical file structure.
Certain object types may serve as folders or directories, where the objects contained in these object types may share the same parent object.
Within any particular session, each item of media content is assigned a 32 bit "object handle," which is unique for the duration of the session. Given the object handle, properties such as the object's name, format, and metadata can be obtained. Each object has a parent object, which facilitates viewing of the media in a hierarchical file structure.
Certain object types may serve as folders or directories, where the objects contained in these object types may share the same parent object.
[0033] Separate processes 305, 310, and 325 associated with accessing PFS
devices are shown in Figure 3. The process 305 includes an instance of the MME 105, which may be used to connect to, browse, and play media from a PFS device 245 via the io-fs module 180 shown in connection with process 310. P1aysForSure connectivity may be comprised of three layers:
1. At the top layer may be the PFS module 160, which may be responsible for presenting a filesystem view of the device to io-fs 305 for further access by the MME 105. When io-fs 180 initializes the PFS module 160, it may set up a structure filled with function pointers that it can call into. In this way, the PFS
module 160 can "translate" POSIX commands into MTP requests, and vice versa.
2. An MTP layer 315 may be Microsoft-supplied software that handles MTP
messages.
3. A PTP layer 320 may handle Picture Transfer Protocol (PTP) messages, an implementation of the Still Image class of USB service. Though originally a protocol developed for use with digital cameras, it has been extended and may be used as a foundation for accessing multimedia content of PFS devices. The PTP
layer 320 may communicate directly with a USB driver 240 that, in turn, communicates with PFS device 245.
devices are shown in Figure 3. The process 305 includes an instance of the MME 105, which may be used to connect to, browse, and play media from a PFS device 245 via the io-fs module 180 shown in connection with process 310. P1aysForSure connectivity may be comprised of three layers:
1. At the top layer may be the PFS module 160, which may be responsible for presenting a filesystem view of the device to io-fs 305 for further access by the MME 105. When io-fs 180 initializes the PFS module 160, it may set up a structure filled with function pointers that it can call into. In this way, the PFS
module 160 can "translate" POSIX commands into MTP requests, and vice versa.
2. An MTP layer 315 may be Microsoft-supplied software that handles MTP
messages.
3. A PTP layer 320 may handle Picture Transfer Protocol (PTP) messages, an implementation of the Still Image class of USB service. Though originally a protocol developed for use with digital cameras, it has been extended and may be used as a foundation for accessing multimedia content of PFS devices. The PTP
layer 320 may communicate directly with a USB driver 240 that, in turn, communicates with PFS device 245.
[0034] The PFS module 160 may be used to identify which media objects have been encrypted using Microsoft's WMDRM technology. It may use the DRM extensions to MTP to register itself with the P1aysForSure device -this registration may re-occur periodically to maintain digital rights in the content.
[0035] The iPod module 265 provides a filesystem view of a connected Apple iPod device to the MME 105 or to other high-level application. An iPod device can connect via its 30 pin Omni connector to either a USB or RS232 serial UART connection and system 100. When the device is connected to a RS232 serial UART port, the ipod module 265 may communicate directly with a communications manager for the hardware. When the device is connected to a USB port, the ipod module 265 may communicate with a usb device communications manager, which simulates a serial connection on a USB port.
[0036] The iPod module 265 may create a directory structure from a connected iPod(R) by querying the internal database of the device. Each item on an iPod module's 265 menu is a database query. For example, selecting Albums queries the database for albums. Each item on an iPod's menu is a sub-query of the query 3o represented by the parent menu item. Using this organizing principle, the ipod module 265 generates a filesystem directory structure that resembles an iPod menu structure.
This means that commandline operations can be performed on the iPod. For example, performing the POSIX command "cd Music; ls" may have the same effect as a user selecting the Music option on the iPod . Both yield the same listing of items.
An exemplary directory structure for a first occurrence of an iPod is shown in Figure 4 and includes the folder "music," where the folder "music" includes the subfolders "playlist,"
"artist," "albums," "genre," "songs," "composer," "audiobooks" and "podcasts."
In this example, each subfolder terminates in a further subfolder containing "songs".
This means that commandline operations can be performed on the iPod. For example, performing the POSIX command "cd Music; ls" may have the same effect as a user selecting the Music option on the iPod . Both yield the same listing of items.
An exemplary directory structure for a first occurrence of an iPod is shown in Figure 4 and includes the folder "music," where the folder "music" includes the subfolders "playlist,"
"artist," "albums," "genre," "songs," "composer," "audiobooks" and "podcasts."
In this example, each subfolder terminates in a further subfolder containing "songs".
[0037] iPod devices do not export their digital content. Consequently, music files on an iPod connected to the MME 105 may be played by the iPod itself, while the MME
105 may be responsible for sending control commands to the device to initiate playback, stop, pause, etc. The analog audio output from the iPod(R) can be routed to an amplifier directly.
1o [0038] On some devices like the iPod(R), there may be duplicate song names or songs that use characters that are not compatible with the common filesystem representation used by the media filesystem 220 to interact with higher-level applications.
In POSIX, for example, the character "/" is reserved, so it cannot be used. Incompatible characters can be converted to a character string of a "%" followed by two hex digits corresponding to the specific character. For example, "/" could be converted to "%2F," and the character "%" could be converted to "%25." Any file starting with "." would also change, for example, ".file" may become "%2Efile". Duplicate song names may be represented using a "-" character and an instance number added to the filename. These operations allow the media filesystem 220 to return unique names in a POSIX
type filesystem that can be matched in the future. A display program implemented in the HMI 110 may be used to display the original names by removing any "-" followed by numbers from the end of a file and converting any %xx to the original character before displaying the name to the user.
[0039] The tmpfs module 210 may be used to provide a filesystem interface to shared memory. It may allow RAM to be used as a storage medium with a full POSIX
filesystem running on top of it. By simply pointing database 130 at the filesystem mount path of tmpfs 210, the database 130 may be accessed in RAM only, avoiding the performance costs of running on slower devices like flash. Similarly, the devf-generic module 175 provides a POSIX based filesystem for flash-like media devices.
[0040] Device control codes may be defined for controlling physical devices accessed via the media filesystem 220. The control codes may be divided into those that direct the device driver to perform some action, and those that obtain information or metadata from the device. If a code is not supported by the device access layer, then either it is ignored and the call returns successfully with null data, or an error code may be returned (ENOTTY -- Inappropriate I/O control operation).
[0041] The device control function codes are applied to opened files. In the following descriptions, a data transfer buffer is not used unless specified. If a data buffer is used to receive data, the number of bytes written to the buffer exceeds the specified buffer size, and the number of bytes written to the buffer is returned as the informative value (in a dev_info_ptr argument). If the return data is a UTF string, then it may be null-terminated, even if the string had to be truncated because the receive buffer was not large enough. For example, in the following code the assertO should be true even if the song title is larger than the buffer:
char buffer[16];
int fd, len;
status = devctl(fd, DCMD MEDIA_SONG, buffer, sizeof(buffer),&len);
if (status == 0) assert((strlen(buffer) + 1) == len);
[0042] Several exemplary device control codes are described below.
DCMD_MEDIA_PLAY - This control code may be used to direct the device to play the current file (a song, recording or video). The devctl() call returns:
- ENOTTY if playback is not supported by the device - EINVAL if the file can't be played for some reason DCMD_MEDIA_PAUSE - This control code may be used to direct the device to pause the play of the current file. The devctl() call returns EINVAL
if a file is not currently playing.
DCMD MEDIA RESUME - This control code may be used to direct the device to resume the play of the current file. The devctl() call returns EINVAL if the file is not currently paused.
DCMD_MEDIA NEXT TRACK - This control code may be used to direct the device to skip to the next file (track, song, or recording) in the device's playlist or album. The devctl() call returns EINVAL if the object is not currently playing or paused.
DCMD_MEDIA_PREV_TRACK - This control code may be used to direct the device to skip to the previous file in the device's playlist or album. The devctl() call returns EINVAL if the object is not currently playing or paused.
DCMD_MEDIA_FASTFWD - This control code may be used to transfer an integer value to the device access layer via the data buffer (the buffer size should be sizeof(int), which may be, for example, 4 bytes). The integer value indicates the rate, as a multiple of the normal playback rate, at which the device should fast forward. A value of 2 specifies moving forward at double the normal playback speed.
DCMD MEDIA_FASTRWD - This control code may be used to transfer a 32 bit integer value to the device access layer via the data buffer (the buffer size may be, for example, 4 bytes). The value indicates the rate at which the device should rewind, as be a multiple of the normal playback rate. A value of 2 specifies moving backward at double the normal playback speed.
DCMD_MEDIA_PLAYBACK INFO - This control code may be used to obtain information about the currently playing song. The devctl() call returns EINVAL if the file identified by the file descriptor is not currently playing or paused. The data written to the specified buffer may be a media_playback_t structure with at least the following members:
uint32 t count; The total number of tracks in the playback list uint32 tindex; The track index currently in playback Uint8 tstate; The device's playback state selected from the following:
- PLAYBACK STATE STOP
- PLAYBACK STATE PLAY
- PLAYBACK STATE PAUSE
uint32 tlength; The length of the track (in, for example, seconds) uint32 telapsed; The elapsed time for the current track uint32 tmetaflags; Bit mask DCMD_MEDIA_GET SHUFFLE - This code gets the shuffle setting for the device. The data buffer contains a single byte, which can be one of:
- SHUFFLE OFF
- SHUFFLE TRACKS
- SHUFFLE ALBUMS
DCMD_MEDIA_SET SHUFFLE - This control code may be used to set the shuffle setting for the device. The first byte of the data buffer may be interpreted as the shuffle setting.
DCMD MEDIA_GET_REPEAT - This control code may be used to obtain the repeat setting for the device. The data buffer may contain a single byte, which can be one of the following:
- REPEAT OFF
- REPEAT ONE TRACK
- REPEAT ALL TRACKS
DCMD_MEDIA_SET REPEAT - This control code may be used to set the repeat setting for the device. The first byte of the data buffer is the shuffle setting and may use the states listed under the DCMD_MEDIA_GET REPEAT
command.
DCMD_MEDIA_SONG - This control code may be used to obtain the name or title of the track identified by the file descriptor parameter. A
devctl() module may copy a UTF-8 character string of n_bytes bytes, to the data buffer.
DCMD_MEDIA ALBUM - This control code may be used to obtain the album name associated with the track identified by the file descriptor parameter.
a devctl() module may copy a UTF-8 character string of n_bytes bytes to the data buffer.
DCMD_MEDIA ARTIST - This control code may be used to obtain the name of the artist who performed the track identified by the file descriptor parameter. A devctl() module may copy a UTF-8 character string of n_bytes bytes to the data buffer.
DCMD_MEDIA_GENRE - This control code may be used to obtain the name of the genre to which the track belongs. The devctl() module may copy a UTF-8 character string of n_bytes bytes to the data buffer.
DCMD_MEDIA COMPOSER - This control code may be used to obtain the name of the composer of the track identified by the file descriptor parameter.
The devctl() may copy a UTF-8 character string of n_bytes bytes to the data buffer.
DCMD_MEDIA_RELEASE_DATE - This control code may be used to obtain the release date of the track identified by the file descriptor parameter.
The data buffer may have a 48-byte data structure written to it. This structure may include fields for the year, month (1-12) and day (1-31) of the release of the song. There also may be a text field that is filled in with a UTF-8 string representing the date in a device-dependent date format. The structure may have the following format:
struct _media date {
uintl6_t year;
uint8 t seconds; // (0-59) uint8 t minutes; // (0-59) uint8 t hours; //(0-23) uint8_t day; //(1-31) uint8 t month; // (1-12) uint8 t weekday; // (0-6, where O=Sunday, 1=Monday ...
6=Saturday) char text[40]; // ASCII date as formatted by device DCMD_MEDIA TRACK NUM - This control code may be used to obtain the original track number for the song. The track number may be returned as an integer value in the data buffer.
DCMD_MEDIA PUBLISHER - This control code may be used to obtain the name of the publisher of the track. The devctl() may copy a UTF-8 character string of n_bytes bytes to the data buffer.
DCMD MEDIA_DEVINFO - This control code may be used to obtain device information in a UTF-8 character string format. The content of this string may be device-dependent. The following is an example device information string from an MTP device:
Standard Version = 100 Vendor ext id = 0x6 Vendor ext ver = 100 Vendor ext desc = microsoft.com/WMDRMPD: 10.1;
microsoft.com: 1.0;
Ops supported = 0x1014, 0x1015, Ox1001, 0x1002, 0x1003, 0x1004, 0x1005, 0x1007, 0x1008, 0x1009, Ox101B, Ox100C, Ox100D, Oxl00B, 0x1012, 0x1016, 0x9801, 0x9802, 0x9803, 0x9805, 0x9806, 0x9810, 0x9811, 0x9201, 0x9101, 0x9102, 0x9103, 0x9104, 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, Ox910A, Ox9lOB, 0x9170, 0x9171, 0x9172, 0x9173, 0x9180, 0x9181, 0x9182, 0x9183, 0x9184, 0x9185, 0x9800, Events supported =
Props supported = 0x5001, OxD101, OxD102, OxD103, OxD401, OxD402, Capture fmts supp =
Img formats supp = 00001, 0x3009, 0x3008, 0x3801, OxBA05, OxBA03, OxB901, Manufacturer = IRIVER
Model = IRIVER Device Device Version = PP5020AF-02.51-ENG-MT-DT, (Build 157.13) Serial Number = 3ME5G7QX
[0043] Figure 5 is a flow chart showing a number of interrelated operations that may be associated with the media filesystem 220 pursuant to obtaining a list of files from an arbitrary media device. As shown, a high-level application, such as the HMI
module 110, issues a command at block 510 using, for example, a POSIX command, to obtain a list of files/content from a media device. The media filesystem 220 identifies this command and uses the corresponding driver to access the data and/or metadata from the media device. The data and/or metadata from the media device is parsed at block 515 to collect the filenames, date created, date modified, file type, file size and other attributes that might be available and useful. Any data or headers that are not required may simply be disregarded or discarded. The data content is then converted from the format in which it was received from the device to a desired filesystem representation at block 520 and reported to the requesting application at block 525. The filesystem representation provided at block 525 corresponds to an arrangement of the data for presentation to the requesting application in a manner mimicking a similar request made using a common file system or otherwise conventional filesystem, such as POSIX. In the course of doing this, the media filesystem 220 may identify where the file was obtained and the manner in which it may be accessed for later use.
[0044] When a list of songs is obtained from a media device, the media filesystem 220 may generate and store an internal 32-bit number that may be used to find the actual file in the future. It may report a unique name to the user for each song on the media device and may be capable of converting that unique name back to the 32-bit number later on.
This number can be used to retrieve the song name again, or tell the media device to play the song or get metadata, or even the raw song data if the media device supports it. For example, on PlayForSure devices, every song may have a 32-bit object identification that can be used. On an iPod device, the number of down presses from the top of the menu needed to get to the entry may be used for identification purposes.
[0045] The records in database 130 may have a number of different structures depending on the requirements of the system. Some fields that may be used in such database records and their corresponding meaning are shown in the table of Figure 6.
Exemplary fields that may be used in connection with a playlist table in database 130 are shown in Figure 7.
[0046] Database 130 also may include a media stores table. Each mediastore in the mediastores table may be used to describe one physical device containing media that the engine has seen. This could be an iPod device, hard drive, USB stick, DVD
Video disc, etc. Mediastores come and go as they are inserted and removed and this table is updated by the MME 105 accordingly as that happens. All entries in the library table may belong to one mediastore which is where the media is located. Mediastores may be uniquely identified by an identifier that can be used to later attain the msid for the mediastore which links to the other tables. Figure 8 shows exemplary fields that may be used in connection with the media stores table.
[0047] Still further, the database 130 may include a slots table. Slots may be used to define fileystem locations where mediastores can be connected and removed. For example, an audiocd may be found in the filesystem at location /fs/cdO. If it were a networked audiocd, it may be found at /net/remote_host/fs/cd0. The MME 205 may be designed to support an unlimited number of slots. Figure 9 shows exemplary fields that may be used in connection with the slots table.
[0048] The metadata corresponding to a file may be available on the media containing the file. However, it is also possible for an external source to add metadata to a file.
Metadata for a file may include information regarding the music type and the group that produced the music. It is also possible to incorporate various additional types of metadata. For example, the metadata may include information on the quality of the content stored in the file. This quality information may be used in the selection of contents to be played for a user, or with certain license or other restrictions associated with the content.
[0049] While various embodiments of the invention have been described, it will be apparent to those of ordinary skill in the art that many more embodiments and implementations are possible within the scope of the invention. Accordingly, the invention is not to be restricted except in light of the attached claims and their s equivalents.
105 may be responsible for sending control commands to the device to initiate playback, stop, pause, etc. The analog audio output from the iPod(R) can be routed to an amplifier directly.
1o [0038] On some devices like the iPod(R), there may be duplicate song names or songs that use characters that are not compatible with the common filesystem representation used by the media filesystem 220 to interact with higher-level applications.
In POSIX, for example, the character "/" is reserved, so it cannot be used. Incompatible characters can be converted to a character string of a "%" followed by two hex digits corresponding to the specific character. For example, "/" could be converted to "%2F," and the character "%" could be converted to "%25." Any file starting with "." would also change, for example, ".file" may become "%2Efile". Duplicate song names may be represented using a "-" character and an instance number added to the filename. These operations allow the media filesystem 220 to return unique names in a POSIX
type filesystem that can be matched in the future. A display program implemented in the HMI 110 may be used to display the original names by removing any "-" followed by numbers from the end of a file and converting any %xx to the original character before displaying the name to the user.
[0039] The tmpfs module 210 may be used to provide a filesystem interface to shared memory. It may allow RAM to be used as a storage medium with a full POSIX
filesystem running on top of it. By simply pointing database 130 at the filesystem mount path of tmpfs 210, the database 130 may be accessed in RAM only, avoiding the performance costs of running on slower devices like flash. Similarly, the devf-generic module 175 provides a POSIX based filesystem for flash-like media devices.
[0040] Device control codes may be defined for controlling physical devices accessed via the media filesystem 220. The control codes may be divided into those that direct the device driver to perform some action, and those that obtain information or metadata from the device. If a code is not supported by the device access layer, then either it is ignored and the call returns successfully with null data, or an error code may be returned (ENOTTY -- Inappropriate I/O control operation).
[0041] The device control function codes are applied to opened files. In the following descriptions, a data transfer buffer is not used unless specified. If a data buffer is used to receive data, the number of bytes written to the buffer exceeds the specified buffer size, and the number of bytes written to the buffer is returned as the informative value (in a dev_info_ptr argument). If the return data is a UTF string, then it may be null-terminated, even if the string had to be truncated because the receive buffer was not large enough. For example, in the following code the assertO should be true even if the song title is larger than the buffer:
char buffer[16];
int fd, len;
status = devctl(fd, DCMD MEDIA_SONG, buffer, sizeof(buffer),&len);
if (status == 0) assert((strlen(buffer) + 1) == len);
[0042] Several exemplary device control codes are described below.
DCMD_MEDIA_PLAY - This control code may be used to direct the device to play the current file (a song, recording or video). The devctl() call returns:
- ENOTTY if playback is not supported by the device - EINVAL if the file can't be played for some reason DCMD_MEDIA_PAUSE - This control code may be used to direct the device to pause the play of the current file. The devctl() call returns EINVAL
if a file is not currently playing.
DCMD MEDIA RESUME - This control code may be used to direct the device to resume the play of the current file. The devctl() call returns EINVAL if the file is not currently paused.
DCMD_MEDIA NEXT TRACK - This control code may be used to direct the device to skip to the next file (track, song, or recording) in the device's playlist or album. The devctl() call returns EINVAL if the object is not currently playing or paused.
DCMD_MEDIA_PREV_TRACK - This control code may be used to direct the device to skip to the previous file in the device's playlist or album. The devctl() call returns EINVAL if the object is not currently playing or paused.
DCMD_MEDIA_FASTFWD - This control code may be used to transfer an integer value to the device access layer via the data buffer (the buffer size should be sizeof(int), which may be, for example, 4 bytes). The integer value indicates the rate, as a multiple of the normal playback rate, at which the device should fast forward. A value of 2 specifies moving forward at double the normal playback speed.
DCMD MEDIA_FASTRWD - This control code may be used to transfer a 32 bit integer value to the device access layer via the data buffer (the buffer size may be, for example, 4 bytes). The value indicates the rate at which the device should rewind, as be a multiple of the normal playback rate. A value of 2 specifies moving backward at double the normal playback speed.
DCMD_MEDIA_PLAYBACK INFO - This control code may be used to obtain information about the currently playing song. The devctl() call returns EINVAL if the file identified by the file descriptor is not currently playing or paused. The data written to the specified buffer may be a media_playback_t structure with at least the following members:
uint32 t count; The total number of tracks in the playback list uint32 tindex; The track index currently in playback Uint8 tstate; The device's playback state selected from the following:
- PLAYBACK STATE STOP
- PLAYBACK STATE PLAY
- PLAYBACK STATE PAUSE
uint32 tlength; The length of the track (in, for example, seconds) uint32 telapsed; The elapsed time for the current track uint32 tmetaflags; Bit mask DCMD_MEDIA_GET SHUFFLE - This code gets the shuffle setting for the device. The data buffer contains a single byte, which can be one of:
- SHUFFLE OFF
- SHUFFLE TRACKS
- SHUFFLE ALBUMS
DCMD_MEDIA_SET SHUFFLE - This control code may be used to set the shuffle setting for the device. The first byte of the data buffer may be interpreted as the shuffle setting.
DCMD MEDIA_GET_REPEAT - This control code may be used to obtain the repeat setting for the device. The data buffer may contain a single byte, which can be one of the following:
- REPEAT OFF
- REPEAT ONE TRACK
- REPEAT ALL TRACKS
DCMD_MEDIA_SET REPEAT - This control code may be used to set the repeat setting for the device. The first byte of the data buffer is the shuffle setting and may use the states listed under the DCMD_MEDIA_GET REPEAT
command.
DCMD_MEDIA_SONG - This control code may be used to obtain the name or title of the track identified by the file descriptor parameter. A
devctl() module may copy a UTF-8 character string of n_bytes bytes, to the data buffer.
DCMD_MEDIA ALBUM - This control code may be used to obtain the album name associated with the track identified by the file descriptor parameter.
a devctl() module may copy a UTF-8 character string of n_bytes bytes to the data buffer.
DCMD_MEDIA ARTIST - This control code may be used to obtain the name of the artist who performed the track identified by the file descriptor parameter. A devctl() module may copy a UTF-8 character string of n_bytes bytes to the data buffer.
DCMD_MEDIA_GENRE - This control code may be used to obtain the name of the genre to which the track belongs. The devctl() module may copy a UTF-8 character string of n_bytes bytes to the data buffer.
DCMD_MEDIA COMPOSER - This control code may be used to obtain the name of the composer of the track identified by the file descriptor parameter.
The devctl() may copy a UTF-8 character string of n_bytes bytes to the data buffer.
DCMD_MEDIA_RELEASE_DATE - This control code may be used to obtain the release date of the track identified by the file descriptor parameter.
The data buffer may have a 48-byte data structure written to it. This structure may include fields for the year, month (1-12) and day (1-31) of the release of the song. There also may be a text field that is filled in with a UTF-8 string representing the date in a device-dependent date format. The structure may have the following format:
struct _media date {
uintl6_t year;
uint8 t seconds; // (0-59) uint8 t minutes; // (0-59) uint8 t hours; //(0-23) uint8_t day; //(1-31) uint8 t month; // (1-12) uint8 t weekday; // (0-6, where O=Sunday, 1=Monday ...
6=Saturday) char text[40]; // ASCII date as formatted by device DCMD_MEDIA TRACK NUM - This control code may be used to obtain the original track number for the song. The track number may be returned as an integer value in the data buffer.
DCMD_MEDIA PUBLISHER - This control code may be used to obtain the name of the publisher of the track. The devctl() may copy a UTF-8 character string of n_bytes bytes to the data buffer.
DCMD MEDIA_DEVINFO - This control code may be used to obtain device information in a UTF-8 character string format. The content of this string may be device-dependent. The following is an example device information string from an MTP device:
Standard Version = 100 Vendor ext id = 0x6 Vendor ext ver = 100 Vendor ext desc = microsoft.com/WMDRMPD: 10.1;
microsoft.com: 1.0;
Ops supported = 0x1014, 0x1015, Ox1001, 0x1002, 0x1003, 0x1004, 0x1005, 0x1007, 0x1008, 0x1009, Ox101B, Ox100C, Ox100D, Oxl00B, 0x1012, 0x1016, 0x9801, 0x9802, 0x9803, 0x9805, 0x9806, 0x9810, 0x9811, 0x9201, 0x9101, 0x9102, 0x9103, 0x9104, 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, Ox910A, Ox9lOB, 0x9170, 0x9171, 0x9172, 0x9173, 0x9180, 0x9181, 0x9182, 0x9183, 0x9184, 0x9185, 0x9800, Events supported =
Props supported = 0x5001, OxD101, OxD102, OxD103, OxD401, OxD402, Capture fmts supp =
Img formats supp = 00001, 0x3009, 0x3008, 0x3801, OxBA05, OxBA03, OxB901, Manufacturer = IRIVER
Model = IRIVER Device Device Version = PP5020AF-02.51-ENG-MT-DT, (Build 157.13) Serial Number = 3ME5G7QX
[0043] Figure 5 is a flow chart showing a number of interrelated operations that may be associated with the media filesystem 220 pursuant to obtaining a list of files from an arbitrary media device. As shown, a high-level application, such as the HMI
module 110, issues a command at block 510 using, for example, a POSIX command, to obtain a list of files/content from a media device. The media filesystem 220 identifies this command and uses the corresponding driver to access the data and/or metadata from the media device. The data and/or metadata from the media device is parsed at block 515 to collect the filenames, date created, date modified, file type, file size and other attributes that might be available and useful. Any data or headers that are not required may simply be disregarded or discarded. The data content is then converted from the format in which it was received from the device to a desired filesystem representation at block 520 and reported to the requesting application at block 525. The filesystem representation provided at block 525 corresponds to an arrangement of the data for presentation to the requesting application in a manner mimicking a similar request made using a common file system or otherwise conventional filesystem, such as POSIX. In the course of doing this, the media filesystem 220 may identify where the file was obtained and the manner in which it may be accessed for later use.
[0044] When a list of songs is obtained from a media device, the media filesystem 220 may generate and store an internal 32-bit number that may be used to find the actual file in the future. It may report a unique name to the user for each song on the media device and may be capable of converting that unique name back to the 32-bit number later on.
This number can be used to retrieve the song name again, or tell the media device to play the song or get metadata, or even the raw song data if the media device supports it. For example, on PlayForSure devices, every song may have a 32-bit object identification that can be used. On an iPod device, the number of down presses from the top of the menu needed to get to the entry may be used for identification purposes.
[0045] The records in database 130 may have a number of different structures depending on the requirements of the system. Some fields that may be used in such database records and their corresponding meaning are shown in the table of Figure 6.
Exemplary fields that may be used in connection with a playlist table in database 130 are shown in Figure 7.
[0046] Database 130 also may include a media stores table. Each mediastore in the mediastores table may be used to describe one physical device containing media that the engine has seen. This could be an iPod device, hard drive, USB stick, DVD
Video disc, etc. Mediastores come and go as they are inserted and removed and this table is updated by the MME 105 accordingly as that happens. All entries in the library table may belong to one mediastore which is where the media is located. Mediastores may be uniquely identified by an identifier that can be used to later attain the msid for the mediastore which links to the other tables. Figure 8 shows exemplary fields that may be used in connection with the media stores table.
[0047] Still further, the database 130 may include a slots table. Slots may be used to define fileystem locations where mediastores can be connected and removed. For example, an audiocd may be found in the filesystem at location /fs/cdO. If it were a networked audiocd, it may be found at /net/remote_host/fs/cd0. The MME 205 may be designed to support an unlimited number of slots. Figure 9 shows exemplary fields that may be used in connection with the slots table.
[0048] The metadata corresponding to a file may be available on the media containing the file. However, it is also possible for an external source to add metadata to a file.
Metadata for a file may include information regarding the music type and the group that produced the music. It is also possible to incorporate various additional types of metadata. For example, the metadata may include information on the quality of the content stored in the file. This quality information may be used in the selection of contents to be played for a user, or with certain license or other restrictions associated with the content.
[0049] While various embodiments of the invention have been described, it will be apparent to those of ordinary skill in the art that many more embodiments and implementations are possible within the scope of the invention. Accordingly, the invention is not to be restricted except in light of the attached claims and their s equivalents.
Claims (37)
1. A multimedia system comprising:
at least two multimedia devices, where a first one of the at least two multimedia devices has a filesystem, where a second one of the at least two multimedia devices has no filesystem, and where each of the multimedia devices is accessed via a corresponding one of a plurality of multimedia device drivers; and a memory, the memory comprising:
the multimedia device drivers;
one or more applications adapted to issue filesystem commands and/or receive filesystem responses using a common filesystem representation with respect to files of the plurality of multimedia devices; and a media filesystem hierarchically disposed between the one or more applications and the multimedia device drivers, the media filesystem adapted to accept the filesystem commands from the one or more applications and provide the filesystem responses to the one or more applications using the common filesystem representation, where the media filesystem is further adapted to communicate with the at least two multimedia devices via the multimedia device drivers, and where each of the multimedia device drivers provides a filesystem view of a corresponding one of the multimedia devices to the media filesystem, and where one of the multimedia device drivers, which corresponds to the second one of the at least two multimedia devices that has no filesystem, provides the filesystem view of the second one of the at least two multimedia devices to the media filesystem.
at least two multimedia devices, where a first one of the at least two multimedia devices has a filesystem, where a second one of the at least two multimedia devices has no filesystem, and where each of the multimedia devices is accessed via a corresponding one of a plurality of multimedia device drivers; and a memory, the memory comprising:
the multimedia device drivers;
one or more applications adapted to issue filesystem commands and/or receive filesystem responses using a common filesystem representation with respect to files of the plurality of multimedia devices; and a media filesystem hierarchically disposed between the one or more applications and the multimedia device drivers, the media filesystem adapted to accept the filesystem commands from the one or more applications and provide the filesystem responses to the one or more applications using the common filesystem representation, where the media filesystem is further adapted to communicate with the at least two multimedia devices via the multimedia device drivers, and where each of the multimedia device drivers provides a filesystem view of a corresponding one of the multimedia devices to the media filesystem, and where one of the multimedia device drivers, which corresponds to the second one of the at least two multimedia devices that has no filesystem, provides the filesystem view of the second one of the at least two multimedia devices to the media filesystem.
2. The multimedia system of claim 1, where the common filesystem representation comprises POSIX commands and responses.
3. The multimedia system of claim 1, where the common filesystem representation comprises UNIX commands and responses.
4. The multimedia system of claim 1, where at least one of the one or more applications comprises a human machine interface module.
5. The multimedia system of claim 1, where at least one of the one or more applications comprises a multimedia engine module.
6. The multimedia system of claim 1, where the media filesystem is further adapted to facilitate multimedia device discovery and synchronization.
7. The multimedia system of claim 1, where the media filesystem is further adapted to handle filesystem semantics.
8. The multimedia system of claim 7, where the filesystem semantics comprise semantics selected from the group consisting of pathname resolution, file access, directory access, symbolic linking, file access permissions, and block caching.
9. The multimedia system of claim 1, where the media filesystem mounts the at least two multimedia devices at a named directory corresponding to the device.
10. The multimedia system of claim 9, where the media filesystem designates the named directory for each device as /fs/dev_id, where dev_id indicates a type of device with a suffix representing an instance of the device.
11. The multimedia system of claim 1, where the media filesystem uses menu item selections of the second one of the at least two devices to generate a filesystem structure for the second one of the at least two multimedia devices.
12. The multimedia system of claim 1, where the multimedia system further comprises a database arranged to organize file content information associated with the at least two multimedia devices.
13. The multimedia system of claim 1, where the multimedia system further comprises a database arranged to organize playlist tables associated with the at least two multimedia devices.
14. The multimedia system of claim 1, where the multimedia system further comprises a database arranged to organize mediastores of the multimedia system.
15. The multimedia system of claim 1, where the multimedia system further comprises a database arranged to organize slots for the at least two multimedia devices.
16. A multimedia system comprising:
at least two multimedia devices having differing filesystems and/or no filesystem(s); and a memory, the memory comprising:
one or more applications adapted to issue filesystem commands and receive filesystem responses with respect to files of the at least two multimedia devices, where the filesystem commands and the filesystem responses are sent to and received by the one or more applications using a common filesystem representation;
a unified filesystem module adapted to accept the filesystem commands from the one or more applications and to provide the files system responses to the one or more applications using the common filesystem representation; and at least two multimedia device drivers, where the unified filesystem module is logically between the at least two multimedia device drivers and the one or more applications, where each of the at least two multimedia device drivers provides a filesystem view of a corresponding one of the at least two multimedia devices to the unified filesystem module, where a first one of the at least two multimedia devices has a filesystem, where a second one of the at least two multimedia devices does not include a filesystem, and where one of the at least two multimedia device drivers that corresponds to the second one of the at least two multimedia devices provides the filesystem view of the second one of the at least two multimedia devices to the unified filesystem module.
at least two multimedia devices having differing filesystems and/or no filesystem(s); and a memory, the memory comprising:
one or more applications adapted to issue filesystem commands and receive filesystem responses with respect to files of the at least two multimedia devices, where the filesystem commands and the filesystem responses are sent to and received by the one or more applications using a common filesystem representation;
a unified filesystem module adapted to accept the filesystem commands from the one or more applications and to provide the files system responses to the one or more applications using the common filesystem representation; and at least two multimedia device drivers, where the unified filesystem module is logically between the at least two multimedia device drivers and the one or more applications, where each of the at least two multimedia device drivers provides a filesystem view of a corresponding one of the at least two multimedia devices to the unified filesystem module, where a first one of the at least two multimedia devices has a filesystem, where a second one of the at least two multimedia devices does not include a filesystem, and where one of the at least two multimedia device drivers that corresponds to the second one of the at least two multimedia devices provides the filesystem view of the second one of the at least two multimedia devices to the unified filesystem module.
17. The multimedia system of claim 16, where the common filesystem representation comprises POSIX commands and responses.
18. The multimedia system of claim 16, where the common filesystem representation comprises UNIX commands and responses.
19. The multimedia system of claim 16, where at least one of the one or more applications comprises a human machine interface module.
20. The multimedia system of claim 16, where at least one of the one or more applications comprises a multimedia engine module.
21. The multimedia system of claim 16, where the unified filesystem module is further adapted to handle filesystem semantics.
22. The multimedia system of claim 21, where the filesystem semantics comprise semantics selected from the group consisting of pathname resolution, file access, directory access, symbolic linking, file access permissions, and block caching.
23. The multimedia system of claim 16, where the unified filesystem module mounts the at least two multimedia devices at a named directory corresponding to the device.
24. The multimedia system of claim 23, where the unified filesystem module designates the named directory for each device as /fs/dev_id, where dev_id indicates a type of device with a suffix representing an instance number of the device.
25. The multimedia system of claim 16, where the unified filesystem module uses menu item selections of the second one of the at least two multimedia devices to generate a filesystem structure for the second one of the at least two multimedia devices.
26. The multimedia system of claim 16, where the multimedia system further comprises a database arranged to organize file content information associated with the at least two multimedia devices.
27. The multimedia system of claim 16, where the multimedia system further comprises a database arranged to organize playlist tables associated with the at least two multimedia devices.
28. The multimedia system of claim 16, where the multimedia system further comprises a database arranged to organize mediastores of the multimedia system.
29. The multimedia system of claim 16, where the multimedia system further comprises a database arranged to organize slots for the at least two multimedia devices.
30. A non-transitory computer readable media comprising instructions executable with a processor, the computer executable instructions comprising:
code means for at least two device drivers adapted to communicate with at least two multimedia devices;
code means for at least two multimedia applications hierarchically disposed above the device drivers; and code means for a filesystem abstraction layer disposed between the at least two device drivers and the at least two multimedia applications, where the filesystem abstraction layer provides a common filesystem interface to the at least two multimedia applications, and where each of the at least two device drivers provides a filesystem view of a corresponding one of the at least two multimedia devices to the filesystem abstraction layer, where a first one of the at least two multimedia devices has a filesystem, where a second one of the at least two multimedia devices has no filesystem, and where the multimedia device driver corresponding to the second one of the at least two multimedia devices provides the filesystem view of the second one of the at least two multimedia devices to the filesystem abstraction layer.
code means for at least two device drivers adapted to communicate with at least two multimedia devices;
code means for at least two multimedia applications hierarchically disposed above the device drivers; and code means for a filesystem abstraction layer disposed between the at least two device drivers and the at least two multimedia applications, where the filesystem abstraction layer provides a common filesystem interface to the at least two multimedia applications, and where each of the at least two device drivers provides a filesystem view of a corresponding one of the at least two multimedia devices to the filesystem abstraction layer, where a first one of the at least two multimedia devices has a filesystem, where a second one of the at least two multimedia devices has no filesystem, and where the multimedia device driver corresponding to the second one of the at least two multimedia devices provides the filesystem view of the second one of the at least two multimedia devices to the filesystem abstraction layer.
31. The computer readable media of claim 30, where the common filesystem interface comprises UNIX commands and responses.
32. The computer readable media of claim 30, where at least one of the at least two multimedia applications comprises a human machine interface module.
33. The computer readable media of claim 30, where at least one of the at least two of multimedia applications comprises a multimedia engine module.
34. The computer readable media of claim 30, where the filesystem abstraction layer mounts the at least two multimedia devices at a named directory corresponding to the respective device.
35. The computer readable media of claim 34, where the filesystem abstraction layer designates the named directory for each of respective device as /fs/dev_id, where dev_id indicates a device type with a suffix representing an instance number for the respective device.
36. The computer readable media of claim 30, where the filesystem abstraction layer uses menu item selections of the at least one multimedia device to generate a filesystem structure for the at least one multimedia device.
37. The multimedia system of claim 16, where the second one of the at least two multimedia devices, which does not include a filesystem, is accessed via TCP/IP by the one of the at least two multimedia device drivers that provides the filesystem view of the second one of the at least two multimedia devices.
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US84024606P | 2006-08-25 | 2006-08-25 | |
US60/840,246 | 2006-08-25 | ||
US84180406P | 2006-09-01 | 2006-09-01 | |
US60/841,804 | 2006-09-01 | ||
US11/717,601 | 2007-03-13 | ||
US11/717,601 US8566503B2 (en) | 2006-08-25 | 2007-03-13 | Multimedia filesystem having unified representation of content on diverse multimedia devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CA2598312A1 CA2598312A1 (en) | 2008-02-25 |
CA2598312C true CA2598312C (en) | 2014-12-02 |
Family
ID=38724295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA2598312A Active CA2598312C (en) | 2006-08-25 | 2007-08-22 | Multimedia filesystem having unified representation of content on diverse multimedia devices |
Country Status (5)
Country | Link |
---|---|
US (1) | US8566503B2 (en) |
EP (2) | EP1898322A1 (en) |
JP (1) | JP2008052731A (en) |
KR (1) | KR20080018802A (en) |
CA (1) | CA2598312C (en) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7970803B2 (en) * | 2005-07-01 | 2011-06-28 | Qnx Software Systems Gmbh & Co. Kg | Optimized startup verification of file system integrity |
US7873683B2 (en) * | 2005-07-01 | 2011-01-18 | Qnx Software Systems Gmbh & Co. Kg | File system having transaction record coalescing |
US8959125B2 (en) | 2005-07-01 | 2015-02-17 | 226008 Ontario Inc. | File system having inverted hierarchical structure |
US7809777B2 (en) * | 2005-07-01 | 2010-10-05 | Qnx Software Systems Gmbh & Co. Kg | File system having deferred verification of data integrity |
US20080059510A1 (en) * | 2006-08-31 | 2008-03-06 | Daniel Cardamore | Multimedia system framework having layer consolidating access to multiple media devices |
US7908276B2 (en) * | 2006-08-25 | 2011-03-15 | Qnx Software Systems Gmbh & Co. Kg | Filesystem having a filename cache |
US20080147747A1 (en) * | 2006-12-14 | 2008-06-19 | Dan Cardamore | Media system having synchronization with preemptive prioritization of synchronization order |
US20080270410A1 (en) * | 2007-04-24 | 2008-10-30 | Nokia Corporation | Computer program products, apparatuses and methods for accessing data |
US8887048B2 (en) * | 2007-08-23 | 2014-11-11 | Sony Computer Entertainment Inc. | Media data presented with time-based metadata |
KR101365438B1 (en) * | 2007-11-27 | 2014-02-20 | 삼성전자주식회사 | Method and apparatus for allowing media transfer protocol device to manage media file |
US20090193153A1 (en) * | 2007-12-26 | 2009-07-30 | Thanos William N | MTP-capable USB device and methods for use therewith |
US20090182999A1 (en) * | 2008-01-16 | 2009-07-16 | Scott Krig | Method And System For Security Certificate Properties For Protocol Exchange |
US8214404B2 (en) | 2008-07-11 | 2012-07-03 | Avere Systems, Inc. | Media aware distributed data layout |
US8478799B2 (en) | 2009-06-26 | 2013-07-02 | Simplivity Corporation | Namespace file system accessing an object store |
WO2011021909A2 (en) | 2009-08-21 | 2011-02-24 | Samsung Electronics Co., Ltd. | Method and apparatus for providing contents via network, method and apparatus for receiving contents via network, and method and apparatus for backing up data via network, backup data providing device, and backup system |
MX2012000294A (en) * | 2009-08-21 | 2012-02-08 | Samsung Electronics Co Ltd | Method and apparatus for providing contents via network, method and apparatus for receiving contents via network, and method and apparatus for backing up data via network, backup data providing device, and backup system. |
KR20110074039A (en) * | 2009-12-24 | 2011-06-30 | 삼성전자주식회사 | Display apparatus and control method of contents thereof |
KR101460515B1 (en) * | 2010-05-06 | 2014-11-12 | 에스케이플래닛 주식회사 | Apparatus for executing application, method thereof and computer recordable medium storing the method |
US9026567B2 (en) * | 2010-05-14 | 2015-05-05 | 2236008 Ontario Inc. | Publish-subscribe system |
US20120054045A1 (en) * | 2010-08-26 | 2012-03-01 | Cbs Interactive, Inc. | Managing Media Playback |
US8516144B2 (en) | 2011-04-29 | 2013-08-20 | Cbs Interactive Inc. | Startup bitrate in adaptive bitrate streaming |
US9157953B2 (en) | 2011-05-13 | 2015-10-13 | Apple Inc. | Test systems with cables that support multiple communications buses |
CN104519078A (en) * | 2013-09-26 | 2015-04-15 | 中国电信股份有限公司 | A method and a device for realizing cloud storage |
US20170131899A1 (en) * | 2015-11-08 | 2017-05-11 | A3Cube, Inc. | Scale Out Storage Architecture for In-Memory Computing and Related Method for Storing Multiple Petabytes of Data Entirely in System RAM Memory |
EP3580691B1 (en) | 2017-08-31 | 2020-07-01 | FotoNation Limited | A peripheral processing device |
Family Cites Families (136)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4882703A (en) | 1984-09-17 | 1989-11-21 | Nicolai Robert L | Procedure for fining all words contained within any given word including creation of a dictionary |
US4945475A (en) * | 1986-10-30 | 1990-07-31 | Apple Computer, Inc. | Hierarchical file system to provide cataloging and retrieval of data |
US4926317A (en) * | 1987-07-24 | 1990-05-15 | Convex Computer Corporation | Hierarchical memory system with logical cache, physical cache, and address translation unit for generating a sequence of physical addresses |
US5222217A (en) * | 1989-01-18 | 1993-06-22 | International Business Machines Corporation | System and method for implementing operating system message queues with recoverable shared virtual storage |
EP0410210A3 (en) | 1989-07-24 | 1993-03-17 | International Business Machines Corporation | Method for dynamically expanding and rapidly accessing file directories |
US5201044A (en) * | 1990-04-16 | 1993-04-06 | International Business Machines Corporation | Data processing method for file status recovery includes providing a log file of atomic transactions that may span both volatile and non volatile memory |
US5187786A (en) * | 1991-04-05 | 1993-02-16 | Sun Microsystems, Inc. | Method for apparatus for implementing a class hierarchy of objects in a hierarchical file system |
US5369757A (en) | 1991-06-18 | 1994-11-29 | Digital Equipment Corporation | Recovery logging in the presence of snapshot files by ordering of buffer pool flushing |
US5627996A (en) | 1992-08-19 | 1997-05-06 | At&T | Method and apparatus for accessing the same computer file using different file name formats |
US5455944A (en) * | 1993-03-16 | 1995-10-03 | International Business Machines Corporation | Method for managing logging and locking of page free space information in a transaction processing system |
US6286013B1 (en) * | 1993-04-01 | 2001-09-04 | Microsoft Corporation | Method and system for providing a common name space for long and short file names in an operating system |
US5530849A (en) * | 1993-08-16 | 1996-06-25 | Cornell Research Foundation, Inc. | Method of reading dynamic, hierarchical file system directories |
GB9408405D0 (en) * | 1994-04-28 | 1994-06-22 | Int Computers Ltd | High availibilty computer system |
US5668958A (en) * | 1995-09-12 | 1997-09-16 | International Business Machines Corporation | Heterogeneous filing system with common API and reconciled file management rules |
US5726989A (en) * | 1995-11-06 | 1998-03-10 | Stellar One Corporation | Method for ensuring synchronization of MPEG-1 data carried in an MPEG-2 transport stream |
US5765172A (en) * | 1996-01-23 | 1998-06-09 | Dsc Communications Corporation | System and method for verifying integrity of replicated databases |
US5774715A (en) * | 1996-03-27 | 1998-06-30 | Sun Microsystems, Inc. | File system level compression using holes |
GB9606927D0 (en) * | 1996-04-02 | 1996-06-05 | Memory Corp Plc | Data storage devices |
US5806085A (en) * | 1996-05-01 | 1998-09-08 | Sun Microsystems, Inc. | Method for non-volatile caching of network and CD-ROM file accesses using a cache directory, pointers, file name conversion, a local hard disk, and separate small database |
US6097380A (en) * | 1996-06-24 | 2000-08-01 | Microsoft Corporation | Continuous media stream control |
US5995980A (en) | 1996-07-23 | 1999-11-30 | Olson; Jack E. | System and method for database update replication |
AU5313498A (en) * | 1996-10-23 | 1998-05-15 | Infoglobal, S.L. | Method and system for integration of several physical media for data communications |
US5974425A (en) * | 1996-12-17 | 1999-10-26 | Oracle Corporation | Method and apparatus for reapplying changes to a database |
US5897661A (en) * | 1997-02-25 | 1999-04-27 | International Business Machines Corporation | Logical volume manager and method having enhanced update capability with dynamic allocation of storage and minimal storage of metadata information |
US6173291B1 (en) * | 1997-09-26 | 2001-01-09 | Powerquest Corporation | Method and apparatus for recovering data from damaged or corrupted file storage media |
US6516356B1 (en) * | 1997-09-30 | 2003-02-04 | International Business Machines Corporation | Application interface to a media server and a method of implementing the same |
US6160796A (en) | 1998-01-06 | 2000-12-12 | Sony Corporation Of Japan | Method and system for updating device identification and status information after a local bus reset within a home audio/video network |
US6260044B1 (en) | 1998-02-04 | 2001-07-10 | Nugenesis Technologies Corporation | Information storage and retrieval system for storing and retrieving the visual form of information from an application in a database |
AU3304699A (en) * | 1998-02-20 | 1999-09-06 | Storm Systems Llc | File system performance enhancement |
US6457130B2 (en) * | 1998-03-03 | 2002-09-24 | Network Appliance, Inc. | File access control in a multi-protocol file server |
US6697846B1 (en) * | 1998-03-20 | 2004-02-24 | Dataplow, Inc. | Shared file system |
US6058400A (en) * | 1998-04-28 | 2000-05-02 | Sun Microsystems, Inc. | Highly available cluster coherent filesystem |
US6389513B1 (en) * | 1998-05-13 | 2002-05-14 | International Business Machines Corporation | Disk block cache management for a distributed shared memory computer system |
US6356863B1 (en) | 1998-09-08 | 2002-03-12 | Metaphorics Llc | Virtual network file server |
US6845401B1 (en) * | 1998-12-30 | 2005-01-18 | Schneider Automation Inc. | Embedded file system for a programmable logic controller |
US6510450B1 (en) * | 1999-02-04 | 2003-01-21 | Novell, Inc. | Multiple storage class distributed nametags for locating items in a distributed computing system |
US6922708B1 (en) * | 1999-02-18 | 2005-07-26 | Oracle International Corporation | File system that supports transactions |
US6438661B1 (en) * | 1999-03-03 | 2002-08-20 | International Business Machines Corporation | Method, system, and program for managing meta data in a storage system and rebuilding lost meta data in cache |
US6754696B1 (en) * | 1999-03-25 | 2004-06-22 | Micosoft Corporation | Extended file system |
JP3763992B2 (en) * | 1999-03-30 | 2006-04-05 | 富士通株式会社 | Data processing apparatus and recording medium |
US6324637B1 (en) | 1999-08-13 | 2001-11-27 | Sun Microsystems, Inc. | Apparatus and method for loading objects from a primary memory hash index |
JP2001101044A (en) | 1999-09-29 | 2001-04-13 | Toshiba Corp | Transactional file managing method and transactional file system and composite transactional file system |
US6496944B1 (en) | 1999-10-06 | 2002-12-17 | International Business Machines Corporation | Method for database assisted file system restore |
US6412042B1 (en) * | 1999-11-17 | 2002-06-25 | Maxtor Corporation | System and method for improved disk drive performance and reliability |
JP4507319B2 (en) | 1999-12-17 | 2010-07-21 | ソニー株式会社 | Information processing device, information processing method, program, recording medium, terminal device, system, and system method |
JP3686564B2 (en) | 1999-12-21 | 2005-08-24 | 株式会社日立製作所 | Database system, database replica generation method, and computer-readable recording medium recording database replica generation program |
US6584582B1 (en) * | 2000-01-14 | 2003-06-24 | Sun Microsystems, Inc. | Method of file system recovery logging |
US6606628B1 (en) * | 2000-02-14 | 2003-08-12 | Cisco Technology, Inc. | File system for nonvolatile memory |
US6523046B2 (en) * | 2000-02-25 | 2003-02-18 | Microsoft Corporation | Infrastructure and method for supporting generic multimedia metadata |
US6591376B1 (en) * | 2000-03-02 | 2003-07-08 | Hewlett-Packard Development Company, L.P. | Method and system for failsafe recovery and upgrade of an embedded operating system |
US6856993B1 (en) * | 2000-03-30 | 2005-02-15 | Microsoft Corporation | Transactional file system |
US20020143862A1 (en) * | 2000-05-19 | 2002-10-03 | Atitania Ltd. | Method and apparatus for transferring information between a source and a destination on a network |
US7051098B2 (en) * | 2000-05-25 | 2006-05-23 | United States Of America As Represented By The Secretary Of The Navy | System for monitoring and reporting performance of hosts and applications and selectively configuring applications in a resource managed system |
US7043472B2 (en) | 2000-06-05 | 2006-05-09 | International Business Machines Corporation | File system with access and retrieval of XML documents |
US6675177B1 (en) * | 2000-06-21 | 2004-01-06 | Teradactyl, Llc | Method and system for backing up digital data |
JP4164994B2 (en) * | 2000-07-14 | 2008-10-15 | ソニー株式会社 | Data recording / reproducing apparatus and method |
US6842770B1 (en) | 2000-08-18 | 2005-01-11 | Apple Computer, Inc. | Method and system for seamlessly accessing remotely stored files |
US6571259B1 (en) * | 2000-09-26 | 2003-05-27 | Emc Corporation | Preallocation of file system cache blocks in a data storage system |
US7660902B2 (en) * | 2000-11-20 | 2010-02-09 | Rsa Security, Inc. | Dynamic file access control and management |
US6754773B2 (en) | 2001-01-29 | 2004-06-22 | Snap Appliance, Inc. | Data engine with metadata processor |
US6990667B2 (en) * | 2001-01-29 | 2006-01-24 | Adaptec, Inc. | Server-independent object positioning for load balancing drives and servers |
US7054927B2 (en) * | 2001-01-29 | 2006-05-30 | Adaptec, Inc. | File system metadata describing server directory information |
US7277878B2 (en) * | 2001-02-13 | 2007-10-02 | Ariba, Inc. | Variable length file header apparatus and system |
JP4225729B2 (en) | 2001-03-06 | 2009-02-18 | シャープ株式会社 | Information management device |
US7047257B2 (en) * | 2001-04-03 | 2006-05-16 | Qnx Software Systems | Computer file management system |
US7003619B1 (en) * | 2001-04-09 | 2006-02-21 | Matrix Semiconductor, Inc. | Memory device and method for storing and reading a file system structure in a write-once memory array |
US7174561B2 (en) * | 2001-04-13 | 2007-02-06 | Emc Corporation | MPEG dual-channel decoder data and control protocols for real-time video streaming |
US6748491B2 (en) * | 2001-04-19 | 2004-06-08 | International Business Machines Corporation | Designing a cache using an LRU-LFU array |
US7096474B2 (en) | 2001-04-20 | 2006-08-22 | Sun Microsystems, Inc. | Mobile multimedia Java framework application program interface |
US7136934B2 (en) * | 2001-06-19 | 2006-11-14 | Request, Inc. | Multimedia synchronization method and device |
US6396421B1 (en) | 2001-07-31 | 2002-05-28 | Wind River Systems, Inc. | Method and system for sampling rate conversion in digital audio applications |
AU2002313583A1 (en) | 2001-08-01 | 2003-02-17 | Actona Technologies Ltd. | Virtual file-sharing network |
US7043493B2 (en) * | 2001-09-17 | 2006-05-09 | Fujitsu Limited | Hierarchical file system and anti-tearing algorithm for a limited-resource computer such as a smart card |
US6868480B2 (en) * | 2001-09-28 | 2005-03-15 | Ui Evolution, Inc. | Removable active application specific medium |
US20030074457A1 (en) | 2001-10-17 | 2003-04-17 | Kluth Michael R. | Computer system with separable input device |
WO2003036541A1 (en) | 2001-10-22 | 2003-05-01 | Apple Computer, Inc. | Intelligent synchronization for a media player |
US20040064500A1 (en) * | 2001-11-20 | 2004-04-01 | Kolar Jennifer Lynn | System and method for unified extraction of media objects |
JP4168626B2 (en) * | 2001-12-06 | 2008-10-22 | 株式会社日立製作所 | File migration method between storage devices |
US6959373B2 (en) * | 2001-12-10 | 2005-10-25 | Incipient, Inc. | Dynamic and variable length extents |
JP2003216620A (en) | 2002-01-17 | 2003-07-31 | Matsushita Electric Ind Co Ltd | Content management system and method, media, and program |
US7149788B1 (en) | 2002-01-28 | 2006-12-12 | Witness Systems, Inc. | Method and system for providing access to captured multimedia data from a multimedia player |
US7533214B2 (en) * | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
US6983462B2 (en) * | 2002-03-15 | 2006-01-03 | Toshiba Corporation | Method and apparatus for serving a request queue |
US6857001B2 (en) * | 2002-06-07 | 2005-02-15 | Network Appliance, Inc. | Multiple concurrent active file systems |
US7054888B2 (en) * | 2002-10-16 | 2006-05-30 | Microsoft Corporation | Optimizing media player memory during rendering |
US7397797B2 (en) * | 2002-12-13 | 2008-07-08 | Nvidia Corporation | Method and apparatus for performing network processing functions |
KR20040065790A (en) * | 2003-01-16 | 2004-07-23 | 삼성전자주식회사 | DVD player and method for reproducing multimedia file |
CA2419883A1 (en) | 2003-02-26 | 2004-08-26 | Ibm Canada Limited - Ibm Canada Limitee | Discriminatory replay of log files during table space recovery in a database management system |
JP2004295465A (en) * | 2003-03-27 | 2004-10-21 | Hitachi Ltd | Computer system |
CN100377119C (en) | 2003-06-20 | 2008-03-26 | 深圳市朗科科技有限公司 | Protection method for data in flash memory media |
KR100984497B1 (en) * | 2003-07-24 | 2010-10-01 | 파나소닉 주식회사 | File management method and information processing device |
US20050060420A1 (en) * | 2003-09-11 | 2005-03-17 | Kovacevic Branko D. | System for decoding multimedia data and method thereof |
US7584353B2 (en) * | 2003-09-12 | 2009-09-01 | Trimble Navigation Limited | Preventing unauthorized distribution of media content within a global network |
JP2005115857A (en) | 2003-10-10 | 2005-04-28 | Sony Corp | File storage device |
US7451167B2 (en) * | 2003-10-24 | 2008-11-11 | Network Appliance, Inc. | Verification of file system log data using per-entry checksums |
JP4144507B2 (en) * | 2003-10-30 | 2008-09-03 | ソニー株式会社 | Information processing apparatus, information processing method, and computer program |
US7962575B2 (en) * | 2003-11-03 | 2011-06-14 | Grape Technology Group, Inc. | System and method for data synchronization between devices |
KR100562907B1 (en) | 2003-12-18 | 2006-03-21 | 삼성전자주식회사 | Apparatus and method for managing media contents all together |
US20050147130A1 (en) * | 2003-12-23 | 2005-07-07 | Intel Corporation | Priority based synchronization of data in a personal area network |
EP1562193A1 (en) * | 2004-02-06 | 2005-08-10 | Sony International (Europe) GmbH | System for storing and rendering multimedia data |
WO2005078606A2 (en) * | 2004-02-11 | 2005-08-25 | Storage Technology Corporation | Clustered hierarchical file services |
US7676481B2 (en) * | 2005-02-24 | 2010-03-09 | Microsoft Corporation | Serialization of file system item(s) and associated entity(ies) |
US20050210507A1 (en) * | 2004-03-17 | 2005-09-22 | Sony Corporation | System and method for multimedia playlist |
US7873685B2 (en) * | 2004-05-13 | 2011-01-18 | Pixar | System and method for flexible path handling |
US7627530B2 (en) * | 2004-04-26 | 2009-12-01 | Amazon Technologies, Inc. | Method and system for managing access to media files |
US20050246362A1 (en) | 2004-05-03 | 2005-11-03 | Borland Devin P | System and method for dynamci log compression in a file system |
US7565661B2 (en) * | 2004-05-10 | 2009-07-21 | Siew Yong Sim-Tang | Method and system for real-time event journaling to provide enterprise data services |
US20050256845A1 (en) | 2004-05-10 | 2005-11-17 | Microsoft Corporation | Data management for a networked multimedia console |
CN1998224A (en) * | 2004-05-12 | 2007-07-11 | 富盛旺公司 | Advanced contact identification system |
US20050273486A1 (en) * | 2004-06-03 | 2005-12-08 | Keith Robert O Jr | Virtual distributed file system |
WO2006059240A2 (en) * | 2004-06-16 | 2006-06-08 | Ids Scheer Aktiengesellschaft | User interface for complex process inplementation |
US8087091B2 (en) * | 2004-07-08 | 2011-12-27 | Media Rights Technologies | Method and system for preventing unauthorized reproduction of electronic media |
KR20060009717A (en) | 2004-07-26 | 2006-02-01 | 엘지전자 주식회사 | Data managing apparatus for mobile communication terminal |
US7672978B2 (en) * | 2004-08-20 | 2010-03-02 | Nokia Corporation | Handling of content in a data processing device |
JP2006107192A (en) * | 2004-10-06 | 2006-04-20 | Olympus Imaging Corp | Information processing system and reproduction frequency management method for contents data |
US7610307B2 (en) * | 2004-11-30 | 2009-10-27 | Microsoft Corporation | Method and system of detecting file system namespace changes and restoring consistency |
FI119664B (en) | 2004-12-08 | 2009-01-30 | Open Invention Network Llc | A method of accessing files on electronic devices |
US9639554B2 (en) * | 2004-12-17 | 2017-05-02 | Microsoft Technology Licensing, Llc | Extensible file system |
EP1839177A4 (en) | 2005-01-05 | 2010-07-07 | Divx Inc | System and method for a remote user interface |
JP2006235717A (en) | 2005-02-22 | 2006-09-07 | Sony Corp | Content transferring method, its device and program |
US7818350B2 (en) * | 2005-02-28 | 2010-10-19 | Yahoo! Inc. | System and method for creating a collaborative playlist |
US20060206538A1 (en) * | 2005-03-09 | 2006-09-14 | Veazey Judson E | System for performing log writes in a database management system |
US7647346B2 (en) | 2005-03-29 | 2010-01-12 | Microsoft Corporation | Automatic rules-based device synchronization |
US20060282471A1 (en) | 2005-06-13 | 2006-12-14 | Mark Timothy W | Error checking file system metadata while the file system remains available |
KR20060133410A (en) * | 2005-06-20 | 2006-12-26 | 엘지전자 주식회사 | Method for managing file database and searching file in multimedia device |
US7599941B2 (en) * | 2005-07-25 | 2009-10-06 | Parascale, Inc. | Transparent redirection and load-balancing in a storage network |
DE602006021682D1 (en) * | 2005-10-17 | 2011-06-16 | Samsung Electronics Co Ltd | Method and apparatus for transmitting / receiving data in a multi-user, multi-antenna communication system |
US7426606B2 (en) * | 2006-03-31 | 2008-09-16 | Intel Corporation | Method, apparatus and system for reverting FAT cluster number to file ID and offset of non-FAT flash file system |
US7558797B2 (en) * | 2006-06-30 | 2009-07-07 | Microsoft Corporation | Metadata structures for mass P2P file sharing |
US7613770B2 (en) * | 2006-06-30 | 2009-11-03 | Microsoft Corporation | On-demand file transfers for mass P2P file sharing |
US20080027998A1 (en) * | 2006-07-27 | 2008-01-31 | Hitachi, Ltd. | Method and apparatus of continuous data protection for NAS |
US7676691B2 (en) * | 2006-08-18 | 2010-03-09 | Isilon Systems, Inc. | Systems and methods for providing nonlinear journaling |
US7752402B2 (en) * | 2006-08-18 | 2010-07-06 | Isilon Systems, Inc. | Systems and methods for allowing incremental journaling |
EP1895434A1 (en) | 2006-08-25 | 2008-03-05 | QNX Software Systems GmbH & Co. KG | Multimedia system framework having layer consolidation access to multiple media devices |
US7599972B2 (en) | 2006-08-25 | 2009-10-06 | Qnx Software Systems Gmbh & Co. Kg | File system having variable logical storage block size |
US8682859B2 (en) * | 2007-10-19 | 2014-03-25 | Oracle International Corporation | Transferring records between tables using a change transaction log |
-
2007
- 2007-03-13 US US11/717,601 patent/US8566503B2/en active Active
- 2007-08-13 EP EP07015915A patent/EP1898322A1/en not_active Ceased
- 2007-08-13 EP EP21204844.1A patent/EP3964979A1/en active Pending
- 2007-08-15 JP JP2007211996A patent/JP2008052731A/en not_active Withdrawn
- 2007-08-16 KR KR1020070082136A patent/KR20080018802A/en not_active Application Discontinuation
- 2007-08-22 CA CA2598312A patent/CA2598312C/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3964979A1 (en) | 2022-03-09 |
US8566503B2 (en) | 2013-10-22 |
US20080052323A1 (en) | 2008-02-28 |
CA2598312A1 (en) | 2008-02-25 |
EP1898322A1 (en) | 2008-03-12 |
JP2008052731A (en) | 2008-03-06 |
KR20080018802A (en) | 2008-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2598312C (en) | Multimedia filesystem having unified representation of content on diverse multimedia devices | |
EP2024855B1 (en) | Methods and apparatus for transferring media across a network using a network interface device | |
KR100987659B1 (en) | Selecting and controlling remote and local content via proprietary application | |
JP5180360B2 (en) | Media system with synchronization using interrupt priority in synchronization order | |
US20070118606A1 (en) | Virtual content directory service | |
KR20060102548A (en) | Method and apparatus for managing bookmark information for contents stored in a networked media server | |
WO2009123694A2 (en) | System and method for managing, controlling and/or rendering media in a network | |
CN101076795B (en) | Structure of objects stored in a media server and improving accessibility of the structure | |
Kazasis et al. | Designing Ubiquitous Personalized TV-Anytime Services. | |
JP2011155667A (en) | Multimedia system framework having layer consolidating access to a plurality of media devices | |
CN101131701A (en) | Multimedia system framework having layer consolidating access to multiple media devices | |
KR101570451B1 (en) | System, apparatus, method and computer readable recording medium for providing n-screen service using a combined browsing about web cloud storage and network attached storage | |
US20140081921A1 (en) | Methods and systems for providing access to regions of interest within multimedia content | |
CN101458689A (en) | System for searching multimedia file by utilizing date | |
JP4107027B2 (en) | Content distribution system | |
WO2007093932A2 (en) | A device for and a method of managing auxiliary data assigned to main data | |
Schneider | A Workflow-controlled Service-oriented Architecture for Cross-Media Storage and Provision |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EEER | Examination request |