本节摘要:本节收拢第4章的两条尾巴。其一,三个解码端细化工具——DMVR、BDOF、PROF——共同的思想是"编码端别传那么细,解码端自己再算一把";其二,组合预测家族——BCW双向加权与CIIP帧间帧内混合——把两种预测的优点按权重调和。读完本节,VVC帧间工具箱全部到齐。
前两节解决了运动模型(4.1)与信令开销(4.2),本节处理剩下的两个问题:预测精度还能不能再涨(不靠加信令),以及多种预测能不能取长补短。
先给三个工具一个统一的画像。它们都遵循同一句话:编码端传的比特一个不多,解码端用已重建的信息再算一步,把预测磨得更准。这符合视频产业的成本结构——一次编码、亿万次解码的码流,解码端多花点算力是划算的;反过来,若在编码端做同样的事,收益要靠更多信令才能兑现,得不偿失。
| 工具 | 作用对象 | 解码端多做的事 | 适用预测类型 |
|---|---|---|---|
| DMVR | 整块MV | 模板匹配微调双向MV | 双向低延迟场景为主 |
| BDOF | 子块像素 | 双向光流加权细化到4×4以下 | 双向预测块 |
| PROF | 仿射子块 | 梯度外推修正仿射预测 | 仿射块(4.1节已述) |
双向预测块的MV是编码端定死的。**DMVR(Decoder-side Motion Vector Refinement)**让解码端再校一次:取当前块周围一圈已重建的"模板",分别在前向、后向参考帧里平移试配,看双向平均后模板失真最小的MV微偏移是多少,把两支MV对称地挪那一点点。
它瞄准的场景非常具体:低延迟双向预测(比如视频会议里,当前帧同时参考最近的过去帧与更早的帧)。这类配置里编码端为省时用了粗略MV,DMVR在解码端把精度补回来。限制也讲清楚:DMVR有启用条件(块尺寸下限、双向同尺寸参考等),且只在解码端生效——编码器做RD决策时必须模拟同样过程,这正是它被戏称"编码端也要陪着算"的代价。
**BDOF(Bi-directional Optical Flow)**处理双向预测的"粒度天花板":双向各搬一次取平均,MV是块级的,块内运动仍连续变化。BDOF从两个方向的预测信号里估计局部光流(利用两者的梯度差),据此对每个4×4小区域做一阶修正——等效于给了块内每个小区域"自己的微MV",而码流里一个比特都没多。

预测器不止一个时,"二选一"未必最优——加权平均常常更好。VVC的两件组合工具:
BCW(双向加权预测,Bi-prediction with Copded Weights):双向预测的前后两支默认等权平均,BCW允许码流里指定一组加权系数(负权到正权的几档),覆盖"前帧更可信"到"后帧更可信"的连续区间。用武之地:物体穿越两参考帧中间位置的瞬间、曝光变化导致前后帧亮度漂移、淡入淡出的转场——等权平均在这些场景会得到两团重影,恰当加权能直接消掉。
CIIP(帧间帧内组合预测,Combined Inter and Intra Prediction):把帧间预测与帧内预测的输出按加权混合。直觉上两者是竞争关系(4.2节的漏斗里二选一),但有些块一半像"搬运来的"(规则运动区域)、一半像"本帧延伸来的"(新出现的边缘),混合预测恰好两头兼顾。CIIP限制了帧内一侧只能用Planar/DC等便宜模式,控制住计算与信令成本。
⚠️ 注意边界:组合预测的收益窗口比想象中窄——大多数块要么运动主导要么空间相关主导,"势均力敌"的块占比有限。编码器若对CIIP/BCW的RD判定阈值设得太松,会为边际收益支付信令开销。调优实战里,这类"看起来很美"的工具常需要关小权重再测(第9.2节的实测复盘会展示这类工具开关实验的做法)。
四节合起来,VVC帧间预测的完整决策图景:
帧间CU进入 → ① 抄:Merge/Skip 候选列表(4.2)→ 命中即收工 ② 修:MMVD 小步精修(4.2) ③ 精写:AMVP + MVD(4.2) ④ 换模型:平移不够 → 仿射 4/6 参数(4.1) ⑤ 解码端再磨:DMVR / BDOF / PROF(4.3,不占信令) ⑥ 调和:BCW 加权 / CIIP 混合(4.3) → 残差交给第5章变换量化
漏斗前两级处理绝大多数块,后四级逐级昂贵。帧间工具箱的效率不来自任何单一武器,而来自这条决策链的过滤精度——这正是VVC相对HEVC帧间增益的完整画像。
三个工具的解码端算力不是均匀的。DMVR的模板匹配要做双向插值加失真比较,但只在满足启用条件的双向块上跑;BDOF是梯度计算加小区域修正,遍及所有双向块;PROF跟在仿射块后面,运动内容多时才显著。对解码器的真实压力排序(典型内容):仿射插值本身大于PROF修正,BDOF居中,DMVR视低延迟块占比浮动——这与9.3节"算力大户"清单一致,硬件实现按此排优先级。
问:这些解码端工具,编码器能选择性启用吗?
信令层面:DMVR等工具有码流开关,编码器按RD决定逐块启停;但"关掉"通常意味着放弃精度换编码速度(编码端不用模拟)。产品层面:低延迟会议档常开DMVR(正是它的主场),点播档按内容试。
问:解码端细化会不会让不同解码器的输出不一致?
不会——标准把细化算法写得完全确定(模板怎么取、梯度怎么算、修正量怎么裁剪),所有合规解码器逐比特复现同一结果。"解码端自主"与"确定性"并存,靠的就是算法级的规定而非结果级的规定。这也是它们能与硬件实现兼容的前提。