HEVC帧内PU数的来源
在看HEVC帧内预测函数TEncSearch::estIntraPredQT()时,发现有PU分割,为变量:
uiNumPU = pcCU->getNumPartInter();
进入函数getNumPartInter():
switch ( m_pePartSize[0] )
{
case SIZE_2Nx2N: iNumPart = 1;break;
case SIZE_2NxN: iNumPart = 2;break;
case SIZE_Nx2N: iNumPart = 2;break;
case SIZE_NxN: iNumPart = 4;break;
case SIZE_2NxnU: iNumPart = 2;break;
case SIZE_2NxnD: iNumPart = 2;break;
case SIZE_nLx2N: iNumPart = 2;break;
case SIZE_nRx2N: iNumPart = 2;break;
default: assert (0); break;
}
在函数TEncCu::xCheckRDCostIntra()中我们可以看到有一句:
rpcTempCU->setPartSizeSubParts( eSize,0, uiDepth );
Void TComDataCU::setPartSizeSubParts(PartSize eMode, UInt uiAbsPartIdx, UInt uiDepth )
{
assert( sizeof( *m_pePartSize) == 1 );
memset( m_pePartSize + uiAbsPartIdx, eMode, m_pcPic->getNumPartInCU()>> ( 2 * uiDepth ) );
}
在这里对m_pePartSize进行了修改为eMode。eMode为xCompressCU()函数传进的参数SIZE_2Nx2N或SIZE_NxN。
至于为什么这么设置,还没有明白,以后再继续探讨。
Jyno2013/09/06