Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard
Detlev Marpe, Heiko Schwarz, and Thomas Wiegand
IEEE Transactions on Circuits and Systems for Video Technology, JULY 2003
Outline
Introduction The CABAC Framework
Binarization Context Modeling Binary Arithmetic Coding
Example of detailed CABAC
Introduction (1)
CAVLC Baseline profile
CABAC Main profile
Compared to CAVLC, CABAC typically provides a reduction in bit rate between 5%~15%.
Introduction (2)
Binarization Context modeling Binary arithmetic coding
BinarizationBinarization Contextmodeling
Contextmodeling
Binaryarithmetic
coding
Binaryarithmetic
coding
entropy_coding_mode = 1
Binarization
Alphabet reduction Reduce a nonbinary syntax to a unique intermediat
e binary codeword. similar to converting a data symbol into a variable l
ength code but the binary code is further encoded prior to transmission.
Nothing is lost in terms of modeling. P(“3”) = P(C0)(“0”) P(C1)(“0”) P(C2)(“1”)
0
0
0 0 11
1
1C0
C1
C2 C3
“0” “3”“2” “1”
“5”-“30”
Binarization (2)
No multiplications needed Adaptive m-ary arithmetic coding requires
at least two multiplications for each symbol.
Enable context modeling on a subsymbol level. Conditional probabilities can be used for th
e most frequently observed bins, whereas others use zero-order probability model.
)()(
)1()()1()1()1()(
)1()1()1()(
nXnnnn
nXnnnn
xFlulu
xFlull
Binarization – four basic schemes (1)
Unary code (U) x = 4 11110
Truncated unary code (TU) x = 4, S = 5 11110 x = 5, S = 5 111110
kth order Exp-Golomb code (EGk)while (1) { if ( x >= (1<<k) ) { put ( 1 ) x = x – (1<<k) k++ } else { put ( 0 ) while ( k-- ) put ( (x>>k) & 0x01 ) break }}
prefix part
termination of prefix part
suffix part
Binarization – four basic schemes (2)
Fixed-length code (FL) S = 7 log27 = 3 Is applied to uniform distribution
Binarization – concatenation of basic schemes (1)
Coded_block_pattern Which blocks contain nonzero transform c
oefficients in a MB Prefix: 4-bit FL for luminance Suffix: TU with S = 2 for chrominance
Motion vector difference Prefix: TU with S = 9 for |mvd| < 9 Suffix: EG3 for |mvd - 9| if |mvd| 9 Sign bit
Binarization – concatenation of basic schemes (2)
Transform coefficient level Prefix: TU with S = 14 for |mvd| Suffix: EG0 for |mvd - 14| if |mvd| 14
Context Modeling (1)
A "context model" is a probability model for one or more bins of the binarized symbol.
This model may be chosen from a selection of available models depending on the statistics of recently-coded data symbols.
The context model stores the probability of each bin being "1" or "0".
Context Modeling (2)
Four basic design types Two neighboring syntax elements in the past of the
current syntax element
The prior coded bins (b0, b1, … bi-1) mb_type and sub_mb_type
The position in the scanning path Significant map
The accumulated number of encoded levels Coefficient levels
Residual data only
BCA
0
0
0 0 11
1
1C0
C1
C2 C3
“0” “3”“2” “1”
“5”-“30” mb_type (P/SP slices)
Context Modeling - Context index γ(1)
The entity of probability models can be arranged in a linear fashion such that each model can be identified by a so-called context index γ.
According to each context index γ, the probability model is determined by (αγ ,βγ) for 0≤ γ ≤398.
6 bits for αγ and 1 bit for βγ. αγ is the probability state ind
ex and the (binary) βγ represents the most probable symbol (MPS).
64 representative probability values
Context Modeling - Context index γ(2)
0 to 72 are related to syntax elements of macroblock, sub-macroblock, prediction modes of special and temporal as well as slice-based and macroblock-based control information. γ=ΓS+χS..
ΓS denotes the context index offset, the lower value of the range.
χS denotes the context index increment of a given syntax element S.
73 to 398 are related to the coding of residual data. Significant_coeff_flag and last_significant_coeff_flag are
conditioned on the scanning position. Coded_block_pattern: γ=ΓS+χS.. Others:γ=ΓS+ΔS(ctx_cat)+χS. Here the context category (ctx
_cat) dependent offset ΔS is employed.
Context Modeling - Context index γ(3)
Values of ΔS depending on context category and syntax element
Binary arithmetic coding
An arithmetic coder encodes each bin according to the selected probability model.
Binary arithmetic is based on the principal of recursive interval subdivision.
Another distinct feature in H.264/AVC is its simplicity bypass coding mode (assumed to be uniformly distributed).
1/4
3/4
2/3
1/3
5/6
1/61/2
1/2 1/2 1/2
1/2 1/2
Example of detailed CABAC – motion vector difference (1)
Binarization Prefix: TU (|mvdx|< 9) Suffix: EG3 (|mvdx| 9) |mvdx| = 10 prefix 8 use TU and suffix 2 use E
G3 Context model
One of 3 model is selected for bin 1, based on previous coded MVD values.
e=|mvdA|+|mvdB|
Example of detailed CABAC – motion vector difference (2)
The remaining bins are coded using one of 4 further context models:
e Context model for bin 1 (χS)
0 <= e < 3 Model 0
3 <= e < 32 Model 1
32 <= e Model 2
Bin Context mode
1 0, 1, or 2 (depend on ek)
2 3
3 4
4 5
5 6
6 and higher 7
Example of detailed CABAC – mb_type and sub_mb_type (2)
Binarization
Context model C0…C3 C’0…C’2
Experimental result
In our experiments, we compare the coding efficiency of CABAC to the coding efficiency of the baseline entropy coding method of H.264/AVC. The baseline entropy coding method uses the zero-order Exp-Golomb code for all syntax elements with the exception of the residual data, which are coded using the coding method of CAVLC.
Bit-rate savings of 9% to 14% are achieved, where higher gains are obtained at lower rates.