Game Development Reference
In-Depth Information
modeling in C2DVLC is designed by exploiting the statistical features presented in
Sect.
6.2.2
. Last, we introduce the Exponential-Golomb codes used in C2DVLC.
6.2.1 Overview of C2DVLC
In a typical DCT block, e.g., in progressive videos, nonzero coefficients are always
clustered around the top-left corner and roughly symmetrically positioned in the
horizontal and vertical directions. This is because the statistical distributions of DCT
coefficients at low frequency DCT subbands have larger variances than those at high
frequency ones (their expectations are all zero), which is similar to the case in image
coding as pointed out in (Lam and Goodman
2000
). Therefore, the symmetrical scan
pattern, e.g., the zig-zag scan, as depicted in Fig.
6.1
, is usually used to reorganize
DCT coefficients. After reorganization, the coefficients in a DCT block are arranged
into a one-dimensional list. Before entropy coding, especially in VLC, the list is
further represented by two kinds of symbols: nonzero coefficient, denoted as Level,
and the number of successive zero coefficients before a
Level
, denoted as
Run
.In
a statistical view, DCT coefficients always exhibit the following statistical features,
expressed via
Level
and
Run
.
1. The magnitude of
Level
shows a statistical decreasing tendency while
Run
shows
a statistical increasing tendency along the zig-zag scan path.
2.
Level
and
Run
are correlated, e.g., a
Level
with a smaller magnitude is more likely
to be preceded by a larger
Run
.
3. (
Level
,
Run
) pairs have varying statistical distributions along the zig-zag scan
path even in one DCT block. Typically, the distribution shape of the first scanned
(
Level
,
Run
) pair along the zig-zag path is much sharper than that of the
k
th (e.g.,
k
is equal to 5) scanned pair.
To utilize the information listed above, C2DVLC codes each (
Level
,
Run
) pair,
denoted by (
L
i
,
R
i
)(
i
1) one by one with multiple off-line trained
two-dimensional VLC (2D-VLC) tables until all pairs are coded. At last, a special
=
0
,
1
,...,
N
−
Fig. 6.1
Zig-zag scan for
one 8
×
8block