1. Field of the Invention
Embodiments of the present invention generally relate to a method and apparatus for video processing in Context-Adaptive Binary Arithmetic Coding (CABAC).
2. Description of the Related Art
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.
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.
Thus, there is a need for a CABAC engine that is capable of processing adaptive binary arithmetic coding more efficiently.
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.
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.
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.
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.
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.
For instance, given a 8×8 block with the following coefficient values
A significance map would result in the following bins significant_coeff_flag:
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1
last_significant_coeff_flag:
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
The total run of bins would be
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)
The run length approach would give the following values
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 1, 0, end_of_block”
which when binarized would be
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00110, 011, 0, 0, 010, 0, 00101 (30-bins)
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).
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.
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).
The example binarization is given below:
Other forms of binarization, such as, truncated unary or concatenation of truncated unary with Exp-golomb, may be used.
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.
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.
Number | Name | Date | Kind |
---|---|---|---|
6363119 | Oami | Mar 2002 | B1 |
7088271 | Marpe et al. | Aug 2006 | B2 |
20050146451 | Kobayashi et al. | Jul 2005 | A1 |
20060104351 | Teng | May 2006 | A1 |
20060104521 | Teng | May 2006 | A1 |
20070279266 | Chen et al. | Dec 2007 | A1 |
Number | Date | Country | |
---|---|---|---|
20100097248 A1 | Apr 2010 | US |
Number | Date | Country | |
---|---|---|---|
61106323 | Oct 2008 | US |