自适应运动矢量残差分辨率 locally adaptive motion vector resolution (LAMVR)
HEVC中,当use_integer_mv_flag = 0时,MVD是以1/4亮度为单位传输的。JEM中,引入locally adaptive motion vector resolution (LAMVR)局部自适应运动矢量分辨率。JEM中的MVD可以以1/4,整数或4倍亮度为单位编码。MVD的分辨率在CU级控制,MVD分辨率的标志位对每个CU来说是依情况传输的,至少有一个非零MVD则传。
对于至少一个非零MVD的CU,第一个标志位用来标识1/4亮度的MV精度是否使用。flag = 1时,则不使用1/4,需要第二个标志位来标识是否使用整数或者四倍亮度的MV精度。当第一个MVD的分辨率的标志位为0或者CU的所有MVD均为0,说明CU使用的是1/4亮度为精度的MV。当CU使用整数亮度或者四倍亮度精度的MV时,AMVP的MVP对应到相应的精度。
在编码端,CU层用的RD check操作用来决定MVD的精度。所以,CU级别的RD check操作需要对不同精度的MVD重复三次。为了加速编码端,采取以下操作:
a、在1/4亮度MVD精度的CU的RD check过程中,当前CU的运动信息(整数亮度精度)被存储。存储的运动信息在舍入后,被用作同一个CU更多小区域MV精化的RD check中,精度为整数和四倍亮度MVD,所以重复的运动估计过程不用重复三次。
b、CU四倍亮度的MVD精度的RD check操作是有条件调用的。对于一个CU而言,当RD cost整数亮度MVD精度比1/4亮度精度的MVD大很多,四倍亮度的MVD精度RD check操作被跳过。