本文介绍关于去方块滤波的最后一个函数(这一系列基本上只讨论了亮度分量的情况,色度分量的情况类似,不单独做出分析)。
Void TComLoopFilter::xEdgeFilterLuma( TComDataCU* pcCU, UInt uiAbsZorderIdx, UInt uiDepth, Int iDir, Int iEdge )
{
TComPicYuv* pcPicYuvRec = pcCU->getPic()->getPicYuvRec(); //!< 重建图像(滤波前)
Pel* piSrc = pcPicYuvRec->getLumaAddr( pcCU->getAddr(), uiAbsZorderIdx ); //!< 指向当前PU对应的重建像素的首地址
Pel* piTmpSrc = piSrc;
Int iStride = pcPicYuvRec->getStride(); //!< 图像的跨度
Int iQP = 0;
Int iQP_P = 0;
Int iQP_Q = 0;
UInt uiNumParts = pcCU->getPic()->getNumPartInWidth()>>uiDepth; //!< 当前PU的以partition为单位的宽度
UInt uiPelsInPart = g_uiMaxCUWidth >> g_uiMaxCUDepth;
UInt uiBsAbsIdx = 0, uiBs = 0;
Int iOffset, iSrcStep;
Bool bPCMFilter = (pcCU->getSlice()->getSPS()->getUsePCM() &am