具体实施方式
现在将详细参考示例性实施例,其示例在附图中示出。以下描述参照附图,除非另有说明,其中不同附图中的相同数字表示相同或相似的元件。在示例性实施例的以下描述中阐述的实施方式并不代表与本公开一致的所有实施方式。相反,它们仅是与如所附权利要求中所述的与本公开相关的方面一致的装置和方法的示例。下面更详细地描述本公开的特定方面。如果与通过引用并入的术语和/或定义相冲突的话,以本文提供的术语和定义为准。
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时,预测数据可以进一步包括环路滤波器的参数(例如,环路滤波器强度)。来自缓冲区234的重建图像也可以被发送到显示器,诸如TV、PC、智能手机或平板电脑,以供终端用户观看。
图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等)。
图5是根据本公开的一些实施例的由编码器编码的位流500的示例的示意图。在一些实施例中,位流500的结构可以应用于图2A-2B和图3A-3B所示的视频位流228。在图5中,位流500包括视频参数集(VPS)510、序列参数集(SPS)520、图像参数集(PPS)530、图像头540、条带550-570,它们由同步标记M1-M7分开。条带550-570各自包括对应的头块(例如,头552)和数据块(例如,数据554),每个数据块包括一个或多个CTU(例如,数据554中的CTU1-CTUn)。
根据一些实施例,位流500是以网络抽象层(NAL)单元或字节流形式的比特序列,形成一个或多个编码视频序列(CVS)。CVS包括一个或多个编码层视频序列(CLVS)。在一些实施例中,CLVS是图像单元(PU)的序列,并且每个PU包含一个编码图像。具体地,PU包括包含作为有效载荷的图像头语法结构的零个或一个图像头NAL单元(例如,图像头540)、包括一个或多个视频编码层(VCL)NAL单元的一个编码图像,以及可选地,一个或多个其他非VCLNAL单元。VCL NAL单元是编码条带NAL单元(例如,条带550-570)和具有在一些实施例中被分类为VCL NAL单元的NAL单元类型的保留值的NAL单元的子集的统称。编码条带NAL单元包含条带头和条带数据块(例如,头552和数据554)。
换句话说,在本公开的一些实施例中,层可以是具有NAL层ID的特定值和相关联的非VCL NAL单元的视频编码层(VCL)NAL单元集合。在这些层中,可以在不同层之间应用层间预测以实现高压缩性能。
在一些实施例中,可以指定输出层集(OLS)以支持解码一些但不是全部层。OLS是层的集合,包括指定的层集合,其中该层集合中的一个或多个层被指定为输出层。因此,OLS可以包含一个或多个输出层以及解码该一个或多个输出层以用于层间预测所需的其他层。
在一些实施例中,“档(profile)”、“层(tier)”和“级(level)”(统称为“PTL”)用于规定对位流的限制,并因此规定对解码位流所需的能力的限制。档、层和级也可以用于指示各个解码器实现之间的互操作点。“档”是位流语法的子集,并且指定可以由符合该档的解码器支持的算法特征和限制的子集。在给定档的语法所施加的范围内,可能需要编码器和解码器的性能变化,这取决于位流中的语法元素所采用的值,例如解码图像的指定大小。在一些应用中,实现能够使用特定档内语法处理所有假设的解码器可能既不实用也不经济。
此外,在每个档中指定“层”和“级”。层的级别是对位流中语法元素的值施加的一组指定约束。这些约束可能是对值的简单限制。或者,它们可以采取对值的算术组合(例如,图像宽度乘以图像高度乘以每秒解码的图像数量)的约束的形式。在一些实施例中,相同的层和级定义集与所有档一起使用。一些实施方式可以支持不同的层和用于每个支持的档的层内的不同的级。对于给定的配置文件,层的级别通常对应于特定的解码器处理负载和存储器的能力。为较低层指定的级可能比为较高层指定的级受到更多约束。
图6A示出了与本公开的一些实施例一致的以粗体强调在VPS或SPS中被用信号通知的PTL语法结构600A的示例性编码语法表。在一些实施例中,可以通过PTL语法结构600A中的参数610A和620A(例如,general_profile_idc和general_tier_flag)以及在PTL语法结构中找到或从PTL语法结构派生的参数630A(例如,sublayer_level_idc[Htid]),来指示由参数TargetOlsIdx和Htid标识的用于每个操作点的PTL相关信息,其在视频参数集(VPS)或序列参数集(SPS)中用信号通知。TargetOlsIdx是用于识别要解码的目标OLS的OLS索引的变量,Htid是用于识别要解码的最高时域子层的变量。
如以上段落所述,解码图像缓冲区(DPB)包含用于存储解码图像的图像存储缓冲区。每个图像存储缓冲区可以包含被标记为“用于参考”或被保持以用于将来输出的解码图像。在一些实施例中,从OLS中的最低层开始,按照OLS中的层的nuh_layer_id值的递增顺序,指定过程顺序地应用并分别应用于每一层,其中nuh_layer_id是一个参数,该参数指定VCL NAL单元所属的层的标识符或非VCL NAL单元适用的层的标识符。在一些实施例中,nuh_layer_id的值对于编码图像或PU的VCL NAL单元应该是相同的。这些过程包括在解码当前图像之前从DPB输出和移除图像的过程、当前解码图像标记和存储的过程、附加碰撞的过程。
图6B示出了与本公开的一些实施例一致的以粗体强调在VPS或SPS中被用信号通知的DPB参数语法结构600B的示例性编码语法表。如图6B所示,DPB参数610B、620B和630B(其是应用上述过程和检查位流的一致性所需的参数)可以在VPS或SPS中被用信号通知的DPB参数语法结构600B中找到或从其导出。这些参数可能包括
max_dec_pic_buffering_minus1[Htid]、max_num_reorder_pics[Htid]和MaxLatencyPictures[Htid])。
在一些实施例中,参数610B(例如,max_dec_pic_buffering_minus1[i])加1指定对于Htid等于索引i的以图像存储缓冲区为单位的DPB的最大所需大小。参数610B的值可以在0到MaxDpbSize-1闭区间范围内。MaxDpbSize是指定以图像存储缓冲区为单位的最大解码图像缓冲区大小的参数。当索引i大于0时,max_dec_pic_buffering_minus1[i]应大于或等于max_dec_pic_buffering_minus1[i-1]。当对于索引i在0到SubLayersMinus1-1的闭区间范围时,max_dec_pic_buffering_minus1[i]不存在时,由于subLayerInfoFlag等于0,参数610B被推断为等于max_dec_pic_buffering_minus 1[maxSubLayers Minus 1]。
参数620B(例如,max_num_reorder_pics[i])指定对于Htid等于索引i的OLS的最大允许图像数量,这些图像可以按解码顺序在OLS中的任何图像之前,并按照输出顺序跟随该任何图像之后。参数620B的值可以在0到max_dec_pic_buffering_minus1[i]的闭区间范围内。当索引i大于0时,参数620B可以大于或等于max_num_reorder_pics[i-1]。对于索引i在0到maxSubLayersMinus1减1的闭区间范围内,当参数620B不存在时,由于subLayerInfoFlag等于0,参数620B被推断为等于max_num_reorder_pics[maxSubLayersMinus1]。
参数630B可用于计算MaxLatencyPictures[i]的值,它指定对于Htid等于索引i的OLS中的最大图像数,这些图像可以按输出顺序在OLS中的任何图像之前,并按解码顺序跟随在该任何图像之后。当参数630B等于零时,不表示相应的限制。当参数630B不等于0时,可以根据以下公式确定MaxLatencyPictures[i]的值:
MaxLatencyPictures[i]=max_num_reorder_pics[i]+max_latency_increase_plus1[i]-1
(公式1)
参数630B的值可以在0至232-2的闭区间范围内。当索引i在0到maxSubLayersMinus1减1的闭区间范围内,参数630B不存在时,由于subLayerInfoFlag等于0,参数630B被推断为等于max_latency_increase_plus1[maxSubLayersMinus1]。
假设参考解码器(HRD)是一种假设解码器模型,其指定编码过程可能产生的符合NAL单元流或符合字节流的可变性的约束,并且可以用于检查位流和解码器一致性。两种类型的位流或位流子集都要接受VVC的HRD一致性检查。第一种类型称为I型位流,是包含多个VCL NAL单元的NAL单元流,并且多个NAL单元流的nal_unit_type等于位流中所有访问单元(AU)的填充数据NAL单元(FD_NUT)。第二种类型,称为II型位流,除了位流中所有AU的VCLNAL单元和填充数据NAL单元之外,还包含以下至少一种:(1)除填充数据NAL单元之外的其他非VCL NAL单元,或(2)所有leading_zero_8bits语法元素,zero_byte语法元素、start_code_prefix_one_3bytes语法元素和trailing_zero_8bits语法元素,它们从NAL单位流形成字节流。在一些实施例中,leading_zero_8bits是等于0x00的字节,zero_byte是等于0x00的单个字节,start_code_prefix_one_3bytes是等于0x000001的3个字节的固定值序列,其被称为开始代码前缀,并且trailing_zero_8bits是等于0x00的字节。在一些实施例中,leading_zero_8bits语法元素存在于位流的第一字节流NAL单元中。遵循NAL单元语法结构并在四字节序列0x00000001之前的任何等于0x00的字节(将被解释为zero_byte语法元素,后跟start_code_prefix_one_3bytes语法元素)将被视为trailing_zero_8bits语法元素,它们是先前字节流NAL单元的一部分。
7A和图7B示出了与本公开的一些实施例一致的、分别以粗体强调的HRD参数语法结构700A和700B的示例性编码语法表。700A和700B可以在VPS或SPS中用信号通知。如图7A和图7B所示,可以使用两组HRD参数(NAL HRD参数和VCL HRD参数)。HRD参数可以通过图7A中的通用HRD参数语法结构700A和图7B中的OLS HRD参数语法结构700B用信号通知,OLSHRD参数以是VPS的一部分或SPS的一部分。
如上所述,OLS、PTL语法结构(例如,图6A中的PTL语法结构600A)、DPB参数语法结构(例如,图6B中的DPB参数语法结构600B)和HRD参数语法结构(例如,图7A和图7B中的语法结构700A、700B)可以在VPS或SPS中用信号通知。对于这些语法结构中的每一个,VPS或SPS发信号通知一组语法结构以及应用于每个OLS的语法结构的索引。
图8示出了与本公开的一些实施例一致的以粗体强调的VPS原始字节序列有效载荷(RBSP)语法结构800的一部分的示例性编码语法表。如图8所示,VPS参数810(vps_max_layers_minus1)加1指定每个CVS中参考VPS的最大允许层数。VPS参数812(vps_max_sublayers_minus1)加1指定在每个CVS中参考VPS的层中可以存在的时域子层的最大数量。在一些实施例中,VPS参数812的值在0到预定义静态值(例如,6)的闭区间范围内。VPS参数814(each_layer_is_an_ols_flag)等于1表示每个OLS包含一层,并且CVS中参考VPS的每层本身是一个OLS,其中单个包含的层是唯一的输出层。VPS参数814等于0表示OLS可以包含多于一层。如果VPS参数810等于0,则推断VPS参数814的值等于1。在一些实施例中,如果一对应标志指定由VPS指定的一个或多个层可以使用层间预测(例如,vps_all_independent_layers_flag等于0),则VPS参数814的值被推断为等于0。
在一些实施例中,VPS参数816(ols_mode_idc)的值可以在0到2的闭区间范围内,并且VPS参数816的值3可以保留用于将来使用。在一些实施例中,VPS参数816等于0指定由VPS(TotalNumOlss)指定的OLS的总数等于VPS参数810加1的值,第i个OLS包括层索引从0到索引i的层,并且对于每个OLS,仅输出OLS中的最高层。VPS参数816等于1指定由VPS指定的OLS总数等于VPS参数810加1,第i个OLS包括层索引从0到索引i的层,并且对于每个OLS,将输出OLS中的所有层。VPS参数816等于2指定由VPS指定的OLS的总数使用VPS参数818被显式地用信号通知,并且对于每个OLS,输出层被显式地用信号通知,而其他层是OLS的输出层的直接或间接参考层的层。
在一些实施例中,当对应标志指定由VPS指定的所有层被独立地编码而不使用层间预测(例如,vps_all_independent_layers_flag等于1)并且VPS参数814等于0时,VPS参数816的值被推断为等于2。
当VPS参数816等于2时,VPS参数818(num_output_layer_sets_minus1)被用信号通知以表示OLS的总数减1。换句话说,VPS参数818加1指定当VPS参数816等于2时由VPS指定的OLS(例如,变量TotalNumOlss)的总数。变量TotalNumOlss可以从以下代码中导出和计算:
此外,当VPS参数816等于2时,VPS参数820(ols_output_layer_flag[i][j])等于1指定第j层(即nuh_layer_id等于vps_layer_id[j]的层)是第i个OLS的输出层,并且VPS参数820等于0指定第j层不是第i个OLS的输出层。换句话说,每个OLS可以为CVS中的每个层定义,以通过发信号通知相关标记(例如,VPS参数820)来指示该层是否是某个OLS中的输出层。
VPS参数822(vps_num_ptls_minus1)加1指定VPS中PTL语法结构的数量。VPS参数822的值可以小于OLS的总数(即,TotalNumOlss)。
VPS参数824(pt_present_flag[i])等于1指定档、层和一般约束信息存在于VPS中的第i个PTL语法结构中。VPS参数824等于0指定档、层和一般约束信息不存在于VPS中的第i个PTL语法结构中。在一些实施例中,pt_present_flag[0]的值被推断为等于1。当VPS参数824等于0时,VPS中的第i个PTL语法结构的档、层和一般约束信息被推断为与VPS中的第(i-1)个PTL语法结构的档、层和一般约束信息相同。
VPS参数826(ptl_max_temporal_id[i])指定用于表示级别信息存在于VPS中的第i个PTL语法结构中的最高子层时域标识符(TemporalId)。VPS参数826的值可以在0到VPS参数812的闭区间范围内。当VPS参数812等于0时,VPS参数826的值被推断为等于0。当VPS参数812大于0并且对应的标志(例如,vps_all_layers_same_num_sublayers_flag)等于1时,VPS参数826的值被推断为等于VPS参数812。
在一些实施例中,VPS参数828(vps_ptl_alignment_zero_bit)可以等于0。在一些实施例中,VPS参数830(ols_ptl_idx[i])将应用于第i个OLS的PTL语法结构的索引指定到VPS中的PTL语法结构列表。当存在时,VPS参数830的值可以在0到VPS参数822的闭区间范围内。当VPS参数828等于0时,VPS参数830的值被推断为等于0。
当NumLayersInOls[i](指定第i个OLS中的层数的变量)等于1时,适用于第i个OLS的PTL语法结构也存在于第i个OLS中的层所参考的SPS中。在一些实施例中,位流一致性的要求是,当第i个OLS中的层数等于1时,对于第i个OLS,在VPS中和在SPS中用信号通知的PTL语法结构可以是相同的。
VPS参数832(vps_num_dpb_params)指定VPS中DPB参数语法结构的数量。在一些实施例中,VPS参数832的值可以在0到16的闭区间范围内。当不存在时,VPS参数832的值被推断为等于0。
VPS参数834(vps_sublayer_dpb_params_present_flag)用于控制VPS中的DPB参数语法结构中的语法元素(例如,max_dec_pic_buffering_minus1[]、max_num_reorder_pics[]和max_latency_increase_plus1[])的存在。当不存在时,VPS参数834被推断为等于0。
VPS参数836(dpb_max_temporal_id[i])指定用于表示DPB参数可能存在于VPS中的第i个DPB参数语法结构中的最高子层的TemporalId。VPS参数836的值可以在0到VPS参数812的闭区间范围内。当VPS参数812等于0时,VPS参数836的值被推断为等于0。当VPS参数812大于0并且对应的标志(例如,vps_all_layers_same_num_sublayers_flag)等于1时,VPS参数836的值被推断为等于VPS参数812。
VPS参数838(ols_dpb_pic_width[i])和VPS参数840(ols_dpb_pic_height[i])分别指定以亮度样本为单位的用于第i个OLS的每个图像存储缓冲区的宽度和高度。
VPS参数842(ols_dpb_params_idx[i])将在NumLayersInOls[i]大于1时应用于第i个OLS的DPB参数语法结构的索引指定到VPS中的DPB参数语法结构列表。当存在时,VPS参数842的值可以在0到VPS参数832的值减1的闭区间范围内。当VPS参数842不存在时,VPS参数842的值被推断为等于0。在一些实施例中,当NumLayersInOls[i]等于1时,应用于第i个OLS的DPB参数语法结构存在于由第i个OLS中的层所参考的SPS中。
VPS参数844(vps_general_hrd_params_present_flag)等于1指定在VPS RBSP语法结构中存在通用HRD参数语法结构(例如,图7A中的语法结构700A)和其他HRD参数。VPS参数844等于0指定在VPS RBSP语法结构中不存在通用HRD参数语法结构和其他HRD参数。当不存在时,VPS参数844的值被推断为等于0。当NumLayersInOls[i]等于1时,应用于第i个OLS的通用HRD参数语法结构存在于由第i个OLS中层参考的SPS中。
VPS参数846(vps_sublayer_cpb_params_present_flag)等于1指定VPS中第i个OLS HRD参数语法结构(例如,图7B中的语法结构700B)包含用于子层表示的HRD参数,其中TemporalId在0到VPS参数850的值的闭区间范围内取值。VPS参数846等于0指定VPS中的第i个OLS HRD参数语法结构包含用于子层表示的HRD参数,其中TemporalId仅等于VPS参数850的值。当VPS参数812等于0时,VPS参数846的值被推断为等于0。
当VPS参数846等于0时,用于具有在0至VPS参数850减1的闭区间范围的TemporalId的子层表示的HRD参数被推断为与用于具有等于VPS参数850的TemporalId的子层表示的HRD参数相同。在一些实施例中,HRD参数包括从fixed_pic_rate_general_flag[i]语法元素开始,直到在图7B中的OLS HRD参数语法结构700B中的条件语句“if(general_vcl_hrd_params_present_flag)”下的sublayer_hrd_parameters(i)语法结构。
VPS参数848(num_ols_hrd_params_minus1)加1指定当VPS参数844等于1时,在通用HRD参数语法结构中存在的OLS HRD参数语法结构的数量。VPS参数848的值可以在0到TotalNumOlss减去1的值的闭区间范围内。
VPS参数850(hrd_max_tid[i])指定表示包含在第i个OLS HRD参数语法结构中的HRD参数的最高子层的TemporalId。VPS参数850的值可以在0到VPS参数812的闭区间范围内。当VPS参数812等于0时,VPS参数850的值被推断为等于0。当VPS参数8 12大于0并且对应的标志(例如,vps_all_layers_same_num_sublayers_flag)等于1时,VPS参数850的值被推断为等于VPS参数812。
VPS参数852(ols_hrd_idx[i])将在NumLayersInOls[i]大于1时应用于第i个OLS的OLS HRD参数语法结构的索引指定到VPS中的OLS HRD参数语法结构列表。VPS参数852的值可以在0到VPS参数848的闭区间范围内。当NumLayersInOls[i]等于1时,应用于第i个OLS的OLS HRD参数语法结构存在于由第i个OLS中的层参考的SPS中。在一些实施例中,如果VPS参数848的值加1等于TotalNumOlss,则VPS参数852的值被推断为等于索引i。在一些实施例中,当NumLayersInOls[i]大于1且VPS参数848等于0时,VPS参数852的值被推断为等于0。
如果SPS的层是独立层,则PTL参数语法结构、DPB参数语法结构和HRD参数语法结构也可以在序列参数集(SPS)中发信号通知。
图9示出了与本公开的一些实施例一致的、以粗体强调的、在SPS中被用信号通知的SPS RBSP语法结构900的一部分的示例性编码语法表。如图9所示,SPS参数910(sps_seq_parameter_set_id)提供SPS的标识符以供其他语法元素参考。无论nuh_layer_id值如何,SPS NAL单元都共享SPS参数910的相同值空间。令spsLayerId为特定SPS NAL单元的nuh_layer_id的值,vclLayerId为特定VCL NAL单元的nuh_layer_id的值。所述特定VCL NAL单元不能参考所述特定SPS NAL单元,除非spsLayerId小于或等于vclLayerId并且具有nuh_layer_id等于spsLayerId的层被包括在至少一个OLS中,该至少一个OLS包括具有nuh_layer_id等于vclLayerId的层
SPS参数912(sps_video_parameter_set_id)指定,当SPS参数912大于0时,用于SPS所参考的VPS的vps_video_parameter_set_id的值。在一些实施例中,当SPS参数912等于0时,对应的SPS不参考VPS,并且当解码参考SPS的每个CLVS时不参考VPS。此外,相应的VPS参数8 1 0的值被推断为等于0,CVS仅包含一层(即,CVS中的VCL NAL单元具有相同的nuh_layer_id值),GeneralLayerIdx[nuh_layer_id]的值被推断为等于0,而vps_independent_layer_flag[GeneralayerIdx[nuh_layer_id]的值被推断为等于1。当vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]等于1时,SPS(由具有特定nuh_layer_id值nuhLayerId的CLVS所参考)可具有等于nuhLayerId的nuh_layer_id。在一些实施例中,SPS参数912的值在CVS中由CLVS所参考的SPS中可以是相同的。
SPS参数9 1 4(sps_max_sublayers_minus1)加1指定在参考SPS的每个CLVS中可存在的时域子层的最大数量。SPS参数914的值可以在0至对应的VPS参数812的闭区间范围内。
在一些实施例中,SPS参数916(sps_reserved_zero_4bits)可以在位流中等于0。SPS参数916的其他值可以保留以供将来使用。
SPS参数918(sps_ptl_dpb_hrd_params_present_flag)等于1指定在SPS中存在PTL语法结构和DPB参数语法结构,并且在SPS中也可存在通用HRD参数语法结构和OLS HRD参数语法结构。SPS参数918等于0指定SPS中不存在这四个语法结构。SPS参数918的值可等于vps_independent_layer_flag[GeneralLayerIdx[nuh_layer_id]]。
SPS参数920(sps_sublayer_dpb_params_flag)用于控制SPS中的DPB参数语法结构中的语法元素(例如,max_dec_pic_buffering_minus1[i]、max_num_reorder_pics[i]和max_latency_increase_plus1[i])的存在。当不存在时,SPS参数920的值可被推断为等于0。
SPS参数922(sps_general_hrd_params_present_flag)等于1指定SPS包含通用HRD参数语法结构和OLS HRD参数语法结构。SPS参数922等于0指定SPS不包含通用HRD参数语法结构或OLS HRD参数语法结构。
SPS参数924(sps_sublayer_cpb_params_present_flag)等于1指定SPS中的OLSHRD参数语法结构包括用于子层表示的HRD参数,其中TemporalId在0到SPS参数914的闭区间范围内取值。SPS参数924等于0指定SPS中的OLS HRD参数语法结构包括用于子层表示的HRD参数,其中TemporalId仅等于SPS参数914。当SPS参数914等于0时,SPS参数924的值被推断为等于0。当SPS参数924等于0时,用于具有在0到SPS参数914减1的闭区间范围内取值的TemporalId的子层表示的HRD参数的值被推断为与用于具有等于SPS参数914的TemporalId的子层表示的HRD参数相同。在一些实施例中,这些HRD参数包括从fixed_pic_rate_general_flag[i]语法元素开始直到在图7B的OLS HRD参数语法结构700B中的条件语句“if(general_vcl_hrd_params_present_flag)”下的sublayer_hrd_parameters(i)语法结构结束。
对于上述VPS或SPS中的PTL、DPB和HRD参数信号通知和OLS信号通知,存在几个问题。
例如,如图8所示,对于用信号通知的DPB和HRD参数,语法结构的数量(用于DPB参数的VPS参数832和用于HRD参数的VPS参数848)和应用于第i个OLS的语法结构的索引(用于DPB参数的VPS参数842和用于HRD参数的VPS参数852)在VPS中用“ue(v)”编码方法发出信号通知,这是一种可变长度编码方法,其中用更少的比特编码较小的值,而用更多的比特编码较大的值。另一方面,对于用信号通知的PTL参数,语法结构的数量、VPS参数822、和应用于第i个OLS的语法结构的索引、VPS参数830用“u(8)”编码。它是一种对在0到255范围内的值使用8比特固定长度的编码方法。
因此,DPB、HRD和PTL参数之间的语法结构的数量和语法结构索引的编码方法可能不同。此外,通常在实际应用中,PTL语法结构的数量相对较少。对于这些语法元素(例如,VPS参数822和830)使用8比特会不必要地增加信号通知的开销。
此外,为了指定每个OLS应用哪个PTL、DPB和HRD语法结构,在VPS中用信号通知每个OLS的索引(例如,VPS参数830、842或852)。但是,如果OLS的数量等于语法结构的数量,则高效的编码器可以执行从语法结构到OLS的一对一映射,并避免由于未使用的语法结构而导致的比特浪费。因此,编码器可以按照所应用的OLS的顺序向语法结构发出信号通知,而无需向索引发出信号通知。在解码器侧,可以推断第i个语法结构应用于第i个OLS。通过跳过对索引的信号通知,可以减少比特的数量,因此可以提高编码效率。在一些实施例中,该机制用于HRD参数。在一些实施例中,该机制还可以用于PTL和DPB参数,并防止增加信号通知开销或信号通知设计中的不一致。
此外,在SPS中,当SPS参数914大于0时用信号通知的SPS参数920控制包括SPS中的DPB参数语法结构600B中的参数610B、620B和630B在内的语法元素的存在。SPS参数920。当SPS参数918等于0时,不用信号通知DPB参数语法结构。换句话说,当SPS参数914大于0并且SPS参数918等于0时,SPS参数920的信号通知是冗余的。
此外,在图8的语法结构800中,用于指定OLS的总数的VPS参数818是用码长8编码的固定长度。因此,VPS参数818的最大值是255。OLS由CVS中每个层的VPS参数820定义,并且OLS的总数小于或等于VPS参数820的组合的数量。当CVS中的最大层数(即,VPS参数810+1的值)小于8时,对于VPS参数818使用8比特固定长度编码可能不是必需的。
图10A示出了与本公开的一些实施例一致的示例性视频编码方法1000A的流程图。在一些实施例中,视频编码方法1000A可以由编码器(例如,执行图2A中的过程200A或图2B中的过程200B的编码器)来执行,以生成图5中所示的位流500。例如,编码器可以被实现为用于对视频序列(例如,图2A或图2B中的视频序列202)进行编码或转码的装置(例如,图4中的装置400)的一个或多个软件或硬件组件以生成视频序列的位流(例如,图2A或图2B中的视频位流228)。例如,处理器(例如,图4中的处理器402)可以执行视频编码方法1000A。
参考视频编码方法1000A,在步骤1010a,编码器使用可变长度对指定PTL相关信息的一个或多个PTL语法元素(例如,图8中的VPS参数822或VPS参数830)进行编码。在步骤1020a处,编码器在位流(图5中的位流500)的VPS(例如,图5的VPS 510)或SPS(例如,图5中的SPS520)中使用可变长度用信号通知一个或多个PTL语法元素。
图10B示出了与本公开的一些实施例一致的与图10A中的视频编码方法1000A相对应的示例性视频解码方法1000B的流程图。在一些实施例中,视频解码方法1000B可以由解码器(例如,执行图3A中的解码过程300A或图3B中的解码过程300B的解码器)执行以解码图5中的位流500。例如,解码器可以被实现为用于对位流(例如,图3A或图3B中的视频位流228)进行解码的装置(例如,图4中的装置400)的一个或多个软件或硬件组件以重建位流的视频流(例如,图3A或图3B中的视频流304)。例如,处理器(例如,图4中的处理器402)可以执行视频解码方法1000B。参考图10B,在视频解码方法1000B中,在步骤1010b,解码器接收包括要解码的VPS或SPS的位流(例如,图5中的位流500)。在步骤1020b处,解码器使用可变长度对VPS或SPS中指定PTL相关信息的一个或多个PTL语法元素进行解码。
图10C和图10D分别示出了与本公开的一些实施例一致的示例性VPS语法结构1000C和1000D。VPS语法结构1000C和1000D中的每一个都可以在方法1000A和1000B中使用。基于图8的语法结构800修改VPS语法结构1000C和1000D。
如图10C所示,在一些实施例中,要以可变长度编码或解码的PTL语法元素可以包括指定PTL语法结构的索引的第一PTL语法元素(例如,VPS参数830)或指定VPS或SPS中的PTL语法结构的数量的第二PTL语法元素(例如,VPS参数822)。第一PTL语法元素和第二PTL语法元素可以通过使用指数哥伦布码(Exponential-Golomb code)来编码或解码。例如,PTL语法结构的数量(例如,VPS参数822)和PTL语法结构的索引(例如,VPS参数830)可以使用0阶指数哥伦布码的“ue(v)”的编码方法来编码。就设计一致性而言,可以以与DPB和HDR参数相同的方式用信号通知PTL参数,其中,DPB和HDR参数通过使用“ue(v)”编码方法用信号通知PTL参数。如图10C所示,描述符822d和830d分别指示用于VPS参数822和830的编码方法从u(8)改变为ue(v)。图10C的语法结构1000C中的语义(表的左列)没有改变,因此与图8的语法结构800相同。
如图10D的语法结构1000D所示,在一些其他实施例中,当对第一PTL语法元素(例如,VPS参数830)进行编码时,第一PTL语法元素的长度可以被设置为大于或等于VPS或SPS中的PTL语法结构的数量的以2为底的对数的最小整数。在一些其他实施例中,当对第二PTL语法元素(例如,VPS参数822)进行编码时,第二PTL语法元素的长度可以是固定长度,例如u(8)。
例如,可以使用位数不固定的“u(v)”的编码方法来编码PTL语法结构的索引(例如,VPS参数830)。位数取决于其它语法元素的值,诸如与PTL语法结构的数量相关联的值(例如,VPS参数822),其仍然用u(8)编码。因此,在解析VPS参数822的值之后,VPS参数830的长度被计算为Ceil(log2(vps_num_ptls_minus1+1)),其中log2(x)是x的以2为底的对数,Ceil(x)是大于或等于x的最小整数,然后用Ceil(log2(vps_num_ptls_minus1+1))位解析VPS参数830。特别地,对于VPS参数830,编码方法可以从u(8)改变为u(v)。类似于图8所示的实施例,当存在时,VPS参数830的值可以在0到VPS参数822的闭区间范围内。当VPS参数828等于0时,VPS参数830的值被推断为等于0。
在一些实施例中,当PTL或DPB语法结构的数量等于OLS的数量时,可以推断无需用信号通知索引(例如,VPS参数830和842)。通过省略用信号通知索引,从而可以降低信号通知的成本。
图11A示出了与本公开的一些实施例一致的示例性视频编码方法1100A的流程图。图11B示出了与本公开的一些实施例一致的与图11A中的视频编码方法1100A相对应的示例性视频解码方法1100B的流程图。类似于图10A和图10B中的方法1000A和1000B,视频编码方法1100A和视频解码方法1100B可以由被实现为装置的一个或多个软件或硬件组件(例如,执行指令集的处理器)的编码器和解码器来执行。
参考图11A所示的视频编码方法1100A,在步骤111 0a,编码器确定VPS中PTL语法结构的数量(vps_num_ptls_minus1+1)和OLS的数量(TotalNumOlss)是否相同。换句话说,编码器确定编码视频序列(CVS)是否包含相等数量的PTL语法结构和OLS。
响应于CVS包含相等数量的PTL语法结构和OLS(步骤1110a-是),编码器绕过步骤1120a和1130a并对位流进行编码,而不用信号通知第一PTL语法元素(例如,ols_ptl_idx[i]),该第一PTL语法元素将应用于第i个OLS的PTL语法结构的索引指定到VPS中的PTL语法结构列表。
响应于PTL语法结构的数量与OLS的数量不同(步骤1110a-否),在步骤1120a,编码器确定PTL语法结构的数量是否等于1(例如,通过确定参数vps_num_ptls_minus1是否大于零)。响应于PTL语法结构的数量小于或等于1(步骤1120a-否),编码器绕过步骤1130a并对位流进行编码,而不用信号通知VPS中的第一PTL语法元素。
响应于PTL语法结构的数量大于1并且不同于OLS的数量(步骤1110a-否,步骤1120a-是),编码器执行步骤1130a,并用信号通知VPS(或SPS)中的第一PTL语法元素。在一些实施例中,以固定长度用信号通知所述第一PTL语法元素。
在一些其他实施例中,步骤1120a在步骤1110a之前执行。响应于PTL语法结构的数量大于1并且与OLS的数量不同(步骤1120a-是,步骤1110a-否),执行步骤1130a,否则跳过步骤1130a。例如,响应于PTL语法结构的数量等于1(步骤1120a-否),编码器可以绕过步骤1110a和1130a。
类似于PTL语法元素的编码,当满足某些条件时,可以在没有信号通知的情况下推断DPB语法元素的索引(例如,VPS参数842)的编码。
在步骤1140a,编码器确定VPS中的DPB参数语法结构(vps_num_dpb_params)的数量和OLS(TotalNumOlss)的数量是否相同。换句话说,编码器确定编码视频序列(CVS)是否包含相等数量的DPB参数语法结构和OLS。
响应于DPB参数语法结构的数量与OLS的数量相同(步骤1140a-是),编码器绕过步骤1150a和1160a并对位流进行编码,而不用信号通知第一DPB语法元素(例如,ols_dpb_params_idx[i]),该第一DPB语法元素将应用于第i个OLS的DPB参数语法结构的索引指定到VPS中的DPB参数语法结构列表。
响应于DPB参数语法结构的数量与OLS的数量不同(步骤1140a-否),在步骤1150a,编码器确定DPB参数语法结构的数量是否等于1(例如,通过确定参数vps_num_dpb_params是否大于1)。响应于DPB参数语法结构的数量小于或等于1(步骤1150a-否),编码器绕过步骤1160a并对位流进行编码,而不用信号通知第一DPB语法元素。
响应于DPB参数语法结构的数量大于1并且与OLS的数量不同(步骤1140a-否,步骤1150a-是),编码器执行步骤1160a,并用信号通知VPS中的第一DPB语法元素。在一些实施例中,使用ue(v)以可变长度用信号通知第一DPB语法元素。
在一些实施例中,步骤1150a在步骤1140a之前执行。响应于DPB语法结构的数量大于1并且与OLS的数量不同(步骤1150a-是,步骤1140a-否),执行步骤1160a,否则跳过步骤1160a。例如,响应于DPB语法结构的数量等于1(步骤1150a-否),编码器可以绕过步骤1140a和1160a。
参考图11B所示的视频解码方法1100B,在解码器侧,在步骤1110b,解码器接收包括编码视频序列(CVS)的位流(例如,图5中的视频位流500)。在步骤1120b,解码器确定VPS中的PTL语法结构的数量(vps_num_ptls_minus1+1)和OLS的数量(TotalNumOlss)是否相同。在一些实施例中,解码器对与OLS相关联的一个或多个VPS语法元素进行解码,以获得OLS(TotalNumOlss)的数量的信息。
响应于PTL语法结构的数量与OLS的数量相同(步骤1120b-是),在步骤1125b,解码器推断第一PTL语法元素(例如,ols_ptl_idx[i]),该第一PTL语法元素将应用于第i个OLS的PTL语法结构的的等于第i个OLS的序数(例如,索引i)的索引指定到VPS中的PTL语法结构列表。响应于PTL语法结构的数量不同于OLS的数量(步骤1120b-否),在步骤1130b,解码器确定PTL语法结构的数量是否等于1(例如,通过确定参数vps_num_ptl_minus1是否大于零)。响应于PTL语法结构的数量小于或等于1(步骤1130b-否),在步骤1135b,解码器推断第一PTL语法元素为零。
响应于PTL语法结构的数量大于1并且不同于OLS的数量(步骤1120b-否,步骤1130b-是),解码器执行步骤1140b,并且解码在VPS或SPS中编码的第一PTL语法元素。在一些实施例中,在VPS或SPS中以固定长度用信号通知第一PTL语法元素。
在一些实施例中,步骤1130b在步骤1120b之前执行。响应于PTL语法结构的数量大于1并且与OLS的数量不同(步骤1130b-是,步骤1120b-否),执行步骤1140a,否则跳过步骤1140a。
类似地,在步骤1150b,解码器确定VPS中的DPB参数语法结构(vps_num_dpb_params)的数量和OLS(TotalNumOlss)的数量是否相同。
响应于DPB参数语法结构的数量与OLS的数量相同(步骤1150b-是),在步骤1155b,解码器推断第一DPB语法元素(例如,ols_dpb_params_idx[i]),该第一DPB语法元素指定适用于第i个OLS的DPB参数语法结构的、针对VPS中的DPB参数语法结构的列表的索引等于第i个OLS的序数(例如,索引i)。
响应于DPB参数语法结构的数量与OLS的数量不同(步骤1150b-否),在步骤1160b,解码器确定DPB参数语法结构的数量是否等于1(例如,通过确定参数vps_num_dpb_params是否大于1)。响应于DPB参数语法结构的数量小于或等于1(步骤1160b-否),在步骤1165b,解码器推断第一DPB语法元素为零。
响应于DPB参数语法结构的数量大于1并且不同于OLS的数量(步骤1150b-否,步骤1160b-是),解码器执行步骤1170b,并且解码VPS中的第一DPB语法元素。在一些实施例中,使用ue(v)以可变长度用信号通知第一DPB语法元素。
在一些实施例中,步骤1160b在步骤1150b之前执行。响应于DPB参数语法结构的数量大于1并且与OLS的数量不同(步骤1160b-是,步骤1150b-否),执行步骤1170b,否则跳过步骤1170b。
图11C示出了与本公开的一些实施例一致的与所提出的方法1100A和1100B的可能实现相关联的示例性VPS语法结构1100C的一部分。图11C中的VPS语法结构1100C基于图8的语法结构800修改。
与图8所示的实施例相比,如VPS语法结构1100C的条件语句1110c所示,当VPS参数822加1的值(vps_num_ptls_minus1)不等于由VPS(TotalNumOlss)指定的OLS的总数并且不等于0时,用信号通知VPS参数830。如果VPS参数822加1的值等于TotalNumOlss,则将VPS参数830的值推断为等于索引i。当VPS参数822等于0时,将VPS参数830的值推断为等于0。
类似地,如VPS语法结构1100C的条件语句1120c所示,当VPS参数832的值不等于TotalNumOlss并且不等于0时,用信号通知VPS参数842(ols_dpb_params_idx[i])。当未用信号通知VPS参数842时,如果VPS参数832的值等于TotalNumOlss,则将VPS参数842的值推断为索引i。当VPS参数832等于0时,VPS参数842的值被推断为等于0。
如上所述,在编码或解码过程中,编码器或解码器可能需要确定VPS中的OLS(TotalNumOlss)的数量。在一些实施例中,解码器和编码器可以根据由VPS语法元素(例如,VPS参数816)指示的OLS模式和由另一VPS语法元素(例如,VPS参数810)指示的CVS中的最大层数来导出OLS的数量。在一些实施例中,编码器可以使用固定长度编码VPS语法元素(例如,VPS参数818),其中固定长度与由VPS指定的OLS的数量相关联,并且解码器可以使用固定长度对VPS语法元素进行解码,以确定VPS指定的OLS的数量。在一些实施例中,编码器可以使用可变长度编码VPS语法元素(例如,VPS参数818),其中可变长度与包含在参考VPS的CVS中的OLS的数量相关联。并且解码器可以使用可变长度解码的VPS语法元素,以确定参考VPS的CVS中包含的OLS的数量。当最大允许数量小于预定义长度值时,VPS语法元素的长度可以等于参考VPS的CVS中的层组合的最大允许数量。
图11D示出了与本公开的实施例一致的基于图8的语法结构800修改的、与使用可变长度对VPS语法元素进行编码或解码的可能实现方式相关联的示例性VPS语法结构1100D的一部分。在某些情况下,OLS的总数受CVS中所有层的VPS参数820(ols_output_layer_flag)的组合数量的限制,并且TotalNumOlss满足以下不等式:
TotalNumOlss≤2vps_max_layers_minus1+1
VPS参数818加1指定当VPS参数816等于2时由VPS指定的OLS总数。因此,VPS参数818可以以(vps_max_layers_minus1+1)位表示(例如,VPS参数810加1的值)。
在一些实施例中,如图11D所示,以斜体突出显示的描述符818d表示针对VPS参数818的编码方法可以是可变长度编码,其中VPS参数818的长度是预定义值(例如,8),或VPS参数810加1的值(即,参考VPS的CVS中允许的最大层数),以较小者为准。例如,在一些实施例中,可以基于以下min函数来确定VPS参数818的长度:
Min(8,vps_max_layers_minus1+1)
再次参考图9,如上所述,SPS参数914的值可以在0至对应的VPS参数812的闭区间范围内。在一些实施例中,当SPS参数912等于0时,SPS不参考VPS,因此不存在对应的VPS参数812,因此SPS参数914的范围是未定义的。当SPS参数912(sps_video_parameter_set_id)等于0时,可以通过分配独立于VPS参数812的SPS参数914的值的范围来修改语法以解决此问题。
图12A示出了与本公开的一些实施例一致的示例性视频编码方法1200A的流程图。图12B示出了与本公开的一些实施例一致的与图12A中的视频编码方法1200A相对应的示例性视频解码方法1200B的流程图。类似于图10A和图10B中的方法1000A和1000B,视频编码方法1200A和视频解码方法1200B可以由被实现为装置的一个或多个软件或硬件组件(例如,执行指令集的处理器)的编码器和解码器来执行。
参考图12A所示的视频编码方法1200A,在步骤1210a,编码器对一第一SPS语法元素(例如,SPS参数914sps_max_sublayers_minus1)进行编码,该第一SPS语法元素与可能存在于参考SPS的每个CLVS中的时域子层的最大数量相关联。在步骤1220a处,编码器确定在SPS中是否存在PTL语法结构、DPB参数语法结构和/或HRD参数语法结构。例如,编码器可以进行确定,然后基于该确定来设置SPS参数918
(sps_ptl_dpb_hrd_params_present_flag)的值。如果确定为真(步骤1220a-是),则编码器执行步骤1230a,并且通过确定SPS参数914是否大于零来确定在参考SPS的每个编码层视频序列(CLVS)中存在的时域子层的最大数量是否大于1。
当两个条件都满足时(步骤1220a-是,步骤1230a-是),在步骤1240a,编码器发信号通知被配置为控制SPS中的DPB参数语法结构中语法元素的存在的标志(例如,SPS参数920,sps_sublayer_dpb_params_flag)。然后,编码器执行步骤1250a以在DPB参数语法结构中发信号通知一个或多个语法元素。
当时域子层的最大数量等于或小于1时(步骤1220a-是,步骤1230a-否),编码器绕过步骤1240a并执行步骤1250a以通过将标志(例如,SPS参数920,sps_sublayer_dpb_params_flag)设置为等于0但不发信号通知该标志来用信号通知DPB参数语法结构中的一个或多个语法元素。
如果在SPS中不存在PTL语法结构、DPB参数语法结构和HRD参数语法结构(步骤1220a-no),则编码器绕过步骤1230a-1250a并对SPS进行编码,而不发送标志(例如,SPS参数920,sps_sublayer_dpb_params_flag)和DPB语法元素。
在一些实施例中,对于视频编码方法1200A中的SPS参数914的编码,当SPS参考VPS时,SPS参数914(sps_max_sublayers_minus1)的范围可以设置为与VPS参数812(vps_max_sublayers_minus1)的范围相同。当SPS不参考VPS并且因此相应的VPS参数812(vps_max_sublayers_minus1)不存在时,SPS参数914的范围仍然可以通过设置预定义值来定义。例如,VPS参数812的值可以在0到预定义的静态值(例如,6)的范围内。因此,SPS参数914的值可以在0到MaxSubLayer减1的闭区间范围内,其中可以使用三进制运算符从代码中导出和计算参数MaxSubLayer子层的值,如下所示:
MaxSubLayer=(sps_video_parameter_set_id==0?6:vps_max_sublayers_minus1)+1
或者说,编码器可以首先确定SPS参数912的值,其指定当SPS参数912的值大于零时SPS所参考的VPS的标识符,并且当SPS参数912的值等于零时,指示SPS不参考VPS。然后,响应于SPS参数912的值大于零,编码器基于对应的VPS参数812来分配SPS参数914的范围,该范围指定在参考SPS的每个CLVS中存在的时域子层的最大数量。也就是说,SPS参数914(例如,sps_max_sublayers_minus1)的值在0到VPS参数812(例如,vps_max_sublayers_minus1)的范围内,包含端值。另一方面,响应于SPS参数912的值等于零,编码器将SPS参数914的范围分配为零到固定值(例如,6)的闭区间范围。也就是说,SPS参数914(例如,sps_max_sublayers_minus1)的值在0到6的范围内,包括端值。
因此,当SPS参数914等于0时,可以给SPS参数914一个推断值。因此,当SPS不参考任何VPS时,SPS参数914的最大值是可用的。在一些实施例中,可以改变语义,使得当SPS参数912等于0时,VPS参数812(vps_max_sublayers_minus1)的值被推断为等于预定义的静态值(例如,6)。
参考图12B所示的视频解码方法1200B,在解码器侧,在步骤1210b,解码器接收包括要解码的SPS的位流(例如,图5中的视频位流500)。在步骤1220b,解码器解码第一SPS语法元素(例如,SPS参数914sps_max_sublayers_minus1)。在一些实施例中,在解码器侧,当解码SPS时,解码器可以首先确定SPS参数912的值,然后解码SPS参数914。SPS参数914的范围,当SPS参数812的值大于零时基于由SPS参考的VPS的对应的VPS参数912,或者当SPS参数912的值等于零时基于固定值。
在步骤1230b,解码器确定在SPS中是否存在PTL语法结构、DPB参数语法结构和/或HRD参数语法结构。例如,解码器可以基于SPS参数918(sps_ptl_dpb_hrd_params_present_flag)是否等于1来做出所述确定。如果确定为真(步骤1230b-是),则解码器执行步骤1240b,并且通过确定SPS参数914是否大于零来确定在参考SPS的每个编码层视频序列(CLVS)中存在的时域子层的最大数量是否大于1。
当两个条件都满足时(步骤1230b-是,步骤1240b-是),在步骤1250b,解码器解码标志(例如,SPS参数920,sps_sublayer_dpb_params_flag)是SPS,该标志在SPS中用信号通知并配置为控制DPB参数语法结构中语法元素的存在。然后,解码器执行步骤1260b,以基于标志(例如,SPS参数920,sps_sublayer_dpb_params_flag)的值来解码DPB参数语法结构中的一个或多个语法元素。
当时域子层的最大数量等于或小于1时(步骤1230b-是,步骤1240b-否),解码器绕过步骤1250b并推断标志(例如,SPS参数920,sps_sublayer_dpb_params_flag)等于零,然后执行步骤1260b,以基于标志(例如,SPS参数920,sps_sublayer_dpb_params_flag)的值来解码DPB参数语法结构中的一个或多个语法元素。
如果在SPS中不存在PTL语法结构、DPB参数语法结构和HRD参数语法结构(步骤1230b-否),则解码器绕过步骤1240b-1260b并解码SPS而不解码标志和DPB语法元素。
图12C示出了与本公开的一些实施例一致的与所提出的方法1200A和1200B的可能实现相关联的示例性SPS语法结构1200C的一部分。可以基于图9的语法结构900来修改图12C中的SPS语法结构1200C。如上所述,在一些实施例中,SPS参数920的信号通知可以以SPS参数918和SPS参数914为条件。因此,如图2C所示,语法元素SPS参数920可以在SPS参数91 8等于1且SPS参数914大于0的条件下被用信号通知(或解码)。否则,SPS参数920不被发信号通知(或解码)。
综上所述,如本公开的各个实施例所提出的,通过使用可变长度的编码或解码PTL语法元素的应用,DPB、HRD和PTL参数之间的语法结构数量和语法结构索引的编码方法可以是一致的和高效的,并且可以减少对这些语法元素使用固定长度而产生的信号通知开销。此外,通过在语法元素未被发信号通知时适当地推断语法元素的值,可以在一些情况下跳过索引的信号通知,这减少了输出比特的数量,因此提高了编码效率。该方法可用于HRD参数以及PTL和DPB参数,以减少信号通知开销并保证信号通知设计的一致性。
可以使用以下条款进一步描述实施例:
1、一种计算机实现的视频编码方法,包括:
确定编码视频序列(CVS)是否包含相等数量的档、层和级(PTL)语法结构和输出层集(OLS);以及
响应于所述CVS包含相等数量的PTL语法结构和OLS,对位流进行编码,而不用信号通知第一PTL语法元素,所述第一PTL语法元素将应用于VPS中对应OLS的PTL语法结构的索引指定到所述VPS中的PTL语法结构的列表。
2、根据条款1所述的方法,还包括:
确定所述PTL语法结构的数量是否等于1;以及
响应于所述PTL语法结构的数量等于1,对所述位流进行编码而不在所述VPS中用信号通知所述第一PTL语法元素。
3、根据条款1所述的方法,还包括:
响应于所述PTL语法结构的数量大于1并且不同于所述OLS的数量,在所述VPS中以固定长度用信号通知所述第一PTL语法元素。
4、一种计算机实现的视频编码方法,包括:
确定编码视频序列(CVS)是否具有相等数量的解码图像缓冲区(DPB)参数语法结构和输出层集(OLS);以及
响应于所述CVS具有相等数量的DPB参数语法结构和OLS,对所述位流进行编码,而不用信号通知所述第一DPB语法元素,该第一DPB语法元素将应用于相应OLS的DPB参数语法结构的索引指定到VPS中的DPB参数语法结构的列表。
5、根据条款4所述的方法,还包括:
确定所述DPB参数语法结构的数量是否小于或等于1;以及
响应于所述DPB参数语法结构的数量等于1,对所述位流进行编码而不在VPS中用信号通知所述第一DPB语法元素。
6、根据条款4所述的方法,还包括:
响应于所述DPB参数语法结构的数量大于1并且与所述OLS的数量不同,在VPS中以可变长度来用信号通知所述第一DPB语法元素。
7、一种计算机实现的视频编码方法,包括:
确定在位流的序列参数集(SPS)中是否存在档、层和级(PTL)语法结构、解码图像缓冲区(DPB)参数语法结构或假设参考解码器(HRD)参数语法结构中的至少一个;
确定第一值是否大于1,所述第一值指定在参考SPS的编码层视频序列(CLVS)中存在的时域子层的最大数量;以及
当所述SPS中至少存在所述PTL语法结构、所述DPB参数语法结构或所述HRD参数语法结构中一个并且所述第一值大于1时,用信号通知被配置为控制所述SPS中的所述DPB参数语法结构中的语法元素的存在的标志。
8、根据条款7所述的方法,还包括:
当所述第一值等于或小于1时,在所述DPB参数语法结构中用信号通知一个或多个语法元素,而不在所述SPS中用信号通知所述标志。
9、一种计算机实现的视频编码方法,包括:
确定第一序列参数集(SPS)语法元素的值,所述第一SPS语法元素指定当所述第一SPS语法元素的值大于零时由所述SPS参考的视频参数集(VPS)的标识符;
响应于所述第一SPS语法元素的值大于零,基于对应的VPS语法元素来分配第二SPS语法元素的范围,所述第二SPS语法元素指定在参考所述SPS的每个编码层视频序列(CLVS)中存在的时域子层的最大数量;以及
响应于所述第一SPS语法元素的值等于零,将所述第二SPS语法元素的的范围分配为零到一固定值的闭区间,所述第二SPS语法元素指定在参考所述SPS的每个CLVS中存在的时域子层的所述最大数量。
10、一种计算机实现的视频编码方法,包括:
对指定PTL相关信息的一个或多个档、层和级(PTL)语法元素进行编码;以及
使用可变长度用信号通知位流的视频参数集(VPS)或序列参数集(SPS)中的所述一个或多个PTL语法元素。
11、根据条款10所述的方法,其中对所述一个或多个PTL语法元素进行编码包括:
使用可变长度对第一PTL语法元素进行编码,所述第一PTL语法元素指定PTL语法结构的索引。
12、根据条款11所述的方法,其中所述VPS或所述SPS包括N个PTL语法结构,N是整数,并且对所述一个或多个PTL语法元素进行编码还包括:
将所述第一PTL语法元素的长度设置为大于或等于以2为底N的对数的最小整数。
13、根据条款11所述的方法,其中对所述一个或多个PTL语法元素进行编码包括:
通过使用指数哥伦布码对所述第一PTL语法元素进行编码。
14、根据条款10所述的方法,其中所述VPS或所述SPS包括N个PTL语法结构,N是整数,并且对所述一个或多个PTL语法元素进行编码包括:
使用可变长度对第二PTL语法元素进行编码,所述第二PTL语法元素指定所述N。
15、一种计算机实现的视频编码方法,包括:
使用可变长度的对视频参数集(VPS)语法元素进行编码;以及
在一VPS中用信号通知所述VPS语法元素,所述VPS语法元素与包含在参考VPS的编码视频序列(CVS)中的输出层集(OLS)的数量相关联。
16、根据条款15所述的方法,还包括:
当参考VPS的编码视频序列(CVS)中的层的最大允许数量小于预定义长度值时,将所述VPS语法元素的长度设置为等于所述最大允许数量。
17、一种计算机实现的视频解码方法,包括:
接收包括编码视频序列(CVS)的位流;
确定所述CVS是否具有相同数量的档、层和级(PTL)语法结构和输出层集(OLS);以及
响应于所述PTL语法结构的数量等于所述OLS的数量,跳过对第一PTL语法元素的解码,所述第一PTL语法元素将在解码VPS时应用于对应OLS的PTL语法结构的索引指定到所述VPS中的PTL语法结构列表。
18、根据条款17所述的方法,还包括:
响应于所述PTL语法结构的数量等于所述OLS的数量,确定所述第一PTL语法元素等于由第一PTL语法元素指定的所述PTL语法结构所应用的OLS的索引。
19、根据条款17所述的方法,还包括:
确定所述PTL语法结构的数量是否等于1;以及
响应于所述PTL语法结构的数量等于1,在解码所述VPS时跳过对所述第一PTL语法元素的解码。
20、根据条款19所述的方法,还包括:
响应于所述PTL语法结构的数量等于1,确定所述第一PTL语法元素为零。
21、根据条款17所述的方法,还包括:
响应于所述PTL语法结构的数量大于1并且与所述OLS的数量不同,在所述VPS中以固定长度对所述第一PTL语法元素进行解码。
22、一种计算机实现的视频解码方法,包括:
接收包括编码视频序列(CVS)的位流;
确定所述CVS是否具有相等数量的解码图像缓冲区(DPB)参数语法结构和输出层集(OLS);以及
响应于所述CVS具有相等数量的DPB参数语法结构和OLS,跳过对第一DPB语法元素的解码,所述第一DPB语法元素将应用于相应OLS的DPB参数语法结构的索引指定到所述VPS中的DPB参数语法结构列表。
23、根据条款22所述的方法,还包括:
确定所述DPB参数语法结构的数量是否小于或等于1;以及
响应于所述DPB参数语法结构的数量小于或等于1,在解码所述VPS时跳过对所述第一DPB语法元素的解码。
24、根据条款23所述的方法,还包括:
响应于所述DPB参数语法结构的数量小于或等于1,确定所述第一DPB语法元素为零;以及
响应于所述DPB语法结构的数量等于OLS的数量,确定所述第一DPB语法元素等于由所述第一DPB语法元素指定的DPB参数语法结构所应用的OLS的索引。
25、根据条款23所述的方法,还包括:
响应于所述DPB参数语法结构的数量大于1并且与所述OLS的数量不同,在所述VPS中使用可变长度对所述第一DPB语法元素进行解码。
26、一种计算机实现的视频解码方法,包括:
接收包括视频参数集(VPS)和序列参数集(SPS)的位流;
响应于所述SPS中存在的档、层和别(PTL)语法结构、解码图像缓冲区(DPB)参数语法结构或假设参考解码器(HRD)参数语法结构中的至少一个,确定一第一值是否大于1,所述第一值指定在参考所述SPS的每个编码层视频序列(CLVS)中存在的时域子层的最大数量;和
响应于所述第一值大于1,对被配置为控制所述SPS中的所述DPB参数语法结构中的语法元素存在的标志进行解码。
27、根据条款26所述的方法,还包括:
响应于所述第一值等于或小于1,推断所述标志等于零,并且在所述SPS中对所述DPB参数语法结构中的一个或多个语法元素进行解码,而不对所述标志解码。
28、一种计算机实现的视频解码方法,包括:
确定第一序列参数集(SPS)语法元素的值,所述第一SPS语法元素指定当所述第一SPS语法元素的值大于零时由一SPS参考的视频参数集(VPS)的标识符;以及
对第二SPS语法元素进行解码,该第二SPS语法元素指定在参考SPS的每个编码层视频序列(CLVS)中存在的时域子层的最大数量,当所述第一SPS语法元素的值大于零时,所述第二SPS语法元素的范围基于由所述SPS参考的VPS的对应VPS语法元素,或者当所述第一SPS语法元素的值等于零时,所述第二SPS语法元素的范围基于一固定值。
29、一种计算机实现的视频解码方法,包括:
接收包括视频参数集(VPS)或序列参数集(SPS)的位流;以及
对所述VPS或SPS中的一个或多个档、层和级(PTL)语法元素进行解码,所述一个或多个PTL语法元素指定PTL相关信息。
30、根据条款29所述的方法,其中对所述一个或多个PTL语法元素进行解码包括:
使用可变长度对第一PTL语法元素进行解码,所述第一PTL语法元素指定PTL语法结构的索引。
31、根据条款30所述的方法,其中所述VPS或所述SPS包括N个PTL语法结构,N是整数,并且所述第一PTL语法元素的长度是大于或等于以2为底N的对数的最小整数。
32、根据条款30所述的方法,其中所述第一PTL语法元素通过使用指数哥伦布码来编码。
33、根据条款29所述的方法,其中所述VPS或所述SPS包括N个PTL语法结构,N是整数,并且对所述一个或多个PTL语法元素进行解码包括:
使用可变长度对第二PTL语法元素进行解码,所述第二PTL语法元素指定N。
34、一种计算机实现的视频解码方法,包括:
接收包括视频参数集(VPS)的位流;以及
使用可变长度对VPS中的VPS语法元素进行解码,所述VPS语法元素与包含在参考所述VPS的编码视频序列(CVS)中的输出层集(OLS)的数量相关联。
35、根据条款34所述的方法,其中,当参考所述VPS的所述编码视频序列(CVS)中的层的最大允许数量小于预定义长度值时,所述VPS语法元素的长度等于所述最大允许数量。
36、一种装置,包括:
存储器,所述存储器被配置为存储指令;以及
处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置执行:
确定编码视频序列(CVS)是否包含相等数量的档、层和级(PTL)语法结构和输出层集(OLS);以及
响应于所述CVS包含相等数量的PTL语法结构和OLS,对位流进行编码,而不用信号通知第一PTL语法元素,所述第一PTL语法元素将应用于VPS中对应OLS的PTL语法结构的索引指定到所述VPS中的PTL语法结构的列表。
37、根据条款36所述的装置,其中所述处理器被配置为执行所述指令以:
确定所述PTL语法结构的数量是否等于1;以及
响应于PTL语法结构的数量等于1,对所述位流进行编码而不在VPS中用信号通知所述第一PTL语法元素。
38、根据条款36所述的装置,其中所述处理器被配置为执行所述指令以:
响应于所述PTL语法结构的数量大于1并且不同于所述OLS的数量,在所述VPS中以固定长度用信号通知所述第一PTL语法元素。
39、一种装置,包括:
存储器,所述存储器被配置为存储指令;以及
处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置:
确定编码视频序列(CVS)是否具有相等数量的解码图像缓冲区(DPB)参数语法结构和输出层集(OLS);以及
响应于所述CVS具有相等数量的DPB参数语法结构和OLS,对所述位流进行编码,而不用信号通知所述第一DPB语法元素,该第一DPB语法元素将应用于相应OLS的DPB参数语法结构的索引指定到所述VPS中的DPB参数语法结构的列表。
40、根据条款39所述的装置,其中所述处理器被配置为执行所述指令以:
确定所述DPB参数语法结构的数量是否小于或等于1;以及
响应于所述DPB参数语法结构的数量等于1,对所述位流进行编码而不在VPS中用信号通知所述第一DPB语法元素。
41、根据条款39所述的装置,其中所述处理器被配置为执行所述指令以:
响应于所述DPB参数语法结构的数量大于1并且与所述OLS的数量不同,在VPS中以可变长度来用信号通知所述第一DPB语法元素。
42、一种装置,包括:
存储器,所述存储器被配置为存储指令;以及
处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置:
确定在位流的序列参数集(SPS)中是否存在档、层和级(PTL)语法结构、解码图像缓冲区(DPB)参数语法结构或假设参考解码器(HRD)参数语法结构中的至少一个;
确定第一值是否大于1,所述第一值指定在参考SPS的编码层视频序列(CLVS)中存在的时域子层的最大数量;以及
当所述SPS中至少存在所述PTL语法结构、所述DPB参数语法结构或所述HRD参数语法结构中的一个并且所述第一值大于1时,用信号通知被配置为控制所述SPS中的所述DPB参数语法结构中的语法元素的存在的标志。
43、根据条款42所述的装置,其中所述处理器被配置为执行所述指令以:
当所述第一值等于或小于1时,在所述DPB参数语法结构中用信号通知一个或多个语法元素,而不在所述SPS中用信号通知所述标志。
44、一种装置,包括:
存储器,所述存储器被配置为存储指令;以及
处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置:
确定第一序列参数集(SPS)语法元素的值,所述第一SPS语法元素指定当所述第一SPS语法元素的值大于零时由所述SPS参考的视频参数集(VPS)的标识符;
响应于所述第一SPS语法元素的值大于零,基于对应的VPS语法元素来分配第二SPS语法元素的范围,所述第二SPS语法元素指定在参考所述SPS的每个编码层视频序列(CLVS)中存在的时域子层的最大数量;以及
响应于所述第一SPS语法元素的值等于零,将所述第二SPS语法元素的的范围分配为零到一固定值的闭区间,所述第二SPS语法元素指定在参考所述SPS的每个CLVS中存在的时域子层的所述最大数量。
45、一种装置,包括:
存储器,所述存储器被配置为存储指令;以及
处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置:
对指定PTL相关信息的一个或多个档、层和级(PTL)语法元素进行编码;以及
使用可变长度用信号通知位流的视频参数集(VPS)或序列参数集(SPS)中的所述一个或多个PTL语法元素。
46、根据条款45所述的装置,其中所述处理器被配置为执行所述指令以通过以下方式对所述一个或多个PTL语法元素进行编码:
使用可变长度对第一PTL语法元素进行编码,所述第一PTL语法元素指定PTL语法结构的索引。
47、根据条款46所述的装置,其中所述VPS或所述SPS包括N个PTL语法结构,N是整数,并且所述处理器被配置为执行所述指令以通过以下方式对所述一个或多个PTL语法元素进行编码:
将所述第一PTL语法元素的长度设置为大于或等于以2为底N的对数的最小整数。
48、根据条款46所述的装置,其中所述处理器被配置为执行所述指令以通过以下方式对所述一个或多个PTL语法元素进行编码:
通过使用指数哥伦布码对所述第一个PTL语法元素进行编码。
49、根据条款45所述的装置,其中所述VPS或所述SPS包括N个PTL语法结构,N是整数,并且所述处理器被配置为执行所述指令以通过以下方式对所述一个或多个PTL语法元素进行编码:
使用可变长度对第二PTL语法元素进行编码,所述第二PTL语法元素指定所述N。
50、一种装置,包括:
存储器,所述存储器被配置为存储指令;以及
处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置:
使用可变长度的对视频参数集(VPS)语法元素进行编码;以及
在所述VPS中用信号通知所述VPS语法元素,所述VPS语法元素与包含在参考VPS的编码视频序列(CVS)中的输出层集(OLS)的数量相关联。
51、根据条款50所述的装置,其中所述处理器被配置为执行所述指令以:
当参考VPS的编码视频序列(CVS)中的层的最大允许数量小于预定义长度值时,将所述VPS语法元素的长度设置为等于所述最大允许数量。
52、一种装置,包括:
存储器,所述存储器被配置为存储指令;以及
处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置:
接收包括编码视频序列(CVS)的位流;
确定所述CVS是否具有相同数量的档、层和级(PTL)语法结构和输出层集(OLS);以及
响应于所述PTL语法结构的数量等于所述OLS的数量,跳过对第一PTL语法元素的解码,所述第一PTL语法元素将在解码VPS时应用于对应OLS的PTL语法结构的索引指定到所述VPS中的PTL语法结构列表。
53、根据条款52所述的装置,其中所述处理器被配置为执行所述指令以:
响应于所述PTL语法结构的数量等于所述OLS的数量,确定所述第一PTL语法元素等于由所述第一PTL语法元素指定的所述PTL语法结构所应用的OLS的索引。
54、根据条款52所述的装置,其中所述处理器被配置为执行所述指令以:
确定所述PTL语法结构的数量是否等于1;以及
响应于所述PTL语法结构的数量等于1,在解码所述VPS时跳过对所述第一PTL语法元素的解码。
55、根据条款54所述的装置,其中所述处理器被配置为执行所述指令以:
响应于所述PTL语法结构的数量等于1,确定所述第一PTL语法元素为零。
56、根据条款52所述的装置,其中所述处理器被配置为执行所述指令以:
响应于所述PTL语法结构的数量大于1并且与所述OLS的数量不同,在所述VPS中以固定长度对所述第一PTL语法元素进行解码。
57、一种装置,包括:
存储器,所述存储器被配置为存储指令;以及
处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置:
接收包括编码视频序列(CVS)的位流;
确定所述CVS是否具有相等数量的解码图像缓冲区(DPB)参数语法结构和输出层集(OLS);以及
响应于所述CVS具有相等数量的DPB参数语法结构和OLS,跳过对第一DPB语法元素的解码,所述第一DPB语法元素将应用于相应OLS的DPB参数语法结构的索引指定到所述VPS中的DPB参数语法结构列表。
58、根据条款57所述的装置,其中所述处理器被配置为执行所述指令以:
确定所述DPB参数语法结构的数量是否小于或等于1;以及
响应于所述DPB参数语法结构的数量小于或等于1,在解码所述VPS时跳过对所述第一DPB语法元素的解码。
59、根据条款58所述的装置,其中所述处理器被配置为执行所述指令以:
响应于所述DPB参数语法结构的数量小于或等于1,确定所述第一DPB语法元素为零;以及
响应于所述DPB语法结构的数量等于OLS的数量,确定所述第一DPB语法元素等于由所述第一DPB语法元素指定的所述DPB参数语法结构所应用的OLS的索引。
60、根据条款58所述的装置,其中所述处理器被配置为执行所述指令以:
响应于所述DPB参数语法结构的数量大于1并且与所述OLS的数量不同,在所述VPS中使用可变长度对所述第一DPB语法元素进行解码。
61、一种装置,包括:
存储器,所述存储器被配置为存储指令;以及
处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置:
接收包括视频参数集(VPS)和序列参数集(SPS)的位流;
响应于所述SPS中存在的档、层和别(PTL)语法结构、解码图像缓冲区(DPB)参数语法结构或假设参考解码器(HRD)参数语法结构中的至少一个,确定一第一值是否大于1,所述第一值指定在参考所述SPS的每个编码层视频序列(CLVS)中存在的时域子层的最大数量;和
响应于所述第一值大于1,对被配置为控制所述SPS中的所述DPB参数语法结构中的语法元素存在的标志进行解码。
62、根据条款61所述的装置,其中所述处理器被配置为执行所述指令以:
响应于所述第一值等于或小于1,推断所述标志等于零,并且在所述SPS中对所述DPB参数语法结构中的一个或多个语法元素进行解码,而不对所述标志解码。
63、一种装置,包括:
存储器,所述处理器被配置为存储指令;以及
处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置:
确定第一序列参数集(SPS)语法元素的值,所述第一SPS语法元素指定当所述第一SPS语法元素的值大于零时由一SPS参考的视频参数集(VPS)的标识符;以及
对第二SPS语法元素进行解码,该第二SPS语法元素指定在参考所述SPS的每个编码层视频序列(CLVS)中存在的时域子层的最大数量,当所述第一SPS语法元素的值大于零时,所述第二SPS语法元素的范围基于由所述SPS参考的VPS的对应VPS语法元素,或者当所述第一SPS语法元素的值等于零时,所述第二SPS语法元素的范围基于一固定值。
64、一种装置,包括:
存储器,所述存储器被配置为存储指令;以及
处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置:
接收包括视频参数集(VPS)或序列参数集(SPS)的位流;以及
对所述VPS或SPS中的一个或多个档、层和级(PTL)语法元素进行解码,所述一个或多个PTL语法元素指定PTL相关信息。
65、根据条款64所述的装置,其中所述处理器被配置为执行所述指令以通过以下方式解码所述一个或多个PTL语法元素:
使用可变长度对第一PTL语法元素进行解码,所述第一PTL语法元素指定PTL语法结构的索引。
66、根据条款65所述的装置,其中所述VPS或所述SPS包括N个PTL语法结构,N是整数,并且所述第一PTL语法元素的长度是大于或等于以2为底N的对数的最小整数。
67、根据条款65所述的装置,其中所述第一PTL语法元素通过使用指数哥伦布码来编码。
68、根据条款64所述的装置,其中所述VPS或所述SPS包括N个PTL语法结构,N是整数,并且所述处理器被配置为执行所述指令以通过以下方式对所述一个或多个PTL语法元素进行解码:
使用可变长度对第二PTL语法元素进行解码,所述第二PTL语法元素指定N。
69、一种装置,包括:
存储器,所述存储器被配置为存储指令;以及
处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置:
接收包括视频参数集(VPS)的位流;以及
使用可变长度对VPS中的VPS语法元素进行解码,所述VPS语法元素与包含在参考所述VPS的编码视频序列(CVS)中的输出层集(OLS)的数量相关联。
70、根据条款69所述的装置,其中,当参考所述VPS的所述编码视频序列(CVS)中的层的最大允许数量小于预定义长度值时,所述VPS语法元素的长度等于所述最大允许数量。
71、一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于对视频进行编码的方法,包括:
确定编码视频序列(CVS)是否包含相等数量的档、层和级(PTL)语法结构和输出层集(OLS);以及
响应于所述CVS包含相等数量的PTL语法结构和OLS,对位流进行编码,而不用信号通知第一PTL语法元素,所述第一PTL语法元素将应用于VPS中对应OLS的PTL语法结构的索引指定到所述VPS中的PTL语法结构的列表。
72、根据条款71所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
确定所述PTL语法结构的数量是否等于1;以及
响应于PTL语法结构的数量等于1,对所述位流进行编码而不在VPS中用信号通知所述第一PTL语法元素。
73、根据条款71所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
响应于所述PTL语法结构的数量大于1并且不同于所述OLS的数量,在所述VPS中以固定长度用信号通知所述第一PTL语法元素。
74、一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于对视频进行编码的方法,包括:
确定编码视频序列(CVS)是否具有相等数量的解码图像缓冲区(DPB)参数语法结构和输出层集(OLS);以及
响应于所述CVS具有相等数量的DPB参数语法结构和OLS,对所述位流进行编码,而不用信号通知所述第一DPB语法元素,该第一DPB语法元素将应用于相应OLS的DPB参数语法结构的索引指定到所述VPS中的DPB参数语法结构的列表。
75、根据条款74所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
确定所述DPB参数语法结构的数量是否小于或等于1;以及
响应于所述DPB参数语法结构的数量等于1,对所述位流进行编码而不在VPS中用信号通知所述第一DPB语法元素。
76、根据条款74所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
响应于所述DPB参数语法结构的数量大于1并且与所述OLS的数量不同,在VPS中以可变长度来用信号通知所述第一DPB语法元素。
77、一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于对视频进行编码的方法,包括:
确定在位流的序列参数集(SPS)中是否存在档、层和级(PTL)语法结构、解码图像缓冲区(DPB)参数语法结构或假设参考解码器(HRD)参数语法结构中的至少一个;
确定第一值是否大于1,所述第一值指定在参考SPS的编码层视频序列(CLVS)中存在的时域子层的最大数量;以及
当所述SPS中至少存在所述PTL语法结构、所述DPB参数语法结构或所述HRD参数语法结构中的一个并且所述第一值大于1时,用信号通知被配置为控制所述SPS中的所述DPB参数语法结构中的语法元素的存在的标志。
78、根据条款77所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
当所述第一值等于或小于1时,在所述DPB参数语法结构中用信号通知一个或多个语法元素,而不在所述SPS中用信号通知所述标志。
79、一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于对视频进行编码的方法,包括:
确定第一序列参数集(SPS)语法元素的值,所述第一SPS语法元素指定当所述第一SPS语法元素的值大于零时由所述SPS参考的视频参数集(VPS)的标识符;
响应于所述第一SPS语法元素的值大于零,基于对应的VPS语法元素来分配第二SPS语法元素的范围,所述第二SPS语法元素指定在参考所述SPS的每个编码层视频序列(CLVS)中存在的时域子层的最大数量;以及
响应于所述第一SPS语法元素的值等于零,将所述第二SPS语法元素的的范围分配为零到一固定值的闭区间,所述第二SPS语法元素指定在参考所述SPS的每个CLVS中存在的时域子层的所述最大数量。
80、一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于对视频进行编码的方法,包括:
对指定PTL相关信息的一个或多个档、层和级(PTL)语法元素进行编码;以及
使用可变长度用信号通知位流的视频参数集(VPS)或序列参数集(SPS)中的所述一个或多个PTL语法元素。
81、根据条款80所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备通过以下方式对所述一个或多个PTL语法元素进行编码:
使用可变长度对第一PTL语法元素进行编码,所述第一PTL语法元素指定PTL语法结构的索引。
82、根据条款81所述的非暂时性计算机可读存储介质,其中所述VPS或所述SPS包括N个PTL语法结构,N是整数,并且可由设备的一个或多个处理器执行的指令集使设备通过以下方式对一个或多个PTL语法元素进行编码:
将所述第一PTL语法元素的长度设置为大于或等于以2为底N的对数的最小整数。
83、根据条款81所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使得所述设备通过以下方式对所述一个或多个PTL语法元素进行编码:
通过使用指数哥伦布码对所述第一个PTL语法元素进行编码。
84、根据条款80所述的非暂时性计算机可读存储介质,其中所述VPS或所述SPS包括N个PTL语法结构,N是整数,并且可由设备的一个或多个处理器执行的指令集使设备通过以下方式对一个或多个PTL语法元素进行编码:
使用可变长度对第二PTL语法元素进行编码,所述第二PTL语法元素指定所述N。
85、一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于对视频进行编码的方法,包括:
使用可变长度的对视频参数集(VPS)语法元素进行编码;以及
在所述VPS中用信号通知所述VPS语法元素,所述VPS语法元素与包含在参考VPS的编码视频序列(CVS)中的输出层集(OLS)的数量相关联。
86、根据条款85所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
当参考VPS的编码视频序列(CVS)中的层的最大允许数量小于预定义长度值时,将所述VPS语法元素的长度设置为等于所述最大允许数量。
87、一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于解码视频的方法,包括:
接收包括编码视频序列(CVS)的位流;
确定CVS是否具有相同数量的档、层和级(PTL)语法结构和输出层集(OLS);以及
响应于所述PTL语法结构的数量等于所述OLS的数量,跳过对第一PTL语法元素的解码,所述第一PTL语法元素将在解码VPS时应用于对应OLS的PTL语法结构的索引指定到所述VPS中的PTL语法结构列表。
88、根据条款87所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
响应于所述PTL语法结构的数量等于所述OLS的数量,确定所述第一PTL语法元素等于由第一PTL语法元素指定的所述PTL语法结构所应用的OLS的索引。
89、根据条款87所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
确定所述PTL语法结构的数量是否等于1;以及
响应于所述PTL语法结构的数量等于1,在解码VPS时跳过对所述第一PTL语法元素的解码。
90、根据条款89所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
响应于所述PTL语法结构的数量等于1,确定所述第一PTL语法元素为零。
91、根据条款87所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
响应于所述PTL语法结构的数量大于1并且与所述OLS的数量不同,在所述VPS中以固定长度对所述第一PTL语法元素进行解码。
92、一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于解码视频的方法,包括:
接收包括编码视频序列(CVS)的位流;
确定所述CVS是否具有相等数量的解码图像缓冲区(DPB)参数语法结构和输出层集(OLS);以及
响应于所述CVS具有相等数量的DPB参数语法结构和OLS,跳过对第一DPB语法元素的解码,所述第一DPB语法元素将应用于相应OLS的DPB参数语法结构的索引指定到所述VPS中的DPB参数语法结构列表。
93、根据条款92所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
确定所述DPB参数语法结构的数量是否小于或等于1;以及
响应于所述DPB参数语法结构的数量小于或等于1,在解码所述VPS时跳过对所述第一DPB语法元素的解码。
94、根据条款93所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
响应于所述DPB参数语法结构的数量小于或等于1,确定所述第一DPB语法元素为零;以及
响应于所述DPB语法结构的数量等于OLS的数量,确定所述第一DPB语法元素等于由所述第一DPB语法元素指定的所述DPB参数语法结构所应用的OLS的索引。
95、根据条款93所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
响应于所述DPB参数语法结构的数量大于1并且与所述OLS的数量不同,在所述VPS中使用可变长度对所述第一DPB语法元素进行解码。
96、一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于解码视频的方法,包括:
接收包括视频参数集(VPS)和序列参数集(SPS)的位流;
响应于所述SPS中存在的档、层和别(PTL)语法结构、解码图像缓冲区(DPB)参数语法结构或假设参考解码器(HRD)参数语法结构中的至少一个,确定一第一值是否大于1,所述第一值指定在参考所述SPS的每个编码层视频序列(CLVS)中存在的时域子层的最大数量;和
响应于所述第一值大于1,对被配置为控制所述SPS中的所述DPB参数语法结构中的语法元素存在的标志进行解码。
97、根据条款96所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
响应于所述第一值等于或小于1,推断所述标志等于零,并且在所述SPS中对所述DPB参数语法结构中的一个或多个语法元素进行解码,而不对所述标志解码。
98、一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于解码视频的方法,包括:
确定第一序列参数集(SPS)语法元素的值,所述第一SPS语法元素指定当所述第一SPS语法元素的值大于零时由SPS参考的视频参数集(VPS)的标识符;以及
对第二SPS语法元素进行解码,该第二SPS语法元素指定在参考SPS的每个编码层视频序列(CLVS)中存在的时域子层的最大数量,当所述第一SPS语法元素的值大于零时,所述第二SPS语法元素的范围基于由所述SPS参考的VPS的对应VPS语法元素,或者当所述第一SPS语法元素的值等于零时,所述第二SPS语法元素的范围基于一固定值。
99、一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于解码视频的方法,包括:
接收包括视频参数集(VPS)或序列参数集(SPS)的位流;以及
对所述VPS或SPS中的一个或多个档、层和级(PTL)语法元素进行解码,所述一个或多个PTL语法元素指定PTL相关信息。
100、根据条款99所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使得所述设备通过以下方式解码所述一个或多个PTL语法元素:
使用可变长度对第一PTL语法元素进行解码,所述第一PTL语法元素指定PTL语法结构的索引。
101、根据条款100所述的非暂时性计算机可读存储介质,其中所述VPS或所述SPS包括N个PTL语法结构,N是整数,并且所述第一PTL语法元素的长度是大于或等于以2为底N的对数的最小整数。
102、根据条款100所述的非暂时性计算机可读存储介质,其中所述第一PTL语法元素通过使用指数哥伦布码来编码。
103、根据条款99所述的非暂时性计算机可读存储介质,其中所述VPS或所述SPS包括N个PTL语法结构,N是整数,并且可由设备的一个或多个处理器执行的指令集使设备通过以下方式对一个或多个PTL语法元素进行解码:
使用可变长度对第二PTL语法元素进行解码,所述第二PTL语法元素指定N。
104、一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于解码视频的方法,包括:
接收包括视频参数集(VPS)的位流;以及
使用可变长度对VPS中的VPS语法元素进行解码,所述VPS语法元素与包含在参考所述VPS的编码视频序列(CVS)中的输出层集(OLS)的数量相关联。
105、根据条款104所述的非暂时性计算机可读存储介质,其中当参考所述VPS的所述编码视频序列(CVS)中的层的最大允许数量小于预定义长度值时,所述VPS语法元素的长度等于所述最大允许数量。
在一些实施例中,还提供了包括指令的非暂时性计算机可读存储介质,并且所述指令可以由设备(诸如所公开的编码器和解码器)执行,用于执行上述方法。非暂时性介质的常见形式包括,例如,软盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、任何具有孔图案的物理介质、RAM、PROM和EPROM、FLASH-EPROM或任何其他闪存、NVRAM、高速缓存、寄存器、任何其他存储芯片或盒式存储,以及它们的联网版本。该设备可以包括一个或多个处理器CPU)、输入/输出接口、网络接口和/或存储器。
应该注意的是,本文中的诸如“第一”和“第二”的关系术语仅用于将实体或操作与另一实体或操作区分开来,而不要求或暗示这些实体或操作之间的任何实际关系或顺序。此外,词语“包括”、“具有”、“包含”和“包括”和其他类似的形式在含义上是等效的,并且是开放式的,因为在这些词语中的任何一个后面的一个或多个项目并不意味着是这样一个或多个项目的详尽列表,或者意味着仅限于列出的一个或多个项目。
如本文所用,除非另有特别说明,术语“或”包括所有可能的组合,除非在不可行的情况下。例如,如果声明数据库可包括A或B,则除非另有明确声明或不可行,否则数据库可包括A、或B、或A和B。作为第二示例,如果声明数据库可以包括A、B或C,则除非另有明确说明或不可行,否则数据库可以包括A、或B、或C、或A和B、或A和C、或B和C、或A,B和C。
应当理解,上述实施例可以通过硬件、或软件(程序代码)、或硬件和软件的组合来实现。如果通过软件实现,则可以将其存储在上述计算机可读介质中。该软件在由处理器执行时可以执行所公开的方法。本公开中描述的计算单元和其他功能单元可以通过硬件、或软件、或硬件和软件的组合来实现。本领域普通技术人员还将理解,可以将上述多个模块/单元组合为一个模块/单元,并且可以将上述模块/单元中的每一个进一步划分为多个子模块/子单元。
在前面的说明书中,已经参考许多具体细节描述了实施例,这些具体细节可以随实施而变化。可以对所描述的实施例进行某些修改和改变。通过考虑本文公开的本公开的说明书和实践,其他实施例对于本领域技术人员来说是显而易见的。本说明书和实施例仅被认为是示例性的,本发明的真正范围和精神由所附的权利要求指示。在附图所示的步骤序列仅用于说明目的,而不旨在限于任何特定的步骤序列。因此,本领域技术人员可以理解,这些步骤可以在实施相同方法的同时以不同的顺序执行。
在附图和说明书中,已经公开了示例性实施例。然而,可以对这些实施例进行许多变化和修改。因此,尽管采用了特定的术语,但它们仅在通用和描述性的意义上使用,而不是出于限制的目的。