出错的宏块(图中灰色表示)根据上、下、左、右四个方向相邻宏块的不同分割情况及预测类型进行插值。将最后的结果中进行比较,选取边界像素差值之和最小者为最优的EC方案。其步骤为:
1、判断相邻宏块左上角8*8块的预测模式是否大于REGMODE_SPLITTED,如果大于,则表示该宏块由4个不同类型的8*8块组成。否则,说明该宏块4个8*8块预测模式相同。
2、如果相邻宏块由4个不同类型的8*8块组成,则首先选取第一个最邻近的8*8块(图中用Split1表示)的预测模式和运动向量作为错误宏块的预测模式和运动向量。以该预测模式和运动向量对错误宏块做EC,并计算边界像素差值之和。然后选取第二个最邻近的8*8块(图中用Split2表示)的预测模式和运动向量作为错误宏块的预测模式和运动向量做同样处理。
3、如果相邻宏块的4个8*8的块预测模式相同,则直接选用左上角8*8块的预测模式和运动向量作为错误宏块的预测模式和运动向量做处理。
4、最后比较所有预测模式和运动向量计算出的边界像素差值之和,最小者即为最佳。
预测模式为REGMODE_INTER_COPY:
既为帧间复制宏块。此时运动向量为0,错误宏块各像素值直接使用参考帧中同样位置的值
预测模式为REGMODE_INTER_PRED:
既为帧间预测宏块。
帧内宏块是利用上下左右宏块的边界像素采用双线性内插