Graphics Reference
In-Depth Information
Constructing the list requires a large amount of computation since it involves
reading from multiple locations (i.e., fetching the co-located neighbor and spatial
neighbors) and performing several comparisons to prune the list; thus, dependency
on list construction would significantly degrade parsing throughput [ 33 , 108 ].
To decouple the list generation process from the parsing process such that
they can operate in parallel in HEVC, cMax is signaled in the slice header using
five_minus_max_num_merge_cand and does not depend on list size. To
compensate for the coding loss due to the fixed cMax, combined bi-predictive and
zero motion vector candidates are added when the list size is less than the maximum
number of allowed candidates as defined by cMax [ 79 ]. This also ensures that the
list is never empty and that merge_flag is always signaled [ 107 ]. For more details
on candidate list construction please refer to Chap. 5 .
8.5.1.2
Signaling of Motion Vector Differences, Reference Indices,
and Inter-Prediction Direction
If merge mode is not used, then the motion vector is predicted from its neighboring
blocks and the difference between motion vector (mv) and motion vector prediction
(mvp), referred to as motion vector difference (mvd), is signaled:
mvd.x; y/ D mv.x; y/ mvp.x; y/
In H.264/AVC, a single predictor is calculated for mvp from the median of the left,
top and top-right spatial 4 4 neighbors.
In HEVC, advanced motion vector prediction (AMVP) is used, where several
candidates for mvp are determined from spatial and temporal neighbors [ 38 ]. A list
of mvp candidates is generated from these neighbors, and the list is pruned to
remove redundant candidates such that there is a maximum of two candidates.
A syntax element called mvp_l0_flag (or mvp_l1_flag depending on the
reference list) is used to indicate which candidate is used from the list as the mvp. To
ensure that parsing is independent of list construction, mvp_l0_flag is signaled
even if there is only one candidate in the list. The list is never empty as the zero
motion vector is used as the default candidate.
In HEVC, improvements were also made on the coding process of mvd itself.
In H.264/AVC, the first nine bins of mvd are regular coded truncated unary bins,
followed by bypass coded 3rd order Exp-Golomb bins. In HEVC, the number of reg-
ular coded bins for mvd is significantly reduced [ 58 ]. Only the first two bins are reg-
ular coded ( abs_mvd_greater0_flag , abs_mvd_greater1_flag ), fol-
lowed by bypass coded first-order Exp-Golomb (EG1) bins ( abs_mvd_minus2 ).
In H.264/AVC, context selection for the first bin in mvd depends on whether
the sum of the motion vectors of the top and left 4 4 neighbors are greater
than 32 (or less than 3). This requires 5-bit storage per neighboring motion vector,
which accounts 24,576 of the 30,720-bit CABAC line buffer needed to support a
4k 2k sequence. The need to reduce the line buffer size in HEVC by modifying
Search WWH ::




Custom Search