主要参考作者hevc_cjl的博客: http://blog.csdn.net/hevc_cjl/article/details/8184276?reload ,自己添加了更为细致的注解。
* 注: 带"1晨不变"的,为原作者的注解; 本文作者注解标 "wxl_125"
initAdiPattern 函数中,【Adi = arbitrary direction intra prediction 】这个概念提案中提到的。
贴代码之前先说一下整个帧内预测的框架:
/*
initAdiPattern函数【Adi = arbitrary direction intra prediction 】
(1晨不变)
(1)检测当前PU的相邻样点包括左上、上、右上、左、左下邻域样点值的可用性,或者说检查这些点是否存在;
(2)参考样点的替换过程,主要实现的是JCTVC-J1003即draft 8.4.4.2.2的内容,主要由函数fillReferenceSamples来完成,
这个在之前的文章已经讨论过了;
(3)相邻样点即参考样点的平滑滤波,主要实现draft 8.4.4.2.3的内容。
*/
Void TComPattern::initAdiPattern( TComDataCU* pcCU, UInt uiZorderIdxInPart, UInt uiPartDepth, Int* piAdiBuf, Int iOrgBufStride, Int iOrgBufHeight, Bool& bAbove, Bool& bLeft, Bool bLMmode )
{
Pel* piRoiOrigin;//piRoiOrgin指向重建Yuv图像对应于当前PU所在位置的首地址
Int* piAdiTemp; //
UInt uiCuWidth = pcCU->getWidth(0) >> uiPartDepth; //CU宽
UInt uiCuHeight = pcCU->getHeight(0)>> uiPartD