去方块滤波的详细过程可参看draft 8.7.1 to 8.7.2 。
在compressGOP中可以找到下面一段代码,这里就是调用去方块滤波的地方
//-- Loop filter
Bool bLFCrossTileBoundary = pcSlice->getPPS()->getLoopFilterAcrossTilesEnabledFlag();
m_pcLoopFilter->setCfg(bLFCrossTileBoundary); //!< 设置滤波时是否跨越tiles边界
m_pcLoopFilter->loopFilterPic( pcPic ); //!< 执行去方块滤波
看loopFilterPic的具体实现:
/**
- call deblocking function for every CU
.
\param pcPic picture class (TComPic) pointer
*/
Void TComLoopFilter::loopFilterPic( TComPic* pcPic )
{
// Horizontal filtering
for ( UInt uiCUAddr = 0; uiCUAddr < pcPic->getNumCUsInFrame(); uiCUAddr++ ) //!< 遍历所有CU
{
TComDataC