Abstract:
A distributed video stream decoding system on computer and decoding method of the system is proposed to increase the decoding efficiency. The decoding method reads pictures of video stream and divides each picture into a plurality of slice packages through software modules executing on a CPU. Then, the method dispatches the slice packages by slice dispatcher and sends at least a slice into a master decoder when the slice queue of the master decoder less then a default value and sends a slice into a secondary decoder when the secondary decoder is waiting, respectively. Therefore, the master decoder and the secondary decoder can decode the received slice simultaneously to increase the decoding efficiency.

Description:
BACKGROUND OF THE INVENTION  
         [0001]    1. Field of Invention  
           [0002]    The present invention relates to a distributed video stream decoding system and, in particular, to a distributed video stream decoding system, which distributes the workload of a master decoder to a secondary decoder.  
           [0003]    2. Related Art  
           [0004]    [0004]FIG. 1 shows a structure of the motion picture experts group (MPEG) decoding system. After MPEG system data are sent into a system decoder  100 , the data are divided into three groups of data, namely, a video stream, an audio stream, and timing information. The video stream will be transmitted to a video decoder  110  and be decompressed by the video decoder  110  into decompressed video data. The audio stream will be transmitted to an audio decoder  120  and be decompressed by the audio decoder  120  into decompressed audio data. The timing information is used to perform synchronization control over the video decoder  110  and the audio decoder  120 .  
           [0005]    [0005]FIG. 2 shows the structure of a video data steam. The video data steam consists of several picture groups and each picture group contains I, P, B, B, P, B, B pictures, where I is an intra-picture, P is an intra-frame predicted picture, and B is a bi-directional predicted picture. Each picture  130  contains many slices  140 , and each slice  140  is composed of several macro-blocks  150 . Moreover, each macro-block is formed by four blocks of 8*8 pixels. According to the MPEG specification, if the order of the I, P, and B pictures is I( 1 ), B( 2 ), B( 3 ), P( 4 ), B( 5 ), B( 6 ), and P( 7 ), the order of the video data steam corresponding to the I, P, and B will be I( 1 ), P( 4 ), B( 2 ), B( 3 ), P( 7 ), B( 5 ), and B( 6 ).  
           [0006]    Thanks to the progress in high-speed operating CPU (Central Processing Unit), it is forecasted that the CPU operating speed will be over 1.5 GHz this year. Due to the limit on the decoding speed of the H/W (Hardware) MPEG, the idle time of the CPU will become longer if only the H/W MPEG is used to do the MPEG decoding work.  
         SUMMARY OF THE INVENTION  
         [0007]    To solve the above problems, the invention provides a distributed video stream decoding system, which supports a main H/W decoder by running some decoding software in the CPU.  
           [0008]    Another object of the invention is to provide a distributed video stream decoding system, which supports a main H/W decoder using a subsidiary H/W processor.  
           [0009]    The disclosed distributed video stream decoding method uses a subsidiary decode to support the main decoder mainly comprised of hardware to speed up the whole decoding efficiency. The decoding method includes the steps of: reading a video stream image using software; dividing the image into a plurality of slice packages using software; parsing the slice packages into individual slices using software and transmitting one slice to the secondary decoder when the secondary decoder is idle and transmitting at least one slice to the main decoder when the slice queueing length in the main decoder is smaller than a predetermined threshold; and decoding the slice received by the secondary decoder and the slices received by the main decoder. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0010]    The present invention will become more fully understood from the detailed description given hereinbelow illustration only, and thus are not limitative of the present invention, and wherein:  
         [0011]    [0011]FIG. 1 illustrates a structure of the MPEG decoding system.  
         [0012]    [0012]FIG. 2 illustrates a structure of the video data steam.  
         [0013]    [0013]FIG. 3 illustrates a structure of the distributed video stream decoding system.  
         [0014]    [0014]FIG. 4 illustrates a structure of a slice package.  
         [0015]    [0015]FIG. 5 is a control flowchart showing a first embodiment of slice distribution in the distributed video stream decoding system of the invention.  
         [0016]    [0016]FIG. 6 is a control flowchart showing a second embodiment of slice distribution in the distributed video stream decoding system of the invention. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0017]    [0017]FIG. 3 shows a structure of distributed video stream decoding system. There are two slice decoders D master  and D sec  in the distributed video stream decoding system  1 . D master  is a master MPEG decoder  10 , which is implemented by hardware. D sec  is a secondary MPEG decoder  20 , which can be implemented by software and/or simply hardware. After the stream decoding system  1  reads the video stream  30 , the system generates slice packages by a picture decoder  40  and transmits the slice packages to a slice dispatcher  50 . The slice dispatcher  50  separates a slice package into slices. Each slice is then sent to either the master MPEG decoder  10  or the secondary MPEG decoder  20  according to controls. The decompressed video data generated by the master MPEG decoder  10  and the secondary decoder  20  are saved to video frame memory  60 . The reading of the video stream  30 , the picture decoder  40  and the slice dispatcher  50  are controlled by computer software and processed by the CPU.  
         [0018]    The slice dispatcher  50  transmits the slice into the slice queue  11  of the master MPEG decoder  10 . Then the HW slice decoder  12  of the master MPEG decoder  10  decodes the slice stored in the slice queue  11  to generate decompressed video data. The secondary MPEG decoder  20  processes pre-decoding works by executing decoding software in the CPU, for example, parsing a compressed video stream by variable length decoding (VLD), executing inverse quantization (IQ) of decoded coefficients, executing inverse discrete cosine transform (IDCT), and saving the result to a motion compensation queue  22 . Afterwards, either simple hardware  23  or software is used to execute motion compensation to generate decompressed video data. Then, the decompressed video data are saved to the video frame memory  60 . The master MPEG decoder  10  is a conventional MPEG decoder and the decompressed video data are also saved to the video frame memory  60 .  
         [0019]    Since the master MPEG decoder  10  and the secondary MPEG decoder  20  process the decoding work for the slices in a parallel way (simultaneously), the advantage of the high-speed operating CPU can be used to support the work in the master MPEG decoder  10 . Furthermore, the secondary decoder  20  can utilize the resources in the CPU or can be implemented by simple hardware. Therefore, the burden of the master MPEG decoder  10  can be reduced, boosting the whole decoding performance.  
         [0020]    [0020]FIG. 4 illustrates a structure of the slice package. As shown in the drawing, the slice package involves a picture header and several slices. Since the picture header has a larger data volume, there is a great difficulty in processing and more memory is occupied if the picture decoder  40  puts the picture header in each slice. Thus, the present invention attaches the picture header to each slice package in the picture decoder  40  and to each slice only in the slice dispatcher.  
         [0021]    [0021]FIG. 5 is a control flowchart showing a first embodiment of slice allocation in the distributed video stream decoding system of the invention. As shown in the drawing, the steps of the slice allocation of the distributed video stream decoding system according to the invention are as follows:  
         [0022]    Step S 502 : Read a coded picture from the computer.  
         [0023]    Step S 504 : Decode the coded picture into slice packages.  
         [0024]    Step S 506 : Read a buffering length L in the master MPEG decoder  10  from a DMA shadowed register.  
         [0025]    Step S 508 : Compare to see if the buffering length L is smaller than a predetermined threshold N. If the buffering length L is smaller than the predetermined threshold N, step S 510  follows; otherwise, step S 512  is performed.  
         [0026]    Step S 510 : Transmit a slice to the slice queue of the master MPEG decoder  10 . The master MPEG decoder  10  decodes the slice package in the slice queue. Continue to step S 516 .  
         [0027]    Step S 512 : Determine if the secondary MPEG decoder  20  is idle. If the secondary MPEG decoder  20  is idle, step S 514  follows; otherwise, step S 516  follows.  
         [0028]    Step S 514 : Enter a slice to the secondary MPEG decoder  20 . Continue to the step S 516 .  
         [0029]    Step S 516 : Determine if the picture processing is finished. If not, continue to step S 506 ; otherwise, the procedure is ended.  
         [0030]    [0030]FIG. 6 is a control flowchart showing a second embodiment of slice allocation according to the distributed video stream decoding system of the invention. As shown in the drawing, the steps of the slice allocation by the distributed video stream decoding system according to the invention are as follows:  
         [0031]    Step S 602 : Calculate respectively the decoding speed ratio between the master MPEG decoder  10  and the secondary MPEG decoder  20  on the pictures I, P, and B.  
         [0032]    Step S 604 : Read a coded picture from the computer.  
         [0033]    Step S 606 : Decode the coded picture into slice packages.  
         [0034]    Step S 608 : Distribute the parsed slice data to the master MPEG decoder  10  and the secondary decoder  20  according to the decoding speed ratio between the master MPEG decoder  10  and the secondary MPEG decoder  20  on the pictures I, P, and B.  
         [0035]    Step S 610 : Recalculate the decoding speed ratio between the master MPEG decoder  10  and the secondary MPEG decoder  20  on the pictures I, P, and B according to the change of the decoding speed of the secondary MPEG decoder  20  on the pictures I, P, and B.  
         [0036]    Step S 616 : Determine if the picture processing is finished. If not, continue to step S 606 ; otherwise, the procedure is ended.  
         [0037]    There are two principal stages in the method of calculating the decoding speed ratio between the master MPEG decoder  10  and the secondary MPEG decoder  20 . First, calculate respectively the time T I1 , T I2 , T B1 , T B2 , T P1 , and T P2  that the master MPEG decoder  10  and the secondary MPEG decoder  20  spend to decode the prepared pictures I, P, and B. Secondly, calculate the decoding speed ratio between the master MPEG decoder  10  and the secondary MPEG decoder  20 : R I =T I1 /(T I1 +T I2 ), R B =T B1 /(T B1 +T B2 ) and R P =T P1 /(T P1 +T P2 ). Thus, distributing different numbers of the slices to the master MPEG decoder  10  and the secondary decoder  20  is based on the decoding speed ratios R I , R B , and R P . Since the host does not only do the decoding work but also runs other programs, therefore, it is necessary to recalculate the decoding speed ratio between the master MPEG decoder  10  and the secondary MPEG decoder  20  on the pictures I, P, and B to avoid bad job distributions. Dynamically adjusting the decoding speed ratio optimizes job distributions.  
         [0038]    [0038]FIG. 5 and FIG. 6 are flowcharts showing that each picture slice is controlled and distributed by the software to either the master MPEG decoder  10  or the secondary MPEG decoder  20 . At the same time of distribution, the master MPEG decoder  10  or the secondary MPEG decoder  20  is still decoding without break.  
         [0039]    Certain variations would be apparent to those skilled in the art, which variations are considered within the spirit and scope of the claimed invention.