SCC of VVC (1): IBC

SCC of VVC (1): IBC

Intra block copy (IBC) is one of the main technologies of Screen Content Coding (SCC). IBC is a block-level coding mode. On the coding side, block matching (BM) technology is used to find the optimal matching block for each CU, and a block vector is calculated. The block vector indicates the positional relationship between the current block and the best matching block.

When the CU is coded in the IBC mode, the block vector of the luminance component is expressed with integer precision, and the block vector of the chrominance component is rounded to the integer precision. When combined with AMVR technology, the block vector can be switched between 1-pixel accuracy and 4-pixel accuracy.

The IBC mode is only used for CUs whose luminance component width and height are both less than or equal to 64.

On the encoding side, hash-based motion estimation technology can be used for IBC mode. The encoder will perform an RD check for blocks whose width or height is not greater than 16. For non-merge mode, first use hash-based search for block vector search, if hash search does not return valid candidates, use local search-based BM.

In the hash-based search, the hash key value matching (32-bit CRC) operation between the current block and the reference block is performed on all blocks of allowed size. The hash key calculations for all positions of the current image are all based on 4x4 sub-blocks. For a larger current block, only when the hash key values ​​of all 4x4 sub-blocks match the hash key values ​​of the corresponding positions of the reference block, it will be regarded as a matching block. If the hash key values ​​of multiple blocks all match the current block, the one with the smallest block vector cost is selected.

In the BM search, the search range includes the previous CTU and the current CTU.

There is an IBC flag on the CU level to indicate IBC AMVP mode or IBC skip/merge mode:

  • IBC skip/merge mode: A merge candidate index is used to indicate which adjacent IBC block's block vector is used as a prediction value. The merge list consists of airspace, HMVP and pairwise candidates.

  • IBC AMVP mode: BVD (block vector difference) and MVD (motion vector difference) coding methods are the same. The block vector has two candidate prediction values ​​from the left and upper IBC blocks. When neither of the two candidates is available, a default block vector is used as the prediction value. A flag bit needs to be transmitted to indicate the index of the block vector prediction value used.

IBC reference area

In order to reduce memory requirements and decoding complexity, VTM5 only allows IBC to be used in the current CTU and part of the reconstruction area of ​​the left CTU. The following figure shows the reference area allowed by IBC mode, and each block is 64x64.

 

According to the current position of the CU in the CTU, it can be divided into the following 4 situations:

  • If the current CU is a 64x64 block in the upper left corner of the CTU, in addition to the reconstructed part of the current CTU, the 64x64 block in the lower right corner of the left CTU, the 64x64 block in the lower left corner, and the 64x64 block in the upper right corner of the CPR mode can also be used as reference.

  • If the current CU is a 64x64 block in the upper right corner of the CTU, except for the reconstructed part of the current CTU, if the position relative to the current CTU (0,64) has not been reconstructed, the current block can also refer to the 64x64 lower right corner of the left CTU in CPR mode The 64x64 block in the lower left corner; otherwise, the current block can also refer to the 64x64 block in the lower right corner of the left CTU.

  • If the current CU is a 64x64 block in the lower left corner of the CTU, except for the reconstructed part of the current CTU, if the (0,64) position relative to the current CTU has not been reconstructed, the current block can also refer to the upper right corner 64x64 of the left CTU in CPR mode The 64x64 block in the lower right corner; otherwise, the current block can also refer to the 64x64 block in the lower right corner of the left CTU in CPR mode.

  • If the current CU is a 64x64 block in the lower right corner of the CTU, it can only refer to the reconstructed part of the current CTU in CPR mode.

If you are interested, please follow the WeChat public account Video Coding

 

Guess you like

Origin blog.csdn.net/Dillon2015/article/details/105319624