Abstract:
A method and apparatus for coding of a significant map in accordance with the present invention. The method include carrying out a scan of at least a portion of a block of transform coefficients, calculating runs of zeros of the scanned data; and coding runs of zeros with variable length coding.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims benefit of U.S. provisional patent application Ser. No. 61/106,323, filed Oct. 17, 2008, which is herein incorporated by reference. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    Embodiments of the present invention generally relate to a method and apparatus for video processing in Context-Adaptive Binary Arithmetic Coding (CABAC). 
         [0004]    2. Description of the Related Art 
         [0005]    Context-Adaptive Binary Arithmetic Coding (CABAC) is one of two entropy engines used by the existing video coding standard H.264. Its purpose is to provide further compression of the video bit-stream. 
         [0006]    The existing CABAC engine for the H.246 standard has limited throughput due to its binarization scheme which generates a large number of bins that need to be encoded, and the fact that its arithmetic coding engine is limited to encoding a single bin per cycle. Consequently, in order to meet performance requirements of HD video bit-streams, the CABAC engine needs to run at extremely high frequencies which consumes a significant amount of power and in some cases may not be feasible. 
         [0007]    Thus, there is a need for a CABAC engine that is capable of processing adaptive binary arithmetic coding more efficiently. 
       SUMMARY OF THE INVENTION 
       [0008]    Embodiments of the present invention relate to a method and apparatus for coding of a significant map in accordance with the present invention. The method include carrying out a scan of at least a portion of a block of transform coefficients, calculating runs of zeros of the scanned data; and coding runs of zeros with variable length coding. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0009]    So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments. 
           [0010]      FIG. 1  is an embodiment of a block diagram for a context-adaptive binary coding arithmetic coding system; and 
           [0011]      FIG. 2  is an embodiment of a method for coding of a significant map in accordance with the present invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0012]    H.264 defines slice structures to create independently decodable data units. The dependency of context models and parsing process inside a slice structure makes it impossible do multiple processor CABAC decoding below the slice layer. Usually, the maximum allowable slice size is equal to a picture in the H.264 standard. Therefore hardware H.264 CABAC decoders that rely on slice level parallelism should work on picture-level to handle this worst case scenario. Operating picture level introduces extra decoding delay and increases the memory bandwidth requirements. 
         [0013]    In the H.264 CABAC, the significance map information, namely the “significant_coeff_flag” and “last_coeff_flag” syntax elements, result in the majority of the bins that need to be encoded. Specifically, the significance map information dominates the total number of bin making up ˜47% for QP=22, and 30% for QP=27. The significance map involves using 0 and 1 to represent the location of non-zero coefficients. The non-zero coefficients levels are then encoded separately. 
         [0014]    The same information may be represented using run-length encoding, where a run of zeros is represented by a run number followed by a number representing the non-zero coefficient level. The run numbers may be translated to bins with a first order Exp-Golomb binarization scheme. 
         [0015]      FIG. 1  is an embodiment of a block diagram for a context-adaptive binary coding arithmetic coding system  100 . The system  100  includes binarization  102 , arithmetic coding engine  104 , bin context modeling  106  and probability state adaptation  108 . 
         [0016]    For instance, given a 8×8 block with the following coefficient values 
         [0000]    
       
                 
         
             
             
         
       
     
         [0000]    A significance map would result in the following bins significant_coeff_flag: 
         [0017]    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1 
         [0018]    last_significant_coeff_flag: 
         [0019]    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 
         [0020]    The total run of bins would be 
         [0021]    1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1 (41-bins) 
         [0022]    The run length approach would give the following values 
         [0023]    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 1, 0, end_of_block” 
         [0024]    which when binarized would be 
         [0025]    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00110, 011, 0, 0, 010, 0, 00101 (30-bins) 
         [0026]    By using run-length encoding (in conjunction with a binarization scheme e.g. Exp-Golomb), rather than the current significance map approach, the number bins required to represent this information is reduced leading to a reduction in the number of compute cycles required for coding the bins which in turn leads to a corresponding increase in throughput. For example, in the case of Exp-Golomb the number of bins required to represent the position of non-zero coefficients in an 8×8 block are reduced by an estimated average of ˜30% (or ˜15% of the total number of bins for the average 720 p bit-stream). 
         [0027]    The approach can be extended to run-length coding the entire macroblock (16×16) and a 64×64 macroblock which is being proposed for the next generation standard. 
         [0028]    Using run-length across a large block can lead to better compression and consequently fewer bins. The bins of the run-length may be encoded with either a fixed or adaptive context (e.g. context assignment similar to coefficient level). (See additional figure “CABAC coding of runs” in attached slides). 
         [0029]    The example binarization is given below: 
         [0000]                                Code word   Information signaled                   0   Run of zero       100   End of block       101   Run of one       11000   Run of two       11001   Run of three       11010   Run of four       . . .   . . .                    
Other forms of binarization, such as, truncated unary or concatenation of truncated unary with Exp-golomb, may be used.
 
         [0030]      FIG. 2  is an embodiment of a method for coding of a significant map in accordance with the present invention. The method  200  starts at step  202 . At step  204 , the method  200  carries out a zig-zag scan of block of transform coefficients. At step  206 , the method  200  calculates runs of zeros. At step  208 , the method codes runs of zeros with variable length coding, such as, Exp-Golomb code, Unary, Huffman coding, and the likes. 
         [0031]    While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.