Patent Publication Number: US-8126860-B2

Title: Method and apparatus for processing data

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     The present application claims priority to and incorporates by reference the entire contents of Japanese priority documents, 2007-185641 filed in Japan on Jul. 17, 2007 and 2008-120440 filed in Japan on May 2, 2008. 
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to a method and an apparatus for processing data using a plurality of functions. 
     2. Description of the Related Art 
     Application specific integrated circuits (ASICs) have been used to process data, especially, image data. In data processing using the ASIC, a data-processing algorithm is closely related to the software structure or the hardware structure that executes the algorithm. In some data-processing apparatuses including the ASIC, the hardware and the software are designed in combined with each other so that data-processing functions are performed in a predetermined order. Such designs make it difficult to flexibly change the data-processing algorithm. Moreover, changes of the data processing algorithm make the internal structure of the data processing apparatuses complicated, which causes various difficulties in developing or improving an image-data processing apparatus or in providing advanced services. 
     To solve the above problems, Japanese Patent Application Laid-open No. 2001-118050 discloses a technology for obtaining desired image data by processing original image data using a plurality of image-data processing units in a sequential manner, or obtaining desired image data by selecting, in response to a request, target image-data processing units corresponding to the request, and processing original image data using the target image-data processing units in the sequential manner. 
     In the above conventional technology, an order of the image-data processing units to be performed can be changed flexibly by selecting the target image-data processing units corresponding to the request and causing the target image-data processing units to process the data in the sequential manner. 
     However, more and more complicated data processing have been required, recently. In the above conventional technology, resources are reserved sequentially and the reserved resources are sequentially executed. The next process starts when resources for the current process are released. In other words, the resources are releases at the end of each process. This makes it difficult to perform flexible control suitable for the complicated data-processing and hardware specifications. It is required to provide an advanced data-processing apparatus to improve processing performances. 
     SUMMARY OF THE INVENTION 
     It is an object of the present invention to at least partially solve the problems in the conventional technology. 
     According to an aspect of the present invention, there is provided an apparatus for processing data using a plurality of functions of processing the data. The apparatus includes a function control unit that controls a function of processing data, the function control unit being provided for each of the functions; an output unit that outputs status information indicating a status of data processing by the function controlled by the function control unit; a storing unit that stores therein function information indicating the function and next function information indicating a next function to be executed next to the function in an associated manner; a determining unit that determines whether to execute the next function indicated by the next function information corresponding to the function information indicating the function that caused the status of data processing indicated by the status information, based on the status of data processing; and a requesting unit that requests, when the determining unit determines to execute the next function, a function control unit that controls the next function to execute the next function. 
     Furthermore, according to another aspect of the present invention, there is provided a method of processing data using a plurality of functions in an image-data processing apparatus that includes a storing unit that stores therein function information indicating the function and next function information indicating a next function to be executed next to the function in an associated manner. The method includes controlling including a function control unit for each of the functions controlling a function of processing data; outputting including an output unit outputting status information indicating a status of data processing by the function controlled by the function control unit; determining including a determining unit whether to execute the next function indicated by the next function information corresponding to the function information indicating the function that caused the status of data processing indicated by the status information, based on the status of data processing; and requesting including a requesting unit requesting, when it is determined to execute the next function, a function control unit that controls the next function to execute the next function. 
     The above and other objects, features, advantages and technical and industrial significance of this invention will be better understood by reading the following detailed description of presently preferred embodiments of the invention, when considered in connection with the accompanying drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a schematic diagram of an image-data processing apparatus according to a first embodiment of the present invention; 
         FIG. 2  is a schematic diagram of relative parts of the image-data processing apparatus shown in  FIG. 1 ; 
         FIG. 3  is a block diagram of a first status-setting control unit, a function-A driver, and a function-B driver according to the first embodiment; 
         FIG. 4  is a schematic diagram for explaining status-setting control information stored in a control-data storage unit shown in  FIG. 3 ; 
         FIG. 5  is a block diagram of a second status-setting control unit, the function-B driver, and a function-C driver according to the first embodiment; 
         FIG. 6  is a sequence diagram of a process according to the first embodiment that starts in response to a request from threads and ends immediately before a start of image-data processing; 
         FIG. 7  is a block diagram of the status-setting control unit, a function-A 1  driver, a function-A 2  driver, and the function-B driver in an image-data processing apparatus according a second embodiment of the present invention; 
         FIG. 8  is a schematic diagram for explaining the status-setting control information stored in a control-data storage unit shown in  FIG. 7 ; 
         FIG. 9  is a block diagram of the status-setting control unit, the function-A driver, a function-B 1  driver, and a function-B 2  driver in an image-data processing apparatus according a third embodiment of the present invention; 
         FIG. 10  is a schematic diagram for explaining the status-setting control information stored in a control-data storage unit shown in  FIG. 9 ; 
         FIG. 11  is a block diagram of the status-setting control unit, the function-A driver, and the function-B driver in an image-data processing apparatus according a fourth embodiment of the present invention; 
         FIG. 12  is a schematic diagram for explaining the status-setting control information stored in a control-data storage unit shown in  FIG. 11 ; 
         FIG. 13  is a schematic diagram for explaining the status-setting control information stored in a control-data storage unit of an image-data processing apparatus according to a first modification; 
         FIG. 14  is a block diagram of the status-setting control unit, the function-A driver, and the function-B driver in an image-data processing apparatus according a second modification of the present invention; and 
         FIG. 15  is a block diagram for explaining the hardware structure of the image-data processing apparatus according to the first embodiment. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Exemplary embodiments of the present invention are described in detail below with reference to the accompanying drawings. 
     Given below is an explanation about a method and an apparatus for processing data according to a first embodiment of the present invention.  FIG. 1  is a schematic diagram of an image-data processing apparatus  1  that processes data in the method according to the first embodiment. 
     Although image data is processed in the explanation about the first embodiment, any type of data that is to be processed with a plurality of functions can be used. 
     The image-data processing apparatus  1  includes an application specific integrated circuit (ASIC)  10  (hardware), a plurality of drivers Dr 1  to Dr 12  that perform functions of the ASIC  10 , an integrated driver TDr 1  that controls the drivers Dr 1  to Dr 6 , an integrated driver TDr 2  that controls the drivers Dr 7  to Dr 12 , an integrated video driver TBDr that controls the integrated driver TDr 1  and the integrated driver TDr 2 , and a process  20  that is performed on an operating system (OS). The image-data processing apparatus  1  is, for example, a computer or an image processing apparatus such as a multifunction product (MFP), a copying device, and a printing device. The image-data processing apparatus  1  performs data processing by installing data-processing programs stored in a recording medium such as a compact disk (CD), a compact disk-rewritable (CD-RW), a digital versatile disk (DVD), and a flexible disk (FD) and executing the installed programs. Thus, the image-data processing apparatus  1  is ready to perform data processing method according to the first embodiment. 
     The process  20  includes a plurality of threads  21   a  to  21   n  and an integrated video library  22 . The thread is a unit of program that is executed independently. The drivers Dr 1  to Dr 12  work as applications by exchanging data between the threads  21   a  to  21   n  and the integrated video library  22 . 
     The threads  21   a  to  21   n  independently perform processed to satisfy a request from a user or the image-data processing apparatus  1 . The processes are performed by performing the functions of the ASIC  10  sequentially in a predetermined order. The threads  21   a  to  21   n  call the integrated video library  22  to perform the processes. 
     The integrated video library  22  includes a library with which the threads  21   a  to  21   n  use the functions controlled by the drivers. The integrated video library  22  issues information about an order of functions to be performed (hereinafter, “control-procedure information”) in response to a request from the threads  21   a  to  21   n . The integrated video driver TBDr uses an OPE queue to call the thread functions. 
     The image-data processing apparatus performs sending/receiving of administration data on a memory, synchronization of the driver&#39;s operations, sending/receiving of information about operations, and sending/receiving of a command to start/stop a target one of the drivers Dr 1  to Dr 12  by sending/receiving various commands such as an open command, a write command, a close command, and a read command between the integrated video library  22  and the integrated video driver TBDr and by executing thread function calls from the integrated video driver TBDr to the integrated video library  22 . Moreover, the process  20  controls the drivers Dr 1  to Dr 12  with a flexible manner by receiving required data from the drivers. 
     The integrated driver TDr 1  controls operations of the drivers Dr 1  to Dr 6 ; and the integrated driver TDr 2  controls operations of the drivers Dr 7  to Dr 12 . The two integrated drivers TDr 1  and are corresponding to two custom chips of the ASIC  10 , respectively. 
     The integrated video driver TBDr controls operations of the drivers Dr 1  to Dr 12  via the integrated driver TDr 1  and the integrated driver TDr 2 . 
     The integrated video driver TBDr controls the drivers Dr 1  to Dr 12  so that the drivers Dr 1  to Dr 12  sequentially perform their corresponding functions in the predetermined order defined by the control-procedure information that is issued by the integrated video library  22 . The integrated video driver TBDr controls the drivers Dr 1  to Dr 12  by sending a start notification. Upon receiving the start notification, the drivers Dr 1  to Dr 12  start operations to perform their corresponding function. Explanation about the operations is described later. 
     The ASIC  10  includes two custom chips, i.e., a first ASIC  11  and a second ASIC  12 . Each of the first ASIC  11  and the second ASIC  12  provides different functions. The first ASIC  11  is connected to the second ASIC  12  so that the first ASIC  11  can send/receive the processed image data to/from the second ASIC  12 . The drivers Dr 1  to Dr 6  control the functions of the first ASIC  11 ; and the drivers Dr 7  to Dr 12  control the functions of the second ASIC  12 . 
     The ASIC  10  is hardware that performs various functional operations concerning data processing (especially, image-data processing) under control of the drivers Dr 1  to Dr 12 . The ASIC  10  performs, for example, functions as a hard disk drive (HDD), video-input processing, image processing, data processing before distribution, rotating, joint photographic experts group (JPEG) data enlarging, data combining, background processing, resolution converting, size reducing/enlarging, and video-output processing. 
     Upon receiving the start notification from the integrated video driver TBDr via the integrated driver TDr 1 , the drivers Dr 1  to Dr 6  perform the functions of the ASIC  10 . More particularly, upon receiving the start notification from the integrated video driver TBDr, each of the drivers Dr 1  to Dr 6  performs the corresponding function from among the functions of the ASIC  10 . 
     Upon receiving the start notification from the integrated video driver TBDr via the integrated driver TDr 2 , the drivers Dr 7  to Dr 12  perform the functions of the ASIC  10 . More particularly, upon receiving the start notification from the integrated video driver TBDr, each of the drivers Dr 7  to Dr 12  performs the corresponding function from among the functions of the ASIC  10 . 
     The processes performed between the units hither than the integrated video driver TBDr (i.e., processes inside the process  20  and processes using the thread functions) are called “user process”; and the processes performed between the units hither than the integrated video driver TBDr (i.e., processes between the integrated video driver TBDr, the integrated drivers TDr 1  and Tdr 2 , the drivers Dr 1  to Dr 12 , and the ASIC  10 ) are called “kernel mode”. 
       FIG. 2  is a schematic diagram of relative parts of the image-data processing apparatus  1 , i.e., the functions with which the image data is processed and components that control operations of the functions. The integrated video driver TBDr creates a plurality of status-setting control units  31   a  to  31   n  on a work area of the integrated video driver TBDr based on the control-procedure information issued by the integrated video library  22 . Each of the status-setting control units  31   a  to  31   n  includes a control-data storage unit, a determining unit, a requesting unit, and a driver control unit as show in  FIG. 3 . 
     Four drivers including a function-A driver Dra, a function-B driver Drb, a function-C driver Drc, and a function-D driver Drd are selected from among the drivers Dr 1  to Dr 12  as the drivers corresponding to a function A, a function B, a function C, and a function D, respectively. The functions A to D are used to process the image data, and are included in either the first ASIC  11  or the second ASIC  12 . 
     The total number of the status-setting control units  31   a  to  31   n  is smaller by one than the total number of image-data processing functions to be performed. 
     For example, if the integrated video driver TBDr determines based on the control-procedure information that the image data is to be processed with the functions A to D in the order from the function A to the function D, the integrated video driver TBDr creates the status-setting control units  31   a ,  31   b , and  31   c  on the work area. The status-setting control unit  31   a  causes the function-B driver Drb to perform the function B at proper timing based on a status of the image data that is processed using the function A. The status-setting control unit  31   b  causes the function-C driver Drc to perform the function C at proper timing based on a status of the image data that is processed using the function B. The status-setting control unit  31   c  causes the function-D driver Drd to perform the function D at proper timing based on a status of the image data that is processed using the function C. 
     The status-setting control units  31   a  to  31   n  send via the integrated video driver TBDr the start notification to the driver to perform the next function based on the status of the image data that is processed using the current function. Thus, the next function is performed at proper timing depending on the status of the image data that is processed using the current function. 
     The status-setting control unit  31   a , for example, receives from the function-A driver Dra a status-information notification that includes information about the status of the image data that is processed using the function A. When the status-setting control unit  31   a  determines based on the received status-information notification that the next function, i.e., function B is to be performed, the status-setting control unit  31   a  sends the start notification to the function-B driver Drb. Upon receiving the start notification, the function-B driver Drb performs the function B. 
     After that, the status-setting control unit  31   b  receives from the function-B driver Drb the status-information notification that includes information about the status of the image data that is processed using the function B. When the status-setting control unit  31   b  determines that based on the received status-information notification that the next function, i.e., function C is to be performed, the status-setting control unit  31   b  sends the start notification to the function-C driver Drc. Upon receiving the start notification, the function-C driver Drc performs the function C. 
     After that, the status-setting control unit  31   c  receives from the function-C driver Drc the status-information notification that includes information about the status of the image data that is processed using the function C. When the status-setting control unit  31   c  determines that based on the received status-information notification that the next function, i.e., function D is to be performed, the status-setting control unit  31   c  sends the start notification to the function-D driver Drd. Upon receiving the start notification, the function-D driver Drd performs the function D. 
     The image-data processing apparatus  1 , as described above, creates the status-setting control units  31   a  to  31   n  based on the order of target functions to be performed. Each of the status-setting control units  31   a  to  31   n  controls timing to start the corresponding function. Thus, the image-data processing apparatus  1  performs the target functions sequentially in the order in response to the request from the threads  21   a  to  21   n.    
     Given below is an explanation about the function-A driver Dra, the function-B driver Drb, and the status-setting control unit  31   a . The drivers have the common structure, and the status-setting control units  31   a  to  31   n  have the common structure. Therefore, explanations about the other drivers and the other status-setting control units are omitted. 
       FIG. 3  is a block diagram of the status-setting control unit  31   a , the function-A driver Dra, and the function-B driver Drb. 
     If, for example, the function A is to be performed first and the function B is to be performed second as shown in  FIG. 3 , the integrated video driver TBDr, which is a part of the data processing program, creates the status-setting control unit  31   a.    
     The status-setting control unit  31   a  includes a control-data storage unit  301 , a determining unit  302 , a requesting unit  303 , and a driver control unit  304 . The driver control unit  304  stores a setting parameter in each of a status-information storage unit  310   a  and a status-information storage unit  310   b ; refers to the status-information storage unit  310   a  and the status-information storage unit  310   b ; and receives the status-information notification from the function-A driver Dra. The determining unit  302  and the requesting unit  303  perform control so that the functions A and B are performed in the predetermined order, i.e., the function B is performed after the function A. The drivers use the setting parameter to control the ASIC  10 . 
     When the driver control unit  304  receives the status-information notification, the determining unit  302  determines whether the next function, i.e., the function B is to be performed based on the status of the image data that is processed using the function A. The determining unit  302  determines whether the function B is to be performed by referring to the control-data storage unit  301 . 
     The determining unit  302  manipulates data stored in the control-data storage unit  301  using bit operations to determine whether the function B is to be performed. This makes it possible to make determination faster. 
     When the determining unit  302  determines that the next function is to be performed, the requesting unit  303  specifies the function-B driver Drb as the next function by referring to the control-data storage unit  301 , and requests the function-B driver Drb to perform the function B by sending the start notification to the function-B driver Drb. 
     In this manner, the status-setting control unit  31   a  is created by executing the data processing program (e.g., the integrated video driver TBDr). The status-setting control unit  31   a  causes the ASIC  10  to perform the function B at proper timing specified by the user depending on the status of the image data that is processed using the function A. 
     The function-A driver Dra includes the status-information storage unit  310   a , a function-A control unit  311   a , and a function-A output unit  312   a.    
     The function-B driver Drb includes the status-information storage unit  310   b , a function-B control unit  311   b , and a function-B output unit  312   b.    
     The status-information storage units  310   a  stores therein the setting parameter that is used to control the function A (hereinafter, “setting parameter A”); and the status-information storage units  310   b  stores therein the setting parameter that is used to control the function B (hereinafter, “setting parameter B”). 
     The status-information storage unit  310   a  stores therein information about the status of the image data that is processed using the function A (hereinafter, “status information A”) and a parameter indicative of conditions to output the status-information notification from the function-A driver Dra (hereinafter, “output-condition parameter A”). The status-information storage unit  310   b  stores therein information about the status of the image data that is processed using the function B (hereinafter, “status information B”) and a parameter indicative of conditions to output the status-information notification from the function-B driver Drb (hereinafter, “output-condition parameter B”). The status information is the current status of the image data that is processed using the corresponding function. The output-condition parameter represents the status of the image data to start the next function. If the output-condition parameter is, for example, a certain line number, the next function is to be performed when data on the line number or the earlier numbers has been processed. The function-A control unit  311   a  sets the conditions to perform the function A by referring to the status-information storage unit  310   a . The function-B control unit  311   b  sets the conditions to perform the function B by referring to the status-information storage unit  310   b.    
     The function-A control unit  311   a  controls the function A. More particularly, when the status-information storage unit  310   a  stores therein the setting parameter A, the function-A control unit  311   a  controls the function A using the setting parameter A. 
     The function-B control unit  311   b  controls the function B. More particularly, when the status-information storage unit  310   b  stores therein the setting parameter B, the function-B control unit  311   b  controls the function B using the setting parameter B. 
     The function-A output unit  312   a  acquires the status information A from the status-information storage unit  310   a , and sends the status-information notification including the status information A to the status-setting control unit  31   a . The function-B output unit  312   b  acquires the status information B from the status-information storage unit  310   b , and sends the status-information notification including the status information B to the status-setting control unit  31   b.    
     The control-data storage unit  301  of the status-setting control unit  31   a  stores therein information about the order of target functions (e.g., the function A is performed first and the function B is performed second) that is defined based on the type of data processing (hereinafter, “status-setting control information”). The function-A driver Dra and the function-B driver Drb control the function A and the function B, respectively based on the setting parameter, the status information, and the output-condition parameter stored in the status-information storage unit  310   a  or  310   b , and the status-setting control information stored in the control-data storage unit  301 . 
     As shown in  FIG. 3 , the status-information storage unit  310   a  and the status-information storage unit  310   b  are created as a part of the function-A driver Dra and a part of the function-B driver Drb, respectively. The status-setting control unit  31   a  is created as a part of the integrated video driver TBDr. 
       FIG. 4  is a schematic diagram for explaining the status-setting control information stored in the control-data storage unit  301 . The status-setting control information represents information about the control procedure between the functions A and B. The status-setting control information is variable depending on the control procedure for implementing data processing corresponding to the request from the threads. 
     The status-setting control information includes status-setting control ID, input status, input/output valid mask, number of inputs, number of outputs, input list, and output list. 
     The number of inputs is the number of input functions that are listed on the input list. The input functions are target functions each status information about which the status-setting control unit receives. The input list includes, corresponding to each of the input functions, a status-setting storage ID that is unique to the control-data storage unit of the function driver and an address of the output-condition parameter stored in the control-data storage unit. The output-condition parameter is defined by the user. If the output-condition parameter is, for example, a certain line number, the next function is to be performed when data on the line number or the earlier numbers has been processed. 
     The input status is a flag indicative of whether the next function is to be performed. The status-setting control information includes the input status corresponding to each one of the input functions. Alternatively, the function-based status information at the current situation can be stored as the input status. The bit rate of the input status is defined so that the bit rate is equal to the maximum number of input functions. 
     The number of outputs is the number of output functions that are listed on the output list. The output functions are target functions to which the start notification is sent when it is determined that the next function is to be performed based on the status of the image data that is processed using the input functions. The output list includes, corresponding to each of the output functions, a status-information storage unit ID that is unique to the status-information storage unit of the function driver and an address of the output-condition parameter. 
     In this manner, the control-data storage unit  301  stores therein, as the status-setting control information, the input list that includes the input functions and the output list that includes the output functions in the associated manner. 
     Upon receiving the status-information notification from one of the drivers corresponding to the input functions, the driver control unit  304  updates the input status using the status information included in the received status-information notification. More particularly, the driver control unit  304  determines by referring to the input list whether the status information satisfies conditions defined by the corresponding output-condition parameter. When the status information satisfies the conditions, the driver control unit  304  updates the input status from “1” to “0”. When all of the input statuses are set to “0”, the determining unit  302  determines that the next function is to be performed. 
     The input list including the input functions and the output list including the output functions to be performed as the next function are stored in the control-data storage unit  301  in the associated manner. Moreover, the input status is stored in the control-data storage unit  301 . With this configuration, the determining unit  302  determines whether the output functions listed on the output list are to be performed by referring to the status-setting control information stored in the status-information storage unit  310 . 
     The status-setting control information stored in the control-data storage unit  301  includes the input list including the status-information storage unit ID of the function A and the output-condition parameter A, and the output list including the status-information storage unit ID of the function B and the output-condition parameter B. 
     The status-setting control unit  31   a  stores the setting parameter A and the setting-information parameter A in the status-information storage unit  310   a ; and the setting parameter B in the status-information storage unit  310   b.    
     When the setting parameter A and the output-condition parameter A are stored in the status-information storage unit  310   a , the function-A driver Dra controls the function A so that the image data is processed using the function A. The setting parameter B and the output-condition parameter B are stored in the status-information storage unit  310   b . When the conditions defined by the output-condition parameter A is satisfied, the function-B driver Drb controls the ASIC  10  so that the ASIC  10  processes using the function B the image data that has already been processed using the function A. 
     The ASIC  10  processes the image data using the function A based on the setting parameter A, and sends information about the current status of the image data that is processed using the function A to the function-A control unit  311   a . Upon receiving the information from the ASIC  10 , the function-A control unit  311   a  updates the status information A stored in the status-information storage unit  310   a  with the received information. The function-A output unit  312   a  acquires the status information A from the status-information storage unit  310   a , and sends the status-information notification including the status information A to the status-setting control unit  31   a.    
     The status-setting control unit  31   a  receives the status-information notification from the function-A output unit  312   a . When it is determined that the received status information A satisfies the conditions defined by the output-condition parameter A of the input list, the driver control unit  304  switches the input status to “1” or “0”. The determining unit  302  determines whether the function B, which is listed on the output list in the associated manner with the function A listed on the input list, is to be performed based on the input status. When the determining unit  302  determines that the function B is to be performed, the requesting unit  303  sends the start notification to the function-B driver Drb to start the function B. 
     If, for example, “1” of the input status represents the status-information notification is not received, and “0” represents that status-information notification has been received, the driver control unit  304  switches the input status corresponding to the function A to “0” when it is determined that the received status information A satisfies the conditions defined by the output-condition parameter A. When all input statuses are set to “0”, the determining unit  302  determines that the function B listed on the output list is to be performed. The requesting unit  303  sends the start notification to the function-B driver Drb to start the function B. 
     Upon receiving the start notification from the status-setting control unit  31   a , the function-B driver Drb stores the setting parameter B and the output-condition parameter B in the status-information storage unit  310   b . After that, the function-B control unit  311   b  starts the function B based on the setting parameter B so that the image data that has already been processed using the function A is processed using the function B. The output-condition parameter B can be defined by either the status-setting control unit  31   a  or the status-setting control unit  31   b.    
     In the example shown in  FIG. 3 , the operations of the ASIC  10  to perform the functions A and B of are described with the configuration in which the function-A driver Dra and the function-B driver Drb include the status-information storage unit  310   a  and the status-information storage unit  310   b , respectively, and the integrated video driver TBDr includes the status-setting control unit  31   a . The number of drivers including the status-information storage unit is variable depends on the type of data processing. 
     More particularly, the function-B output unit  312   b  sends the status-information notification to the status-setting control unit  31   b  based on the status information B. Upon receiving the status-information notification, the status-setting control unit  31   b  controls operations between the function B and the function C. 
       FIG. 5  is a block diagram of the status-setting control unit  31   b , the function-B driver Drb, and the function-C driver Drc. The status-setting control unit  31   b  includes a control-data storage unit  501 , a determining unit  502 , a requesting unit  503 , and a driver control unit  504 . The control-data storage unit  501  stores therein status-setting control information about the order between the function B and the function C corresponding to the type of data processing. More particularly, the control-data storage unit  501  stores therein in the associated manner an input status about the function B, an input list including the function B as the input function, and an output list including the function C as the output function. 
     The function-B driver Drb includes the status-information storage unit  310   b , the function-B control unit  311   b , and the function-B output unit  312   b . The function-C driver Drc includes a status-information storage unit  310   c , a function-C control unit  311   c , and a function-C output unit  312   c . The above units of the function-B driver Drb and the function-C driver Drc operate in similar manners as the corresponding units of the function-A driver Dra operate. Therefore, explanations about the similar operations are omitted. 
     The function-B control unit  311   b  performs, in response to the start notification received from the requesting unit  303  of the status-setting control unit  31   a , the function B as the function next to the function A. The function-B output unit  312   b  sends the status-information notification including the status information B to the status-setting control unit  31   b.    
     Upon receiving the status-information notification from the function-B driver Drb, the determining unit  502  determines whether the next function is to be performed based on an input status indicative of a status of the image data by referring to the control-data storage unit  501 . In this case, the next function is the function C that is listed on the output list in the associated manner with the function B that is listed on the input list. 
     When the determining unit  502  determines that the function C is to be performed, the requesting unit  503  requests the function-C control unit  311   c  to perform the function C. 
     The driver control unit  504  stores the output-condition parameter B in the status-information storage unit  310   b . The status-setting control unit  31   b  stores a setting parameter that is used to control the function C (hereinafter, “setting parameter C”) in the status-information storage unit  310   c.    
     As described above, to process the image data using a plurality of functions, the status-setting control units are created as many as required to connect between the drivers. 
     Given below is an explanation about operations according to the first embodiment. In the image-data processing apparatus  1 , each of the drivers Dr 1  to Dr 12  includes the status-information storage unit. The integrated video driver TBDr includes the status-setting control unit  31   a . With this configuration, the image-data processing apparatus  1  controls the functions of the ASIC  10  using the drivers Dr 1  to Dr 12  with a flexible manner. 
     In the following explanation, the functions A and B of the ASIC  10  are controlled by using the two drivers, i.e., the function-A driver Dra and the function-B driver Drb. 
     The image-data processing apparatus  1  sends information including the setting parameters to the integrated video driver TBDr by exchanging data between the integrated video library  22  and the integrated video driver TBDr and by executing the thread function calls based on settings specified by the user. The integrated video driver TBDr stores the status-setting control information in the status-setting control unit  31   a . The integrated video driver TBDr stores the setting parameter A and the output-condition parameter A in the status-information storage unit  310   a , and the setting parameter B and the output-condition parameter B in the status-information storage unit  310   b.    
     Given below is an explanation about a process performed by the image-data processing apparatus  1  that starts in response to a request from the threads and ends immediately before a start of image-data processing.  FIG. 6  is a sequence diagram of the above process. The integrated video library  22  provides the library that is used to execute calls between the process  20  and the drivers Dr 1  to Dr 12 . 
     The process  20  specifies, in response to the request from the threads, the order of target functions to be performed (Step S 601 ). The process  20  requests the integrated video library  22  to issue the control-procedure information (Step S 602 ). 
     The integrated video library  22  issues the control-procedure information indicative of the order of the target functions to be performed (Step S 603 ). 
     The integrated video driver TBDr reserves based on the issued control-procedure information a working area for status-setting control units that are required to perform the target functions (Step S 604 ). 
     The integrated video driver TBDr issues the status-setting control IDs unique to the status-setting control units (Step S 605 ). 
     The process  20  requests the integrated video library  22  to associate the status-setting control IDs with the control-procedure information (Step S 606 ). The integrated video library  22  then associates the status-setting control IDs with the control-procedure information (Step S 607 ). 
     The integrated video driver TBDr creates the status-setting control units that control the target functions based on the control-procedure information associated with the status-setting control IDs (Step S 608 ). 
     After that, the integrated video driver TBDr creates the input list and the output list corresponding to each one of the control-data storage units of the status-setting control units (Step S 609 ). The order of the target functions to be performed is set by creating the input list and the output list. 
     The integrated video driver TBDr sets first parameters that are stored in each one of the control-data storage units of the status-setting control units, and second parameter that are stored in each one of the status-information storage units of the functional drivers (Step S 610 ). The first parameters include, for example, initial value of the input status, number of inputs, number of outputs, value that is used to send the start notification at proper timing, the output-condition parameter that is stored in the status-information storage unit, priority parameter, and start-condition information. The value that is used to send the start notification at proper timing, the priority parameter, and the start-condition information are used in embodiments of the present invention described later. 
     The process  20  requests the integrated video driver TBDr to start the data processing based on the control-procedure information (Step S 611 ). The integrated video driver TBDr activates the first function from among the target functions to be performed based on the control-procedure information (Step S 612 ). After that, the status-setting control units control timing to start the next function by referring to the status of the data processed using the current function. Thus, the target functions are performed sequentially in response to the request from the threads. 
     In the example shown in  FIG. 3 , the image-data processing apparatus  1  starts the function A first. After that, the image-data processing apparatus  1  starts the function B at proper timing, i.e., when the status information A satisfies the conditions defined by the output-condition parameter A that is specified by the user. Thus, the image data is processed using the functions A and B. 
     More particularly, the function-A driver Dra stores the setting parameter A and the output-condition parameter A in the status-information storage unit  310   a . The function-A driver Dra then starts the function A after checking whether the function A is ready to operate. 
     The function A processes the received image data based on the setting parameter A. The function A sends information about the status of the image data processed using the function A to the function-A driver Dra. Upon receiving the information from the function A, the function-A driver Dra updates the status information A stored in the status-information storage unit  310   a  using the received information. The function-A output unit  312   a  acquires the status information A from the status-information storage unit  310   a , and sends the status-information notification including the status information A to the status-setting control unit  31   a.    
     When it is determined from the status information A received from the function-A driver Dra that the status information A satisfies the conditions that is defined by the output-condition parameter A of the input list, the status-setting control unit  31   a  switches the input status, for example, from “1” to “0”. When all of the input statuses are set to “0”, the requesting unit  303  sends, by referring to the output list, the start notification to the function-B driver Drb to start the function B. 
     Upon receiving the start notification from the status-setting control unit  31   a , the function-B driver Drb stores the setting parameter B and the output-condition parameter B in the status-information storage unit  310   b . The function-B control unit  311   b  starts the function B based on the setting parameter B so that the image data that has already been processed using the function A is processed using the function B. 
     In this manner, each of the status-information storage units  310   a  and  310   b  stores therein the status information and the output-condition parameter that are used to start the next function. The status-setting control unit  31   a  controls operations of the functions A and B based on the status-setting control information, the status information, and the output-condition parameter stored in the control-data storage unit  301 . 
     In other words, the image-data processing apparatus  1  includes the status-information storage units  310   a  and  310   b  that store therein the status information and the status-setting control units  31   a  to  31   n  that manage the control procedure in the separated form. If the image-data processing apparatus  1  is required to change the order of target functions to be performed, operations concerning process, procedure, and control are modified without making the structure of units that control the ASIC  10  complicated. This makes it possible to achieve efficient and flexible control over the hardware, i.e., the ASIC  10 , and enhance the processing performance. 
     Moreover, the image-data processing apparatus  1  processes data, especially, image data. 
     Although advanced-performance and high-speed technologies have developed in the field of the image-data processing, it is possible to process the image data in an efficient manner at high speed even if the order of target functions to be performed changes. 
     Furthermore, the image-data processing apparatus  1  specifies, during a series of processes using a plurality of target functions, a next function depending on the status of data that is processed using a current function In other words, the image-data processing apparatus  1  is free from storing therein an order of the target functions in a form of hardware coding, which makes it possible to flexibly change the order of the target functions depending on the type of processing. As a result, the image-data processing apparatus controls the hardware in an efficient and flexible manner, which increases the processing performances. 
     Moreover, in the image-data processing apparatus  1 , the structure of the status-setting control units that manage calls of the functions based on the data processing status and the structure of the function drivers that perform the functions are simplified because both structures are separated from each other. As a result, an effect by a change of the order of target functions over the structure of units that control the ASIC  10  is reduced. This makes it possible to achieve efficient and flexible control over the hardware, and enhance the processing performance. 
     Given below is an explanation about a method and an apparatus for processing data according to a second embodiment of the present invention with reference to  FIGS. 7 and 8 .  FIG. 7  is a block diagram of relative parts of an image-data processing apparatus  2  according the second embodiment. 
     Parts corresponding to those in the first embodiment are denoted with the same reference numerals, and the same explanation is not repeated. 
     The image-data processing apparatus  2  associates a plurality of input functions with a single output function. In the example shown in  FIG. 9 , two input functions, i.e., a function A 1  and a function A 2  are associated with one output function, i.e., the function B. All of the functions A 1 , A 2 , and B are included in the ASIC  10 . 
     The image-data processing apparatus  2  includes a status-setting control unit  701   a , a function-A 1  driver Draa, and a function-A 2  driver Drab, and the function-B driver Drb. 
     The function-A 1  driver Draa includes a status-information storage unit  710   aa , a function-A 1  control unit  711   aa , and a function-A 1  output unit  712   aa . The function-A 2  driver Drab includes a status-information storage unit  710   ab , a function-A 2  control unit  711   ab , and a function-A 2  output unit  712   ab . The function-B driver Drb includes the status-information storage unit  310   b , the function-B control unit  311   b , and the function-B output unit  312   b.    
     The status-information storage unit  710   aa  stores therein a setting parameter that is used to perform the function A 1  (hereinafter, “setting parameter A 1 ”), information about a status of the image data that is processed using the function A 1  (hereinafter, “status information A 1 ”), and a parameter for defining conditions to start the next function, i.e., the function B (hereinafter, “output-condition parameter A 1 ”). The status-information storage unit  710   ab  stores therein a setting parameter that is used to perform the function A 2  (hereinafter, “setting parameter A 2 ”), information about a status of the image data that is processed using the function A 2  (hereinafter, “status information A 2 ”), and a parameter for defining conditions to start the next function, i.e., the function B (hereinafter, “output-condition parameter A 2 ”). The status-information storage unit  310   b  stores therein the setting parameter B, the status information B, and the output-condition parameter B. 
     The status-setting control unit  701   a  includes a control-data storage unit  702 , a determining unit  703 , a requesting unit  704 , and a driver control unit  705 . The driver control unit  705  stores the setting parameter A 1  in the status-information storage unit  710   aa , the setting parameter A 2  in the status-information storage unit  710   ab , the setting parameter B in the status-information storage unit  310   b ; refers to the status-information storage units  710   aa ,  710   ab , and  310   b ; and receives the status-information notification from the function-A 1  driver Draa and the function-A 2  driver Drab. The determining unit  703  and the requesting unit  704  perform control so that the functions A 1 , A 2 , and B are performed in the predetermined order, i.e., the function B is performed after the functions A 1  and A 2 . 
     In the example shown in  FIG. 7 , the image-data processing apparatus  2  processes the image data using the functions A 1 , A 2 , and B. In other words, the function-A 1  driver Draa, the function-A 2  driver Drab, the function-B driver Drb are selected from among the drivers Dr 1  to Dr 12  to perform the function A 1 , the function A 2 , and the function B, respectively. 
     The status-information storage unit  710   aa , the status-information storage unit  710   ab , the status-information storage unit  310   b , and the status-setting control unit  701   a  are created by executing the data processing program (e.g., the integrated video driver TBDr). Under control of the status-setting control unit  701   a , the ASIC  10  performs the functions A 1  and A 2  first, and then performs the function B at proper timing specified by the user depending on the status of the image data that is processed using the functions A 1  and A 2 . 
     The status-information storage unit  710   aa , the status-information storage unit  710   ab , and the status-information storage unit  310   b  are created as units included in the function-A 1  driver Draa, the function-A 2  driver Drab, and the function-B driver Drb, respectively. The status-setting control unit  701   a  is created as a unit included in the integrated video driver TBDr. 
     The control-data storage unit  702  stores therein the status-setting control information. As shown in  FIG. 8 , the control-data storage unit  702  stores therein the status-setting control information having the structure similar to that of the status-setting control information stored in the control-data storage unit  301 . The status-setting control information is variable depending on the control procedure for implementing data processing corresponding to the request from the threads. 
     As described above, the status-setting control information includes the status-setting control ID, the input status, the input/output valid mask, the number of inputs, the number of outputs, the input list, and the output list. The input list includes the input functions. More particularly, the input list stored in the control-data storage unit  702  includes the status-setting control IDs of the functions A 1  and A 2  and the addresses of the output-condition parameters A 1  and A 2 . The output-condition parameter is user-specified information indicative of conditions to send the start notification to the next function. If the output-condition parameter is, for example, a certain line number, the next function is to be performed when data on the line number or the earlier numbers has been processed using the current function. 
     The output list includes the output functions to which the start notification is sent when it is determined, based on the status of the image data that is performed using the input functions, that the next function is to be performed. The output list includes, corresponding to each of the output functions, a status-information storage unit ID that is unique to the status-information storage unit of the function driver and an address of the output-condition parameter. 
     The input status is a flag indicative of whether the next function is to be performed. The status-setting control information includes the input status corresponding to each one of the input functions. In other words, the status-setting control information stored in the control-data storage unit  702  includes two flags, i.e., the flag corresponding to the function A 1  and the flag corresponding to the function A 2 . 
     In this manner, the status-setting control information stored in the control-data storage unit  702  includes the input list including the status-setting control IDs of the functions A 1  and A 2  and the addresses of the output-condition parameters A 1  and A 2 , and the output list including the status-setting control ID of the function B and the address of the output-condition parameter B. 
     The driver control unit  705  stores the setting parameter A 1  and the output-condition parameter A 1  in the status-information storage unit  710   aa ; the setting parameter A 2  and the output-condition parameter A 2  in the status-information storage unit  710   ab ; and the setting parameter B and the output-condition parameter B in the status-information storage unit  310   b.    
     When the setting parameter A 1  and the output-condition parameter A 1  are stored in the status-information storage unit  710   aa , the function-A 1  control unit  711   aa  controls the function A 1  so that the image data is processed using the function A 1 . When the setting parameter A 2  and the output-condition parameter A 2  are stored in the status-information storage unit  710   ab , the function-A 2  control unit  711   ab  controls the function A 2  so that the image data is processed using the function A 2 . 
     When the function-B driver Drb stores the setting parameter B and the output-condition parameter B in the status-information storage unit  310   b , the function-B control unit  311   b  controls the function B at proper timing so that the image data is processed using the function B. More particularly, when both the conditions defined by the output-condition parameter A 1  and the conditions defined by the output-condition parameter A 2  are satisfied, the function-B control unit  311   b  controls the function B so that the image data that has already been processed using the functions A 1  and A 2  is processed using the function B. 
     The ASIC  10  processes the image data with the function A 1  based on the setting parameter A 1 , and sends information about the status of the image data to the function-A 1  control unit  711   aa . Upon receiving the information from the ASIC  10 , the function-A 1  control unit  711   aa  updates the status information A 1  stored in the status-information storage unit  710   aa  with the received information. The function-A 1  output unit  712   aa  acquires the status information A 1  from the status-information storage unit  710   aa , and sends the status-information notification including the status information A 1  to the status-setting control unit  701   a.    
     The ASIC  10  processes the image data with the function A 2  based on the setting parameter A 2 , and sends information about the status of the image data to the function-A 2  control unit  711   ab . Upon receiving the information from the ASIC  10 , the function-A 2  control unit  711   ab  updates the status information A 2  stored in the status-information storage unit  710   ab  with the received information. The function-A 2  output unit  712   ab  acquires the status information A 2  from the status-information storage unit  710   ab , and sends the status-information notification including the status information A 2  to the status-setting control unit  701   a.    
     The status-setting control unit  701   a  receives the status-information notification from the function-A 1  output unit  712   aa  and the function-A 2  output unit  712   ab . When it is determined that the received status information A 1  and A 2  satisfies the conditions defined by the output-condition parameter A 1  and A 2  of the input list, the driver control unit  705  switches the input statuses corresponding to the functions A 1  and A 2  to “1” or “0”. The determining unit  703  determines whether the function B, which is listed on the output list in the associated manner with the functions A 1  and A 2  listed on the input list, is to be performed based on the input statuses. When the determining unit  703  determines that the function B is to be performed, the requesting unit  704  sends the start notification to the function-B driver Drb to start the function B. 
     If, for example, “1” of the input status represents the status-information notification is not received, and “0” represents that status-information notification has been received, the driver control unit  705  switches the input status corresponding to the function A 1  to “0” when it is determined that the received status information A 1  satisfies the conditions defined by the output-condition parameter A 1 . The driver control unit  705  switches the input status corresponding to the function A 2  to “0” when it is determined that the received status information A 2  satisfies the conditions defined by the output-condition parameter A 2 . When all input statuses are set to “0”, the determining unit  703  determines that the function B listed on the output list is to be performed. The requesting unit  704  sends the start notification to the function-B driver Drb to start the function B. 
     Upon receiving the start notification from the status-setting control unit  701   a , the function-B driver Drb stores the setting parameter B and the output-condition parameter B in the status-information storage unit  310   b . After that, the function-B control unit  311   b  starts the function B based on the setting parameter B so that the image data that has already been processed using the functions A 1  and A 2  is processed using the function B. 
     In the example shown in  FIG. 7 , the operations of the ASIC  10  to perform the functions A 1 , A 2 , and B are described with the configuration in which the function-A 1  driver Draa, the function-A 2  driver Drab, and the function-B driver Drb includes the status-information storage unit  710   aa , the status-information storage unit  710   ab , and the status-information storage unit  310   b , respectively, and the integrated video driver TBDr includes the status-setting control unit  701   a . The number of drivers including the status-information storage unit is variable depends on the type of data processing. 
     Given below is an explanation about operations according to the second embodiment. In the image-data processing apparatus  2 , each of the drivers Dr 1  to Dr 12  includes the status-information storage unit. The integrated video driver TBDr includes the status-setting control unit  701   a . With this configuration, the image-data processing apparatus  2  controls the functions of the ASIC  10  using the drivers Dr 1  to Dr 12  with a flexible manner even when there is a plurality of input functions. 
     In the following explanation, the functions A 1 , A 2 , and B of the ASIC  10  are controlled by using the three drivers, i.e., the function-A 1  driver Draa, the function-A 2  driver Drab, and the function-B driver Drb. The functions A 1  and A 2  are performed prior to the function B. 
     The image-data processing apparatus  2  sends information including the setting parameters to the integrated video driver TBDr by exchanging data between the integrated video library  22  and the integrated video driver TBDr and by executing the thread function calls based on settings specified by the user. The integrated video driver TBDr stores the status-setting control information in the control-data storage unit  702  of the status-setting control unit  701   a . The integrated video driver TBDr stores the setting parameter A 1  and the output-condition parameter A 1  in the status-information storage unit  710   aa , the setting parameter A 2  and the output-condition parameter A 2  in the status-information storage unit  710   ab , and the setting parameter B and the output-condition parameter B in the status-information storage unit  310   b.    
     The image-data processing apparatus  2  starts the functions A 1  and A 2  first. Then, the image-data processing apparatus  2  performs the function B at proper timing specified by the user based on the status of the image data that is processed using the functions A 1  and A 2 . Thus, the image-data processing apparatus  2  processes the image data using the functions A 1  and A 2  as the former steps and the function B as the latter step. 
     More particularly, the function-A 1  driver Draa stores the setting parameter A 1  and the output-condition parameter A 1  in the status-information storage unit  710   aa ; and the function-A 2  driver Drab stores the setting parameter A 2  and the output-condition parameter A 2  in the status-information storage unit  710   ab . The function-A 1  driver Draa then starts the function A 1  after checking whether the function A 1  is ready to operate; and the function-A 2  driver Drab then starts the function A 2  after checking whether the function A 2  is ready to operate. 
     The function A 1  processes the received image data based on the setting parameter A 1 ; and the function A 2  processes the received image data based on the setting parameter A 2 . The function A 1  sends information about the status of the image data processed using the function A 1  to the function-A 1  driver Draa; and the function A 2  sends information about the status of the image data processed using the function A 2  to the function-A 2  driver Drab. Upon receiving the information from the function A 1 , the function-A 1  driver Draa updates the status information A 1  stored in the status-information storage unit  710   aa  using the received information. Upon receiving the information from the function A 2 , the function-A 2  driver Drab updates the status information A 2  stored in the status-information storage unit  710   ab  using the received information. The function-A 1  output unit  712   aa  acquires the status information A 1  from the status-information storage unit  710   aa , and sends the status-information notification including the status information A 1  to the status-setting control unit  701   a . The function-A 2  output unit  712   ab  acquires the status information A 2  from the status-information storage unit  710   ab , and sends the status-information notification including the status information A 2  to the status-setting control unit  701   a.    
     Upon receiving the status information A 1 , the driver control unit  705  updates the input status corresponding to the function A 1  based on the status information A 1 . Upon receiving the status information A 2 , the driver control unit  705  updates the input status corresponding to the function A 2  based on the status information A 2 . For example, when it is determined that the status information satisfies the conditions that is defined by the corresponding output-condition parameter of the input list, the driver control unit  705  switches the input status from “1” to “0”. When all of the input statuses are set to “0”, the determining unit  703  determines that the output function, i.e., the function B is to be performed. The requesting unit  704  then sends the start notification to the function-B driver Drb to start the function B. 
     Upon receiving the start notification from the status-setting control unit  701   a , the function-B driver Drb stores the setting parameter B and the output-condition parameter B in the status-information storage unit  310   b . After that, the function-B control unit  311   b  starts the function B with the setting parameter B so that the image data that has already been processed using the functions A 1  and A 2  is processed using the function B. 
     In this manner, the control-data storage unit  702  of the image-data processing apparatus  2  stores therein the status-setting control information that includes the functions A 1  and A 2  as the former steps and the function B as the latter step. The number of the former steps is larger than the number of the latter steps. The determining unit  703  and the requesting unit  704  perform control timing to start the function B based on the status information A 1  and A 2  and the output-condition parameters A 1  and A 2 . With this configuration, it is possible to implement the multi-input single (multi)-output processing in which the number of inputs is larger than the number of outputs in an adequate manner at high speed. 
     Given below is an explanation about a method and an apparatus for processing data according to a third embodiment of the present invention with reference to  FIGS. 9 and 10 .  FIG. 9  is a block diagram of relative parts of an image-data processing apparatus  3  according the third embodiment. 
     Parts corresponding to those in the first embodiment are denoted with the same reference numerals, and the same explanation is not repeated. 
     The image-data processing apparatus  3  associates a single former step with a plurality of latter steps. In the example shown in  FIG. 9 , one input function, i.e., the function A is associated with two output functions, i.e., a function B 1  and a function B 2 . All of the functions A, B 1 , and B 2  are included in the ASIC  10 . 
     The image-data processing apparatus  3  includes a status-setting control unit  901   a , the function-A driver Dra, a function-B 1  driver Drba, and a function-B 2  driver Drbb. 
     The function-A driver Dra includes the status-information storage unit  310   a , the function-A control unit  311   a , and the function-A output unit  312   a . The function-B 1  driver Drba includes a status-information storage unit  910   ba , a function-B 1  control unit  911   ba , and a function-B 1  output unit  912   ba . The function-B 2  driver Drbb includes a status-information storage unit  910   bb , a function-B 2  control unit  911   bb , and a function-B 2  output unit  912   bb.    
     The status-information storage unit  310   a  stores therein the setting parameter A, the status information A, and the output-condition parameter A. The status-information storage unit  910   ba  stores therein a setting parameter that is used to perform the function B 1  (hereinafter, “setting parameter B 1 ”), information about a status of the image data that is processed using the function B 1  (hereinafter, “status information B 1 ”), and a parameter for defining conditions to start the next function (hereinafter, “output-condition parameter B 1 ”). The status-information storage unit  910   bb  stores therein a setting parameter that is used to perform the function B 2  (hereinafter, “setting parameter B 2 ”), information about a status of the image data that is processed using the function B 2  (hereinafter, “status information B 2 ”), and a parameter for defining conditions to start the next function (hereinafter, “output-condition parameter B 2 ”). 
     The status-setting control unit  901   a  includes a control-data storage unit  902 , a determining unit  903 , a requesting unit  904 , and a driver control unit  905 . The driver control unit  905  stores the setting parameter A in the status-information storage unit  310   a , the setting parameter B 1  in the status-information storage unit  910   ba , the setting parameter B 2  in the status-information storage unit  910   bb ; refers to the status-information storage units  310   a ,  910   ba , and  910   bb ; and receives the status-information notification from the function-A driver Dra. The determining unit  903  and the requesting unit  904  perform control so that the functions A, B 1 , and B 2  are performed in the predetermined order, i.e., the functions B 1  and B 2  are performed after the function A. 
     In the example shown in  FIG. 9 , the image-data processing apparatus  3  processes the image data using the functions A, B 1 , and B 2 . In other words, the function-A driver Dra, the function-B 1  driver Drba, and the function-B 2  driver Drbb are selected from among the drivers Dr 1  to Dr 12  to perform the function A, the function B 1 , and the function B 2 , respectively. 
     The status-information storage unit  310   a , the status-information storage unit  910   ba , the status-information storage unit  910   bb , and the status-setting control unit  901   a  are created by executing the data processing program (e.g., the integrated video driver TBDr). Under control of the status-setting control unit  901   a , the ASIC  10  performs the function A first, and then performs the functions B 1  and B 2  at proper timing specified by the user depending on the status of the image data that is processed using the function A. 
     The status-information storage unit  310   a , the status-information storage unit  910   ba , and the status-information storage unit  910   bb  are created as units included in the function-A driver Dra, the function-B 1  driver Drba, and the function-B 2  driver Drbb, respectively. The status-setting control unit  901   a  is created as a unit included in the integrated video driver TBDr. 
     The control-data storage unit  902  stores therein the status-setting control information. As shown in  FIG. 10 , the control-data storage unit  902  stores therein the status-setting control information having the structure similar to that of the status-setting control information stored in the control-data storage unit  301 . The status-setting control information is variable depending on the control procedure for implementing data processing corresponding to the request from the threads. 
     As described above, the status-setting control information includes the status-setting control ID, the input status, the input/output valid mask, the number of inputs, the number of outputs, the input list, and the output list. The input list includes the input functions. More particularly, the input list stored in the control-data storage unit  902  includes the status-setting control IDs of the function A and the addresses of the output-condition parameter A. The output-condition parameter is specified by the user. If the output-condition parameter is, for example, a certain line number, the next function is to be performed when data on the line number or the earlier numbers has been processed using the current function. 
     The output list includes the output functions to which the start notification is sent when it is determined, based on the status of the image data that is performed using the input functions, that the next function is to be performed. The output list stored in the control-data storage unit  902  includes, corresponding to each of the output functions (i.e., the functions B 1  and B 2 ), a status-information storage unit ID that is unique to the status-information storage unit of the function driver, an address of the output-condition parameter, and start-condition information. 
     The start-condition information includes information indicative of conditions to send the start notification to the output function even when the input function is in action, or information indicative of a status of the image data that is processed using the input function, i.e., timing of sending the start notification to the output function. The start-condition information corresponding to the function B 1  is called “start-condition information B 1 ”, and the start-condition information corresponding to the function B 2  is called “start-condition information B 2 ”. If the start-condition information B 1  is different from the start-condition information B 2 , timing to start the function B 1  differs from timing to start the function B 2 . 
     The input status is a flag indicative of whether the next function is to be performed. The status-setting control information includes the input status corresponding to each one of the input functions. In other words, the status-setting control information stored in the control-data storage unit  902  includes the flag corresponding to the function A. 
     In this manner, the status-setting control information stored in the control-data storage unit  902  includes the input list including the status-setting control ID of the function A and the address of the output-condition parameter A; and the output list including the status-setting control IDs of the functions B 1  and B 2 , the addresses of the output-condition parameters B 1  and B 2 , and the start-condition information B 1  and B 2 . 
     The driver control unit  905  stores the setting parameter A and the output-condition parameter A in the status-information storage unit  310   a ; the setting parameter B 1  and the output-condition parameter B 1  in the status-information storage unit  910   ba ; and the setting parameter B 2  and the output-condition parameter B 2  in the status-information storage unit  910   bb.    
     When the setting parameter A and the output-condition parameter A are stored in the status-information storage unit  310   a , the function-A driver Dra controls the function A so that the image data is processed using the function A. When the conditions defined by the start-condition information B 1  is satisfied in a situation that the setting parameter B 1 , the output-condition parameter B 1 , and the start-condition information B 1  are stored in the status-information storage unit  910   ba , the function-B 1  driver Drba controls the ASIC  10  so that the ASIC  10  processes using the function B 1  the image data that has already been processed using the function A. When the conditions defined by the start-condition information B 2  is satisfied in a situation that the setting parameter B 2 , the output-condition parameter B 2 , and the start-condition information B 2  are stored in the status-information storage unit  910   bb , the function-B 2  driver Drbb controls the ASIC  10  so that the ASIC  10  processes using the function B 2  the image data that has already been processed using the function A. 
     The ASIC  10  processes the image data with the function A based on the setting parameter A, and sends information about the status of the image data to the function-A control unit  311   a . Upon receiving the information from the ASIC  10 , the function-A control unit  311   a  updates the status information A stored in the status-information storage unit  310   a  with the received information. The function-A output unit  312   a  acquires the status information A from status-information storage unit  310   a , and sends the status-information notification including the status information A to the status-setting control unit  901   a.    
     The status-setting control unit  901   a  receives the status-information notification from the function-A output unit  312   a . When it is determined that the received status information A satisfies the conditions defined by the output-condition parameter A of the input list, the driver control unit  905  switches the input status to “1” or “0”. The determining unit  903  determines whether the functions B 1  and B 2 , which are listed on the output list in the associated manner with the function A listed on the input list, are to be performed. 
     More particularly, when the input status corresponding to the function A is set to value indicative that the status-information notification has been received, the determining unit  903  determines whether the conditions defined by the start-condition information B 1  are satisfied. When the determining unit  903  determines that the conditions defined by the start-condition information B 1  are satisfied, the requesting unit  904  sends the start notification to the function-B 1  driver Drba to start the function B 1 . The determining unit  903  further determines whether the conditions defined by the start-condition information B 2  are satisfied. When the conditions defined by the start-condition information B 2  are satisfied, the requesting unit  904  sends the start notification to the function-B 2  driver Drbb to start the function B 2 . 
     If, for example, “1” of the input status represents the status-information notification is not received, and “0” represents that status-information notification has been received, the driver control unit  905  switches the input status corresponding to the function A to “0” when it is determined that the received status information A satisfies the conditions defined by the output-condition parameter A. When all input statuses are set to “0”, the determining unit  903  determines whether the conditions defined by the start-condition information corresponding to each of the output functions, the functions B 1  and B 2  are satisfied independently. When the conditions defined by the start-condition information B 1  are satisfied, the requesting unit  904  sends the start notification to the function-B 1  driver Drba to start the function B 1 . When the conditions defined by the start-condition information B 2  are satisfied, the requesting unit  904  sends the start notification to the function-B 2  driver Drbb to start the function B 1 . 
     Upon receiving the start notification from the status-setting control unit  901   a , the function-B 1  driver Drba stores the setting parameter B 1  and the output-condition parameter B 1  in the status-information storage unit  910   ba . After that, the function-B 1  control unit  911   ba  starts the function B 1  based on the setting parameter B 1  so that the image data that has already been processed using the function A is processed using the function B 1 . 
     Upon receiving the start notification from the status-setting control unit  901   a , the function-B 2  driver Drbb stores the setting parameter B 2  and the output-condition parameter B 2  in the status-information storage unit  910   bb . After that, the function-B 2  control unit  911   bb  starts the function B 2  based on the setting parameter B 2  so that the image data that has already been processed using the function A is processed using the function B 2 . 
     In the example shown in  FIG. 9 , the operations of the ASIC  10  to perform the functions A, B 1 , and B 2  are described with the configuration in which the function-A driver Dra, the function-A 1  driver Drba, and the function-B 2  driver Drbb includes the status-information storage unit  310   a , the status-information storage unit  910   ba , and the status-information storage unit  910   bb , respectively, and the integrated video driver TBDr includes the status-setting control unit  901   a . The number of drivers including the status-information storage unit is variable depends on the type of data processing. 
     Given below is an explanation about operations according to the third embodiment. In the image-data processing apparatus  3 , each of the drivers Dr 1  to Dr 12  includes the status-information storage unit. The integrated video driver TBDr includes the status-setting control unit  901   a . With this configuration, the image-data processing apparatus  3  controls the functions of the ASIC  10  using the drivers Dr 1  to Dr 12  with a flexible manner even when there is a plurality of output functions. 
     In the following explanation, the functions A, B 1 , and B 2  of the ASIC  10  are controlled by using the three drivers, i.e., the function-A driver Dra, the function-B 1  driver Drba, and the function-B 2  driver Drbb. The function A is performed prior to the functions B 1  and B 2 . 
     The image-data processing apparatus  3  sends information including the setting parameters to the integrated video driver TBDr by exchanging data between the integrated video library  22  and the integrated video driver TBDr and by executing the thread function calls based on settings specified by the user. The integrated video driver TBDr stores the status-setting control information in the control-data storage unit  902  of the status-setting control unit  901   a . The integrated video driver TBDr stores the setting parameter A and the output-condition parameter A in the status-information storage unit  310   a , the setting parameter B 1  and the output-condition parameter B 1  in the status-information storage unit  910   ba , and the setting parameter B 2  and the output-condition parameter B 2  in the status-information storage unit  910   bb.    
     The image-data processing apparatus  3  starts the function A first. Then, the image-data processing apparatus  3  performs the functions B 1  and B 2  at proper timing specified by the user. If the start-condition information B 1  that is stored in the status-information storage unit  910   ba  is different from the start-condition information B 2  that is stored in the status-information storage unit  910   bb , timing to start the function B 1  differs from timing to start the function B 2 . Thus, the image-data processing apparatus  3  processes the image data using the function A as the former step and the functions B 1  and B 2  as the latter steps. 
     More particularly, the function-A driver Dra stores the setting parameter A and the output-condition parameter A in the status-information storage unit  310   a . The function-A driver Dra then starts the function A after checking whether the function A is ready to operate. 
     The function A processes the received image data based on the setting parameter A. The function A sends information about the status of the image data processed using the function A to the function-A driver Dra. Upon receiving the information from the function A, the function-A driver Dra updates the status information A stored in the status-information storage unit  310   a  using the received information. The function-A output unit  312   a  acquires the status information A from the status-information storage unit  310   a , and sends the status-information notification including the status information A to the status-setting control unit  901   a.    
     Upon receiving the status information A, the driver control unit  905  updates the input status based on the status information A. For example, when it is determined that the status information A satisfies the conditions that is defined by the output-condition parameter A of the input list, the driver control unit  905  switches the input status from “1” to “0”. When all of the input statuses are set to “0”, the determining unit  903  determines whether each of the output functions, i.e., the functions B 1  and B 2  is to be performed independently based on the start-condition information. When the determining unit  903  determines that the function B 1  is to be performed, the requesting unit  904  then sends the start notification to the function-B 1  driver Drba to start the function B 1 . When the determining unit  903  determines that the function B 2  is to be performed, the requesting unit  904  then sends the start notification to the function-B 2  driver Drbb to start the function B 2 . In this manner, if the user wishes to start the functions B 1  and B 2  at different timing, the user sets the start-condition information B 1  different from the start-condition information B 2 . 
     Upon receiving the start notification from the status-setting control unit  901   a , the function-B 1  driver Drba stores the setting parameter B 1  and the output-condition parameter B 1  in the status-information storage unit  910   ba . After that, the function-B 1  control unit  911   ba  starts the function B 1  with the setting parameter B 1  so that the image data that has already been processed using the function A is processed using the function B 1 . 
     Upon receiving the start notification from the status-setting control unit  901   a , the function-B 2  driver Drbb stores the setting parameter B 2  and the output-condition parameter B 2  in the status-information storage unit  910   bb . After that, the function-B 2  control unit  911   bb  starts the function B 2  with the setting parameter B 2  so that the image data that has already been processed using the function A is processed using the function B 2 . 
     In this manner, the control-data storage unit  902  of the image-data processing apparatus  3  stores therein the status-setting control information that includes the function A as the former step and the functions B 1  and B 2  as the latter steps. The number of the latter steps is larger than the number of the former steps. The determining unit  903  and the requesting unit  904  perform control timing to start the functions B 1  and B 2  based on the status information A and the output-condition parameter A. With this configuration, it is possible to implement the single (multi)-input multi-output processing in which the number of inputs is smaller than the number of outputs in an adequate manner at high speed. 
     Given below is an explanation about a method and an apparatus for processing data according to a fourth embodiment of the present invention with reference to  FIGS. 11 and 12 .  FIG. 11  is a block diagram of relative parts of an image-data processing apparatus  4  according the fourth embodiment. 
     Parts corresponding to those in the first embodiment are denoted with the same reference numerals, and the same explanation is not repeated. 
     In the image-data processing apparatus  4 , a function working as the latter step includes a plurality of sub-functions that are to be performed in a predetermined order according to priority. In the example shown in  FIG. 11 , the function B includes a sub-function α with a priority parameter of “1” and a sub-function β with the priority parameter of “2”. After the image data is processed using the function A, the image data is processed using the sub-function α first and the sub-function β second. Those sub-functions are used, for example, when the image data separated by the colors (red, green, and blue) is processed using the single function. 
     The image-data processing apparatus  4  includes a status-setting control unit  1101   a , the function-A driver Dra, and the function-B driver Drb. 
     The function-A driver Dra includes the status-information storage unit  310   a , the function-A control unit  311   a , and the function-A output unit  312   a . The function-B driver Drb includes a status-information storage unit  1110   ba , a status-information storage unit  1110   bb , the function-B control unit  311   b , and the function-B output unit  312   b.    
     The status-information storage unit  310   a  stores therein the setting parameter A, the status information A, and the output-condition parameter A. The status-information storage unit  1110   ba  stores therein a setting parameter that is used to perform the sub-function α (hereinafter, “setting parameter α”), information about a status of the image data that is processed using the sub-function α (hereinafter, “status information α”), and a parameter for defining conditions to start the next function (hereinafter, “output-condition parameter α”). The status-information storage unit  1110   bb  stores therein a setting parameter that is used to perform the sub-function β (hereinafter, “setting parameter β”), information about a status of the image data that is processed using the sub-function β (hereinafter, “status information β”), and a parameter for defining conditions to start the next function (hereinafter, “output-condition parameter β”). 
     The status-setting control unit  1101   a  includes a control-data storage unit  1102 , a determining unit  1103 , a requesting unit  1104 , and a driver control unit  1105 . The driver control unit  1105  stores the setting parameter A in the status-information storage unit  310   a , the setting parameter α in the status-information storage unit  1110   ba , the setting parameter β in the status-information storage unit  1110   bb ; refers to the status-information storage units  310   a ,  1110   ba , and  1110   bb ; and receives the status-information notification from the function-A driver Dra. The determining unit  1103  and the requesting unit  1104  perform control so that the functions A and the sub-functions α and β are performed in the predetermined order, i.e., the sub-functions α and β are performed after the function A. 
     In the example shown in  FIG. 11 , the image-data processing apparatus  4  processes the image data using the functions A and B (the function B includes the sub-functions α and β). In other words, the function-A driver Dra and the function-B driver Drb are selected from among the drivers Dr 1  to Dr 12  to perform the function A and the function B, respectively. 
     The status-information storage unit  310   a , the status-information storage unit  1110   ba , the status-information storage unit  1110   bb , and the status-setting control unit  1101   a  are created by executing the data processing program (e.g., the integrated video driver TBDr). Under control of the status-setting control unit  1101   a , the ASIC  10  performs the function A first, and then performs the sub-functions α and β at proper timing specified by the user depending on the priority parameters. 
     The status-information storage unit  310   a  is created as units included in the function-A driver Dra, and the status-information storage unit  1110   ba , and the status-information storage unit  1110   bb  in the function-B driver Drb. The status-setting control unit  1101   a  is created as a unit included in the integrated video driver TBDr. 
     The control-data storage unit  1102  stores therein the status-setting control information. As shown in  FIG. 12 , the control-data storage unit  1102  stores therein the status-setting control information having the structure similar to that of the status-setting control information stored in the control-data storage unit  301 . The status-setting control information is variable depending on the control procedure for implementing data processing corresponding to the request from the threads. 
     As described above, the status-setting control information includes the status-setting control ID, the input status, the input/output valid mask, the number of inputs, the number of outputs, the input list, and the output list. The input list includes the input functions. More particularly, the input list stored in the control-data storage unit  1102  includes the status-setting control IDs of the function A and the addresses of the output-condition parameter A. The output-condition parameter is specified by the user. If the output-condition parameter is, for example, a certain line number, the next function is to be performed when data on the line number or the earlier numbers has been processed using the current function. 
     The output list includes the output functions to which the start notification is sent when it is determined, based on the status of the image data that is performed using the input functions, that the next function is to be performed. The output list stored in the control-data storage unit  1102  includes, corresponding to each of the sub-functions (i.e., the sub-functions α and β), a status-information storage unit ID that is unique to the status-information storage unit of the function driver, an address of the output-condition parameter, and a priority parameter. 
     The priority parameter is number representing sequence of the sub-functions in the ascending order starting from one. The priority parameter is used to perform a single process at several times. If the priority parameter of the sub-function α (hereinafter, “priority parameter α”) is “1”, and the priority parameter of the sub-function β (hereinafter, “priority parameter α”) is “2”, then the sub-function α is performed prior to the sub-function β. In this manner, it is possible to start the sub-function α at timing shifted from timing to start the sub-function β by setting the priority parameter. 
     The input status is a flag indicative of whether the next function is to be performed. The status-setting control information includes the input status corresponding to each one of the input functions. In other words, the status-setting control information stored in the control-data storage unit  1102  includes the flag corresponding to the function A. 
     In this manner, the status-setting control information stored in the control-data storage unit  1102  includes the input list including the status-setting control ID of the function A and the address of the output-condition parameter A; and the output list including the status-setting control IDs of the sub-functions α and β, the addresses of the output-condition parameters α and β, and the priority parameters α and β. 
     The driver control unit  1105  stores the setting parameter A and the output-condition parameter A in the status-information storage unit  310   a ; the output-condition parameter α in the status-information storage unit  1110   ba ; and the output-condition parameter β in the status-information storage unit  1110   bb.    
     When the setting parameter A and the output-condition parameter A are stored in the status-information storage unit  310   a , the function-A driver Dra controls the function A so that the image data is processed using the function A. When the setting parameter α, the output-condition parameter α and the priority parameter α are stored in the status-information storage unit  1110   ba  and the setting parameter β, the output-condition parameter β, and the priority parameter β are stored in the status-information storage unit  1110   bb , the function-B driver Drb controls the ASIC  10  so that the image data is so that the ASIC  10  processes, using the sub-functions α and β according to the priority parameter, the image data that has already been processed using the function A. 
     The ASIC  10  processes the image data with the function A based on the setting parameter A, and sends information about the status of the image data to the function-A control unit  311   a . Upon receiving the information from the ASIC  10 , the function-A control unit  311   a  updates the status information A stored in the status-information storage unit  310   a  with the received information. The function-A output unit  312   a  acquires the status information A from status-information storage unit  310   a , and sends the status-information notification including the status information A to the status-setting control unit  1101   a.    
     The status-setting control unit  1101   a  receives the status-information notification from the function-A output unit  312   a . When it is determined that the received status information A satisfies the conditions defined by the output-condition parameter A of the input list, the driver control unit  1105  switches the input status to “1” or “0”. The determining unit  1103  determines whether the sub-functions α and β, which are listed on the output list in the associated manner with the function A listed on the input list, are to be performed. 
     When the determining unit  1103  determines that the next function is to be performed, the determining unit  1103  further determines, based on the priority parameter, which sub-function from among the sub-functions α and β is to be performed first. The requesting unit  1104  sends the start notification to the function-B driver Drb so that the function-B driver Drb performs the sub-functions α and β in the predetermined order defined according to the priority parameter. 
     If, for example, “1” of the input status represents the status-information notification is not received, and “0” represents that status-information notification has been received, the driver control unit  1105  switches the input status corresponding to the function A to “0” when it is determined that the received status information A satisfies the conditions defined by the output-condition parameter A. When all input statuses are set to “0”, the determining unit  1103  determines that the function B listed on the output list is to be performed. The determining unit  1103  further determines the order of the sub-functions α and β based on the priority parameter. The requesting unit  1104  sends the start notification to the function-B driver Drb so that the function-B driver Drb performs the sub-functions α and β in the predetermined order defined according to the priority parameter. 
     Upon receiving the start notification from the status-setting control unit  1101   a , the function-B driver Drb stores the setting parameter α and the output-condition parameter α in the status-information storage unit  1110   ba . After that, the function-B control unit  311   b  starts the sub-function α based on the setting parameter α so that the image data that has already been processed using the function A is processed using the sub-function α. 
     Upon receiving the start notification from the status-setting control unit  1101   a , the function-B driver Drb stores the setting parameter β and the output-condition parameter β in the status-information storage unit  1110   bb . After that, the function-B control unit  311   b  starts the sub-function β based on the setting parameter β so that the image data that has already been processed using the function A and the sub-function α is processed using the sub-function β. 
     In the example shown in  FIG. 11 , the operations of the ASIC  10  to perform the function A and the sub-functions α and β are described with the configuration in which the function-A driver Dra includes the status-information storage unit  310   a , the function-B driver Drb includes the status-information storage units  1110   ba  and  1110   bb , and the integrated video driver TBDr includes the status-setting control unit  1101   a . The number of drivers including the status-information storage unit is variable depends on the type of data processing. 
     Given below is an explanation about operations according to the fourth embodiment. In the image-data processing apparatus  4 , each of the drivers Dr 1  to Dr 12  includes the status-information storage unit. The integrated video driver TBDr includes the status-setting control unit  1101   a . With this configuration, the image-data processing apparatus  4  controls the functions of the ASIC  10  using the drivers Dr 1  to Dr 12  with a flexible manner according to the priority even when one of the functions includes a plurality of sub-functions. 
     In the following explanation, the function A and the function B (including the sub-functions α and β) of the ASIC  10  are controlled by using the two drivers, i.e., the function-A driver Dra and the function-B driver Drb. The function B is, for example, an image rotation function; and the sub-function α rotates the image data by 90 degrees, and the sub-function β rotates the image data by 270 degrees. 
     The image-data processing apparatus  4  sends information including the setting parameters to the integrated video driver TBDr by exchanging data between the integrated video library  22  and the integrated video driver TBDr and by executing the thread function calls based on settings specified by the user. The integrated video driver TBDr stores the status-setting control information in the control-data storage unit  1102  of the status-setting control unit  1101   a . The integrated video driver TBDr stores the setting parameter A and the output-condition parameter A in the status-information storage unit  310   a , the setting parameter α and the output-condition parameter α in the status-information storage unit  1110   ba , and the setting parameter β and the output-condition parameter β in the status-information storage unit  1110   bb.    
     The image-data processing apparatus  4  starts the function A first. Then, the image-data processing apparatus  3  performs the sub-functions α and β at the different timings specified by the user. Information about the order of the sub-functions α and β is stored in the control-data storage unit  1102  as the priority parameter. Alternatively, the status-information storage units  1110   ba  and  1110   bb  stores therein the priority parameters α and β, respectively; and the control-data storage unit  1102  stores therein addresses of the priority parameters α and β. 
     More particularly, the function-A driver Dra stores the setting parameter A and the output-condition parameter A in the status-information storage unit  310   a . The function-A driver Dra then starts the function A after checking whether the function A is ready to operate. 
     The function A processes the received image data based on the setting parameter A. The function A sends information about the status of the image data processed using the function A to the function-A driver Dra. Upon receiving the information from the function A, the function-A driver Dra updates the status information A stored in the status-information storage unit  310   a  using the received information. The function-A output unit  312   a  acquires the status information A from the status-information storage unit  310   a , and sends the status-information notification including the status information A to the status-setting control unit  1101   a.    
     When the status information A that is received from the function-A driver Dra satisfies the conditions defined by the output-condition parameter A, the status-setting control unit  1101   a  switches the input status, for example, from “1” to “0”. When all of the input statuses are set to “0”, the status-setting control unit  1101   a  sends the start notification to the function-B driver Drb to start the sub-functions α and β. More particularly, the requesting unit  1104  sends the start notification to the function-B driver Drb based on the priority parameters α and β that are stored in the control-data storage unit  1102  so that the function-B driver Drb performs the sub-functions α and β in the predetermined order. 
     Upon receiving the start notification from the status-setting control unit  1101   a , the function-B driver Drb stores the setting parameter α and the output-condition parameter α in the status-information storage unit  1110   ba . After that, the function-B control unit  311   b  starts the sub-function α with the setting parameter α so that the image data that has already been processed using the function A is processed using the sub-function α. Upon receiving the start notification from the status-setting control unit  1101   a , the function-B driver Drb stores the setting parameter β and the output-condition parameter β in the status-information storage unit  1110   bb . After that, the function-B control unit  311   b  starts the sub-function β with the setting parameter β so that the image data that has already been processed using the function A and the sub-function α is processed using the sub-function β. 
     In this manner, the control-data storage unit  1102  of the image-data processing apparatus  4  stores therein the priority parameter corresponding to each of the sub-functions as the status-setting control information. With this configuration, the image-data processing apparatus  4  controls the function B as the latter step based on the priority parameter so that the sub-functions α and β are performed in a predetermined order. 
     In other words, it is possible to implement processing using the single device exclusively, which increases efficiency in data processing. 
     It is described in the above embodiments that timing to start the latter function of the ASIC  10  depends on only the status of data that is processed using the former function of the ASIC  10 . However, the timing to start the latter function can depend on another factor. Given below is an explanation about a first modification of the present invention in which the latter function starts depending on another factor in addition to the timing to start the former function. 
     As shown in  FIG. 13 , the status-setting control unit according to the first modification stores a start-notification timing parameter in the control-data storage unit. The start-notification timing parameter represents relation between the number of status changes of the input status and timing to send the start notification. If the start-notification timing parameter is, for example, set to “2”, the status-setting control unit sends the start notification when the number of status changes of the input status reaches two. The user specifies a desired value as the start-notification timing parameter. 
     In the example shown in  FIG. 13 , the function-A driver Dra sends the status-information notification when the processing performed by the function A reaches a predetermined extent. When the number of status changes of the input status i.e., status changes from “1” to “0” in response to the status-information notification received from the function-A driver Dra reaches the number specified by the start-notification timing parameter, the status-setting control unit starts the function B. In other words, the status-setting control unit starts the latter function, i.e., the function B at timing different from the timing depending on the status of data that is processed using the former function, i.e., the function A. With this configuration, the image-data processing apparatus performs asynchronous control over the multiple output functions. 
     Given below is an explanation about a second modification of the present invention in which the function-A driver Dra and the function-B driver Drb perform the function A and the function B, respectively while adjusting the timing to perform the functions A and B each other. 
     In the example shown in  FIG. 14 , the integrated video driver TBDr stores the setting parameter A and the output-condition parameter A in the status-information storage unit  310   a , and the setting parameter B and the output-condition parameter B in the status-information storage unit  310   b.    
     The function A starts the image-data process, first. The status-setting control unit  31   a  monitors the status of the image data that is processed using the function A based on the status-information notification received from the function-A driver Dra and the status-information storage unit  310   a . When the image data is processed to a predetermined extent, the function-A driver Dra suspends the function A. Information indicative of the conditions to suspend the function A is stored, for example, in the status-information storage unit  310   a.    
     Then, the status-setting control unit  31   a  stores the setting parameter B and the output-condition parameter B in the status-information storage unit  310   b , and starts the function B. The status-setting control unit  31   a  monitors the status of the image data that is processed using the function B based on the status-information notification received from the function-B driver Drb and the status-information storage unit  310   b . When the image data is processed to a predetermined extent, the status-setting control unit  31   a  sends the start notification to the function-A driver Dra. If the function A is in the suspension mode when the function-A driver Dra receives the start notification from the status-setting control unit  31   a , the function-A control unit  311   a  re-starts the function A. 
     In this manner, the former function and the latter function are performed under the synchronous control. The synchronous control is useful, for example, when a memory capacity available for data processing is limited. It is possible to process data using the memory without overwriting. Moreover, even if a plurality of functions that is used to process data has different processing speeds (e.g., when a series of processes is performed in which data is obtained using a scanner, the obtained data is processed, and the processed data is written to the memory, or when another series of processes is performed in which data is acquired from the memory, the acquired data is processed, and the processed data is printed out), it is possible to process the data with the functions at proper timing in the synchronous manner. 
       FIG. 15  is a block diagram for explaining the hardware structure of the image-data processing apparatus  1 . The image-data processing apparatus  1  includes a controller  1510  and an engine  1560  that are connected to each other using a peripheral component interconnect (PCI) bus. The controller  1510  controls the image-data processing apparatus  1 , drawing, communications, and input from an operation unit  1520 . The engine  1560  includes an engine unit and an image-processing unit. The engine unit is, for example, printer engines connectable to the PCI bus, including a black-and-white plotter, a color plotter including a single drum, a color plotterincluding four drums, a scanner, or a facsimile. The image-processing unit performs, for example, error diffusion and gamma transformation. 
     The controller  1510  includes a central processing unit (CPU)  1511 , a north bridge (NB)  1513 , a system memory (MEM-P)  1512 , a south bridge (SB)  1514 , a local memory (MEM-C)  1517 , the ASIC  10 , and a hard disk drive (HDD)  1518 . The NB  1513  is connected to the ASIC via an accelerated graphics port (AGP)  1515 . The MEM-P  1512  includes a read only memory (ROM)  1512   a  and a random access memory (RAM)  1512   b.    
     The CPU  1511  controls the image-data processing apparatus  1 . The CPU  1511  is connected to the NB  1513 , the MEM-P  1512 , and the SB  1514  that are working as a chipset. Another device is connected to the CPU  1511  via the chipset. The CPU  1511  executes the image-data program, as a result of which the process  20 , the integrated video driver TBDr, the integrated drivers TDr 1  and TDr 2 , the drivers Dr 1  to Dr 12  perform their processes. 
     The NB  1513  connects the CPU  1511  to the MEM-P  1512 , the SB  1514 , and the AGP  1515 . The NB  1513  includes a memory controller that controls read/write commands from/to the MEM-P  1512 , a PCI master, and an AGP target. 
     The MEM-P  1512  is a system memory for storing therein programs or data, loading thereon programs or data, or drawing of images that are to be printed out. The MEM-P  1512  includes the ROM  1512   a  and the RAM  1512   b . The ROM  1512   a  is a read only memory that is exclusively used for storing therein programs or data. The RAM  1512   b  is a rewritable and readable memory that is used for loading thereon programs or data or drawing of images that are to be printed out. 
     The SB  1514  connects the NB  1513  to a PCI device or a peripheral device. The SB  1514  is connected to the NB  1513  via the PCI bus. A network interface (I/F) is connected to the PCI bus. 
     The ASIC  10  is designed for image processing, including a hardware component for image processing. The ASIC  10  works as a bridge that connects between the AGP  1515 , the PCI bus, the HDD  1518 , and the MEM-C  1517 . The ASIC  10  includes an arbiter that works as a core of the ASIC  10 , a memory controller that controls the MEM-C  1517 , a plurality of direct memory access controls (DMACs) that perform using hardware logics various image processing such as image rotation, and a PCI unit that receives/transmits data from/to the engine  1560  via the PCI bus. The ASIC  10  is connected to a facsimile control unit (FCU)  1530 , a universal serial bus (USB)  1540 , and an IEEE1394  1550  via the PCI bus. 
     The MEM-C  1517  is a local memory as a buffer for storing therein an image to be copied or a buffer for storing codes. The HDD  1518  stores therein image data, programs, font data, and forms. 
     The AGP  1515  is a bus I/F for connecting a graphics accelerator card that has been proposed to perform graphics processing at a higher speed. Direct access to the MEM-P  1512  with a high throughput increases the throughput of the graphics accelerator card. 
     The image processing program that is executed by the image-data processing apparatus according to an embodiment of the present invention is delivered or distributed, for example, in a state preinstalled into a recording medium such as a ROM. 
     The image processing program can be stored, in a form of a file that is installable and executable on a computer, in a recording medium readable by the computer, such as a compact disk-read only memory (CD-ROM), an FD, a compact disk-recordable (CD-R), and a DVD. 
     On the other hand, the image processing program can be stored in another computer connected to the computer via a network such as the Internet, and downloaded to the computer via the network. The image processing program can be delivered or distributed via a network such as the Internet. 
     The image processing program is, for example, made up of modules that implement the process  20 , the integrated video driver TBDr, the integrated drivers TBDr 1  and TBDr 2 , and the drivers Dr 1  to Dr 12  as software. When the CPU  1511  (processor) reads the program from the ROM  1512   a  and executes the read image processing program, the above modules are loaded and created on a main memory thereby implementing the process  20 , the integrated video driver TBDr, the integrated drivers TBDr 1  and TBDr 2 , and the drivers Dr 1  to Dr 12 . 
     The hardware structure shown in  FIG. 15  is an example. Any structure can be used as the hardware structure of the image-data processing apparatus according to an embodiment of the present invention. 
     As described above, according to an aspect of the present invention, the image-data processing apparatus specifies, during a series of processes using a plurality of target functions, a next function depending on the status of data that is processed using a current function In other words, the image-data processing apparatus is free from storing therein an order of the target functions in a form of hardware coding, which makes it possible to flexibly change the order of the target functions depending on the type of processing. As a result, the image-data processing apparatus controls the hardware in an efficient and flexible manner, which increases the processing performances. 
     Although the invention has been described with respect to specific embodiments for a complete and clear disclosure, the appended claims are not to be thus limited but are to be construed as embodying all modifications and alternative constructions that may occur to one skilled in the art that fairly fall within the basic teaching herein set forth.