在某一CU深度上一共有三种模式需要测试
Void TEncCu::xCheckBestMode( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, UInt uiDepth )
{
if( rpcTempCU->getTotalCost() < rpcBestCU->getTotalCost() )
//如果当前CU的总COST小于bestCU的总COST就把当前CU的信息给BESTCU
{
TComYuv* pcYuv;
// Change Information data
TComDataCU* pcCU = rpcBestCU;
rpcBestCU = rpcTempCU;
rpcTempCU = pcCU;
// Change Prediction data
pcYuv = m_ppcPredYuvBest[uiDepth];
m_ppcPredYuvBest[uiDepth] = m_ppcPredYuvTemp[uiDepth];
m_ppcPredYuvTemp[uiDepth] = pcYuv;
// Change Reconstruction data
pcYuv = m_ppcRecoYuvBest[uiDepth];
m_ppcRecoYuvBest[uiDepth] = m_ppcRecoYuvTemp[uiDepth];
m_ppcRecoYuvTemp[uiDepth] = pcYuv;
pcYuv = NULL;
pcCU = NULL;
// store temp best CI for next CU coding
m_pppcRDSbacCoder[uiDepth][CI_TEMP_BEST]->store(m_pppcRDSbacCoder[uiDepth][CI_NEXT_BEST]);
}
}
这里写代码片
-xcheckRDcostInter
-xcheckRDcostIntra
-xcheckPCMIntra(直接复制源像素点)
然后每一个函数返回
xcheckBestMode()