1、获取预测数据
该部分主要实现的功能是通过参考数据和帧内预测模式,获取当前子块的预测块。此部分定义在标准文档的8.3.1.2节。该步骤通过当前块的预测模式以及相邻块的参考像素值,输出当前块的一个预测块数据。
对于某一个4×4像素块,其参考像素包括13个像素点。如果(x,y)表示参考像素点相对于像素块左上像素的相对位置,则x和y的取值分别为:x=-1, y=(-1, 3);x=(0, 7), y=-1。以图表示如下所示:(下图表示的一个一个的像素)
根据当前块在图像中的位置(xO,yO)与参考像素的相对位置,可获取参考像素的绝对位置(xN,yN),计算方式为(xN,yN)=(xO+x, yO+y)。并参考上一章的方法可以获取参考像素所属的宏块地址mbAddrN号及宏块内相对位置(xW,yW)。
获取13个参考像素的像素值,首先判断某个像素值是否有效/可以获得。当下列4个条件满足任意一个,那么该像素便被判定为无效/不可获得:
- 宏块mbAddrN不可获得;
- 宏块mbAddrN为帧间预测模式,且标识位constrained_intra_pred_flag为1;
- 宏块mbAddrN为SI类型,,且标识位constrained_intra_pred_flag为1,且当前宏块不是SI类型;
- x大于3,且块索引luma4x4BlkIdx为3或11;(当前块还没有进行编码,右上角的宏块在当前宏块之后)