具体实施方式
现在将详细参考示例性实施例,其示例在附图中示出。以下描述参照附图,除非另有说明,其中不同附图中的相同数字表示相同或相似的元件。在示例性实施例的以下描述中阐述的实施方式并不代表与本公开一致的所有实施方式。相反,它们仅是与如所附权利要求中所述的与本公开相关的方面一致的装置和方法的示例。下面更详细地描述本公开的特定方面。如果与通过引用并入的术语和/或定义相冲突的话,以本文提供的术语和定义为准。
ITU-T视频编码专家组(ITU-T VCEG)和ISO/IEC运动图像专家组(ISO/IEC MPEG)的联合视频专家小组(JVET)目前正在开发通用视频编码(VVC/H.266)标准。VVC标准旨在将其前身高效视频编码(HEVC/H.265)标准的压缩效率提高一倍。换句话说,VVC的目标是使用一半的带宽实现与HEVC/H.265相同的主观质量。
为了使用一半的带宽实现与HEVC/H.265相同的主观质量,JVET一直在使用联合探索模型(JEM)参考软件开发HEVC以外的技术。随着编码技术被纳入JEM,JEM实现了比HEVC更高的编码性能。
VVC标准是最近开发的,并且继续包括提供更好压缩性能的更多编码技术。VVC基于与HEVC、H.264/AVC、MPEG2、H.263等现代视频压缩标准中一直使用的混合视频编码系统。
视频是按时间顺序排列以存储视觉信息的一组静态图像(或“帧”)。可以使用视频采集设备(例如,相机)以时间顺序采集和存储这些图像,并且可以使用视频回放设备(例如,电视、计算机、智能手机、平板计算机、视频播放器、或任何具有显示功能的最终用户终端)显示时间序列中的此类图像。此外,在一些应用中,视频采集设备可以实时地将采集的视频发送到视频回放设备(例如,具有监视器的计算机),例如用于监视、会议或现场广播。
为了减少此类应用所需的存储空间和传输带宽,可以在存储和传输之前对视频进行压缩,并在显示之前进行解压缩。可以通过由处理器(例如,通用计算机的处理器)或专用硬件执行的软件来实现压缩和解压缩。用于压缩的模块通常被称为“编码器”,并且用于解压缩的模块通常被称为“解码器”。编码器和解码器可以统称为“编解码器”。编码器和解码器可以被实现为各种合适的硬件、软件、或其组合中的任何一种。例如,编码器和解码器的硬件实现可以包括电路,诸如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑或其任何组合。编码器和解码器的软件实现可以包括固定在计算机可读介质中的程序代码、计算机可执行指令、固件或任何合适的计算机实现的算法或过程。视频压缩和解压缩可以通过各种算法或标准来实现,例如MPEG-1、MPEG-2、MPEG-4、H.26x系列等。在一些应用中,编解码器可以从第一编码标准解压缩视频,并且使用第二编码标准重新压缩解压缩的视频,在这种情况下,编解码器可以被称为“转码器”。
视频编码过程可以识别并保留可用于重建图像的有用信息,并忽略不重要的重建信息。如果忽略不重要的信息不能被完全重建,则这样的编码过程可以被称为“有损”。否则,它可以被称为“无损”。大多数编码过程都是有损的,这是为了减少所需的存储空间和传输带宽的权衡。
被编码的图像(称为“当前图像”)的有用信息包括相对于参考图像(例如,先前编码和重建的图像)的变化。这样的变化可以包括像素的位置变化、亮度变化或颜色变化,其中位置变化是最受关注的。代表对象的一组像素的位置变化可以反映对象在参考图像和当前图像之间的运动。
不参考另一图像而编码的图像(即,它是自己的参考图像)被称为“I-图像”。使用先前图像作为参考图像编码的图像被称为“P-图像”,使用先前图像和将来图像作为参考图像编码的图像称为被称为“B图像”(参考是“双向”的)。
本公开涉及用于处理与上述视频编码标准一致的视频内容的方法和装置。
图1示出了根据本公开的一些实施例的示例视频序列100的结构。视频序列100可以是实况视频或已被采集和存档的视频。视频100可以是现实生活中的视频、电脑生成的视频(例如,计算机游戏视频)或二者组合(例如,具有增强现实效果的真实视频)。视频序列100可以从视频采集设备(例如,相机)、包含先前采集的视频档案(例如,存储在存储设备中的视频文件)或从视频内容提供商接收视频的视频馈送接口(例如,视频广播收发器)输入。
如图1所示,视频序列100可以包括沿时间线在时间上布置的一系列图像,包括图像102、104、106和108。图像102-106是连续的,在图像106和108之间有更多的图像。在图1中,图像102是I-图像,其参考图像是图像102本身。图像104是P-图像,其参考图像是图像102,如箭头所示。图像106是B图像,其参考图像是图像104和108,如箭头所示。在一些实施例中,图像的参考图像(例如,图像104)可以不紧接在图像之前或之后。例如,图像104的参考图像可以是图像102之前的图像。需要说明的是,图像102-106的参考图像仅仅是示例,本公开并不限定如图1所示的参考图像的实施例。
通常,由于编解码任务的计算复杂性,视频编解码器不会一次对整个图像进行编码或解码。相反,他们可以将图像分割成基本段,并逐段对图像段进行编码或解码。在本公开中,这样的基本段被称为基本处理单元(“BPU”)。例如,图1中的结构110示出了视频序列100的图像(例如,图像102-108中的任何图像)的示例结构。在结构110中,图像被划分为4×4基本处理单元,其边界被示出为虚线。在一些实施例中,基本处理单元可以在一些视频编码标准(例如,MPEG族、H.261、H.263或H.264/AVC)中被称为“宏块”,或者在一些其它视频编码标准(例如,H.265/HEVC或H.266/VVC)中被称为“编码树单元”(“CTU”)。基本处理单元可以在图像中具有可变的大小,例如128×128、64×64、32×32、16×16、4×8、16×32或任意形状和大小的像素。可以基于编码效率和要保持在基本处理单元中的细节水平的平衡来为图像选择基本处理单元的大小和形状。CTU是最大的块单元,并且可以包括多达128×128亮度样本(加上取决于色度格式的相应色度样本)。可以使用四叉树、二叉树、三元树或其组合将CTU进一步划分为编码单元(CU)。
基本处理单元可以是逻辑单元,其可以包括存储在计算机存储器中(例如,在视频帧缓冲区中)的一组不同类型的视频数据。例如,彩色图像的基本处理单元可以包括表示消色差亮度信息的亮度分量(Y)、表示颜色信息的一个或多个色度分量(例如,Cb和Cr)以及相关联的语法元素,其中亮度和色度分量可以具有与基本处理单元的相同大小。在一些视频编码标准(例如,H.265/HEVC或H.266/VVC)中,亮度和色度分量可以被称为“编码树块”(“CTB”)。对基本处理单元执行的任何操作都可以对其亮度和色度分量中的每一个重复执行。
视频编码具有多个操作阶段,其示例如图2A-2B和图3A-3B所示。对于每个阶段,基本处理单元的大小对于处理仍然可能太大,因此可以进一步分为在本公开中称为“基本处理子单元”的段。在一些实施例中,基本处理子单元可以在一些视频编码标准(例如,MPEG族、H.261、H.263或H.264/AVC)中被称为“块”,或者作为一些其他视频编码标准(例如,H.265/HEVC或H.266/VVC)中的“编码单元”(“CU”)。基本处理子单元可以具有与基本处理单元相同的大小或具有比基本处理单元更小的大小。与基本处理单元类似,基本处理子单元也是逻辑单元,其可以包括存储在计算机存储器(例如,在视频帧缓冲区中)中的一组不同类型的视频数据(例如,Y、Cb、Cr和相关联的语法元素)。对基本处理子单元执行的任何操作都可以对其亮度和色度分量中的每一个重复执行。应该注意的是,可以根据处理需要将这种划分执行到进一步的级别。还应注意,不同阶段可以使用不同的方案来划分基本处理单元。
例如,在模式决策阶段(其示例在图2B中示出,编码器可以决定对基本处理单元使用什么预测模式(例如,帧内预测或帧间预测),该基本处理单元可能太大而无法做出这样的决定。编码器可以将基本处理单元划分成多个基本处理子单元(例如,如H.265/HEVC或H.266/VVC中的CU),并且决定每个单独的基本处理子单元的预测类型。
对于另一个示例,在预测阶段(其示例在图2A-2B中示出),编码器可以在基本处理子单元(例如,CU)的级别上执行预测操作。但是,在某些情况下,基本处理子单元仍然可能太大而无法处理。编码器可以进一步将基本处理子单元划分成更小的段(例如,在H.265/HEVC或H.266/VVC中称为“预测块”或“PB”),在该级别上可以执行预测操作。
对于另一个示例,在变换阶段(其示例在图2A-2B中示出),编码器可以对残差基本处理子单元(例如,CU)执行变换操作。但是,在某些情况下,基本处理子单元仍然可能太大而无法处理。编码器可以进一步将基本处理子单元分成更小的段(例如,在H.265/HEVC或H.266/VVC中称为“变换块”或“TB”),在该级别上可以执行变换操作。需要注意的是,同一基本处理子单元的划分方案在预测阶段和变换阶段可以不同。例如,在H.265/HEVC或H.266/VVC中,相同CU的预测块和变换块可以具有不同的大小和数量。
在图1的结构110中,将基本处理单元112进一步分为3×3个基本处理子单元,其边界以虚线示出。同一图像的不同基本处理单元可以在不同的方案中划分为基本处理子单元。
在一些实施方式中,为了提供并行处理的能力以及对视频编码和解码的容错能力,可以将图像划分成用于处理的区域,使得对于图像的区域,编码或解码过程可以不依赖性于来自图像的任何其他区域的信息。换句话说,图像的每个区域都可以单独处理。通过这样做,编解码器可以并行处理图像的不同区域,从而提高了编码效率。此外,当一区域的数据在处理中被损坏或在网络传输中丢失时,编解码器可以正确地编码或解码同一图像的其他区域而不依赖性于被损坏或丢失的数据,从而提供容错能力。在某些视频编码标准中,可以将图像划分为不同类型的区域。例如,H.265/HEVC和H.266/VVC提供两种类型的区域:“条带(slice)”和“块片(tile)”。还应注意的是,视频序列100的不同图像可以具有用于将图像划分为区域的不同划分方案。
例如,在图1中,结构110被划分成三个区域114、116和118,其边界被示为结构110内部的实线。区域114包括四个基本处理单元。区域116和118均包括六个基本处理单元。需要说明的是,图1中110的基本处理单元、基本处理子单元和结构区域仅是示例,本公开不限制其实施例。
图2A示出了根据本公开的实施例的示例性编码过程200A的示意图。例如,编码过程200A可以由编码器执行。如图2A所示,编码器可以根据过程200A将视频序列202编码为视频位流228。类似于图1中的视频序列100,视频序列202可以包括按时间顺序排列的图像集(称为“原始图像”)。类似于图1中的结构110,视频序列202的每个原始图像可以由编码器划分为基本处理单元、基本处理子单元或区域进行处理。在一些实施例中,编码器可以针对视频序列202的每个原始图像在基本处理单元的级别上执行过程200A。例如,编码器可以以迭代方式执行过程200A,其中编码器可以在过程200A的一次迭代中对基本处理单元进行编码。在一些实施例中,编码器可以针对视频序列202的每个原始图像的区域(例如,区域114-118)并行地执行过程200A。
参考图2A,编码器可以将视频序列202的原始图像的基本处理单元(称为“原始BPU”)馈送到预测阶段204,以生成预测数据206和预测BPU 208。编码器可以从原始BPU减去预测的BPU 208以生成残差BPU 210。编码器可以将残差BPU 210馈送到变换阶段212和量化阶段214以216生成量化变换系数216。编码器可以将预测数据206和量化变换系数216馈送到二进制编码阶段226以生成视频位流228。组件202、204、206、208、210、212、214、216、226和228可以被称为“前向路径”。在过程200A期间,在量化阶段214之后,编码器可以将量化变换系数216馈送到逆量化阶段218和逆变换阶段220以生成重建的残差BPU 222。编码器可以将重建的残差BPU 222添加到预测的BPU 208以生成预测参考224,其用于过程200A的下一次迭代的预测阶段204中。过程200A的组件218、220、222和224可以被称为“重建路径”。重建路径可以用于确保编码器和解码器都使用相同的参考数据进行预测。
编码器可以迭代地执行过程200A以对编码原始图像的每个原始BPU(在前向路径中)进行编码,并生成用于编码原始图像的下一个原始BPU(在重建路径中)的预测参考224。在对原始图像的所有原始BPU进行编码之后,编码器可以继续对视频序列202中的下一个图像进行编码。
参考过程200A,编码器可以接收由视频采集设备(例如,相机)生成的视频序列202。本文使用的术语“接收”可以指以任何方式接收、输入、获取、检索、获取、读取、访问或用于输入数据的任何动作。
在预测阶段204,在当前迭代时,编码器可以接收原始BPU和预测参考224,并执行预测操作以生成预测数据206和预测BPU 208。预测参考224可以从过程200A的先前迭代的重建路径生成。预测阶段204的目的是通过从预测数据206和预测参考224中提取可用于将原始BPU重建为预测BPU 208的预测数据206来减少信息冗余。
理想地,预测的BPU 208可以与原始BPU相同。然而,由于非理想的预测和重建操作,预测的BPU 208通常与原始BPU略有不同。为了记录这些差异,在生成预测BPU 208,编码器可以将其从原始BPU中减去以生成残差BPU 210。例如,编码器可以从原始BPU的像素的值减去预测BPU208的对应像素的值(例如,灰度值或RGB值)。残差BPU 210的每个像素可以具有残差值作为原始BPU和预测BPU208的相应像素之间的这种相减的结果,与原始BPU相比,预测数据206和残差BPU 210可以具有更少的比特数,但是它们可以用于重建原始BPU,而不会出现明显的质量下降。因此,原始BPU被压缩。
为了进一步压缩残差BPU 210,在变换阶段212,编码器可以通过将残差BPU 210分解为一组二维“基本图案(base pattern)”来减少其空间冗余。每个基本图案与“变换系数”相关联。基本图案可以具有相同的大小(例如,残差BPU 210的大小),每个基本图案可以表示残差BPU 210的变化频率(例如,亮度变化的频率)分量。基本图案中的任何一个都不能从任何其他基本图案的任何组合(例如,线性组合)中再现。换句话说,分解可以将残差BPU210的变化分解到频域中。这种分解类似于函数的离散傅立叶变换,其中,基本图像类似于离散傅立叶变换的基本函数(例如,三角函数),并且变换系数类似于与基本函数相关联的系数。
不同的变换算法可以使用不同的基本图案。在变换阶段212可以使用各种变换算法,例如,离散余弦变换、离散正弦变换等。变换阶段212处的变换是可逆的。也就是说,编码器可以通过变换的逆运算(称为“逆变换”)来恢复残差BPU 210。例如,为了恢复残差BPU210的像素,逆变换可以是将基本图案的对应像素的值乘以相应的相关联系数并将乘积相加以产生加权和。对于视频编码标准,编码器和解码器都可以使用相同的变换算法(因此具有相同的基本图案)。因此,编码器可以仅记录变换系数,解码器可以从中重建残差BPU210,而无需从编码器接收基本图案。与残差BPU 210相比,变换系数可以具有更少的比特,但是它们可以用于重建残差BPU 210而没有显著的质量劣化。因此,残差BPU 210被进一步压缩。
编码器可以进一步在量化阶段214压缩变换系数。在变换过程中,不同的基本图案可以表示不同的变化频率(例如,亮度变化频率)。因为人眼通常更擅长识别低频变化,所以编码器可以忽略高频变化的信息,而不会在解码中引起明显的质量劣化。例如,在量化阶段214,编码器可以通过将每个变换系数除以整数值(称为“量化参数”)并将商四舍五入到其最接近的整数来生成量化的变换系数216。在这样的操作之后,可以将高频基本图案的一些变换系数转换为零,并且可以将低频基本图案的变换系数转换为较小的整数。编码器可以忽略零值的量化变换系数216,由此变换系数被进一步压缩。该量化处理也是可逆的,其中量化变换系数216可以在量化的逆操作(称为“逆量化”)中被重建为变换系数。
因为编码器在舍入操作中忽略了该除法的余数,所以量化阶段214可能是有损的。通常,量化阶段214可以在过程200A中贡献最多的信息损失。信息损失越大,量化变换系数216所需的比特数就越少。为了获得不同级别的信息损失,编码器可以使用不同的量化参数值或量化过程的任何其他参数。
在二进制编码阶段226,编码器可以使用二进制编码技术对预测数据206和量化变换系数216进行编码,二进制编码例如为熵编码、可变长度编码、算术编码、霍夫曼编码、上下文自适应二进制算术编码,或任何其他无损或有损压缩算法。在一些实施例中,除了预测数据206和量化变换系数216之外,编码器可以在二进制编码阶段226编码其他信息,例如,在预测阶段204使用的预测模式、预测操作的参数、在变换阶段212处的变换类型。量化过程的参数(例如,量化参数)、编码器控制参数(例如,比特率控制参数)等。编码器可以使用二进制编码阶段226的输出数据来生成视频位流228。在一些实施例中,视频位流228可以被进一步打包以用于网络传输。
参照过程200A的重建路径,在逆量化阶段218,编码器可以对量化变换系数216执行逆量化,以生成重建的变换系数。在逆变换阶段220,编码器可以基于重建的变换系数生成重建残差BPU 222。编码器可以将重建残差BPU 222添加到预测BPU 208以生成将在过程200A的下一次迭代中使用的预测参考224。
应当注意的是,过程200A的其他变体可用于对视频序列202进行编码。在一些实施例中,过程200A的阶段可以由编码器以不同的顺序执行。在一些实施例中,过程200A的一个或多个阶段可以组合成单个阶段。在一些实施例中,过程200A的单个阶段可以分为多个阶段。例如,变换阶段212和量化阶段214可以组合成单个阶段。在一些实施例中,过程200A可以包括附加的阶段。在一些实施例中,过程200A可以省略图2A中的一个或多个阶段。
图2B示出了根据本公开的实施例的另一示例编码过程200B的示意图。过程200B可以修改自过程200A。例如,过程200B可以由符合混合视频编码标准(例如,H.26x系列)的编码器使用。与过程200A相比,过程200B的前向路径还包括模式决策阶段230,并将预测阶段204分为空间预测阶段2042和时间预测阶段2044,过程200B的重建路径还另外包括环路滤波阶段232和缓冲区234。
通常,预测技术可以分为两种类型:空间预测和时间预测。空间预测(例如,帧内图像预测或“帧内预测”)可以使用来自同一图像中的一个或多个已经编码的相邻BPU的像素来预测当前BPU。也就是说,空间预测中的预测参考224可以包括相邻的BPU。空间预测可以减少图像固有的空间冗余。时间预测(例如,图像间预测或“帧间预测”)可以使用来自一个或多个已经编码的图像的区域来预测当前BPU。也就是说,时间预测中的预测参考224可以包括编码图像。时间预测可以减少图像固有的时间冗余。
参考过程200B,在前向路径中,编码器在空间预测阶段2042和时间预测阶段2044执行预测操作。例如,在空间预测阶段2042,编码器可以执行帧内预测。对于被编码的图像的原始BPU,预测参考224可以包括在同一图像中已经被编码(在前向路径中)和重建(在重建路径中)的一个或多个相邻BPU。编码器可以通过插值相邻的BPU来生成预测的BPU 208。插值技术可以包括例如线性插值或内插、多项式插值或内插等。在一些实施例中,编码器可以在像素级执行插值,例如通过插值预测BPU 208的每个像素的对应像素的值。用于插值的相邻BPU可以位于相对于原始BPU的各个方向,例如在垂直方向(例如,在原始BPU的顶部),水平方向(例如,在原始BPU的左侧),对角线方向(例如,在原始BPU的左下、右下、左上或右上),或在所使用的视频编码标准中定义的任何方向。对于帧内预测,预测数据206可以包括,例如,所使用的相邻BPU的位置(例如,坐标)、所使用的相邻BPU的大小、插值的参数、所使用的相邻BPU相对于原始BPU的方向等。
对于另一个示例,在时间预测阶段2044,编码器可以执行帧间预测。对于当前图像的原始BPU,预测参考224可以包括已经被编码(在前向路径中)和重建(在重建路径中)的一个或多个图像(被称为“参考图像”)。在一些实施例中,可以通过逐个BPU对参考图像进行编码和重建。例如,编码器可以将重建的残差BPU 222添加到预测BPU 208以生成重建BPU。当同一张图像的所有重建的BPU都被生成时,编码器可以生成一重建图像作为参考图像。编码器可以执行“运动估计”的操作以搜索参考图像的范围(称为“搜索窗口”)中的匹配区域。可以基于原始BPU在当前图像中的位置来确定搜索窗口在参考图像中的位置。例如,搜索窗口可以在参考图像中与当前图像中的原始BPU具有相同坐标的位置处为中心,并且可以向外延伸预定距离。当编码器在搜索窗口中识别(例如,通过使用pel递归算法、块匹配算法等)类似于原始BPU的区域时,编码器可以确定这样的区域作为匹配区域。匹配区域可以具有与原始BPU不同的大小(例如,小于、等于、大于或具有不同的形状)。因为参考图像和当前图像在时间线上在时间上分开(例如,如图1所示),所以可以认为匹配区域随着时间的推移“移动”到原始BPU的位置。编码器可以将这种运动的方向和距离记录为“运动矢量”。当使用多个参考图像时(例如,如图1中的图像106),编码器可以搜索匹配区域并为每个参考图像确定其相关联的运动矢量。在一些实施例中,编码器可以将权重分配给各个匹配参考图像的匹配区域的像素值。
运动估计可用于识别各种类型的运动,例如平移、旋转、缩放等。对于帧间预测,预测数据206可以包括例如匹配区域的位置(例如,坐标)、与匹配区域相关联的运动矢量、参考图像的数量、与参考图像相关联的权重等。
为了生成预测的BPU 208,编码器可以执行“运动补偿”的操作。运动补偿可以用于基于预测数据206(例如,运动向量)和预测参考224来重建预测的BPU 208。例如,编码器可以根据运动矢量移动参考图像的匹配区域,其中编码器可以预测当前图像的原始BPU。当使用多个参考图像时(例如,如图1中的图像106),编码器可以根据匹配区域的各个运动矢量和平均像素值来移动参考图像的匹配区域。在一些实施例中,如果编码器已经将权重分配给各个匹配参考图像的匹配区域的像素值,则编码器可以将移动的匹配区域的像素值的加权和相加。
在一些实施例中,帧间预测可以是单向的或双向的。单向帧间预测可以使用相对于当前图像在相同时间方向上的一个或多个参考图像。例如,图1中的图像104是单向帧间预测图像,其中参考图像(即,图像102)在图像04之前。双向帧间预测可以在相对于当前图像的两个时间方向上使用一个或多个参考图像。例如,图1中的图像106是双向帧间预测图像,其中参考图像(即,图像104和08)相对于图像104在两个时间方向上。
仍然参考过程200B的前向路径,在空间预测2042和时间预测阶段2044之后,在模式决策阶段230,编码器可以为过程200B的当前迭代选择预测模式(例如,帧内预测或帧间预测之一)。例如,编码器可以执行速率失真优化技术,其中编码器可以根据候选预测模式的比特率和候选预测模式下的重建参考图像的失真来选择预测模式以最小化成本函数的值。根据所选择的预测模式,编码器可以生成相应的预测BPU 208和预测数据206。
在过程200B的重建路径中,如果在前向路径中已经选择了帧内预测模式,则在生成预测参考224(例如,在当前图像中已经编码和重建的当前BPU)之后,编码器可以将预测参考224直接馈送到空间预测阶段2042以用于以后的使用(例如,用于插值当前图像的下一BPU)。如果在前向路径中已经选择了帧间预测模式,则在生成预测参考224(例如,其中所有BPU都已被编码和重建的当前图像)之后,编码器可以将预测参考224馈送到环路滤波器阶段232。在该阶段,编码器可以将环路滤波器应用于预测参考224,以减少或消除由帧间预测引入的失真(例如,块状伪影)。编码器可以在环路滤波器阶段232处应用各种环路滤波器技术,例如去块、样本自适应补偿、自适应环路滤波器等。可以将经环路滤波的参考图像存储在缓冲区234(或“经解码的图像缓冲区”)中以供以后使用(例如,用作视频序列202的未来图像的帧间预测参考图像)。编码器可以将一个或多个参考图像存储在缓冲区234中,以在时间预测阶段2044处使用。在一些实施例中,编码器可以在二进制编码阶段226处编码环路滤波器的参数(例如,环路滤波器强度)以及量化变换系数216、预测数据206和其他信息。
图3A示出了根据本公开的实施例的示例性解码过程300A的示意图。过程300A可以是对应于图2A中的压缩过程200A的解压缩过程。在一些实施例中,过程300A可以类似于过程200A的重建路径。解码器可以根据过程300A将视频位流228解码成视频流304。视频流304可以非常类似于视频序列202。然而,由于压缩和解压缩过程中的信息丢失(例如,图2A-2B中的量化阶段214),通常,视频流304与视频序列202不同。类似于图2A-2B中的过程200A和200B,解码器可以在基本处理单元(BPU)级别对在视频位流228中编码的每个图像执行过程300A。例如,解码器可以以迭代方式执行过程300A,其中解码器可以在过程300A的一次迭代中对基本处理单元进行解码。在一些实施例中,解码器可以针对在视频位流228中编码的每个图像的区域(例如,区域114-118)并行地执行过程300A。
如图3A所示,解码器可以将与编码图像的基本处理单元(称为“编码BPU”)相关联的视频位流228的一部分馈送到二进制解码阶段302,在二进制解码阶段302,解码器可以将该部分解码成预测数据206和量化变换系数216。解码器可以将量化变换系数216馈送到逆量化阶段218和逆变换阶段220以生成重建残差BPU222。解码器可以将预测数据206馈送到预测阶段204以生成预测BPU 208。解码器可以将重建残差BPU222添加到预测BPU 208以生成预测参考224。在一些实施例中,预测参考224可以存储在缓冲区(例如,计算机存储器中的解码图像缓冲区)中。解码器可以将预测参考224馈送到预测阶段204,用于在过程300A的下一次迭代中执行预测操作。
解码器可以迭代地执行过程300A,以解码编码图像的每个编码BPU,并生成用于编码图像的下一个编码BPU的预测参考224。在解码编码图像的所有编码BPU之后,解码器可以将该图像输出到视频流304以供显示,并且继续解码视频位流228中的下一个编码图像。
在二进制解码阶段302,解码器可以执行编码器使用的二进制编码技术(例如,熵编码、可变长度编码、算术编码、霍夫曼编码、上下文自适应二进制算术编码或任何其他无损压缩算法)的逆运算。在一些实施例中,除了预测数据206和量化的变换系数216,解码器可以在二进制解码阶段302解码其他信息,例如预测模式、预测操作的参数、变换类型、量化过程的参数(例如,量化参数)、编码器控制参数(例如,比特率控制参数)等。在一些实施例中,如果视频位流228通过网络以包的形式传输,则解码器可以在将视频位流228馈送到二进制解码级302之前对其进行解包。
图3B示出了根据本公开的实施例的另一示例解码过程300B的示意图。过程300B可以修改自过程300A。例如,过程300B可以由符合混合视频编码标准(例如,H.26x系列)的解码器使用。与过程300A相比,过程300B额外地将预测阶段204划分为空间预测阶段2042和时间预测阶段2044,并且额外地包括环路滤波阶段232和缓冲区234。
在过程300B中,对于在解码的编码图像(称为“当前图像”)的编码基本处理单元(称为“当前BPU”),由解码器从二进制解码阶段302解码的预测数据206可以包括各种类型的数据,这取决于编码器使用什么预测模式来编码当前BPU。例如,如果编码器使用帧内预测来编码当前BPU,则预测数据206可以包括指示帧内预测、帧内预测操作的参数等的预测模式指示符(例如,标志值)。帧内预测操作的参数可以包括例如用作参考的一个或多个相邻BPU的位置(例如,坐标)、相邻BPU的大小、插值的参数、相邻BPU相对于原始BPU的方向等。对于另一示例,如果由编码器使用的帧间预测来编码当前BPU,则预测数据206可以包括指示帧间预测、帧间预测操作的参数等预测模式指示符(例如,标志值)。帧间预测操作的参数可以包括例如与当前BPU相关联的参考图像的数量、分别与参考图像相关联的权重、相应参考图像中的一个或多个匹配区域的位置(例如,坐标)、分别与所述匹配区域相关联的一个或多个运动矢量等。
基于预测模式指示符,解码器可以决定是在空间预测阶段2042执行空间预测(例如,帧内预测)还是在时间预测阶段2044执行时间预测(例如,帧间预测),执行这种空间预测或时间预测的细节在图2B中描述,其不会在下文中重复。在执行这样的空间预测或时间预测之后,解码器可以生成预测的BPU 208,解码器可以添加预测的BPU 208和重建残差BPU222以生成预测参考224,如图3A中所述。
在过程300B中,解码器可以将预测参考224馈送到空间预测阶段2042或时间预测阶段2044,用于在过程300B的下一次迭代中执行预测操作。例如,如果在空间预测阶段2042使用帧内预测解码当前BPU,则在生成预测参考224(例如,解码的当前BPU)之后,解码器可以将预测参考224直接馈送到空间预测阶段2042以供以后使用(例如,用于插值当前图像的下一个BPU)。如果在时间预测阶段2044使用帧间预测解码当前BPU,则在生成预测参考224(例如,其中所有BPU都被解码的参考图像)之后,编码器可以将预测参考224馈送到环路滤波器阶段232以减少或消除失真(例如,块状伪影)。解码器可以如图2B所示的方式将环路滤波器应用于预测参考224。环路滤波的参考图像可以存储在缓冲区234(例如,计算机存储器中的解码图像缓冲区)中供以后使用(例如,用作视频位流228的未来编码图像的预测间参考图像)。解码器可以将一个或多个参考图像存储在缓冲区234中,以在时间预测阶段2044处使用。在一些实施例中,预测数据可以进一步包括环路滤波器的参数(例如,环路滤波器强度)。在一些实施例中,当预测数据206的预测模式指示符指示帧间预测被用于编码当前BPU时,预测数据包括环路滤波器的参数。
图4是根据本公开的实施例的用于对视频进行编码或解码的示例装置400的框图。如图4所示,装置400可以包括处理器402。当处理器402执行本文所述的指令时,装置400可以成为用于视频编码或解码的专用机器。处理器402可以是能够操纵或处理信息的任何类型的电路。例如,处理器402可以包括任何数量的中央处理单元(或“CPU”)、图形处理单元(或“GPU”)、神经处理单元(“NPU”)、微控制器单元(“MCU”)、光学处理器中、可编程逻辑控制器、微处理器、数字信号处理器、知识产权(IP)核心、可编程逻辑阵列(PLA)、可编程阵列逻辑(PAL)、通用阵列逻辑(GAL)、复杂可编程逻辑器件(CPLD),一种现场可编程门阵列(FPGA)、片上系统(SoC)、专用集成电路(ASIC)等的任意组合。在一些实施例中,处理器402还可以是被分组为单个逻辑组件的一组处理器。例如,如图4所示,处理器402可以包括多个处理器,包括处理器402a、处理器402b和处理器402n。
装置400还可以包括被配置为存储数据(例如,指令集、计算机代码、中间数据等)的存储器404。例如,如图4所示,所存储的数据可以包括程序指令(例如,用于实现过程200A、200B、300A或300B中的阶段)和用于处理的数据(例如,视频序列202、视频位流228或视频流304)。处理器402可以访问用于处理的程序指令和数据(例如,经由总线410),并且执行程序指令以对用于处理的数据执行操作或操纵。存储器404可以包括高速随机存取存储设备或非易失性存储设备。在一些实施例中,存储器404可以包括任意数量的随机存取存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘驱动器、固态驱动器、闪存驱动器、安全数字(SD)卡、记忆棒、紧凑型闪存(CF)卡等的任意组合。存储器404也可以是被分组为单个逻辑组件的一组存储器(图4中未示出)。
总线410可以是在装置400内部的组件之间传输数据的通信设备,诸如内部总线(例如,CPU-存储器总线)、外部总线(例如,通用串行总线端口、外围组件互连快速端口),或者类似物。
为了便于解释而不引起歧义,在本公开中,处理器402和其他数据处理电路统称为“数据处理电路”。数据处理电路可以完全实现为硬件,或者实现为软件、硬件或固件的组合。此外,数据处理电路可以是单个单独模块,或者可以完全或部分地组合到装置400的任何其他部件中。
装置400还可以包括网络接口406,以提供与网络(例如,因特网、内联网、局域网、移动通信网络等)的有线或无线通信。在一些实施例中,网络接口406可以包括任何数量的网络接口控制器(NIC)、射频(RF)模块、应答器、收发器、调制解调器、路由器、网关、有线网络适配器、无线网络适配器、蓝牙适配器、红外适配器、近场通信(“NFC”)适配器、蜂窝网络芯片等的任意组合。
在一些实施例中,可选地,装置400可以进一步包括外围接口408,以提供到一个或多个外围设备的连接。如图4所示,外围设备可以包括,但不限于,光标控制设备(例如,鼠标、触摸板或触摸屏)、键盘、显示器(例如,阴极射线管显示器、液晶显示器、或发光二极管显示器)、视频输入设备(例如,相机或耦合到视频档案的输入接口)等。
应当注意,视频编解码器(例如,执行过程200A、200B、300A或300B的编解码器)可以被实现为装置400中的任何软件或硬件模块的任何组合。例如,过程200A、200B、300A或30013的一些或所有阶段可以被实现为装置400的一个或多个软件模块,诸如可以被加载到存储器404中的程序实例。对于另一示例,过程200A、200B、300A或300B的一些或全部阶段可以被实现为装置400的一个或多个硬件模块,诸如专用数据处理电路(例如,FPGA、ASIC、NPU等)。
在VVC中,可以在环路滤波器之前添加称为具有色度缩放的亮度映射(“LMCS”)的编码工具作为新的处理块。LMCS具有两个主要组成部分:1)基于自适应分段线性模型的亮度分量的环内映射;2)对于色度分量,应用了与亮度相关的色度残差缩放。亮度分量的环内映射通过跨动态范围重新分配码字来调整输入信号的动态范围,以提高压缩效率。色度残差缩放旨在补偿亮度信号与其相应的色度信号之间的相互作用。
在VVC(例如,VVC草案8)中,LMCS可以在序列级别、图像级别或条带级别上被控制。图5示出了包括控制变量的示例伪码,该控制变量能够启用在序列级别具有色度缩放的亮度映射。如图5所示,当sps_lmcs_enabled_flag等于1时,在编码层视频序列(“CLVS”)中使用具有色度缩放的亮度映射。当sps_lmcs_enabled_flag等于0时,在CLVS中不使用具有色度缩放的亮度映射。
图6示出了示例伪码,其包括用于在图像头中启用具有色度缩放的亮度映射的控制变量。如图6所示,当ph_lmcs_enabled_flag等于1时,对于与PH关联的所有条带启用具有色度缩放的亮度映射。当ph_lmcs_enabled_flag等于0时,对于与PH相关联的一个或多个或所有条带,可以关闭具有色度缩放的亮度映射。当不存在时,ph_lmcs_enabled_flag的值被推断为等于0。
如图6所示,色度残差缩放过程可以用图像级别标志(例如,ph_chroma_residual_scale标志)单独控制。当ph_chroma_residual_scale_flag等于1时,将为与PH关联的所有条带启用色度残差缩放。当ph_chroma_residual_scale_flag等于0时,可以关闭与PH相关的一个或多个或所有条带的色度残留缩放。当ph_chroma_residual_scale_flag不存在时,推断其等于0。
图7示出了包括用于启用在条带头中的具有色度缩放的亮度映射的控制变量的示例伪码。如图7所示,当slice_lmcs_enabled_flag等于1时,针对当前条带启用具有色度缩放的亮度映射。当slice_lmcs_enabled_flag等于0时,当前条带不启用具有色度缩放的亮度映射。当slice_lmcs_enabled_flag不存在时,推断其等于0。
自适应环路滤波器(“ALF”)是可以应用于重建样本以减少样本的失真从而提高编码效率的环内滤波器。滤波器系数由编码器决定,并在位流中用信号通知。
在VVC(例如,VVC草案8)中,ALF可以在序列级别上、并且图像级别或条带级别中的一个级别上被控制。ALF可能不会同时应用于图像级别和条带级别。图8A示出了在序列参数集中包括自适应环路滤波器语法的示例伪码。图8B示出了在图像参数集中包括自适应环路滤波器语法的示例伪码。图9示出了在图像头中包括自适应环路滤波器语法的示例伪码。图10示出了在条带头中包括自适应环路滤波器语法的示例伪码。如图8A所示,序列参数集(“SPS”)中的变量sps_alf_enabled_flag控制CLVS的ALF。当sps_alf_enabled_flag等于1时,为CLVS启用ALF。当sps_alf_enabled_flag等于0时,为CLVS禁用ALF。如图8B、图9和图10所示,当为CLVS启用ALF时,可以通过ph_alf_enabled_flag在图像级别、或通过slice_alf_enabled_flag在条带级别进一步控制它。由标志alf_info_in_ph_flag决定它是在图像级别还是在条带级别进行控制,该标志在图像参数集(“PPS”)中用信号通知。当ph_alf_enabled_flag等于1时,ALF系数信息在图像头中用信号通知。当slice_alf_enabled_flag等于1时,ALF系数信息将在条带标头中用信号通知。
当sps_alf_enabled_flag等于0时,关闭自适应环路滤波器(例如,禁用)。当sps_alf_enabled_flag等于1时,启用自适应环路滤波器。
当sps_ccalf_enabled_flag等于0时,关闭交叉分量自适应环路滤波器。当sps_ccalf_enabled_flag等于1时,可以启用交叉分量自适应环路滤波器。
当alf_info_in_ph_flag等于1时,ALF信息存在于PH语法结构中,而不存在于参考PPS的条带头中,所述PPS不包含PH语法结构。当alf_info_in_ph_flag等于0时,ALF信息不存在于PH语法结构中,并且可以存在于参考不包含PH语法结构的PPS的条带头中。
当ph_alf_enabled_flag等于1时,对与PH相关的所有条带启用自适应环路滤波器,并且自适应环路滤波器可以应用于条带中的Y、Cb或Cr颜色分量。当ph_alf_enabled_flag等于0时,可针对与PH相关联的一个或多个或所有条带禁用自适应环路滤波器。当不存在时,ph_alf_enabled_flag被推断为等于0。
变量ph_num_alf_aps_ids_luma指定与PH相关联的条带所参考的ALF APS的数目。
变量ph_alf_aps_id_luma[i]指定与PH相关联的条带的亮度分量所参考的第i个ALF APS的adaptation_parameter_set_id。
具有aps_params_type等于ALF_APS且adaptation_parameter_set_id等于ph_alf_aps_id_luma[i]的APS NAL单元的变量alf_lum_filter_signal_flag应等于1。
具有aps_params_type等于ALF_APS且adaptation_parameter_set_id等于ph_alf_aps_id_luma[i]的APS NAL单元的TemporalId应小于或等于与PH相关联的图像的TemporalId。
当ph_alf_chroma_idc等于0时,自适应环路滤波器不应用于Cb和Cr颜色分量。当ph_alf_chroma_idc等于1时,自适应环路滤波器应用于Cb颜色分量。当ph_alf_chroma_idc等于2时,自适应环路滤波器应用于Cr颜色分量。当ph_alf_chroma_idc等于3时,自适应环路滤波器应用于Cb和Cr颜色分量。当ph_alf_chroma_idc不存在时,推断其等于0。
变量ph_alf_aps_id_chroma指定与PH相关联的条带的色度分量所参考的ALF APS的adaptation_parameter_set_id。
具有aps_params_type等于ALF_APS且adaptation_parameter_set_id等于ph_alf_aps_id_chroma的APS NAL单元的alf_chroma_filter_signal_flag值应等于1。
具有aps_params_type等于ALF_APS且adaptation_parameter_set_id等于ph_alf_aps_id_chroma的APS NAL单元的TemporalId应小于或等于与PH相关联的图像的TemporalId。
当ph_cc_alf_cb_enabled_flag等于1时,针对与PH关联的所有条带启用用于Cb颜色分量的交叉分量滤波器,并且交叉分量滤波器可以应用于条带中的Cb颜色分量。当ph_cc_alf_cb_enabled_flag等于0时,对于与PH关联的一个或多个或所有条带,可以关闭用于Cb颜色分量的交叉分量滤波器。当不存在时,ph_cc_alf_cb_enabled_flag被推断为等于0。
变量ph_cc_alf_cb_aps_id指定与PH相关联的条带的Cb颜色分量所参考的ALFAPS的adaptation_parameter_set_id。
具有aps_params_type等于ALF_APS且adaptation_parameter_set_id等于ph_cc_alf_cb_aps_id的APS NAL单元的alf_cc_cb_filter_signal_flag的值应等于1。
当ph_cc_alf_cr_enabled_flag等于1时,对于与PH关联的所有条带启用用于Cr颜色分量的交叉分量滤波器,并且该交叉分量滤波器可以应用于条带中的Cr颜色分量。当ph_cc_alf_cr_enabled_flag等于0时,对于与PH相关的一个或多个或所有条带,可以关闭用于Cr颜色分量的交叉分量滤波器。当不存在时,ph_cc_alf_cr_enabled_flag被推断为等于0。
变量ph_cc_alf_cr_aps_id指定与PH相关联的条带的Cr颜色分量所参考的ALFAPS的adaptation_parameter_set_id。
具有aps_params_type等于ALF_APS且adaptation_parameter_set_id等于ph_cc_alf_cr_aps_id的APS NAL单元的alf_cc_cr_filter_signal_flag的值应等于1。
当slice_alf_enabled_flag等于1时,自适应环路滤波器被启用,并且可以应用于条带中的Y、Cb或Cr颜色分量。当slice_alf_enabled_flag等于0时,将关闭条带中所有颜色分量的自适应环路滤波器。当不存在时,slice_alf_enabled_flag的值被推断为等于ph_alf_enabled_flag。
变量slice_num_alf_aps_ids_luma指定条带所参考的ALF APS的数量。当slice_alf_enabled_flag等于1且slice_num_alf_aps_ids_luma不存在时,推断slice_num_alf_aps_ids_luma的值等于ph_num_alf_aps_ids_luma的值。
变量slice_alf_aps_id_luma[i]指定条带的亮度分量所参考的第i个ALF APS的adaptation_parameter_set_id。具有aps_params_type等于ALF_APS且adaptation_parameter_set_id等于slice_alf_aps_id_luma[i]的APS NAL单元的TemporalId应小于或等于编码条带NAL单元的TemporalId。当slice_alf_enabled_flag等于1且slice_alf_aps_id_luma[i]不存在时,推断slice_alf_aps_id_luma[i]的值等于ph_alf_aps_id_luma[i]的值。
具有aps_params_type等于ALF_APS且adaptation_parameter_set_id等于slice_alf_aps_id_luma[i]的APS NAL单元的alf_luma_filter_signal_flag的值应等于1。
当slice_alf_chroma_idc等于0时,自适应环路滤波器不应用于Cb和Cr颜色分量。当slice_alf_chroma_idc等于1时,自适应环路滤波器应用于Cb颜色分量。当slice_alf_chroma_idc等于2时,自适应环路滤波器应用于Cr颜色分量。当slice_alf_chroma_idc等于3时,自适应环路滤波器应用于Cb和Cr颜色分量。当slice_alf_chroma_idc不存在时,推断其等于ph_alf_chroma_idc。
变量slice_alf_aps_id_chroma指定条带的色度分量所参考的ALF APS的adaptation_parameter_set_id。具有aps_params_type等于ALF_APS且adaptation_parameter_set_id等于slice_alf_aps_id_chroma的APS NAL单元的TemporalId应小于或等于编码条带NAL单元的TemporalId。当slice_alf_enabled_flag等于1且slice_alf_aps_id_chroma不存在时,推断slice_alf_aps_id_chroma的值等于ph_alf_aps_id_chroma的值。
具有aps_params_type等于ALF_APS且adaptation_parameter_set_id等于slice_alf_aps_id_chroma的APS NAL单元的alf_chroma_filter_signal_flag的值应等于1。
当slice_cc_alf_cb_enabled_flag等于0时,交叉分量滤波器不应用于Cb颜色分量。当slice_cc_alf_cb_enabled_flag等于1时,交叉分量滤波器被启用,并且可以应用于Cb颜色分量。当slice_cc_alf_cb_enabled_fla g不存在时,推断等于ph_cc_alf_cb_enabled_flag。
变量slice_cc_alf_cb_aps_id指定条带的Cb颜色分量所参考的adaptation_parameter_set_id。
具有aps_params_type等于ALF_APS且adaptation_parameter_set_id等于slice_cc_alf_cb_aps_id的APS NAL单元的TemporalId应小于或等于编码条带NAL单元的TemporalId。当slice_cc_alf_cb_enabled_flag等于1且slice_cc_alf_cb_aps_id不存在时,推断slice_cc_alf_cb_aps_id的值等于ph_cc_alf_cb_aps_id的值。
具有aps_params_type等于ALF_APS且adaptation_parameter_set_id等于slice_cc_alf_cb_aps_id的APS NAL单元的alf_cc_cb_filter_signal_flag的值应等于1。
当slice_cc_alf_cr_enabled_flag等于0时,交叉分量滤波器不应用于Cr颜色分量。当slice_cc_alf_cb_enabled_flag等于1时,交叉分量自适应环路滤波器被启用,并且可以应用于Cr颜色分量。当slice_cc_alf_cr_enabled_flag不存在时,推断其等于ph_cc_alf_cr_enabled_flag。
变量slice_cc_alf_cr_aps_id指定条带的Cr颜色分量所参考的adaptation_parameter_set_id。具有aps_params_type等于ALF_APS且adaptation_parameter_set_id等于slice_cc_alf_cr_aps_id的APS NAL单元的TemporalId应小于或等于编码条带NAL单元的TemporalId。当slice_cc_alf_cr_enabled_flag等于1且slice_cc_alf_cr_aps_id不存在时,推断slice_cc_alf_cr_aps_id的值等于ph_cc_alf_cr_aps_id的值。
具有aps_params_type等于ALF_APS且
adaptation_parameter_set_id等于slice_cc_alf_cr_aps_id的APS NAL单元的alf_cc_cr_filter_signal_flag的值应等于1。
样本自适应偏移(“SAO”)将一偏移量添加到重建样本以减少样本的失真。SAO中支持两种偏移模式,即边缘偏移(“EO”)模式和带偏移(“BO”)模式。对于边缘偏移模式,首先将编码树单元(“CTU”)中的样本分为5个类别,其中4个类别中的样本具有相应的偏移量。因此,编码器确定4个偏移量的值,一个类别的一个偏移量。分类方法和偏移量的值在CTU级别的位流中用信号通知。对于带偏移模式,根据样本值,将CTU中的样本分为32个带,其中4个带中的样本具有相应的偏移量。要偏移的4个带和相应的偏移量在位流中被用信号通知。
在VVC(例如,VVC草案8)中,与ALF相同,SAO可以在序列级别、以及图像级别或条带级别之一上进行控制。SAO可能在图像级别和条带级别都无法控制。图11示出了在序列参数集中包括样本自适应偏移语法的示例伪码。图12示出了在图像参数集中包括样本自适应偏移语法的示例伪码。图13示出了在图像头中包括样本自适应偏移语法的示例伪码。图14示出了在条带头中包括样本自适应偏移语法的示例伪码。在图11中,SPS中的变量sps_sao_enabled_flag控制CLVS的SAO。当sps_sao_enabled_flag等于1时,将为CLVS启用SAO。当sps_sao_enabled_flag等于0时,将关闭CLVS的SAO。
如图12、图13和图14所示,当为CLVS启用SAO时,可以通过ph_sao_luma_enabled_flag/ph_sao_chroma_enabled_flag在图像级别上、或者通过slice_sao_luma_flag/slice_sap_chroma_flag在条带级别上进一步控制SAO。,由在PPS中用信号通知的标志sao_info_in_ph_flag决定是在图像级别还是在条带级别控制SAO。
当sps_sao_enabled_flag等于1时,将样本自适应偏移过程应用于去块滤波过程之后的重建图像。当sps_sao_enabled_flag等于0时,在去块滤波过程之后,样本自适应偏移过程不会应用于重建的图像。
当sao_info_in_ph_flag等于1时,SAO滤波器信息存在于PH语法结构中,而不存在于参考PPS的条带标头中,该PPS不包含PH语法结构。当sao_info_in_ph_flag等于0时,SAO滤波器信息不存在于PH语法结构中,并且可能存在于参考PPS的条带标头中,该PPS不包含PH语法结构。
当ph_sao_luma_enabled_flag等于1时,将为与PH关联的所有条带中的亮度分量启用SAO。当ph_sao_luma_enabled_flag等于0时,对于与PH相关联的一个或多个或所有条带,可以关闭亮度分量的SAO。当ph_sao_luma_enabled_flag不存在时,推断其等于0。
当ph_sao_chroma_enabled_flag等于1时,将为与PH相关的所有条带中的色度分量启用SAO。当ph_sao_chroma_enabled_flag等于0时,对于与PH相关的一个或多个或所有条带,可以关闭用于色度分量的SAO。当ph_sao_chroma_enabled_flag不存在时,推断其等于0。
当slice_sao_luma_flag等于1时,为当前条带中的亮度分量启用SAO。当slice_sao_luma_flag等于0时,对于当前条带中的亮度分量将关闭SAO。当slice_sao_luma_flag不存在时,推断其等于ph_sao_luma_enabled_flag。
当slice_sao_chroma_flag等于1时,为当前条带中的色度分量启用SAO。当slice_sao_chroma_flag等于0时,对于当前条带中的色度分量将关闭SAO。当slice_sao_chroma_flag不存在时,推断其等于ph_sao_chroma_enabled_flag。
去块滤波器(“DBF”)是应用于块的边界以减少块效应(block artifact)的滤波器。在VVC(例如,VVC草案8)中,DBF禁用标志和参数在PPS中用信号通知。此外,还用信号通知覆盖启用标志deblocking_filter_override_enabled_flag,以指示DBF禁用标志和参数是否可以在低级别被覆盖。如果是这样,则会用信号通知标志dbf_info_in_ph_flag,以指示DBF禁用标志和参数是否在图像头或条带头中被覆盖。
图15示出了在图像参数集中包括去块滤波器语法的示例伪码。图16示出了在图像头中包括去块滤波器语法的示例伪代码。图17示出了在条带头中包括去块滤波器语法的示例伪码。如图15、图16和图17所示,如果DBF禁用标志和参数在图像头中被覆盖,则可以在图像头中用信号通知图像级别DBF禁用标志和参数。如果DBF禁用标志和参数在条带头中被覆盖,则可以在条带头中发送条带级别的DBF禁用标志和参数。
当debocking_filter_control_present_flag等于1时,PPS中存在去块滤波器控制语法元素。当debocking_filter_control_present_flag等于0时,PPS中不存在去块滤波器控制语法元素。
当deblocking_filter_override_enabled_flag等于1时,在参考PPS的PH中存在ph_debocking_filter_override_flag,或者在参考PPS的条带头中存在slice_deblocking_filter_override_flag。当deblocking_filter_override_enabled_flag等于0时,在参考PPS的PH中不存在ph_debocking_filter_override_flag,或者在参考PPS的条带头中不存在slice_deblocking_filter_override_flag。当不存在时,推断deblocking_filter_override_enabled_flag的值等于0。
当pps_debocking_filter_disabled_flag等于1时,不将去块滤波器的操作应用于参考PPS的条带,该PPS中不存在slice_deblocking_filter_disabled_flag。当pps_debocking_filter_disabled_flag等于0时,对参考PPS的条带应用去块滤波器的操作,该PPS中不存在不存在slice_deblocking_filter_disabled_flag的。当不存在时,pps_deblocking_filter_disabled_flag的值被推断为等于0。
当ph_debocking_filter_override_flag等于1时,去块参数存在于PH中。当ph_debocking_filter_override_flag等于0时,PH中不存在去块参数。当不存在时,ph_debocking_filter_override_flag的值被推断为等于0。
当ph_debocking_filter_disabled_flag等于1时,去块滤波器的操作不应用于与PH相关联的条带。当ph_debocking_filter_disabled_flag等于0时,]]去块滤波器的操作应用于与PH相关的条带。当ph_debocking_filter_disabled_flag不存在时,推断其等于pps_debocking_filter_disabled_flag。
当slice_deblocking_filter_override_flag等于1时,去块参数存在于条带头中。当slice_deblocking_filter_override_flag等于0时,条带头中不存在去块参数。当不存在时,推断slice_deblocking_filter_override_flag的值等于ph_debocking_filter_override_flag。
当slice_deblocking_filter_disabled_flag等于1时,去块滤波器的操作不应用于当前条带。当slice_deblocking_filter_disabled_flag等于0时,对当前条带应用去块滤波器的操作。当slice_deblocking_filter_disabled_flag不存在时,推断它等于ph_debocking_filter_disabled_flag。
当前VVC的设计存在许多问题。首先,可以在CLVS级别、图像级别和条带级别中控制LMCS。当更高级别的启用标志启用LMCS时,较低级别可以将其关闭。换句话说,在给定级别上启用标志等于1并不意味着必须启用LMCS,因为较低级别启用标志可能会将其关闭。同样,当SPS启用标志启用ALF和SAO时,图像级别或条带级别启用标志可能会关闭它们。结果,当前的语义是不准确的。
此外。当ph_lmcs_enabled_flag等于1时,ph_chroma_residual_scale_flag仍然可以关闭(例如,禁用)当前图像的色度缩放。结果,ph_lmcs_enabled_flag等于1并不意味着必须启用色度缩放。因此,目前的语义并不准确。
另一个问题是语法一致性。ALF/SAO和LMCS语法之间存在一些不一致之处。LMCS可以在三个级别上被控制,即SPS、PH和SH。在较高级别启用时,较低级别可以将其关闭。当它在较高级别中关闭时,较低级别可能无法启用它。然而,对于ALF和SAO,它们只能控制在两个级别,即SPS和PH或SH之一。由PPS中的标志决定ALF和SAO的PH级别控制或SH级别控制。结果,LMCS和ALF/SAO之间的控制机制不同。
此外,当ALF在PH中被控制并启用时,ALF的参数信息在PH中被信号通知。当在SH中控制并启用ALF时,ALF的参数信息会在SH中被信号通知。因此,对于ALF,当控制处于条带级别时,不同的条带可能具有不同的ALF参数。相反,对于LMCS,SH只能启用或关闭(例如,禁用),但在启用时不能用信号通知参数信息。换句话说,对于同一图像中的所有条带(启用LMCS),LMCS参数必须相同。这是ALF和LMCS之间的另一个不一致之处。
第三个问题是去块滤波器语法。对于整个CLVS没有SBS禁用标志来禁用DBF。而且,pps_debocking_filter_disabled_flag和ph_debocking_filter_disabled_flag的语义不正确。在VVC(例如,VVC草案8)中,pps_debocking_filter_disabled_flag等于1(或0)指定对于参考PPS的条带不应用(或应用)去块滤波器的操作,在所述PPS中不存在slice_deblocking_filter_disabled_flag。但是,ph_debocking_filter_disabled_flag可以覆盖pps_debocking_filter_disabled_flag,因此pps_debocking_filter_disabled_flag的语义不准确。另外,根据VVC(例如,VVC草案8),ph_debocking_filter_disabled_flag等于1(或0)指定对于与PH相关联的条带不应用(或应用)去块滤波器的操作。当ph_debocking_filter_disabled_flag不存在时,推断其等于pps_debocking_filter_disabled_flag。但是,在slice_deblocking_filter_disabled_flag覆盖pps_debocking_filter_disabled_flag的情况下,不存在ph_debocking_filter_disabled_flag,因此推断其等于pps_debocking_filter_disabled_flag。但是由于pps_debocking_filter_disabled_flag被slice_deblocking_filter_disabled_flag覆盖,因此pps_debocking_filter_disabled_flag的值可能不适用于该条带。因此,ph_debocking_filter_disabled_flag的语义是不正确的。
本公开的实施例提供了一种解决上述问题的方法。在一些实施例中,可以基于以下考虑来修改语义:LMCS、ALF和SAO的低级别启用标志可以在启用高级别启用标志时关闭(例如,禁用)LMCS、ALF和SAO,并且当启用LMCS标志时可以关闭色度缩放。图18示出了根据本公开的一些实施例的具有色度缩放、自适应环路滤波器和样本自适应偏移的亮度映射的示例语义。在图18中,对先前VVC的更改以粗体显示,建议的删除语法以删除线进一步显示。
在一些实施例中,语义可以以下列方式修改:当ALF或SAO在较高级别中被启用时,较低级别可以将它们关闭。当ALF或SAO在较高级别中关闭时,较低级别可能无法启用它们。而且,对于ALF,当在SH中进行控制时,只能启用或禁用它,并且在SH中可能不会对slice特定的ALF参数进行信号通知。结果,图像中的所有条带都可以共享相同的ALF参数。
图19示出了根据本公开的一些实施例的包括用于自适应环路滤波器的新的图像参数集的示例伪码。图20示出了根据本公开的一些实施例的包括用于自适应环路滤波器的新的图像头语法的示例伪码。图21示出了根据本公开的一些实施例的包括用于自适应环路滤波器的新的条带头语法的示例伪码。如图19、图20和图21所示,对先前VVC的更改以粗体显示,建议的删除语法以删除线进一步显示。如图19、图20和图21所示,通过删除alf_info_in_ph_flag并清理条带头中的ALF参数信号通知的语法来简化PPS级别的信号通知。
图22示出了根据本公开的一些实施例的示例语义,其包括用于自适应环路滤波器的图像头语法、条带头语法和图像参数集的新的标志。在图22中,对先前VVC的更改以粗体显示,建议的删除语法以删除线进一步显示。应当理解,图22中所示的语义可以应用于图19、图20和图21中的伪码。
图23示出了根据本公开的一些实施例的包括用于样本自适应偏移的新的图像参数集的示例伪码。图24示出了根据本公开的一些实施例的包括用于样本自适应偏移的新的图像头语法的示例伪码。图25示出了根据本公开的一些实施例的包括用于样本自适应偏移的新的条带头语法的示例伪码。如图23、图24和图25所示,对先前VVC的更改以粗体显示,建议的删除语法以删除线进一步显示。如图23、图24和图25所示,通过去除sao_info_in_ph_flag来简化PPS级别的信号通知。
图26示出了根据本公开的一些实施例的示例语义,该示例语义包括用于样本自适应偏移的图像头语法、条带头语法和图像参数集的新标志。如图26所示,对先前VVC的更改以粗体显示,建议的删除语法以删除线进一步显示。应当理解,图26中所示的语义可以应用于图23、图24或图25中的伪码。
在一些实施例中,可以为DBF添加SPS禁用标志。
在一些实施例中,由于pps_debocking_filter_disabled_flag可以被ph_debocking_filter_disabled_flag或slice_deblocking_filter_disabled_flag覆盖,pps_debocking_filter_disabled_flag仅在覆盖机制被禁用时(例如,ph_debocking_filter_disabled_flag和slice_deblocking_filter_disabled_flag都不存在)适用,并且ph_debocking_filter_disabled_flag仅在ph_debocking_filter_disabled_flag覆盖ph_deblocking_filter_disabled_flag(例如,ph_deblocking_filter_disabled_flag存在,但是slice_deblocking_filter_disabled_flag不存在)时适用。
图27示出了根据本公开的一些实施例的包括具有用于去块滤波器的序列参数集禁用标志的新的序列参数集的示例伪码。图28示出了根据本公开的一些实施例的包括具有用于去块滤波器的序列参数集禁用标志的新的图像参数集的示例伪码。图29示出了根据本公开的一些实施例的包括具有用于去块滤波器的序列参数集禁用标志的新的图像头语法的示例伪码。图30示出了根据本公开的一些实施具有用于去块滤波器的序列参数集禁用标志的新的的条带头语法的示例伪码,如图27、图28和图29所示,对先前VVC的更改以粗体显示,建议的删除语法以删除线进一步显示。
图31A/B示出了根据本公开的一些实施例的示例语义,其包括用于去块滤波器的图像头语法、条带头语法、序列参数集以及图像参数集的新的标志。如图26所示,对先前VVC的更改以粗体显示,建议的删除语法以删除线进一步显示。应当理解,图31A/B中所示的语义可以应用于图27、图28、图29或图30中伪码。
图32是描述根据本公开的确定具有色度缩放的亮度映射(LMCS)的示例性过程的流程。过程3200可以由编解码器(例如,图2A-2B中的编码器或图3A-3B中的解码器)来执行。例如,编解码器可以被实现为装置(例如,图4中的装置400)的一个或多个软件或硬件组件,诸如装置的处理器(例如,处理器402),以用于确定LMCS。该方法可以包括以下步骤。
在步骤3202中,装置400接收一个或多个视频帧。如本文所使用的视频可以指用于采集视觉信息的“帧”(例如,静态图像或图像)的时间序列。可以使用视频采集设备(例如,相机)以时间顺序采集和存储这些图像,并且可以使用视频回放设备(例如,电视,计算机,智能手机、平板计算机、视频播放器、或任何具有显示功能的最终用户终端)来显示时间序列中的此类图像。此外,在一些应用中,视频采集设备可以实时地将采集的视频发送到视频回放设备(例如,具有监视器的计算机),例如用于监视、会议或现场广播。
在步骤3204中,装置400在序列级别上确定视频帧的控制标志。在一些实施例中,视频帧可以包括图像序列,并且每个图像可以包括一个或多个条带。序列的控制标志可以是序列中所有图像的状态的指示。在一些实施例中,所述控制标志可以是所述视频帧是否利用具有色度缩放的亮度映射(LMCS)进行编码的指示。所述序列的控制标志的示例可以是第一控制标志。如图8所示的示例,sps_lmcs_enabled_flag可以是序列级别的LMCS的控制标志。在一些实施例中,sps_lmcs_enabled_flag可以具有“1”或“0”值。
在步骤3206中,装置400检查序列级别的LMCS的控制标志的值,以确定是否在序列级别启用LMCS。如果在序列级别未启用LMCS,则步骤3206为“否”,并且过程3200前进到步骤3222。当在序列级别未启用LMCS时,也未对序列的所有图像和视频帧的所有条带启用LMCS。在一些实施例中,当sps_lmcs_enabled_flag具有“0”值时,步骤3206为“否”。如果在序列级别启用LMCS,则步骤3206为“是”,并且过程3200前进到步骤3208。当在序列级别启用LMCS时,可以启用序列中的所有图像。在一些实施例中,当sps_lmcs_enabled_flag具有“1”值时,步骤3206为“是”。
在步骤3208中,装置400确定用于视频帧的序列中的图像在图像级别的控制标志。在一些实施例中,序列内的视频帧的图像可以包括一个或多个条带。图像的控制标志可以是图像中所有条带的状态的指示。在一些实施例中,所述控制标志可以是所述视频帧的图像是否利用具有色度缩放的亮度映射(LMCS)编码的指示。图像的控制标志的示例可以是第二控制标志。如图18所示的示例,ph_lmcs_enabled_flag可以是用于在图像级别的LMCS的控制标志。在一些实施例中,在图像级别的控制标志存在于图像头中。在一些实施例中,ph_lmcs_enabled_flag可以具有“1”或“0”值。
在步骤3210中,装置400检查图像级别的LMCS的控制标志的值,以确定是否在图像级别启用LMCS。如果在图像级别未启用LMCS,则步骤3210为“否”,并且处理3200前进到步骤3212。当在图像级别未启用LMCS时,也未对视频帧的该图像的所有条带启用LMCS。在一些实施例中,当ph_lmcs_enabled_flag具有值“0”时,步骤3210为“否”。如果在图像级别启用LMCS,则步骤3210为“是”,并且处理3200前进到步骤3214。当在图像级别启用LMCS时,则可以启用图像中的所有条带。在一些实施例中,当ph_lmcs_enabled_flag具有“1”值时,步骤3210为“是”。
在一些附加的或替代的实施例中,响应于对确定于图像级别启用LMCS(步骤3210-是),装置400可以检查指示色度缩放(CS)是否在视频帧的图像级别的被启用的第三控制标志的值。如图18所示,ph_chroma_residual_scale_flag可以是第三控制标志的示例。在一些实施例中,当ph_chroma_residual_scale_flag等于1时启用CS,并且当ph_chroma_residual_scale_flag等于0时不启用CS。
在步骤3212中,装置400检查图像是否是序列中的最后一个图像。如果步骤3212为“否”,则装置400前进到步骤3208以确定用于视频帧的序列下一个图像的在图像处的控制标志。不管步骤3212是“是”还是“否”,过程3200都前进到步骤3222。
在步骤3214中,如在步骤3208中确定的,装置400确定用于视频帧的图像中的条带在条带级别的控制标志。条带的控制标志可以是图像中特定条带的状态的指示。在一些实施例中,所述控制标志可以是视频帧中的图像的条带是否使用具有色度缩放的亮度映射(LMCS)来编码的指示。条带的控制标志可以是第四控制标志的示例。如图18所示的示例,slice_lmcs_enabled_flag可以是条带级别的LMCS的控制标志。在一些实施例中,slice_lmcs_enabled_flag可以具有“1”或“0”值。
在步骤3216中,装置400检查条带级别的LMCS的控制标志的值,以确定LMCS在条带级别是否被启用。如果在条带级别未启用LMCS,则步骤3216为“否”,并且过程3200前进到步骤3218。在一些实施例中,当slice_lmcs_enabled_flag具有值“0”时,步骤3216为“否”。如果在条带级别启用LMCS,则步骤3216为“是”,并且过程3200前进到步骤3220。在一些实施例中,当slice_lmcs_enabled_flag具有值“1”时,步骤3216是“是”。
在步骤3218中,装置400检查条带是否是图像中的最后一个条带。如果步骤3218为“否”,则装置400前进到步骤3214以确定用于视频帧的图像中下一个条带的在条带处的控制标志。不管步骤3218是“是”还是“否”,过程3200都前进到步骤3222。
在步骤3220中,装置400在启用亮度映射(LM)并允许启用色度缩放的情况下对视频帧的条带、图像和/或序列进行编码。在一些实施例中,响应于指示在图像级别启用LMCS的第二标记,当slice_lmcs_enabled_flag等于1时,亮度映射(LM)被启用并且CS可以在条带级别被启用。
在步骤3222中,装置400在亮度映射和色度缩放未启用的情况下对视频帧的条带、图像和/或序列进行编码。
图33是与本公开的一致的描述用于确定使用自适应环路滤波器(ALF)对视频帧进行编码的示例性过程的流程图。过程3300可以由装置400及其子组件(诸如处理器3102)执行。
在步骤3302中,装置400接收一个或多个视频帧。
在步骤3304中,装置400在序列级别上确定视频帧的控制标志。在一些实施例中,控制标志可以是是否使用自适应环路滤波器(ALF)对视频帧进行编码的指示。所述序列的控制标志的示例可以是第一控制标志。如图18所示的示例,sps_alf_enabled_flag可以是在序列级别的ALF的控制标志。在一些实施例中,sps_alf_enabled_flag可以具有值“1”或“0”。在一些实施例中,如果没有指定或缺少sps_alf_enabled_flag的值,则默认其值可以是“0”。
在步骤3306中,装置400检查序列级别的ALF的控制标志的值,以确定是否在序列级别启用了ALF。如果在序列级别未启用ALF,则步骤3306为“否”,并且过程3300前进到步骤3322。当在序列级别未启用ALF时,ALF也未针对视频帧的所有图像和所有条带启用。在一些实施例中,当sps_alf_enabled_flag具有值“0”时,步骤3306为“否”。如果在序列级别启用了ALF,则步骤3306为“是”,并且过程3300前进到步骤3308。当在序列级别启用ALF时,序列中的所有图像都可以启用。在一些实施例中,当sps_alf_enabled_flag具有值“1”时,步骤3306为“是”。
在步骤3308中,装置400确定用于视频帧的序列中的图像在图像级别的控制标志。在一些实施例中,控制标志可以是是否要使用自适应环路滤波器(ALF)对视频帧的图像进行编码的指示。图像的控制标志的示例可以是第二控制标志。如图22A和图22B,ph_alf_enabled_flag可以是用于在图像级别的ALF的控制标志。在一些实施例中,在图像级的控制标志存在于图像头中。在一些实施例中,ph_alf_enabled_flag可以具有值“1”或“0”。在一些实施例中,如果未指定或缺少ph_alf_enabled_flag的值,则默认值可以是“0”。
在步骤3310中,装置400检查图像级别的ALF的控制标志的值,以确定是否在图像级启用ALF。如果在图像级别未启用ALF,则步骤3310为“否”,并且过程3300前进步骤3312。当在图像级别未启用ALF时,ALF也未针对视频帧的该图像的所有条带启用。在一些实施例中,当ph_alf_enabled_flag具有值“0”时,步骤3310为“否”。如果在图像级别启用ALF,则步骤3310为“是”,并且过程3300前进到步骤3314。当在图像级别启用ALF时,可以启用序列中的所有图像。在一些实施例中,当ph_alf_enabled_flag具有值“1”时,步骤3310为“是”。
在一些附加或替代实施例中,第二控制标志可以是用于图像级别或条带级别的控制标志,这取决于在图像参数集(PPS)处用信号通知的第三控制标志。
在一些附加或替代实施例中,响应于确定为图像级别启用ALF(步骤3310-是),装置400可以检查第四控制标志的值,该第四控制标志指示在Cb颜色颜色分量的视频帧的图像级别是否启用了交叉分量自适应环路滤波器(CCALF)。在图22A中,ph_cc_alf_cb_enabled_flag可以是第四控制标志的示例。
在一些附加或替代实施例中,响应于确定为图像级别启用ALF(步骤3310-是),,装置400可以检查第五控制标志的值,该第五控制标志指示是否在Cr颜色分量的视频帧的图像级别启用了交叉分量自适应环路滤波器(CCALF)。在图22A中,ph_cc_alf_cr_enabled_flag可以是第五控制标志的示例。
在步骤3312中,装置400检查图像是否是序列中的最后一个图像。如果步骤3312为“否”,则装置400前进到步骤3308,以确定用于视频帧序列中下一个图像的在图像级别的控制标志。不管步骤3312是“是”还是“否”,过程3300都前进到步骤3322。
在步骤3314中,如在步骤3308中确定的,装置400确定用于视频帧的图像中的条带在条带级别上的控制标志。条带的控制标志可以是图像中特定条带的状态的指示。在一些实施例中,控制标志可以是是否要使用自适应环路滤波器(ALF)对视频帧中的图像的条带进行编码的指示。条带的控制标志的示例可以是第三控制标志。如22A和图22A所示,slice_alf_enabled_flag可以是用于AFL在条带级别的控制标志。在一些实施例中,slice_alf_enabled_flag可以具有值“1”或“0”。在一些实施例中,如果没有指定或缺少slice_alf_enabled_flag的值,则默认值其可以是“0”。
在步骤3316中,装置400检查条带级别的ALF的控制标志的值,以确定是否在条带级别启用了ALF。如果在条带级别未启用ALF,则步骤3310为“否”,并且过程3300前进到步骤3318。在一些实施例中,当slice_alf_enabled_flag具有值“0”时,步骤3316为“否”。如果在图像级别启用ALF,则步骤3316为“是”,并且过程3300前进到步骤3320。在一些实施例中,当slice_alf_enabled_flag具有值“1”时,步骤3316为“是”。
在步骤3318中,装置400检查条带是否是图像中的最后一个条带。如果步骤3318为“否”,则装置400前进到步骤3314以确定用于视频帧的图像中下一个条带在条带处的控制标志。不管步骤3318是“是”还是“否”,过程3300都前进到步骤3322。
在步骤3320中,装置400使用自适应环路滤波器(ALF)对视频帧的条带、图像和/或序列进行编码。在一些实施例中,当启用AFL时,启用颜色分量Y、Cb或Cr。
在步骤3322中,装置400在未启用自适应环路滤波器(ALF)的情况下对视频帧的条带、图像和/或序列进行编码。
图34是根据本公开的实施例的描述用于确定使用样本自适应偏移(SAO)来对视频帧进行编码的示例性过程的流程图。过程3400可以由装置400及其子组件(诸如处理器3102)执行。
在步骤3402中,装置400接收一个或多个视频帧。
在步骤3404中,装置400在序列级别上确定视频帧的控制标志。在一些实施例中,控制标志可以是是否使用样本自适应偏移(SAO)对视频帧进行编码的指示。所述序列的控制标志的示例可以是第一控制标志。如图26所示描述,sps_sao_enabled_flag可以是序列级别的ALF的控制标志。在一些实施例中,sps_sao_enabled_flag可以具有值“1”或“0”。
在步骤3406中,装置400检查序列级别的SAO的控制标志的值,以确定是否在序列级别启用了SAO。如果在序列级别未启用SAO,则步骤3406为“否”,并且过程3400前进到步骤3422。当在序列级别未启用SAO时,也未对视频帧的所有图像和所有条带启用SAO。在一些实施例中,当sps_sao_enabled_flag具有值“0”时,步骤3406为“否”。如果在序列级别启用SAO,则步骤3406为“是”,并且过程3400前进到步骤3408。当在序列级别启用SAO时,序列中的所有图像都可被启用。在一些实施例中,当sps_sao_enabled_flag具有值“1”时,步骤3406为“是”。
在步骤3408中,装置400确定用于视频帧的序列中的图像在图像级别的控制标志。图像的控制标志可以是图像中所有条带的状态的指示。在一些实施例中,控制标志可以是是否要使用样本自适应偏移(SAO)对视频帧的图像进行编码的指示。图像的控制标志的示例可以是第二控制标志。如图26中的示例描述所示,ph_sao_luma_enabled_flag或ph_sao_chroma_enabled_flag之一,或两者都可以是图像级别的SAO的控制标志。在一些实施例中,在图像级别的控制标志存在于图像头中。在一些实施例中,ph_sao_luma_enabled_flag或ph_sao_chroma_enabled_flag可以具有值“1”或“0”。在一些实施例中,如果未指定或缺少ph_sao_luma_enabled_flag或ph_sao_chroma_enabled_flag的值,则其默认值可以是“0”。本领域的技术人员或普通技术人员现在将理解图34所示的过程3400可以同时适用于SAO的亮度分量和SAO的色度分量。
在步骤3410中,装置400检查图像级别的SAO的控制标志的值,以确定是否启用了图像级别的SAO。如果在图像级别未启用SAO,则步骤3410为“否”,并且过程3400前进到步骤3412。当未在图像级别启用SAO时,也未对视频帧的该图像的所有条带启用SAO。在一些实施例中,当ph_sao_luma_enabled_flag或ph_sao_chroma_enabled_flag具有值“0”时,步骤3410为“否”。如果在图像级别启用SAO,则步骤3410为“是”,并且过程3400前进到步骤3414。当在图像级别启用SAO时,则可启用图像中的所有条带。在一些实施例中,当ph_sao_luma_enabled_flag或ph_sao_chroma_enabled_flag具有值“1”时,步骤3410为“是”。
在一些附加或替代实施例中,第二控制标志可以是用于图像级别或条带级别的控制标志,这取决于在图像参数集(PPS)处用信号通知的第三控制标志。
在步骤3412中,装置400检查图像是否是序列中的最后一个图像。如果步骤3412为“否”,则装置400前进到步骤3408以确定用于视频帧的序列中下一个图像的图像处的控制标志。不管步骤3412是“是”还是“否”,过程3400都前进到步骤3422。
在步骤3414中,如在步骤3408中确定的,装置400确定用于视频帧的图像中的条带在条带级别上的控制标志。条带的控制标志可以是图像中特定条带的状态的指示。在一些实施例中,控制标志可以是是否要使用样本自适应偏移(SAO)对视频帧中的图像的条带进行编码的指示。条带的控制标志的示例可以是第三控制标志。如图26所示的示例,slice_sao_luma_enabled_flag或slice_sao_chroma_enabled_flag可以是条带级别的SAO的控制标志。在一些实施例中,slice_sao_luma_enabled_flag或slice_sao_chroma_enabled_flag可以具有值“1”或“0”。在一些实施例中,如果未指定或缺少slice_sao_luma_enabled_flag或slice_sao_chroma_enabled_flag的值,则默认值可以是“0”。
在步骤3416中,装置400检查条带级别的SAO的控制标志的值,以确定是否在条带级别启用SAO。如果在条带级别未启用SAO,则步骤3416为“否”,并且过程3400前进到步骤3418。在一些实施例中,当slice_sao_luma_enabled_flag或slice_sao_chroma_enabled_flag具有值“0”时,步骤3416为“否”。如果在条带级别启用SAO,则步骤3416为“是”,并且过程3400前进到步骤3420。在一些实施例中,当slice_sao_luma_enabled_flag或slice_sao_chroma_enabled_flag具有值“1”时,步骤3416为“是”。
在步骤3418中,装置400检查条带是否是图像中的最后一个条带。如果步骤3418为“否”,则装置400前进到步骤3414以确定视频帧的图像中下一个条带的在条带处的控制标志。不管步骤3418是“是”还是“否”,过程3400都前进到步骤3422。
在步骤3420中,装置400使用样本自适应偏移(SAO)(亮度或色度SAO,或基于控制标志的前两者)对视频帧的条带、图像和/或序列进行编码。
在步骤3422中,装置400在未启用的样本自适应偏移(SAO)(亮度或色度SAO,或基于控制标志前两者)的情况下对视频帧的条带、图像和/或序列进行编码。
图35是与本公开的实施例一致的用于确定在禁用去块滤波器的同时对视频帧进行编码的示例性过程的流程图。过程3500可以由装置400及其子组件(诸如处理器3102)执行。
在步骤3502中,装置400接收一个或多个视频帧。
在步骤3504中,装置400在序列级别上确定视频帧的控制标志。序列的控制标志可以是序列中所有图像的状态的指示。在一些实施例中,所述控制标志可以是所述视频帧是否要在去块滤波器被禁用的情况下被编码的指示。序列的控制标志可以是用于在序列级别禁用去块滤波器的禁用标志的示例。在一些实施例中,所述序列级别可以是第一级别。如图3A所示的示例,sps_deblocking_filter_disabled_flag可以是用于在序列级别去块滤波器的控制标志。在一些实施例中,sps_deblocking_filter_disabled_flag可以具有“1”或“0”的值。在步骤3504中,装置400进一步确定用于视频帧的去块滤波器的序列级别的覆盖标志。如图31A所描述示例中,deblocking_filter_override_enabled_flag可以是序列级别的覆盖标志的示例。在一些实施例中,deblocking_filter_override_enabled_flag可以具有“1”或“0”的值。
在步骤3506中,装置400检查用于在序列级禁用去块滤波器的控制标志的值,以确定是否在序列级别禁用去块。如果在序列级别未禁用去块,则步骤3506为“否”,并且过程3500前进到步骤3512。当在序列级禁用去块时,过程3500前进到步骤3508。在一些实施例中,当sps_deblocking_filter_disabled_flag具有值“0”时,步骤3506为“否”。在一些实施例中,当sps_deblocking_filter_disabled_flag具有值“1”时,步骤3406为“是”。
在步骤3508中,装置400检查用于在序列级禁用去块滤波器的覆盖标志的值。如果针对序列级别存在覆盖标志,则步骤3508为“是”,并且过程3500前进到步骤3512。在一些实施例中,当deblocking_filter_override_enabled_flag可以具有值“1”时步骤3508是“是”。如果针对序列级别不存在覆盖标志,则步骤3508是“否”,并且过程3500前进到步骤351在一些实施例中,当deblocking_filter_override_enabled_flag具有“0”的值时,步骤3508是“否”。
在步骤3510中,当对整个视频帧序列禁用去块,并且不存在覆盖标志时,当对该序列进行视频帧编码时,不使用去块滤波器。
在步骤3512中,装置400为确定序列中的图像在图像级别的视频帧的控制标志。图像的控制标志可以是图像中所有条带的状态的指示。在一些实施例中,所述控制标志可以是序列中的视频帧的图像是否要在去块滤波器被禁用的情况下被编码的指示。在一些实施例中,图像级别可以是第二级。图像的控制标志可以是用于在图像级别禁用去块滤波器的禁用标志的示例。如图3B所示的示例,ph_deblocking_filter_disabled_flag可以是用于在图像级别去块滤波器的控制标志。在一些实施例中,ph_deblocking_filter_disabled_flag可以具有“1”或“0”的值。在步骤3512中,装置400进一步确定用于视频帧的去块滤波器图像级别的覆盖标志。如图31B描述的示例中,ph_deblocking_filter_override_enabled_flag可以是在图像级别的覆盖标志的示例。在一些实施例中,ph_deblocking_filter_override_enabled_flag可以具有“1”或“0”的值。
在一些附加的或替代的实施例中,第一级可以是图像级别的集合,并且在图像参数集(PPS)处用信号通知第一级的第一控制标志。在一些附加的或替代的实施例中,所述第二级是所述图像级别或条带级别中的一个,并且在图像头(PH)或条带头(SH)处用信号通知所述第二级的第二控制标志。
在步骤3516中,装置400检查用于在图像级别禁用去块滤波器的控制标志的值,以确定是否在图像级别禁用去块。如果在图像级别未禁用去块,则步骤3516为“否”,并且过程3500前进到步骤3522。当在图像级别禁用去块时,过程3500前进到步骤3518。在一些实施例中,当ph_deblocking_filter_disabled_flag具有值“0”时,步骤35 16为“否”。在一些实施例中,当ph_deblocking_filter_disabled_flag具有值“1”时,步骤3516为“是”。
在步骤3518中,装置310检查用于在图像级别禁用去块滤波器的覆盖标志的值。如果针对图像级别存在覆盖标志,则步骤3518为“是”,并且过程3500前进到步骤3522。在一些实施例中,当ph_deblocking_filter_override_enabled_flag可以具有值“1”时,步骤3588是“是”。如果针对序列级别不存在覆盖标志,则步骤35 88是“否”,并且过程3500前进到步骤3520。在一些实施例中,当ph_deblocking_filter_override_enabled_flag具有“0”的值时,步骤3518是“否”。
在步骤3520中,当对序列中的视频帧的图像禁用去块,并且不存在覆盖标志时,当视频帧在被编码时,不对该特定图像使用去块滤波器。
在步骤3514中,装置400检查序列的所有图像是否已被处理。如果步骤3514为“否”,则装置400前进到步骤3512以用于序列中的下一幅图像。
在步骤3522中,如在步骤3516中确定的那样,装置400确定视频帧的图像中的条带在条带级别的控制标志。条带的控制标志可以是图像中特定条带的状态的指示。在一些实施例中,所述控制标志可以是所述视频帧的图像中的条带是否要在去块滤波器被禁用的情况下被编码的指示。图像的控制标志可以是用于在条带级别禁用去块滤波器的禁用标志的示例。如图31B所示的示例,slice_deblocking_filter_disabled_flag可以是用于在条带级别去块滤波器的控制标志。在一些实施例中,slice_deblocking_filter_disabled_flag可以具有“1”或“0”的值。在步骤3522中,装置400进一步确定用于视频帧的去块滤波器的条带级别的覆盖标志。如图31B所示的示例,slice_deblocking_filter_override_enabled_flag可以是在条带级别的覆盖标志的示例。在一些实施例中,slice_deblocking_filter_override_enabled_flag可以具有“1”或“0”的值。
在步骤3526中,装置400检查用于在条带级别禁用去块滤波器的控制标志的值,以确定在条带级别是否禁用去块。如果在条带级别未禁用去块,则步骤3526为“否”,并且过程3500前进到步骤3532。当在条带级禁用去块时,过程3500进行到步骤3528。在一些实施例中,当slice_deblocking_filter_disabled_flag具有“0”的值时,步骤3526为“否”。在一些实施例中,当slice_deblocking_filter_disabled_flag具有“1”的值时,步骤3526为“是”。
在步骤3528中,装置检查用于在条带级别禁用去块滤波器的覆盖标志的值。如果针对条带级别存在覆盖标志,则步骤3528为“是”,并且过程3500前进到步骤3532。在一些实施例中,当slice_deblocking_filter_override_enabled_flag具有值“1”时,步骤3528是“是”。如果对于条带级别不存在覆盖标志,则步骤3528是“否”,并且过程3500进行到步骤3530。在一些实施例中,当slice_deblocking_filter_override_enabled_flag具有“0”的值时,步骤3528是“否”。
在步骤3530中,当对序列中的视频帧中的图像的条带禁用去块,并且不存在覆盖标志时,当视频帧在被编码时,不对该条带使用去块滤波器。
在步骤3524中,装置400检查图像的所有条带是否已经被处理。如果步骤3524为“否”,则装置400针对图像中的下一条带再次前进到步骤3522。
在步骤3532中,装置400在去块滤波器的情况下对视频帧的序列、图像和/条带进行编码。
在一些实施例中,还提供了包括指令的非暂时性计算机可读存储介质,并且所述指令可以由装置(诸如所公开的编码器和解码器)执行,用于执行上述方法。非暂时性介质的常见形式包括,例如,软盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、任何具有孔图案的物理介质、RAM、PROM和EPROM、FLASH-EPROM或任何其他闪存、NVRAM、高速缓存、寄存器、任何其他存储芯片或盒式存储,以及它们的联网版本。该装置可以包括一个或多个处理器(cpu)、输入/输出接口、网络接口和/或存储器。
可以使用以下条款进一步描述实施例:
1、一种视频编码方法,包括:
接收视频序列;
通过使用用于具有色度缩放的亮度映射(LMCS)的控制标志,在序列级别、图像级别或条带级别上对所述视频序列进行编码,其中所述序列级别、所述图像级别和所述条带级别是从高到低排序的级别;
用信号通知一第一控制标志,所述第一控制标志指示是否在第一级别启用所述LMCS;以及
响应于所述第一控制标志指示在所述第一级别启用所述LMCS,用信号通知一第二控制标志,所述第二控制标志指示是否在第二级别启用LMCS,其中:
当所述第二控制标志的值等于1时,在所述第二级别启用所述LMCS;
当所述第二控制标志的值等于0时,在所述第二级别禁用所述LMCS;以及
所述第二级别低于所述第一级别的级别。
2、根据条款1所述的视频编码方法,其中所述第一控制标志是在所述序列级别的用于所述LMCS的控制标志,并且所述第二控制标志是在所述图像级别的用于所述LMCS的控制标志。
3、根据条款2所述的视频编码方法,还包括:
响应于所述第二控制标志指示在所述第二级别启用所述LMCS,用信号通知一第三控制标志,所述第三控制标志指示是否在所述第二级别启用色度缩放(CS):
当所述第三控制标志的值等于1时,在所述第二级别启用所述CS;以及
当所述第三控制标志的值等于0时,在所述第二级别禁用所述CS。
4、根据条款1或2所述的视频编码方法,还包括:
响应于所述第二标志指示在所述第二级别启用所述LMCS,用信号通知一第四控制标志,所述第四控制标志指示是否在第三级别应用所述LMCS,其中:
当所述第四控制标志的值等于1时,在所述第三级别应用亮度映射(LM),并且可以应用CS;
当所述第四控制标志的值等于0时,在所述第三级别不应用所述LMCS;以及
所述第三级别是低于第所述第二级别的级别。
5、根据条款4所述的视频编码方法,其中,所述第三级别是所述条带级别。
6、根据条款4所述的视频编码方法,其中,当不用信号通知所述第二控制标志时,对于与所述第二控制标志相关联的所述图像,不启用所述LMCS。
7、根据条款4或5所述的视频编码方法,其中,当不发信号通知所述第四控制标志时,对于与所述第四控制标志相关联的条带,不应用所述LMCS。
8、根据条款1所述的视频编码方法,其中当用信号通知所述第一控制标志时,在不用信号通知所述第二控制标志时,不启用处于较低级别的LMCS。
9、根据条款1或8所述的视频编码方法,其中,当不用信号通知所述第一控制标志时,无论是否用信号通知所述第二控制标志,都不启用处于较低级别的LMCS。
10、一种视频编码方法,包括:
接收视频序列;
通过使用用于自适应环路滤波器(ALF)的控制标志,在序列级别、图像级别或条带级别上对所述视频序列进行编码,其中所述序列级别、所述图像级别和所述条带级别是从高到低排序的级别。
用信号通知一第一控制标志,所述第一控制标志指示是否在第一级别启用所述ALF;以及
响应于所述第一控制标志指示在所述第一级别启用所述ALF,用信号通知一第二控制标志,所述第二控制标志指示是否在第二级别启用所述ALF,其中:
当所述第二控制标志的值等于1时,在所述第二级别启用所述ALF;
当所述第二控制标志的值等于0时,在所述第二级别禁用所述ALF;以及
所述第二级别是低于所述第一级别的级别。
11、根据条款10所述的视频编码方法,进一步地,其中所述第一控制标志是在所述序列级别的用于ALF的控制标志,并且,取决于在图像参数集(PPS)用信号通知的第三控制标志,所述第二控制标志是在图像级别或条带级别中的一种的用于ALF的控制标志。
12、根据条款10或11所述的视频编码方法,还包括:
响应于所述第二标志指示在所述第二级别启用所述ALF,用信号通知一第四控制标志,所述第四控制标志指示是否在所述第二级别启用用于Cb颜色分量的交叉分量自适应环路滤波器(CCALF),其中:
当所述第四控制标志的值等于1时,在所述第二级别启用用于Cb颜色分量的所述CCALF;以及
当所述第四控制标志的值等于0时,在所述第二级别禁用用于Cb颜色分量的所述CCALF;以及
响应于所述第二标志指示在所述第二级别启用所述ALF,用信号通知一第五控制标志,所述第五控制标志指示是否在所述第二级别启用用于Cr颜色分量的交叉分量自适应环路滤波器(CCALF),其中:
当所述第五控制标志的值等于1时,在所述第二级别启用用于Cr颜色分量的所述CCALF;以及
当所述第五控制标志的值等于0时,在所述第二级别禁用用于对Cr颜色分量的CCALF。
13、根据条款10所述的视频编码方法,其中当用信号通知所述第一控制标志,不用信号通知所述第二控制标志时,不启用较低级别的所述ALF。
14、根据条款10或11所述的视频编码方法,其中,当不用信号通知所述第一控制标志时,无论是否用信号通知所述第二控制标志,都不启用处于较低级别的所述ALF。
15、根据条款10至12所述的视频编码方法,其中,当在图像的条带头中确定所述ALF的参数时,所述图像的所有条带将与所述ALF的参数相同。
16、根据条款10至12所述的视频编码方法,其中,当不用信号通知所述第二控制标志时,对于与所述第二控制标志相关联的图像,不启用ALF。
17、根据条款10至12所述的视频编码方法,其中,当不用信号通知所述第四控制标志或所述第五控制标志时,对于与所述第二控制标志相关联的所述图像的Cb或Cr分量,不启用CCALF。
18、根据条款10至12所述的视频编码方法,其中,当不用信号通知所述第二控制标志时,对于与所述第二控制标志相关联的条带,不应用ALF。
19、根据条款10-12所述的视频编码方法,其中,当启用AFL时,启用颜色分量Y、Cb或Cr。
20、一种视频编码方法,包括:
接收视频序列;
通过使用用于样本自适应偏移(SAO)的控制标志,在序列级别、图像级别或条带级别对所述视频序列进行编码,其中,所述序列级别、所述图像级别和所述条带级别是从高到低排序的级别;
用信号通知一第一控制标志,所述第一控制标志指示是否在第一级别启用所述SAO;以及
响应于所述第一控制标志指示在所述第一级别启用所述SAO,用信号通知一第二控制标志,所述第二控制标志指示是否在第二级别启用所述SAO,其中:
当所述第二控制标志的值等于1时,在所述第二级别启用用于亮度分量的所述SAO;
当所述第二控制标志的值等于0时,在所述第二级别禁用用于亮度分量的所述SAO;以及
第二级别是低于所述第一级别的级别。
21、根据条款20所述的视频编码方法,还包括在所述第二控制标志处用信号通知的第三标志,其中:
当所述第三控制标志的值等于1时,在所述第二级别启用用于色度分量所述SAO;以及
当所述第三控制标志的值等于1时,在所述第二级别禁用用于色度分量的所述SAO。
22、根据条款20或21所述的视频编码方法,其中,所述第一控制标志是在所述序列级别用于SAO的控制标志,并且,取决于在图像参数集(PPS)中用信号通知的第三标志,所述第二控制标志是图像级别或条带级别之一处的用于SAO的控制标志。
23、根据条款20或21所述的视频编码方法,其中,当不用信号通知所述第二控制标志时,针对与所述第二控制标志相关联的所述图像的亮度分量禁用所述SAO。
24、根据条款20或21所述的视频编码方法,其中,当不用信号通知所述第三控制标志时,针对与所述第三控制标志相关联的所述图像的色度分量禁用所述SAO。
25、根据条款20所述的视频编码方法,其中当用信号通知所述第一控制标志,不用信号通知所述第二控制标志时,禁用处于较低级别的所述SAO。
26、根据条款20或21所述的视频编码方法,其中,当不用信号通知所述第一控制标志时,无论是否用信号通知所述第二控制标志,都禁用较低级别的所述SAO。
27、根据条款19至26所述的视频编码方法,其中,当启用所述SAO时,在去块滤波器处理之后,将SAO过程应用于重建图像。
28、一种视频编码方法,包括:
接收视频序列;以及
通过使用用于去块滤波器的控制标志,在序列级别、图像集级别、图像级别或条带级别对所述视频序列进行编码,其中:
当第一级别的第一控制标志的值等于1并且不用信号通知第二级别的第二控制标志的值时,在所述第一级别禁用所述去块滤波器,并且
当所述第一级别的所述第一控制标志的值等于0并且不用信号通知所述第二级别的所述第二控制标志的值时,在所述第一级别启用所述去块滤波器;以及
所述第一级别是高于所述第二级别的级别。
29、根据条款28所述的视频编码方法,其中所述第一级别是所述图像集级别,并且在图像参数集(PPS)用信号通知所述第一控制标志;并且所述第二级别是所述图像级别或所述条带级别中的一种,并且在图像头(PH)或条带头(SH)之一中发信号通知所述第二控制标志。
30、根据条款28所述的视频方法,还包括:在PPS中用信号通知第三标志以指示是在所述图像级别还是在所述条带级别用信号通知所述第二标志。
31、根据条款28所述的视频编码方法,还包括通过使用用于去块滤波器的覆盖标志,在所述序列级别、所述图像集级别、所述图像级别或所述条带级别,对所述视频序列进行编码,其中所述覆盖标志用于指示是否可以用信号通知较低级别的控制标志以覆盖较高级别的控制标志。
32、根据条款28所述的视频编码方法,还包括:通过使用用于去块滤波器的覆盖标志,在所述序列级别、所述图像集级别、所述图像级别或所述条带级别,对所述视频序列进行编码,其中所述覆盖标志用于指示是否可以用信号通知较低级别的控制标志以覆盖较高级别的控制标志,以及
当在所述序列级别、所述图像集级别、所述图像级别或所述条带级别发信号通知的较高控制标志等于1时,在所述较低级别的控制标志不覆盖所述较高控制标志时,去块滤波器不应用于相应的序列、图像集、图像、或条带。
33、一种视频解码方法,包括:
接收包含视频序列的位流;
通过使用用于具有色度缩放的亮度映射(LMCS)的控制标志,在序列级别、图像级别或条带级别对所述视频序列进行解码,其中,所述序列级别、所述图像级别和所述条带级别是从高到低排序的级别;
确定第一控制标志是否指示在第一级别启用所述LMCS;以及
响应于确定所述第一控制标志指示在所述第一级别启用所述LMCS,确定第二控制标志是否指示在第二级别启用LMCS,其中:
当所述第二控制标志的值等于1时,在所述第二级别启用所述LMCS;
当所述第二控制标志的值等于0时,在所述第二级别禁用所述LMCS;以及
所述第二级别是低于所述第一级别的级别。
34、根据条款33所述的视频解码方法,其中所述第一控制标志是所述序列级别的用于所述LMCS的控制标志,并且所述第二控制标志是所述图像级别的用于所述LMCS的控制标志。
35、根据条款34所述的视频解码方法,还包括:
响应于确定所述第二控制标志指示在所述第二级别启用所述LMCS,确定第三控制标志是否指示在所述第二级启用色度缩放(CS),其中:
当所述第三控制标志的值等于1时,在所述第二级别启用所述CS;以及
当所述第三控制标志的值等于0时,在所述第二级别禁用所述CS。
36、根据条款33或34所述的视频解码方法,还包括:
响应于确定所述第二标志指示在所述第二级别启用所述LMCS,确定第四控制标志指示是否在第三级别应用LMCS,其中:
当所述第四控制标志的值等于1时,在所述第三级别应用亮度映射(LM),并且可以应用CS;
当所述第四控制标志的值等于0时,不在所述第三级别应用所述LMCS;以及
所述第三级别是低于所述第二级别的级别。
37、根据条款36所述的视频解码方法,其中所述第三级别是所述条带级别。
38、根据条款36所述的视频解码方法,其中当不用信号通知所述第二控制标志时,对于与所述第二控制标志相关联的所述图像,不启用LMCS。
39、根据条款36或38所述的视频解码方法,其中,当不用信号通知所述第四控制标志时,对于与所述第四控制标志相关联的条带,不应用LMCS。
40、根据条款33所述的方法,其中,当用信号通知所述第一控制标志,不用信号通知所述第二控制标志时,不启用处于较低级别的所述LMCS。
41、根据条款33或40所述的视频解码方法,其中,当不用信号通知所述第一控制标志时,不管是否用信号通知所述第二控制标志,不启用处于较低级别的所述LMCS。
42、一种视频解码方法,包括:
接收包含视频序列的位流;
通过使用用于自适应环路滤波器(ALF)的控制标志,在序列级别、图像级别或条带级别对所述视频序列进行解码,其中,所述序列级别、所述图像级别和所述条带级别是从高到低排序的级别;
确定第一控制标志是否指示在第一级别启用所述ALF;以及
响应于确定所述第一控制标志指示在所述第一级别启用所述ALF,确定第二控制标志是否指示在第二级别启用ALF,其中:
当所述第二控制标志的值等于1时,在所述第二级别启用所述ALF;
当所述第二控制标志的值等于0时,在所述第二级别禁用所述ALF;以及
所述第二级别是低于所述第一级别的级别。
43、根据条款42所述的视频解码方法,进一步的,其中所述第一控制标志是在序列级别的用于ALF的控制标志,并且,取决于在图像参数集(PPS)中用信号通知的第三控制标志,所述第二控制标志是在图像级别或条带级别之一中用于ALF的控制标志。
44、根据条款42或43所述的视频解码方法,还包括:
响应于确定所述第二标志指示在所述第二级别启用所述ALF,确定第四控制标志是否指示在所述第二级别启用用于Cb颜色分量的交叉分量自适应环路滤波器(CCALF),其中:
当所述第四控制标志的值等于1时,在所述第二级别启用用于Cb颜色分量CCALF;以及
当所述第四控制标志的值等于0时,在所述第二级别禁用用于Cb颜色分量的所述CCALF;以及
响应于确定所述第二标志指示在所述第二级别启用所述ALF,用信号通知第五控制标志,所述第五控制标志指示在所述第二级启用用于Cr颜色分量的交叉分量自适应环路滤波器(CCALF),其中:
当所述第五控制标志的值等于1时,在所述第二级别启用用于Cr颜色分量的所述CCALF;以及
当所述第五控制标志的值等于0时,在所述第二级别禁用用于Cr颜色分量的CCALF。
45、根据条款42所述的视频解码方法,其中当所述第一控制标志存在时,当所述第二控制标志不存在时,不启用所述较低级别的ALF。
46、根据条款42或43所述的视频解码方法,其中,当所述第一控制标志不存在时,不启用处于较低级别的所述ALF,而不管是否存在所述第二控制标志。
47、根据条款42至44所述的视频解码方法,其中,当在图像的条带头部中确定所述ALF的参数时,所述图像的所有条带将与所述ALF的参数相同。
48、根据条款42至44所述的视频解码方法,其中,当所述第二控制标志不存在时,对于与所述第二控制标志相关联的图像,不启用ALF。
49、根据条款42至44所述的视频编码方法,其中,当不用信号通知所述第四控制标志或所述第五控制标志时,对于与所述第二控制标志相关联的所述图像的Cb或Cr分量,不启用CCALF。
50、根据条款42至44所述的视频解码方法,其中,当所述第二控制标志不存在时,对于与所述第二控制标志相关联的条带,不启用ALF。
51、根据条款42至44所述的视频解码方法,其中,当启用AFL时,启用颜色分量Y、Cb或Cr。
52、一种视频解码方法,包括:
接收包含视频序列的位流;
通过使用用于样本自适应偏移(SAO)的控制标志,在序列级别、图像级别或条带级别对所述视频序列进行解码,其中,所述序列级别、所述图像级别和所述条带级别是从高到低排序的级别;
确定第一控制标志是否指示在第一级别启用所述SAO;以及
响应于确定所述第一控制标志指示在所述第一级别启用SAO,确定第二控制标志是否指示在第二级别启用所述SAO,其中:
当所述第二控制标志的值等于1时,在所述第二级别启用用于亮度分量的所述SAO;
当所述第二控制标志的值等于0时,在所述第二级别禁用用于亮度分量的所述SAO;以及
所述第二级别是低于所述第一级别的级别。
53、根据条款52所述的视频解码方法,还包括
确定第三标志是否指示在所述第二级别启用所述SAO,其中:
当所述第三控制标志的值等于1时,在所述第二级别启用用于色度分量的所述SAO;以及
当所述第三控制标志的值等于1时,在所述第二级别禁用用于色度分量的所述SAO。
54、根据条款52或53所述的视频解码方法,其中,所述第一控制标志是在序列级别用于SAO的控制标志,并且,取决于在图像参数集(PPS)中用信号通知的第三标志,所述第二控制标志是在图像级别或条带级别之一中用于SAO的控制标志。
55、根据条款52或53所述的视频编码方法,其中,当所述第二控制标志不存在时,针对与所述第二控制标志相关联的所述图像的亮度分量,禁用所述SAO。
56、根据条款52或53所述的视频编码方法,其中,当所述第三控制标志不存在时,对于与所述第三控制标志相关联的图像的色度分量,禁用所述SAO。
57、根据条款52所述的视频解码方法,其中当所述第一控制标志存在时,当所述第二控制标志不存在时,禁用处于较低级别的所述SAO。
58、根据条款52或54所述的视频解码方法,其中,当所述第一控制标志不存在时,无论是否存在所述第二控制标志,都禁用处于较低级别的所述SAO。
59、根据条款52至58所述的视频解码方法,其中,当启用所述SAO时,在去块滤波器过程之后,将SAO过程应用于重建图像。
60、一种视频解码方法,包括:
接收包含视频序列的位流;以及
通过使用用于去块滤波器控制标志,在序列级别、图像集级别、图像级别或条带级别,对所述视频序列进行解码,其中:
当第一级别的第一控制标志的值等于1并且第二级别的第二控制标志不存在时,在所述第一级别禁用所述去块滤波器,并且
当所述第一级别的所述第一控制标志的值等于0并且所述第二级别的所述第二控制标志不存在时,在所述第一级别启用所述去块滤波器;以及所述第一级别是低于所述第二级别的级别。
61、根据条款60所述的视频解码方法,其中,所述第一级别是所述图像集级别,并且在图像参数集(PPS)中用信号通知所述第一控制标志;并且所述第二级别是所述图像级别或所述条带级别中的一个,并且在图像头(PH)或条带头(SH)之一中用信号通知所述第二控制标志。
62、根据条款60所述的视频方法,还包括:基于在PPS中用信号发送的第三标记,确定所述第二标记是在所述图像级别还是在条带级别被信号发送。
63、根据条款60所述的视频解码方法,还包括通过使用用于去块滤波器的覆盖标志,在所述序列级别、所述图像集级别、所述图像级别或所述条带级别,对所述视频序列进行解码,其中所述覆盖标志用于指示是否存用于覆盖较高级别控制标志的较低级别控制标志。
64、根据条款60所述的视频解码方法,还包括:通过使用用于去块滤波器的覆盖标志,在所述序列级别、所述图像集级别、所述图像级别或所述条带级别,对所述视频序列进行解码,其中所述覆盖标志用于指示是否存用于覆盖较高级别控制标志的较低级别控制标志,以及
当在所述序列级别、所述图像集级别、所述图像级别或所述条带级别存在的较高控制标志等于1时,在较低级别的控制标志不覆盖较高的控制标志时,去块滤波器不应用于相应的序列、图像集、图像、或条带。
应该注意的是,本文中的诸如“第一”和“第二”的关系术语仅用于将实体或操作与另一实体或操作区分开来,而不要求或暗示这些实体或操作之间的任何实际关系或顺序。此外,词语“包括”、“具有”、“包含”和“包括”和其他类似的形式在含义上是等效的,并且是开放式的,因为在这些词语中的任何一个后面的一个或多个项目并不意味着是这样一个或多个项目的详尽列表,或者意味着仅限于列出的一个或多个项目。
如本文所用,除非另有特别说明,术语“或”包括所有可能的组合,除非在不可行的情况下。例如,如果声明数据库可包括A或B,则除非另有明确声明或不可行,否则数据库可包括A、或B、或A和B。作为第二示例,如果声明数据库可以包括A、B或C,则除非另有明确说明或不可行,否则数据库可以包括A、或B、或C、或A和B、或A和C、或B和C、或A,B和C。
应当理解,上述实施例可以通过硬件、或软件(程序代码)、或硬件和软件的组合来实现。如果通过软件实现,则可以将其存储在上述计算机可读介质中。该软件在由处理器执行时可以执行所公开的方法。本公开中描述的计算单元和其他功能单元可以通过硬件或软件或硬件和软件的组合来实现。本领域普通技术人员还将理解,可以将上述多个模块/单元组合为一个模块/单元,并且可以将上述模块/单元中的每一个进一步划分为多个子模块/子单元。
在前面的说明书中,已经参考许多具体细节描述了实施例,这些具体细节可以随实施而变化。可以对所描述的实施例进行某些修改和变化。通过考虑本文公开的本发明的说明书和实践,其他实施例对于本领域技术人员来说是显而易见的。本说明书和实施例仅被认为是示例性的,本发明的真正范围和精神由所附的权利要求指示。附图所示的步骤序列仅用于说明目的,而不旨在限于任何特定的步骤序列。因此,本领域技术人员可以理解,这些步骤可以在实施相同方法的同时以不同的顺序执行。
在附图和说明书中,已经公开了示例性实施例。然而,可以对这些实施例进行许多变化和修改。因此,尽管采用了特定的术语,但它们仅在通用和描述性的意义上使用,而不是出于限制的目的。