Use of non-volatile based storage devices has been rapidly increasing over the years because they are portable and they have small physical size and large storage capacity. Storage devices come in a variety of designs. Some storage devices are regarded as “embedded”, meaning that they cannot, and are not intended to be removed by a user from a host device with which they operate. Other storage devices are removable, which means that the user can move them from one host device to another, or replace a storage device with another.
One type of removable storage devices is commonly known as “Disk-on-Key” devices that are provided with a Universal Serial Bus (“USB”) interface in order to allow them to be connected to a computer system, for example. A flash storage device that is provided with a USB interface is also known in the field as a USB Flash Drive, or “UFD”. MultiMedia Card (“MMC”), Secure Digital (“SD”), miniSD, and microSD, are exemplary flash storage devices that are used with a variety of host devices such as multimedia players (e.g., MP3 and MP4 players), digital cameras, computer laptops, Global Positioning System (“GPS”) devices, and so on.
Home video playback devices, for example, DVD players, set-top boxes, Digital Picture Frames, PVRs, and high-definition players, allow playing back video content. Home video playback devices often come with USB ports to which USB flash drives and portable hard drives can be attached for the purpose of playing media content that was previously acquired, for example, from a home computer, camcorder, or the Internet.
Low-cost DVD players typically are optimized for playback of standard-definition media content at a fixed bit rate. Because of cost considerations, low-end USB-equipped DVD players generally cannot read media content at a high bit rate. Usually, these players support only USB 2.0 full speed (rather than high speed) and may read data at an even lower bit rate. Currently, the leading chipset for DVD players is capable of reading data at 3 megabits per second (Mbps). Users acquiring media content may attempt to use their low-end media players to play back higher-bit-rate files. This will lead to an unpleasant experience of data read stalls, errors in rendering video streams, and de-synchronization. Some current DVD player devices attempt to deal with this issue by notifying the user that the requested file is not supported if the detected bit rate is considerably higher than the supported bit rate. However, this solution does not work well with variable-bit-rate files or with files having multiple segments, and in any event this is a suboptimal solution.
FIG. 1 shows a typical storage device 100. Storage device 100 typically includes a storage area 110 for storing data, a storage controller 120 that manages storage area 110 via data and control lines 130 and communicates with host device 140 via host interface 150. Storage area 110 may be of a NAND flash variety.
Storage controller 120 controls all of the data transfer to/from storage area 110 and data transfer to/from host device 140 by controlling, for example, “read”, “write” and “erase” operations, wear leveling, and so on, and by controlling communication with host 140. Storage area 110 may contain; e.g., user and other types of files, protected data that is allowed to be used only by authorized host devices, and security data that is used internally, by storage controller 120. Hosts (e.g., host 140) cannot directly access storage area 110. That is, if, for example, host 140 asks for, or needs, data from storage device 100, host 140 has to request it from storage controller 120. In order to facilitate easy access to data files that are stored in storage device 100, storage device 100 is provided with a file system 160.
Briefly, a file system implements a methodology for storing and organizing computer files. A file system includes a set of abstract data types and metadata that are implemented for the storage, hierarchical organization, manipulation, navigation, access, and retrieval of data. The abstract data types and metadata form “directory trees” through which the computer files (also referred to herein as “data files”, or “files” for simplicity) can be accessed, manipulated and launched. A “directory tree” typically includes a root directory and subdirectories. A directory tree is stored in the file system as a “directory file”. The set of metadata and directory files included in a file system is called herein a “file system structure”. A file system, therefore, includes data files and a file system structure that facilitate accessing, manipulating and launching the data files. FAT32 (“FAT” stands for “File Allocation Table”) is an exemplary file system with which storage device 100 can be provided.
File system 160 includes the files stored in storage device 100 and also directory files that contain information related to directory trees through which the stored data files can be accessed and selected for consumption by a host such as host 140. By way of example, a directory file 170 is stored in storage area 110 of storage device 100, through which storage controller 120, or an end-user, can navigate to find data files in file system 160.
Currently, media files can be divided into groups such as “high-speed” files and “full-speed” files. A high-speed file requires for consumption a host that can play back files at a bit rate that can be as high as 480 Mbps. A full-speed file currently requires for consumption a host that can play back files at a maximum bit rate that is 12 Mbps. Some of the data files that are stored in storage device 100 may be playable on “high-speed” and “full-speed” hosts, whereas other data files may be playable only on “high-speed” hosts. For example, if host 140 is a high-speed host, it can play back data files that are playable on high-speed hosts, and usually also data files that are playable on low-speed and on full-speed hosts. However, if host 140 is a full-speed host attempting to play back a data file that requires for consumption a high-speed host would result in storage controller 120 streaming the data file to host 140 in a non-optimal bit rate that would degrade the experience of an end-user.
There is therefore a need to address these varying attributes of files and host devices in a way that would make them useful. For example, there is a need to allow playback of various files regardless of whether the storage device has one playback capability or another.