H264 编码标准中MV预测的目的
- 每个分割 MV 的编码需要相当数目的比特,特别是使用小分割尺寸时。为减少传输比特数,可利用邻近分割的 MV 较强的相关性,MV 可由邻近已编码分割的 MV 预测而得。预测矢量 MVp 基于已计算 MV 和 MVD(预测与当前的差异)并被编码和传送。MVp 则取决于运动补偿尺寸和邻近 MV 的有无。
- 如下图,E 为当前宏块或宏块分割子宏块。A、B、C 分别为 E 的左、上、右上方的三个相对应块。如果 E 的左边不止一个分割,取其中最上的一个为 A;上方不止一个分割时,取最左边一个为 B。图 6.25 显示所有分割有相同尺寸时的邻近分割选择。图 6.26 给出了不同尺寸时临近分割的选择。
其中:
- 传输分割不包括 16×8 和 8×16 时,MVp 为 A、B、C 分割 MV 的中值;
- 16×8 分割,上面部分 MVp 由 B 预测,下面部分 MVp 由 A 预测;
- 8×16 分割,左面部分 MVp 由 A 预测,右面部分 MVp 由 C 预测;
- 跳跃宏块(skipped MB),同 1)。
x264中MV预测
- 在模式分析决策过程中,都会进行 MV 预测,得到 MVp;x264 中关于 MV 预测的算法都集中在项目
common/mvpred.c
文件中。x264 中关于 MV 预测的函数调用关系如下图: