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. 零填充阶段

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

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

相关推荐
VidDown2 天前
VidDown 工具站:免费、本地优先的开发者工具箱
javascript·编辑器·音视频·视频编解码·视频
u152109648492 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
VidDown2 天前
显卡处理视频技术详解:从硬解码到 NVENC,GPU 如何让视频处理起飞?
javascript·编辑器·音视频·视频编解码·视频
VidDown2 天前
视频帧率技术详解:从 24fps 到 120fps,帧率如何影响你的观看体验?
网络·网络协议·编辑器·音视频·视频编解码·视频
u152109648492 天前
S.S.Audio PRO A202 音频隔离器
音视频·实时音视频·视频编解码·视频·被复线
VidDown3 天前
视频协议传输全解析:从 HTTP/HTTPS 到 HLS/DASH 的完整旅程
javascript·网络·http·https·编辑器·音视频·视频编解码
DogDaoDao4 天前
AV1 解码器核心:decodeframe.c文件深度剖析
音视频·实时音视频·视频编解码·av1·解码器·decode·vp9
VidDown6 天前
VidDown 工具站:视频分辨率技术
javascript·网络·编辑器·音视频·视频编解码·视频
VidDown7 天前
VidDown 工具站:免费视频处理与开发者工具箱
网络协议·编辑器·音视频·视频编解码·视频
VidDown10 天前
热门短视频平台的视频编码技术解(VidDown)
网络协议·编辑器·音视频·视频编解码·视频