HM代码阅读2:AMVP预测函数Void TEncSearch::xEstimateMvPredAMVP()

AMVP预测函数:根据AMVP候选准则为该帧建立MVP候选列表,调用pcCU->fillMvpCand( uiPartIdx, uiPartAddr, eRefPicList, iRefIdx, pcAMVPInfo ) 填充候选列表(下一篇介绍该函数)
构建好候选列表后,按以下流程选择最优MVP:

  1. 将最优MVP索引置为0,最优MVP赋给中间变量cBestMv。
  2. 进行RDcost计算得到当前Cost,利用当前Cost与最小Cost相比较,若当前Cost更小,则交换Cost值,同时将最佳MVP类TComMv赋给cBestMv,设置最佳MVP的索引,记录Cost值、
  3. 将当前最佳MVP存入cMvPred[eRefPicList][iRefIdx]中
  4. 设置该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(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值