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

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

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

相关推荐
ℳ₯㎕ddzོꦿ࿐2 天前
告别延迟:HLS (m3u8) 实时转 FLV 全栈方案实战
视频编解码
霜雪i3 天前
ISP模式
视频编解码·h.266
CheungChunChiu3 天前
视频编解码与 GOP 结构详解
linux·视频编解码
深圳市友昊天创科技有限公司7 天前
友昊天创推出8K ,4K 120Hz 100米延长器方案
音视频·实时音视频·视频编解码
深圳市友昊天创科技有限公司7 天前
ASM4242 雷电扩展坞 CV4242 PCIE扩展坞
音视频·实时音视频·视频编解码
深圳市友昊天创科技有限公司7 天前
友昊天创推出延长器方案GSV5600+HDBase VS010**/VS100**
音视频·实时音视频·视频编解码
TEL1892462247711 天前
IT6227:USB-C(DP Alt 模式)及电源传输控制器 内置 4 通道 DP 1.4 转 HDMI 2.1 转换器
音视频·实时音视频·视频编解码
小咖自动剪辑14 天前
视频去水印与去字幕教程:免费去水印软件与去字幕工具推荐
人工智能·音视频·实时音视频·视频编解码
TEL1892462247715 天前
IT6225B:USB-C(DP Alt 模式)及电源传输控制器 内置双通道 DP 1.4 转 HDMI 2.0 转换器
音视频·实时音视频·视频编解码
小脑斧要动脑16 天前
视频编解码开发工具合集
视频编解码