AV1中的MV预测
类似于HEVC的AMVP,在AV1中,运动向量也不是直接传输的,而是要经过预测后,把运动向量残差给传过去,而可以给当前块的运动向量做参考的MV都保存在一个叫做RefStackMv的列表中,该列表在代码中的定义为
#define MAX_REF_MV_STACK_SIZE 8
typedef struct candidate_mv {
int_mv this_mv;
int_mv comp_mv;
} CANDIDATE_MV;
CANDIDATE_MV ref_mv_stack[MAX_REF_MV_STACK_SIZE]
ref_mv_stack该栈中最多保存8个运动向量,如上方MAX_REF_MV_STACK_SIZE所定义。
实际上的定义可以看作为
ref_mv_stack[idx][list][comp]
其中 comp是component的缩写,有两个取值(0 for y or 1 for x),list为mv 列表,取值亦为0,1,idx即为stack的序号,取值0-7。