由于最近比较忙,所以博客的进度慢了,这几天争取把帧内系列完结了,而且,会渐渐随着对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 );
// get starting pixel in block
Int sw = 2 * iWidth + 1; //!< ptrSrc指向的是当前PU的左上邻点,故加上2*iWidth指向下一行

本文详细解析HEVC标准中的关键函数predIntraLumaAng,该函数涉及帧内预测的Intra_Planar和Intra_Angular模式。通过getPredictorPtr获取参考样本指针,并调用xPredIntraPlanar和xPredIntraAng进行预测。同时,针对Intra_DC模式,使用xDCPredFiltering进行边界滤波处理。博客作者计划在后续文章中继续讲解剩余的预测函数。
最低0.47元/天 解锁文章
1858

被折叠的 条评论
为什么被折叠?



