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

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

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

相关推荐
小虎卫远程打卡app3 天前
光通信与视频编码前沿技术综述:从超大容量传输到实时神经网络编码
运维·网络·信息与通信·视频编解码
该用户可能存在12 天前
HandBrake - 开源免费视频格式转换/压缩转码压制工具
视频编解码·视频·转码·h.264·格式工厂
AF_INET613 天前
RV1126B开发板学习篇(一)MPP的编译和基础使用
经验分享·音视频·嵌入式·视频编解码·rv1126·mpp编解码·rockchipmpp
TSINGSEE1 个月前
画面模糊、花屏、遮挡?EasyGBS视频质量诊断让监控故障主动上报
音视频·视频编解码·画面冻结·花屏检测·画面抖动·蓝屏检测·偏色检测
TSINGSEE1 个月前
融合与重构:从EasyDSS一站式视频云平台看流媒体技术如何重塑企业交互边界
重构·音视频·视频编解码·智能摘要·智能字幕
willhuo1 个月前
纯C#实现了RTSP摄像头拉流并转存MP4文件
开发语言·c#·视频编解码
zymill1 个月前
hysAnalyser和flvAnalyser对比
音视频·实时音视频·视频编解码·h.264·智能电视·视频分析·mpeg-2
憧憬成为原神糕手1 个月前
音视频学习一
学习·音视频·视频编解码
LDORntKQH2 个月前
Matlab仿真下的转速闭环转差频率控制异步电动机矢量控制设计说明(适用于2021b及以上版本)
h.266
q5507071772 个月前
格式转换专家视频格式转换教程
视频编解码·视频处理·格式工厂