VVC中GDR

本文来自ICIP 2021论文《Gradual Decoding Refresh for VVC》

  当编码一段序列时,如果需要随时从中途切入码流,HEVC的做法是插入一个IDR帧,IDR使用帧内编码其后的帧不需要依赖IDR前的帧即可解码。由于IDR使用帧内编码,所以一般IDR帧会比P或B帧大很多,对于低延迟场景传输较大的I帧会引起卡顿。为了解决这个问题,VVC使用GDR来代替插入IDR帧。GDR在H.264和H.265中作为SEI中的可选项,在VVC中正式进入标准。

图1 GDR起始于POC(n),结束于POC(n+N-1)

GDR


  GDR的基本原理是对连续的几帧,每帧都插入一个I slice,几帧过后相当于构建了一个I帧,而每帧的大小又和P或B帧相当,避免了出现超大的I帧对网络造成冲击。

  如图1所示,POC(n)中绿色部分使用帧内编码,在接下来的几帧中每帧都有一个使用帧内编码的部分,直到POC(n+N-1)所有帧内编码部分相当于一整帧。在每个GDR中都包含两个部分:clean area和dirty area。两个区域由virtual boundary分隔。clean area中的CU只能使用帧内预测,且不能使用dirty area中的任何信息,包括重建像素、MV、编码模式、参考列表等。

VVC中的工具


  VVC中的一些编码工具可能会导致clean area中的CU使用dirty area中的信息,需要规避。

环路滤波


  VVC中的环路滤波包括deblocking、SAO和ALF,可能会同时使用virtual boundary两侧的像素,会导致dirty area中的像素污染clean area中的像素,因此在virtual boundary处环路滤波需要关闭。

LMCS


  LMCS是VVC中新增的工具,其中色度缩放因子的计算依赖于相邻亮度重建像素,如果virtual boundary没有和CTU边界对齐可能导致clean area中CU计算色度缩放因子时使用dirty area中的重建像素。如图2所示,红色虚线是virtual boundary,左侧是clean area,右侧是dirty area。对于当前CU(绿色)的色度计算缩放因子时使用的右上角重建亮度像素96...127来自dirty area。

图2 LMCS

  由于VVC中的LMCS不能在CTU级开关,所以如果当前帧的virtual boundary没有和CTU边界对齐则整帧需要关闭LMCS。

帧间预测模式


  帧间预测时,对于clean area中的CU其参考块也必须来自参考帧中的clean area,且必须不在virtual boundary附近,因为运动补偿中的像素插值时可能使用到dirty area中的像素。如图3中参考块离virtual boundary 4个像素的距离。

图3 帧间预测

空域MV

图4 空域MV

如图4所示,merge或AMVP等可能使用空域相邻块的信息,图中右上角相邻块B1在dirty area中,如果作为候选项可能会引起错误。对于其他相邻块,如果它的MV指向的参考块在dirty area中也可能会引起错误。

时域MV

图5 时域MV

图5中时域参考块C0在dirty area中,如果使用它作为候选项则可能会导致错误。

Afine Merge

图6 Affine

如果放射mv或子块mv利用了dirty area的信息则也会导致错误。

GPM

图7 GPM

几何划分将CU分为两个部分,每部分都有自己的MV,两个MV的参考块合成最终的参考块,如果两个参考块使用了dirty area的信息则也会导致错误。

  VVC标准中没有指定使用GDR时如何防止clean area被污染,这需要编码器实现时自己决定

感兴趣的请关注微信公众号Video Coding

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值