TEncCu用于编码一个CTU,通过成员TComRdCost* m_pcRdCost进行率失真判决。计算模式划分的率失真代价的函数是TComRdCost::calcRdCost,代码如下:
Double TComRdCost::calcRdCost( UInt uiBits, Distortion uiDistortion, Bool bFlag, DFunc eDFunc )
{
Double dRdCost = 0.0;
Double dLambda = 0.0;
switch ( eDFunc )
{
case DF_SSE:
assert(0);
break;
case DF_SAD:
#if RExt__HIGH_BIT_DEPTH_SUPPORT
dLambda = m_dLambdaMotionSAD[0]; // 0 is valid, because for lossless blocks, the cost equation is modified to compensate.
#else
dLambda = (Double)m_uiLambdaMotionSAD[0]; // 0 is valid, because for lossless blocks, the cost equation is modified to compensate.
#endif
break;
case DF_DEFAULT:
dLambda = m_dLambda;
break;
case DF_SSE_FRAME:
dLambda = m_dFrameLambda;
break;
default:
assert (0);
break;
}
if (bFlag) //NOTE: this "bFlag" is never true