Based on established and proposed standards for encoding and decoding video data, such as H.264 (also known as MPEG-4, Part 10, and Advanced Video Coding), encoded digital video data may be broadcast at data rates exceeding 20 MBits per second for high definition television (HDTV). For compression, the H.264 standard allows individual frames to be encoded using varying amounts of data. As an example, the first frame of a sequence contains complete picture detail, and therefore requires more data, while subsequent frames are largely predicted from preceding frames, and therefore need only enough data to describe the differences.
H.264 optionally uses context adaptive binary arithmetic coding (CABAC) to further compress data that has already been compressed using spatial and temporal prediction, transforms, quantization and other techniques.
Unlike the other methods, CABAC is categorized as lossless compression because CABAC coding does not result in the loss of information. Nevertheless, CABAC can result in considerable compression gains.
In CABAC encoded data, a “syntax element”, which typically represents a coefficient or other datum from prior compression, is encoded as a variable length sequence of binary bits (“Bins”), and the individual Bins (i.e. 2-valued symbols) are then encoded using arithmetic coding. Arithmetic encoding expresses a sequence of symbols as a single fractional binary number between 0 and 1 using recursive subdivision of intervals to encode successive symbols. The number has as many fractional bits of precision as are needed to express its value. The relative likelihood of occurrence of a 1 and a 0 is used to encode the Bin with statistically optimal efficiency. In the CABAC decoder, a dynamic context table is kept with likelihood entries for each of many different types of Bins within syntax elements. The context table is preloaded at the beginning of a “slice” of video data, and subsequently the appropriate context table entry is updated after each Bin of a syntax element is decoded. Because a context table entry is referenced and updated in order for each Bin, parallelization of the decoding process is computationally complex.
A typical HDTV video decoder may assemble 30 frames per second. The standard allows for encoded frame data sizes as high as 12 Mbits per frame for HDTV. Therefore, an arithmetic decoder may need to decode at speeds of 360 Mbits/sec of encoded data at a peak decoding rate, if it is to complete the decoding process for each frame within one frame time. The peak rate of Bins is even higher than 360 Mbits/sec in this case. It is difficult using conventional CMOS integrated circuits, to build an arithmetic decoder and context memory that operates at this rate.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of ordinary skill in the art through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.