This application is based upon and claims the benefit of priority from the prior Japanese Patent Application No. 2008-312379 filed in Japan on Dec. 8, 2008, the entire contents of which are incorporated herein by reference.
1. Field of the Invention
The present invention relates to an information recording/reproducing apparatus and an information recording/reproduction method for realizing information recording and reproduction based on components.
2. Description of Related Art
Known apparatuses for recording and/or reproducing information, such as a moving image, include apparatuses that are defined by OpenMAX™, for example (see The Khronos Group Inc., OpenMAX™ Integration Layer Application Programming Interface Specification ver 1.1.2.0 (2008), for instance).
In the apparatus described in the document, a number of functional blocks to realize information recording and reproduction are defined and generated as components, and data communication ports are set up among the generated components. And connections for port communication are made among the components and information is transmitted and received between components by way of connected ports. The components are controlled by a component control section (hereinafter referred to as a client).
In such an apparatus as shown in the aforementioned document, the client and components generally send and receive information via a bus. In addition, since components are defined by function, the client needs to control a number of components in order to execute a certain instruction.
By way of example, to execute an instruction (or a command) for stopping reproduction during playback of a moving image, the client has to control a component that realizes video decoding function, a component that realizes video filtering function, and a component that realizes video rendering function at appropriate times.
For this reason, a conventional information recording/reproducing apparatus requires transmission and reception of control signals between the client and a number of components, which in turn involves a high frequency and/or amount of data communication on buses to lead to a problem of time between start of an instruction request and actual execution of the instruction being long.
In addition, when components have dependence on one another, such as when a number of components connected via ports share a buffer, it is sometimes necessary to suspend start of processing by one component until processing by another component that has dependence on that component is complete.
As an example, if the client is to execute a command for stopping reproduction during playback of a moving image when a component that realizes video decoding function and a component that realizes video filtering function are connected with each other via ports and share a buffer, the component that realizes video decoding function cannot complete processing on the buffer until the component that realizes video filtering function completes processing on the shared buffer or processing by the component that realizes filtering function itself is complete.
Thus, a conventional information recording/reproducing apparatus requires transmission and reception of control signals between the client and a number of components, which in turn involves a high frequency and/or amount of data communication on bases, or when components have dependence on one another, time of one component waiting for completion of processing being performed by another component on which the component has dependence will be involved. Consequently, a conventional information recording/reproducing apparatus has a problem that the time between start of an instruction request and actual execution of the instruction is long.
An information recording/reproducing apparatus according to an embodiment of the present invention includes a plurality of components configured to perform processing corresponding to functions for realizing recording and reproduction of information; a component management section configured to manage the plurality of components; and a component control section configured to utilize the plurality of components in combination and provide a service, wherein the component control section groups all or some of the plurality of components to form a component group, and issues a control instruction with designation of a particular component group to the component management section, and the component management section maintains group management information in which an identifier capable of identifying the component group and a list of components that are included in the component group are stored, and sends the control instruction to the components included in the component group designated by the component control section.
An embodiment of the present invention will be described below with reference to drawings.
First, referring to
The information recording/reproducing apparatus of the embodiment is applicable to apparatuses that realize information recording and reproducing functions on the basis of components in general, such as apparatuses defined by OpenMAX™, and may be applied to information appliances like mobile phones, televisions, or Blu-ray devices, for example. Herein, configuration is described taking a mobile phone with moving image reproducing functions as an example. The present embodiment is also applicable to an information recording apparatus or an information reproducing apparatus in addition to an apparatus that has both information recording and reproducing functions.
As shown in
The software configuration of the information recording/reproducing apparatus 1 according to the present embodiment is mainly composed of a client 11 as a component control section configured to issue instructions for recording or reproducing a moving image as commands, components 13a to 13d which are blocks serving as functional units for realizing moving image recording and reproducing functions, and a core 12 as a component management section configured to handle requests from the client 11 and passes the requests to the components 13a to 13d, as shown in
The components 13a to 13d are provided with ports as connection points for communicating data with other components. In the example shown in
A component can send and receive data to and from another component by connecting a port provided for itself to a port provided for the other component. For example, the components 13a and 13b have their ports 131a and 131b, and 132a and 132b connected with each other, and can send and receive data to and from each other through these ports.
Similarly, the components 13b and 13c have their ports 133b and 131c, and ports 134b and 132c connected with each other, and can send and receive data to and from each other through these ports. Furthermore, the components 13c and 13d have their ports 133c and 131d, and ports 134c and 132d connected with each other, and can send and receive data to and from each other through these ports.
A port has a buffer as a storage section for temporarily storing data that is sent and received through the port. A buffer is shared between a port at which the buffer is positioned and a port that is connected to the port.
In the example shown in
The client 11 generates components in accordance with a function that should be realized, predefines arrangement and connection of the components, and groups a number of components as necessary. For example, in
Correspondence between the hardware components shown in
Information about the component group 15 grouped by the client 11 is passed from the client 11 to the core 12 to be maintained in the core 12.
Information about the component group 15 maintained in the core 12 (hereinafter referred to as group management information 21) and command conversion information 23 to be discussed below will be described using
As shown in
The group information 22 is composed of a group ID 22a which is an identifier for identifying a group, and a handle information 22b for components that are included in the group having the group ID. The handle information 22b is information that can locate components, such as a list of pointers to the components included in the group, for example. When three components 13a, 13b and 13c are included in the component group 15 as shown in
The command conversion information 23 is information that is used when the core 12 sends a command issued from the client 11 after converting the command to commands corresponding to individual components rather than sending the issued command as it is. More specifically, as shown in
For example, when three components, 13a, 13b and 13c, are included in the component group 15 as shown in
A specific example of the command conversion information 23 is shown. For example, consider a case where the component 13a is composed of a functional block that realizes video decoding function, the component 13b is of a functional block that realizes video filtering function, and the component 13c is of a functional block that realizes video rendering function, and the three components 13a, 13b and 13c are grouped into the component group 15 as components for realizing video functions.
When a command “create a digest” (a sequence of functions to extract partial images (still images) from a moving image currently being reproduced and connect the images to create a new moving image) is issued to the component group 15 from the client 11, the component 13a carries out reproduction functions, the component 13b carries out the function of extracting and connecting partial images, and the component 13c keeps a halt condition without performing output to a monitor or the like.
In the aforementioned case, “create a digest” is registered as the received command 23a in the command conversion information 23, and as the corresponding transmission commands 23b, “reproduce” is registered in the transmission command 231b, “extract and combine partial images” is in the transmission command 232b, and “stop” (to just inform the client 11 without output to the monitor) is in the transmission command 233b in advance.
With the command conversion information 23 registered in such a manner, when the command “create a digest” is issued from the client 11 to the core 12, the core 12 sends the command “reproduce” to the component 13a, the command “extract and combine partial images” to the component 13b, and the command “stop” to the component 13c.
The components 13a to 13c realize functions in accordance with the respective commands the components received (i.e., the commands converted by the core 12). If the same command “create a digest” is sent to the components 13a to 13c without being converted, the components 13a to 13c need to break down the command into functions that the components each should realize by themselves. On the other hand, when command conversion is performed in the core 12, processing in the components 13a to 13c is simplified because commands adapted to the respective functions to be realized by the components 13a to 13c are sent to the components.
The command conversion information 23 is typically preset in the ROM 4 or the like. The core 12 obtains necessary information from the ROM 4 when generating the group management information 21. When a command issued by the client 11 is sent to the components 13a to 13c as it is without being converted, it is unnecessary to establish the command conversion information 23 and only the group information 22 is stored as the group management information 21.
A group may include another group that is composed of a number of other components. When groups are nested and a group includes another group (hereinafter a “sub-group”), the handle information 22b of the group information 22 can be composed of pointers to the components included in the group and information identifying the sub-group that is included in the same group.
A sequential flow from issuance of a command from the client to processing by components in the information recording/reproducing apparatus configured as shown above will be described using
As shown in
Connections among the components performed in step S1 may also be made in step S2. In that case, configuration and/or port connection within the component group 15 may be automatically set up rather than being performed in response to an instruction from the client 11. Information on the grouped components is passed from the client 11 to the core 12.
Then in step S3, the core 12 generates the group management information 21 based on the information passed from the client 11. The group management information 21 includes at least group information 22 that is made up of the group ID 22a identifying the group and the handle information 22b that identifies the components belonging to the group.
The generated group management information 21 is passed to the components 13a, 13b and 13c that belong to the component group 15 in the next step S4. The components 13a, 13b and 13c can each identify the other components that belong to the same component group as itself by obtaining the group management information 21. The procedure from step S1 to step S4 described above is steps carried out before a specific function is realized and may be performed during initial setting which is performed soon after the information recording/reproducing apparatus is started up, for example.
Next, in step S5, a command is issued by the client 11 to the core 12. At this point, the group ID 22a of the component group 15 that will be made to execute the command is specified with the command. In the following step S6, the core 12 searches for a component group 15 that has the group ID 22a specified in step S5 from the group management information 21 the core 12 maintains, and identifies the components 13a to 13c that are included in the group (i.e., obtains pointers to the components 13a through 13c).
The core 12 sends the command issued by the client 11 in step S5 to the components 13a to 13c identified (step S7). At this point, if the command conversion information 23 of the group management information 21 is stored and the command issued by the client in step S5 is registered as the received command 23a, the command is converted according to the command conversion information 23 and converted transmission commands 231b to 233b are sent to the components 13a to 13c, respectively.
A conventional information recording/reproducing apparatus requires the client 11 to issue a command via the core 12 to each of components 13a to 13c that are necessary for executing the command. That is to say, to issue a command to the three components 13a to 13c, the core 12 needs to issue the command three times and the same data (i.e., the command) is communicated on the buses 2a and 2b three times.
Especially in a hardware configuration that has the client 11 and the components 13a to 13c operate on separate CPUs by using an accelerator or the like, typified by a case where the client 11 and the components 13a to 13c are connected to the separate buses 2a and 2b via the bridge 10 such as shown in
Consequently, a conventional information recording/reproducing apparatus involves a large number of data communications as well as a long communication time, causing a problem that a time lag occurs between when a command is issued from the client 11 to the components 13a to 13c and when the command is executed. That is, the problem is that, by way of example, when “pause” is to be effected during playback of a moving image, a delay occurs between when the client 11 issues a “pause” command and when the moving image actually stops, and an image that the user wants to display on the monitor as a still image is different from an image that is actually displayed on the monitor as a still image, significantly hampering the user's convenience.
On the other hand, the information recording/reproducing apparatus of the present embodiment requires the client 11 only to specify the component group 15 to the core 12 and issue a command once as mentioned above (step S7). In addition, since the client 11 and the client-side interface of the core 12 are implemented in the same RAM 5 and the component-side interface of the core 12 and the components 13a to 13c are implemented in the same RAM 6, communication can be performed at a high speed as opposed to low-speed communication across buses as in a conventional apparatus. Consequently, the frequency and amount of data communication can be reduced and communication time can be shortened.
In step S8, the components 13a to 13c process the command received from the core 12. At this point, the components 13a to 13c each have already obtained information about the other components belonging to the same component group 15 in step S4. Thus, each of the components 13a to 13c checks connection between the other components belonging to the same component group 15 as itself and its own port before processing the command.
When a component's port is connected with another component of the same component group 15 and the two components share a buffer, the component can perform its own buffer processing without having to consider buffer processing by the other component even when a command for controlling buffer processing, e.g., “stop”, is issued to the entire component group 15 to which the component belongs. In other words, the components 13a to 13c belonging to the component group 15 can process the command in parallel without having to wait for completion of command processing being performed by the other components and therefore processing time can be shortened.
When command processing in step S8 is complete, the flow proceeds to step S9, where the client 11 is notified that processing has terminated by the components 13a through 13c via the core 12. Notification of termination of processing from the core 12 to the client 11 may be made each time a component provides a notification to the core 12 or may be performed only once in a batch after notifications from all components that have processed the command are received. Through performance of the steps S1 to S9, processing of the command issued by the client 11 is completed.
To issue a command to the component 13d which is not included in the component group 15, the command is directly issued to the component 13d from the client 11 via the core 12 as in conventionally.
Processing of a command issued from the client will be further described using a specific example. Here, description is given by using the activity diagram of
Upon completion of all the activities A2a, A2b and A2c, the client 11 selects components 13a, 13b and 13c that will operate in cooperation to realize video functions, and groups the components as the component group 15 (activity A3). The client 11 then provides the core 12 with information about the component group 15 formed. Activities A3 and A4 correspond to step S2 of
Upon receiving the information about the component group 15 from the client 11 through execution of activity A4, the core 12 generates the group management information 21 based on the information (activity A5).
The group management information 21 includes group information 22 that is composed of the group ID 22a identifying the component group 15 and the handle information 22b identifying components 13a to 13c included in the group. Here, the handle information 22b is made up of the pointer 221b to the component 13a, the pointer 222b to the component 13b, and the pointer 223b to the component 13c.
The core 12 also obtains the command conversion information 23 relating to the component group 15 from the ROM 4 and stores the information 23 in the group management information 21. It is assumed that conversion information for the “stop playback” command issued by the client 11 is not registered in the ROM 4. The activity AS corresponds to step S3 of
The core 12 then passes the group management information 21 about the generated component group 15 to the components 13a to 13c belonging to the same group (activity A6). In response to activity A6, the components 13a to 13c obtain the group management information 21 at the same time (activities A7a, A7b and A7c). This activity enables the components 13a to 13c to each recognize the other components belonging to the same group. The activities A6 and A7a through A7c correspond to step S4 of
When all of the activities A7a, A7b and A7c are complete, a “stop playback” command is issued from the client 11 to the core 12 (activity A8). At this point, the group ID 22a of the component group 15 which will be made to execute the command is specified with the command.
Then, in activity A9, the core 12 searches for a component group 15 that has the group ID 22a specified in activity A8 from the group management information 21 the core 12 maintains, and identifies the components 13a to 13c that are included in the group (i.e., obtains pointers to the components 13a to 13c). If converted commands for the “stop playback” command are registered in the command conversion information 23 of the group management information 21, the core 12 obtains commands to be sent to the components 13a to 13c.
The core 12 sends the “stop playback” command issued by the client 11 in activity A8 to the components 13a to 13c identified (activity A10). The activities A8, A9 and A10 correspond to steps S5, S6 and S7 of
In response to activity A10, the components 13a to 13c receive the “stop playback” command from the core 12 at the same time (activities A11a, A11b, and A11c).
Before processing the command, the component 13a has obtained the group management information 21 in activity A7a and recognizes that the components 13b and 13c belong to the same component group 15 as itself. The component 13a also checks the ports that the component 13a manages to recognize that the port 131a is connected with the port 131b of the component 13b and the port 132a is connected with the port 132b of the component 13b. The component 13a also recognizes that the component 13a shares the buffer 14b with the component 13b.
A conventional information recording/reproducing apparatus generally performs processing during reproduction of a moving image in the following manner. First, data is processed in a functional block that realizes decoding function (i.e., the component 13a) and processed data is input to the port 131b by way of the port 131a. The data input to the port 131b is processed in a functional block that realizes video filtering function (i.e., the component 13b), and the processed data is output to a functional block that realizes video rendering function (i.e., the component 13c) from the port 133b via the port 131c.
To effect “stop playback” in this state (i.e., during reproduction of a moving image), the “stop playback” command is issued to each of the components 13a and 13b from the client 11. In a configuration in which the components 13a and 13b achieve synchronization through the ports 131a and 131b while performing a handshake and update the buffer 14b, the component 13a has to make sure either that “stop playback” processing by the component 13b has been complete or that the component 13b has completed processing on the buffer 14b which is shared at the port 131a before terminating its own “stop playback” processing.
Furthermore, in a configuration in which the component 13b also achieves synchronization with the component 13c through ports while performing a handshake and updates the buffer 14c, the component 13b has to make sure that “stop playback” processing by the component 13c has been complete or the component 13c has completed processing on the buffer 14c which is shared at the port 133b before terminating its own “stop playback” processing. That is to say, in a configuration that connects a number of components in a row, the greater the number of connected stages, the longer time will be required between when the client 11 issues the “stop playback” command and when the components 13a to 13c complete “stop playback” processing.
On the other hand, in the information recording/reproducing apparatus of the present embodiment, when the component 13a has received the “stop playback” command, the component 13a is aware that the “stop playback” command has also been sent to the other components 13b and 13c which belong to the same component group 15 as itself. Therefore, the component 13a can start and complete its own “stop playback” processing without having to wait for completion of “stop playback” processing of the component 13b on which the component 13a has dependence (activity A12a). The components 13b and 13c similarly can start and complete their own “stop playback” processing without having to wait for completion of processing by the other components that belong to the same component group 15 as themselves and on which the components 13b and 13c have dependence (activities A12b and A12c).
In this case, “stop playback” processing by the component 13a may cause inconsistency in data stored in the buffer 14b which is shared between the components 13a and 13b. However, since the component 13b also is performing “stop playback” processing and is known not to perform processing on the buffer 14b, there will be no problem if inconsistency occurs. The same applies to the buffer 14c.
As described above, since the information recording/reproducing apparatus of the present embodiment permits parallel command processing even when the multiple components 13a to 13c belonging to the same component group 15 have dependence on one another, such as when they connect their ports with each other and share buffers, processing can be completed in a small amount of time after a command is received. The activities A11a to A11c, and A12a to A12c correspond to step S8 of
Upon completing “stop playback” processing, the components 13a to 13c each notify the core 12 of termination of processing (activities A13a, A13b and A13c). Having received notifications that processing has terminated from all of the components 13a to 13c, the core 12 informs the client 11 that “stop playback” processing by all the components has finished (activity A14).
By the client 11 receiving a notification that “stop playback” processing has terminated from the core 12, processing of the “stop playback” command is complete (activity A15). The activities A13a to A13c, A14 and A15 correspond to step S9 of
As described above, since the present embodiment of the invention has a configuration in which the components 13a to 13c are grouped in advance and the core 12 manages the component group 15, the client 11 has to issue a command only once to the core 12 even when issuing a command for performing processing using the multiple components 13a to 13c. Therefore, the frequency and/or amount of data communications can be reduced.
In addition, efficiency of processing can be improved and processing can be completed within a short time after a command is issued because the components 13a to 13c belonging to the same component group 15 can process a command in parallel even when they have dependence on each other, such as connecting their respective ports with each other and sharing a buffer. The present embodiment can improve efficiency of processing performed by components that have dependence on one another and shorten the time between start of an instruction request and actual execution of the instruction.
The present invention is not intended to be limited to the above-described embodiment and various modifications or variations can be made without departing from the scope of the invention.
Number | Date | Country | Kind |
---|---|---|---|
2008-312379 | Dec 2008 | JP | national |