Game Development Reference
In-Depth Information
After the value of
R
LPS
is obtained, the renewed lower bound is updated. Then the
renormalization process is carried out to guarantee that the most significant bit of the
updated
range
value is always '1'. Until now, one coding cycle is finished. After one
bin is encoded by arithmetic coder, the estimated probability of the chosen context
should also be updated. Actually, in CBAC, the probability of each context model
is initialized to be 0.5 for both
MPS
and
LPS
at the start of coding. With the coding
of some bins, the adaptive probability estimation of
MPS
on logarithm domain is
performed. The probability estimation is fulfilled using only additions/subtractions
and shifts as in the following formulas:
LG
_
P
MPS
ₐ
LG
_
P
MPS
+
LG
_
f
if
(
LPS happens
),
(6.13)
LG
_
P
MPS
ₐ
LG
_
P
MPS
−
(
LG
_
P
MPS
>>
c
w)
if
(
MPS happens
)
2
−
c
w
). Here,
c
where
f
is equal to (1
is the size of sliding widow to control
the speed of probability adaptation. The smaller
c
−
w
w
is, the faster the probability
adaptation will be.
In summary, the arithmetic coder in CBAC replaces the traditional multiplications
for range update and probability estimation update with additions by combining orig-
inal domain and logarithmic domain. In order to keep the cost of alternation between
the two domains low, the approximation is employed. Moreover, the renormaliza-
tion takes place only when one
LPS
happens so that much time can be saved for
renormalization process.
6.3.3 CBAC in AVS1
Figure
6.5
depicts the coding block diagram of (
Level
,
Run
) pairs in one DCT block.
As C2DVLC does, CBAC codes each
(
L
i
,
R
i
)(
=
,
,...,
−
)
pair one by
one along the reverse scan order until all pairs are coded. A so-called
EOB
symbol
i
0
1
N
1
Fig. 6.5
Block diagram of CBAC encoder