You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HM编码器中未变换量化残差提取及m_ppcPredYuvBest相关技术问询

HM编码器残差提取与预测帧匹配问题解答

1. 未变换量化的原始预测残差提取位置

直接在变换阶段前的CU编码逻辑中提取。HM编码器的TEncCu::xEncodeCU函数里,完成帧内/帧间预测后、调用xTransform执行变换操作前,会计算原始残差(原始像素块 - 预测像素块)。你可以在这个代码节点直接获取残差数据,此时的残差还未经过变换和量化处理。

2. 残差存储方式选择

优先选择直接用原始图像减去m_ppcPredYuvBest,不推荐使用全局变量:

  • 全局变量会引入线程安全风险(HM支持多线程并行编码),同时增加代码耦合度,不利于后续维护;
  • m_ppcPredYuvBest是当前CU确定的最优预测帧数据,在预测阶段结束后其值固定,直接计算差值能保证残差的准确性,避免全局变量存储时可能出现的覆盖、数据不一致问题;
  • 若需要临时保存残差,可在CU编码的局部作用域内创建临时变量存储,使用后及时释放,更安全高效。

3. 非64x64 CTU边缘预测帧不匹配问题解决

这种情况由边缘CTU的边界处理逻辑导致,可按以下步骤处理:

  • 确认读取m_ppcPredYuvBest的时机:必须在该CTU熵编码完成前读取,熵编码阶段可能会对预测数据做隐含的边界对齐调整,后续读取会导致数据偏差;
  • 匹配像素范围:非64x64 CTU的边缘CU预测可能涉及相邻CTU的参考像素扩展,要确保计算残差时,原始图像块的像素范围与m_ppcPredYuvBest的像素范围完全对应,包括边界扩展的部分;
  • 排除环路滤波影响:m_ppcPredYuvBest应为未经过环路滤波的原始预测数据,若你读取的是环路滤波后的预测帧,必然会出现不匹配。需确认读取的是环路滤波执行前的m_ppcPredYuvBest数据。

内容的提问来源于stack exchange,提问作者John Z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 13:23:20