With the proliferation of digital audio and video devices, it has become necessary to establish a high speed serial communication mechanism that is capable of allowing efficient and fast transfer of audio/video (A/V) data between devices. IEEE 1394 has so far been a successful candidate for this purpose.
While the transmission of A/V data using industry standard such as IEEE 1394 is well known, the storage of A/V data on modern computing devices is becoming an important issue. Modem computing devices are rapidly moving toward offering various kinds of functionality and features in an integrated manner. For example, a personal computer (PC) nowadays generally contains a myriad of computer programs which offer a variety of functionality, such as word processing programs as well as computer programs which are capable of processing and playing video and audio data. As a result, there is a need to store both A/V data and non-A/V data and both types of data are typically stored on a computer hard disk together.
To store data on the hard disk or other media, a file system is generally required to be in place to organize files and accomplish a number of file-handling tasks such as file creation, deletion, access, save and update. Furthermore, it is preferable and common practice for a file system to have a directory structure which organizes and provides information about all the files stored in the file system. Typically, a file system is capable of storing both A/V and non-A/V data.
A/V data and non-A/V data, however, are fundamentally different in a number of respects. For example, the size of A/V data files is relatively large when compared to the size of non-A/V data files. As a result, handling files of varying sizes in an efficient manner becomes a challenging issue.
Moreover, since A/V data files are generally very large, it is usually not possible to store an entire A/V data file in a temporary storage area such as the random access memory (RAM). Therefore, due to the large size of an A/V data file, efficient random access of A/V data within the A/V data file also presents a problem.
Furthermore, the retrieval and processing of A/V data are subject to relatively stringent time and order-related constraints. Such constraints are necessary to prevent the corruption of A/V data and avoid potential glitches. For example, in order to provide a smooth presentation of video images, A/V data need to be retrieved and processed quickly and continuously in the correct sequential order. Otherwise, the video images might become choppy and incomplete. Hence, it would be desirable to develop and provide an application programming interface between an audio/video controller and a file system capable of handling a mix of A/V and non-A/V data so as to allow A/V data to be stored, retrieved and processed in an efficient manner.
Moreover, changes made to the internal mechanics of a file system should ideally be apparent to any external devices that need to communicate with the file system. This would obviate the need to make changes to the external devices every time the internal mechanics of the file system is changed. Thus, it would also be desirable to develop and provide an application programming interface between an audio/video controller and a file system so that the audio/video controller is not affected by changes to the file system.