VVC中GDR
Posted Dillon2015
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于VVC中GDR的主要内容,如果未能解决你的问题,请参考以下文章