- 在compressGOP()函数中
compressGOP()
{
...
for (Int iGOPid=0;iGOPid<m_iGopSize;iGOPid++)
{
m_pcSliceEncoder->initEncSlice ( pcPic, iPOCLast, pocCurr, iGOPid, pcSlice, isField );//设置当前Slice的编码参数,如QP,lambda(基于QP)等
if ( m_pcCfg->getUseRateCtrl() ) //若开启码率控制,则会对当前帧进行码率分配,计算RDO的参数lambda和QP
{
if ( ( pcSlice->getPOC() == 0 && m_pcCfg->getInitialQP() > 0 ) || ( frameLevel == 0 && m_pcCfg->getForceIntraQP() ) ) // QP is specified
{
}
else if ( frameLevel == 0 ) // intra case, but use the model
{
m_pcSliceEncoder->calCostSliceI(pcPic);//计算intraCost,也就是与complexity相关的参数
...
m_pcRateCtrl->getRCPic()->getLCUInitTargetBits();//在intra情况下,初始LCU的成员变量m_targetBitsLeft
lambda