本文主要是介绍HM代码阅读2:AMVP预测函数Void TEncSearch::xEstimateMvPredAMVP(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
AMVP预测函数:根据AMVP候选准则为该帧建立MVP候选列表,调用pcCU->fillMvpCand( uiPartIdx, uiPartAddr, eRefPicList, iRefIdx, pcAMVPInfo ) 填充候选列表(下一篇介绍该函数)
构建好候选列表后,按以下流程选择最优MVP:
- 将最优MVP索引置为0,最优MVP赋给中间变量cBestMv。
- 进行RDcost计算得到当前Cost,利用当前Cost与最小Cost相比较,若当前Cost更小,则交换Cost值,同时将最佳MVP类TComMv赋给cBestMv,设置最佳MVP的索引,记录Cost值、
- 将当前最佳MVP存入cMvPred[eRefPicList][iRefIdx]中
- 设置该PU所包含的所有4x4的块的 MVP数量,最佳MVP索引。
代码如下:
// AMVP
// 对当前参考帧创建MVP,并选出最佳MVP
// 将最佳MVP存入rcMvPred中,将最佳参考帧索引放入pcCU->setMVPIdxSubParts( iBestIdx, eRefPicList, uiPartAddr, uiPartIdx, pcCU->getDepth(uiPartAddr));
Void TEncSearch::xEstimateMvPredAMVP( TComDataCU* pcCU, TComYuv* pcOrgYuv, UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, TComMv& rcMvPred, Bool bFilled, Distortion* puiDistBiP )
{AMVPInfo* pcAMVPInfo = pcCU->getCUMvField(eRefPicList)->getAMVPInfo(); //MVP的候选数量、MVP候选的具体值TComMv cBestMv;Int iBestIdx = 0;TComMv cZeroMv;TComMv cMvPred;Distortion uiBestCost = std::numeric_limits<Distortion>::max(
这篇关于HM代码阅读2:AMVP预测函数Void TEncSearch::xEstimateMvPredAMVP()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!