The Symmetric MVD mode is a new bidirectional prediction mode for MVD syntactic unit transmission in VVC. When using symmetric MVD mode, the index of the reference image in list0 and List1 and THE MVD of List1 need not be passed when transmitting the bidirectional predicted motion information. This information can be generated at the decoding side.

The decoding process of symmetric MVD mode is as follows:

1. In slice, the variables BiDirPredFlag, RefIdxSymL0, and RefIdxSymL1 are generated as follows:

  • Mvd_l1_zero_flag = 1, then the BiDirPredFlag = 0
  • Otherwise, BiDirPredFlag=1 if the reference image nearest to the current image in list0 and the reference image nearest to the current image in List1 are forward reference image and backward reference image respectively or backward reference image and forward reference image respectively. RefIdxSymL0 and RefIdxSymL1 are set to the index of the reference image in list0 and List1 respectively.

2. At the CTU layer, if CU is bidirectional prediction and BiDirPredFlag=1, a symmetric mode identifier needs to be displayed in the code stream to indicate whether to use the symmetric mode.

When the symmetric mode identifier is true, only mVP_L0_flag, mVP_L1_flag, and MVD0 need to be passed in the code stream. The reference image index of list0 and List1 is equal to RefIdxSymL0 and RefIdxSymL1, respectively. MVD1 = (- MVD0)

At the decoding end, MVD1 is generated by the negative of MVD0, as shown below.

 

The final motion vector can be generated by the following formula:

 

An initial MV is needed for motion estimation of symmetric MVD mode at encoding end. This initial MV is obtained from unidirectional motion search MV, bidirectional motion search MV, and the MV with the lowest selection rate distortion cost in the AMVP list.

reference

JVET-L0370

JVET-M0444

JVET-N1002

If you are interested, please pay attention to wechat public account Video Coding