PU::getAffineMergeCand

getAffineMergeCand函数中调用的子函数分析

1. 子块级ATMVP相关函数

  • getInterMergeSubPuMvpCand: 获取子块级ATMVP运动向量候选

    • 作用:用于获取子块级别的时空运动向量预测候选
    • 提供的MV候选类型:MRG_TYPE_SUBPU_ATMVP类型的运动向量候选
  • deriveSubTmvpTMMv2Pel: 进行运动向量精细化处理

    • 作用:对子块TMVP进行精细化处理,提高运动向量精度
    • 提供的MV候选类型:MRG_TYPE_SUBPU_ATMVP类型的精细化运动向量候选

2. 仿射运动向量继承相关函数

  • getOneSbSmvpCand: 获取子块SMVP候选

    • 作用:获取子块级的时空运动向量预测候选
    • 提供的MV候选类型:子块SMVP类型的运动向量候选
  • getAvailableAffineNeighboursForLeftPredictor: 获取左侧仿射邻居PU

    • 作用:查找并获取当前PU左侧可用的仿射运动邻居
    • 提供的MV候选类型:继承的仿射运动向量候选
  • getAvailableAffineNeighboursForAbovePredictor: 获取上方仿射邻居PU

    • 作用:查找并获取当前PU上方可用的仿射运动邻居
    • 提供的MV候选类型:继承的仿射运动向量候选
  • xInheritedAffineMv: 从邻居PU继承仿射运动向量

    • 作用:从已识别的仿射邻居中继承运动向量信息
    • 提供的MV候选类型:继承的仿射MV候选

3. 仿射合并候选冗余检查函数

  • checkLastAffineMergeCandRedundancy : 检查仿射合并候选的冗余性
    • 作用:检查新生成的仿射合并候选是否与已有候选重复
    • 提供的MV候选类型:经过冗余检查后的仿射合并类型的MV候选

4. 仿射运动向量候选获取函数

  • getColocatedAffineCMVP : 获取仿射运动向量候选
    • 作用:根据时域信息获取仿射运动向量候选
    • 提供的MV候选类型:
      • L0/L1方向的仿射运动向量候选
      • 区分AFFINEMODEL_4PARAM和AFFINEMODEL_6PARAM两种仿射模型类型

5. HMVP历史运动向量候选相关函数

  • addSpatialAffineMergeHMVPCand: 添加空间仿射HMVP候选

    • 作用:从历史运动向量表中添加空间仿射合并候选
    • 提供的MV候选类型:历史运动向量预测的仿射合并候选
  • addOneInheritedHMVPAffineMergeCand: 添加继承的HMVP仿射合并候选

    • 作用:添加从历史运动向量表继承的仿射合并候选
    • 提供的MV候选类型:继承的历史运动向量仿射合并候选
  • addOneAffineMergeHMVPCand: 添加单个仿射HMVP合并候选

    • 作用:添加单个来自历史运动向量表的仿射合并候选
    • 提供的MV候选类型:历史运动向量仿射合并候选

6. 控制点候选生成函数

  • getAffineControlPointCand : 获取仿射控制点候选
    • 作用:基于空间邻居的运动信息构造仿射控制点候选
    • 提供的MV候选类型:构造的仿射合并候选(基于LT、RT、LB、RB控制点的不同组合)

7. 非相邻候选相关函数

  • getNonAdjCstMergeCand : 获取非相邻约束合并候选
    • 作用:获取非相邻位置的约束仿射合并候选
    • 提供的MV候选类型:非相邻仿射合并候选

8. 链式候选相关函数

  • getChainedCstMergeCand : 获取链式约束合并候选
    • 作用:获取通过链式方式构造的约束仿射合并候选
    • 提供的MV候选类型:链式仿射合并候选

9. 相似性检查函数

  • xCPMVSimCheck : 检查CPMV相似性
    • 作用:检查控制点运动向量的相似性,避免重复候选
    • 提供的MV候选类型:经过相似性检查的仿射合并候选

10. 运动向量处理辅助函数

  • roundAffineMv : 四舍五入仿射运动向量
    • 作用:对仿射运动向量进行四舍五入处理
    • 提供的MV候选类型:处理后的仿射运动向量候选

这些子函数协同工作,共同完成仿射合并候选的生成过程,包括:

  1. 从时空邻居获取初始候选
  2. 继承历史运动信息
  3. 构造新的仿射候选
  4. 去除冗余和重复候选
  5. 填充候选列表至最大数量要求

调用位置

EncCu::xCheckRDCostMerge2Nx2N

子函数及其对应的宏条件

1. 函数入口和初始化阶段

  • 初始化逻辑 : 包括maxNumAffineMergeCand计算和affMrgCtx上下文初始化
    • 涉及宏: JVET_AA0107_RMVF_AFFINE_MERGE_DERIVATION, JVET_W0090_ARMC_TM, ADDITIONAL_AFFINE_CAND_NUM

2. 空间运动向量获取阶段

  • getPURestricted(): 获取相邻PU
  • getMotionInfo(): 提取运动信息
  • 涉及宏: JVET_Y0065_GPM_INTRA (用于isDiffMER检查)

3. 基于历史的仿射合并候选生成阶段

  • xInheritedAffineMv() : 仿射运动向量继承
    • 条件宏: JVET_AG0164_AFFINE_GPM
  • xCPMVSimCheck() : 运动相似性检查
    • 条件宏: JVET_AC0185_ENHANCED_TEMPORAL_MOTION_DERIVATION

4. 时间运动向量预测(TMVP)阶段

  • getColocatedAffineCMVP() : 获取共置仿射运动向量
    • 条件宏: JVET_AK0095_ENHANCED_AFFINE_CANDIDATE, JVET_AC0185_ENHANCED_TEMPORAL_MOTION_DERIVATION
  • refineTmvpCoverGetColocatedMVP()getColocatedMVP() : 获取共置运动向量
    • 条件宏: JVET_AL0214_MV_REFINEMENT_FOR_TMVP, JVET_Y0134_TMVP_NAMVP_CAND_REORDERING

5. 冗余检查和候选验证阶段

  • checkLastAffineMergeCandRedundancy() : 冗余检查
    • 条件宏: JVET_Z0139_HIST_AFF
  • xCheckSimilarMotion(): 相似运动检查

6. 非相邻仿射合并候选生成阶段

  • getNonAdjAvailableAffineNeighboursByDistance(): 获取非相邻仿射邻居
  • collectNeiMotionInfo(): 收集邻居运动信息
  • getRMVFAffineGuideCand() : 获取RMVF指导的仿射候选
    • 条件宏: JVET_AH0314_LIC_INHERITANCE_FOR_MRG, JVET_AG0164_AFFINE_GPM

7. 候选调整阶段

  • adjustAffineMergeCandidatesOneGroup() : 调整仿射合并候选
    • 条件宏: JVET_W0090_ARMC_TM, JVET_AE0174_NONINTER_TM_TOOLS_CONTROL

8. 零填充阶段

  • 最后的零填充逻辑,确保候选数量达到最大值

这些子函数按照上述顺序依次执行,每个阶段都可能根据不同的宏定义条件进行编译时的条件编译,从而影响最终的功能实现。

相关推荐
Tech-Net2 天前
YT视频怎么下载?2026最新4K/8K超清YT视频下载与批量解析教程
经验分享·音视频·视频编解码·视频下载·视频下载工具·视频解析·视频下载器
FlightYe3 天前
HDR详解
linux·音视频·显示器·视频编解码·hdr
hz567894 天前
2026应急指挥场景视频会议系统架构设计与私有化部署实践
系统架构·音视频·实时音视频·信息与通信·视频编解码
DogDaoDao4 天前
H.266/VVC 视频编解码标准最新优化研究综述
论文·音视频·实时音视频·视频编解码·vvc·vtm·h.266
_Emma_4 天前
【QCOM】CAMSS架构中CSi与CSIPHY驱动结构
linux·图像处理·视频编解码
Tech-Net4 天前
TikTok视频怎么下载?2026最新TikTok无水印下载与批量解析教程
经验分享·音视频·视频编解码·视频处理·视频下载·tiktok视频下载·tiktok视频解析
风落无尘6 天前
《智能重生:从垃圾堆到AI工程师》——第十章 多模态与具身
人工智能·transformer·视频编解码
DogDaoDao8 天前
Android 硬件编码器参数完全指南:MediaCodec 深度解析
android·音视频·视频编解码·h264·硬编码·视频直播·mediacodec
REDcker9 天前
RGB与YUV像素格式详解
音视频·实时音视频·视频编解码·yuv·rgb
Tech-Net10 天前
如何无损下载网页上的视频并保持4K/8K超清画质
经验分享·音视频·教程·视频编解码·视频下载·视频下载工具·网页视频下载