由于最近比较忙,所以博客的进度慢了,这几天争取把帧内系列完结了,而且,会渐渐随着对HM的理解的深入,把一些细节问题逐渐地给解释清楚了,前面有些地方仅仅只是泛泛介绍,还没真正地把所有地方都讲通。好了,废话少说,进入今天的正题,今天主要介绍实现帧内预测的最为重要的函数之一predIntraLumaAng。先贴代码和相关注释:
Void TComPrediction::predIntraLumaAng(TComPattern* pcTComPattern, UInt uiDirMode, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, TComDataCU* pcCU, Bool bAbove, Bool bLeft )
{
Pel *pDst = piPred;
Int *ptrSrc;
assert( g_aucConvertToBit[ iWidth ] >= 0 ); // 4x 4
assert( g_aucConvertToBit[ iWidth ] <= 5 ); // 128x128
assert( iWidth == iHeight );
//! 获取指向用于帧内预测的参考样点的指针,很有可能指向的是经过滤波的参考样点首地址
ptrSrc = pcTComPattern->getPredictorPtr( uiDirMode, g_aucConvertToBit[ iWidth ] + 2, m_piYuvExt );