HEVC代码学习15:AMVP相关函数

在HEVC中,使用了AMVP技术,利用空域和时域上的运动向量的相关性,为当前PU建立候选预测MV(MVP)列表。编码器从中选出最优的预测MV,并对MV进行差分编码;解码端会构造相同的列表,仅需要运动向量残差(MVD)与预测MV在该列表中的序号即可计算当前PU的MV。
简单来说,AMVP的作用就是建立当前PU的候选MVP列表,运动估计ME会从该列表中找到率失真最优的MVP作为起点,进行搜索。

AMVP整体处理在predInterSearch中完成,主要调用的函数有xEstimateMvPredAMVP,xMotionEstimation,xCopyAMVPInfo,xCheckBestMVP。

主要包含4个过程:
1.调用xEstimateMvPredAMVP建立候选列表并选出最优候选MVP。其中候选列表的建立是通过fillMvpCand函数完成,详见:http://blog.csdn.net/lin453701006/article/details/78419479
2.调用xMotionEstimation进行运动估计找到最优MV。
3.调用xCheckBestMVP比较更新最优MVP。
4.更新失真和bit信息。

xMotionEstimation在之前已经进行了学习,xCopyAMVPInfo代码很少,很容易看懂,就是完成了AMVP信息的复制,不再详细学习了。下面来学习一下另外两个函数。

xEstimateMvPredAMVP

xEstimateMvPredAMVP首先调用fillMvpCand构造候选列表,然后计算每一个候选的Cost,最后比较Cost找到最优MV设为最优MVP。

// AMVP
Void TEncSearch::xEstimateMvPredAMVP( TComDataCU* pcCU, TComYuv* pcOrgYuv, UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, TComMv& rcMvPred, Bool bFilled, Distortion* puiDistBiP )
{
  AMVPInfo*  pcAMVPInfo = pcCU->getCUMvField(eR
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值