1. Field of the Invention
The present invention generally relates to software communication, and more particularly to software communication between MPEG (Motion Picture Expert Group) layer and servo layer.
2. Description of the Prior Art
Today, vast amount of motion pictures are stored in various forms of optical discs, such as VCDs and DVDs. Traditional playback process of multimedia optical discs mainly evolves two major steps: first, reading data from an optical disc; second, decoding read-out data. The data reading part is usually controlled by a servo chip. At the mean time, audio and video output is generated by a decode chip according to those read-out data.
Please refer to the
Please refer to the
In most cases, since there may exist other devices for sharing the ATA bus 110, the transfer of read-out data would be delayed by resource conflict. Besides, the read-out data is duplicated in two places, such as the servo buffer 125 and the MPEG buffer 135, in the same time. The duplication process wastes time and space. Moreover, since the clock rate of the ATA bus 100 may be different from those clock rates operated by the servo buffer 125 and/or the MPEG buffer 135, additional FIFO (First-In/First-Out) structures may be necessary in the implementations.
In addition, once the size of the servo buffer 125 is as large as the size of requested data, the servo chip 120 has to wait for duplication complete in prior to read next data. Therefore the reading and the duplication could not be performed concurrently. Hence, the playback procedure would be stalled while the read error occurs or the ATA bus 110 is occupied.
Accordingly, there exists a need for a software communication architecture for solving the stated problems in order to improve the competitiveness of optical disc playback apparatus.
Therefore, in accordance with the previous summary, objects, features and advantages of the present disclosure will become apparent to one skilled in the art from the subsequent description and the appended claims taken in conjunction with the accompanying drawings.
The present invention provides a multi-tier structure, which comprises a MPEG application, a plurality of message queues, and a servo software. An optical disc reader is controlled and directed by the servo software in order to read the information on the optical disc. Both the MPEG application and the servo software share at least a common data buffer as the storage of read-out information. In the embodiment, the MPEG application receives information from the servo software for playback by means of the plurality of message queues. In this regards, when needing information on optical disc, the MPEG application issues a data request message to one of the plurality of message queues. Next, data request messages in the message queue are re-ordered by the message queue and are received by the servo software. According to instructions of the data request message, the optical disc reader controlled by the servo software read information on optical disc. The read-out information would be stored in the data buffer consequently. A response message is replied to another message queue. After re-ordered in the message queue, it would be received and interpreted by the MPEG application. Accordingly, the MPEG application could acquire the requested data in the data buffer.
The present invention also provides a multi-tier structure, which comprises an application layer, a middle layer, and a servo layer. The application layer includes at least a load manager for issuing command messages by the requests of a rendering engine and a file system. The middle layer comprises at least one command queue and a complete queue, which may be simple First-In-First-Out structures or some kinds of priority queues. A servo software, included in the servo layer, is configured to control an optical disc reader for reading information on optical disc. The servo layer and application layer share at least one data buffer as a memory space for the storage of read-out information. The multiple message queues are used to bridge and communicate with the application and servo layers. In this regards, when information on optical disc is needed, the rendering engine or the file system would notify the load manager. The requests would be processed, re-ordered, and scheduled by the load manager at first. A command message would be sent to the command queue in the middle layer at first and the servo software, in turn. According to instructions of the data request message, the optical disc reader controlled by the servo software read information on optical disc. The read-out information would be stored in the data buffer consequently. Next, a response message, representing the completion of reading and storing, is replied to the complete queue by the servo software. The response message would be received and further dispatched to the requester by the load manager. Once the rendering engine or the file system receives the response message, it could acquire information stored in the data buffer.
Multitasking and common data buffer sharing techniques provided by the present invention are used to save time and space wasted in the duplication process of the prior art. Besides, a middle layer composed by multiple message queues is also taken as a communicative bridge between the application and servo layers. Message queues of the middle layer could be used as pipelines for staging multiple data request messages and corresponding response messages concurrently from the both ends, the application and servo layers. Moreover, the size of data buffer may be larger than the size of single requested information, the data buffer could store more than one requested data accordingly. However, there could be multiple data buffers for storing multiple data in the present invention, too. Summarized, the software architecture provided by the present invention could improve the over whole data transfer efficiency. In addition to the middle layer, the application and servo layers could be also implemented as parts of pipelines. Furthermore, once the architecture implemented in multi-threaded operating system, parallel processing could be also achieved as each layer implemented in concurrent threads. For example, MPEG layer could simultaneously issue data request messages, receive response messages, and retrieve requested data from the data buffer. Hence, both the MPEG and servo layers could always work in any given moment, unlike that the servo chip and MPEG chip of prior art have to stay idle and wait for each other. At final, the architecture disclosed by this invention is also suitable for implemented as an integrated multimedia optical disc playback system-on-chip.
The accompanying drawings incorporated in and forming a part of the specification illustrate several aspects of the present invention, and together with the description serve to explain the principles of the disclosure. In the drawings:
The present disclosure can be described by the embodiments given below. It is understood, however, that the embodiments below are not necessarily limitations to the present disclosure, but are used to a typical implementation of the invention.
Having summarized various aspects of the present invention, reference will now be made in detail to the description of the invention as illustrated in the drawings. While the invention will be described in connection with these drawings, there is no intent to limit it to the embodiment or embodiments disclosed therein. On the contrary the intent is to cover all alternatives, modifications and equivalents included within the spirit and scope of the invention as defined by the appended claims.
Please refer to the
As shown in the
As shown in the
In one example of the embodiment, the software architecture 300 could be implemented at a multi-tasking real-time operating system wherein each layer is implemented as at least one task or task group which could be executed concurrently. On another example of the embodiment, the software architecture 300 could be implemented at a multi-threaded operating system wherein each layer is implemented as at least one thread or thread group which could be executed concurrently.
Please refer to the
As shown in the
In a preferred embodiment, the plurality of message queues could be pipelined for staging the data request messages and corresponding response messages from both ends, the MPEG application 310 and the servo software 330. Furthermore, since the size of data buffer 350 may be larger than data size of a single request, multiple requested data could be stored in the data buffer simultaneously. Therefore, parallel processing could be achievable for the sake of pipeline provided by the present invention. The over whole efficiency could be improved accordingly. Once the present invention is implemented at the multi-threaded operating system, parallel processing could be also achieved by implementing the layers into concurrent threads. For example, the MPEG layer could issue data request message, retrieve response message, and acquire read-out data from the data buffer 350 simultaneously. In such case, both the MPEG layer and the servo layer would be kept busy at any given moment unlike the situation that the servo chip 120 and the MPEG chip 130 have to wait for each other in the prior art.
Please refer to the
As shown in the
As shown in the
In one example of the embodiment, the software architecture 500 could be implemented at a multi-tasking real-time operating system wherein each layer is implemented as at least one task or task group which could be executed concurrently. On another example of the embodiment, the software architecture 500 could be implemented at a multi-threaded operating system wherein each layer is implemented as at least one thread or thread group which could be executed concurrently.
Please refer to the
As shown in the
In this preferred embodiment, the plurality of message queues 520 and 525 could be pipelined for staging the data request messages and corresponding response messages from both ends, the load manager 510 and the servo layer. Furthermore, since the size of data buffer 350 may be larger than data size of a single request, multiple requested data could be stored in the data buffer simultaneously. Therefore, parallel processing could be achievable for the sake of pipeline provided by the present invention. The over whole efficiency could be improved accordingly. Once the present invention is implemented at the multi-threaded operating system, parallel processing could be also achieved by implementing the layers into concurrent threads. For example, the MPEG layer could issue data request message, retrieve response message, and acquire read-out data from the data buffer 550 simultaneously. In such case, both the MPEG layer and the servo layer would be kept busy at any given moment unlike the situation that the servo chip 120 and the MPEG chip 130 have to wait for each other in the prior art.
Please refer to the
In one example of this embodiment, the plurality of message queue pairs 720 are one-to-one mapping to the plurality of data buffers 750. In other words, every pair of the command queue 721 and the complete queue 722 is corresponding to one of the plurality of data buffers 750.
Besides, in another example of the embodiment, the software architecture 700 could be implemented at a multi-tasking real-time operating system wherein each layer is implemented as at least one task or task group which could be executed concurrently. On another example of the embodiment, the software architecture 700 could be implemented at a multi-threaded operating system wherein each layer is implemented as at least one thread or thread group which could be executed concurrently.
In any given moment, the MPEG application 710 sends a plurality of data request messages to the plurality of command queues 721 of the plurality of message queue pairs 720. At the same time, the servo software 730 receives another batch of data request messages, previously sent by the MPEG application 710, from the plurality of command queues 721, read the plurality of requested data with the help of the optical disc reader 740, store the plurality of requested data into the plurality of data buffer 750 corresponding to the plurality of command queues 721, and return a plurality of response messages, corresponding to the batch of data request messages, to the plurality of complete queues 722. Meanwhile, the MPEG application 710 could receive another batch of response messages while sending data request messages, and retrieve data indicated by the batch of response messages.
The foregoing description is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Obvious modifications or variations are possible in light of the above teachings. In this regard, the embodiment or embodiments discussed were chosen and described to provide the best illustration of the principles of the invention and its practical application to thereby enable one of ordinary skill in the art to utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. All such modifications and variations are within the scope of the inventions as determined by the appended claims when interpreted in accordance with the breath to which they are fairly and legally entitled.
This application claims the benefit of U.S. Provisional Application No. 60/602,322, filed on Aug. 18, 2004, which is herein incorporated by reference for all intents and purposes.
Number | Date | Country | |
---|---|---|---|
60602322 | Aug 2004 | US |