HEVC代码学习30:fillMvpCand函数

本文深入解析HEVC编码中的AMVP(Adaptive Motion Vector Prediction)技术,重点介绍fillMvpCand函数如何为空域和时域建立候选列表。在空域中,该函数依次检查左侧和上方块的MV,确保至少有两个候选,然后可能进行合并。如果空域候选不足,会引入时域候选。最终,候选列表至少保证有两个MV,否则用(0,0)填充。代码中涉及到的关键操作包括xAddMVPCandUnscaled和xAddMVPCandWithScaling,用于将MV添加到候选列表。" 119727712,10155034,FabFilter Total Bundle 2021: Mac上的专业音频效果器集合,"['音频处理', '音乐软件', 'Mac应用', '音频编辑', '音乐制作工具']
摘要由CSDN通过智能技术生成

fillMvpCand函数的功能就是为AMVP建立候选列表。

AMVP的理论见:
http://blog.csdn.net/lin453701006/article/details/54340405

这里写图片描述

fillMvpCand主要流程如下,主要来看空域候选列表:
一、建立空域候选列表:
1. 按顺序搜索左侧块A0-A1-scaled A0-scaled A1,只要有一个MV存在,写入候选列表,跳出进行下一步。
2. 按顺序搜索上方块B0-B1-B2(-scaled B0-scaled B1-scaled B2),只要有一个MV存在,写入候选列表,跳出进行下一步。而其中scaled B0-scaled B1-scaled B2只有当A0和A1的MV都不存在时,才进行搜索。
3. 空域候选列表长度为2时,即左侧和上方各选出了一个候选,则对两者进行比较,相同时进行合并。
4. 空域候选列表建立完成。
二、当空域候选数量少于2个,且启用时域候选时,建立时域候选列表。
三、如果空域+时域候选个数少于2,则使用(0,0)补足。

代码如下:

/** Constructs a list of candidates for AMVP (See specification, section "Derivation process for motion vector predictor candidates")
 * \param uiPartIdx
 * \param uiPartAddr
 * \param eRefPicList
 * \param iRefIdx
 * \param pInfo
 */
Void TComDataCU::fillMvpCand ( const UInt partIdx, const UInt partAddr, const RefPicList eRefPicList, const Int refIdx, AMVPInfo* pInfo ) const
{
  pInfo->iN = 0;
  if (refIdx < 0)
  {
    return;
  }

  /**********************************************空域候选列表*************************************************/
  //-- Get Spatial MV
  UInt partIdxLT, partIdxRT, partIdxLB;
  deriveLeftRightTopIdx( partIdx, partIdxLT, partIdxRT );       //获取左上角、右上角块地址
  deriveLeftBottomIdx( partIdx, partIdxLB );        //获取左下角块地址

  Bool isScaledFlagLX = false; /// variable name from specification; true when the PUs below left or left are available (availableA0 || availableA1).
  {
    UInt idx;
    const TComDataCU* tmpCU = getPUBelowLeft(idx, partIdxLB);       //左下角块A0所在的CU
    isScaledFlagLX = (tmpCU != NULL) && (tmpCU->isInter(idx));      //A0块MV是否存在
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值