Graphics Reference
In-Depth Information
In-loop filters have been applied
Can be used in deblocking decisions
and filtering and SAO classification
To be modified by deblocking
Horizontal CTU boundary
Unavailable samples
Fig. 7.21 Example of luma samples line buffer. Samples below the dashed line and above the
horizontal CTU boundary should be kept in the line buffer until the unavailable samples have been
reconstructed
bottom horizontal CTU boundary needs samples from the CTU below. Hence, after
the current CTU has been processed, the deblocking cannot be applied yet to the
bottom rows of samples since the reconstructed samples of the CTB to the bottom of
the current CTB are not yet available (see Fig. 7.21 ). Likewise, since SAO is applied
after the deblocking filter, SAO cannot be applied to the bottom sample rows before
the deblocking is done. In order to decrease memory bandwidth requirements, the
information needed for in-loop filtering over the lower CTU boundary is kept in
the fast on-chip memory until the CTU below has been reconstructed and the in-
loop filters applied. This on-chip memory is usually called a “line buffer” since the
information for horizontal lines of samples typically needs to be kept.
In the deblocking filter, vertical filtering across a horizontal CTU boundary needs
four rows of luma samples, two rows of Cb samples, and two rows of Cr samples
from the upper CTU to be kept in the line buffer for the filtering decisions and
operations. Deblocking can modify up to three rows of luma samples, one row of
Cb samples, and one row of Cr samples from the block boundary.
Let us assume that the deblocking filter needs to keep N rows of the above CTBs,
where N is equal to four for luma and two for Cb and Cr. Since the N -th row above
the horizontal CTB boundary will not to be modified by the vertical deblocking
filtering, the SAO can be applied to the ( N C 1)-th row above the horizontal CTB
boundary. However, the bottom N rows of the current CTB should be kept in the line
buffer before the CTB below is reconstructed and deblocking and SAO are applied
(see Fig. 7.21 for luma samples example).
When the CTB below is reconstructed and SAO in the CTB above uses EO with
the class greater than zero, applying SAO for the N -th row above the boundary needs
the ( N C 1)-th row above the boundary to be available. A straightforward solution
is to store reconstructed and deblocked samples of the ( N C 1)-th row in the line
buffer. However, using the fast EO sample classification, the “ sign3 ” results [the
sign of the difference or 0 value between the N -th row and the ( N C 1)-th row] can
be stored instead, which reduces the memory requirements to two bits per sample.
In addition to the described four lines on luma samples, two lines of Cb, two
lines of Cr samples, three lines of two-bit “ sign3 ” values, and some CTU- and
PU-level information need to be stored. The deblocking needs information about
Search WWH ::




Custom Search