一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于分辨率改变的解码图像缓冲区操作的制作方法

2022-05-08 09:54:13 来源:中国专利 TAG:

用于分辨率改变的解码图像缓冲区操作
1.相关申请交叉引用
2.本专利申请要求王业奎(ye-kui wang)于2019年9月24日递交的申请号为62/905,236、发明名称为“视频译码改进(video coding improvements)”的美国临时专利申请的权益,其内容通过引用结合在本技术中。
技术领域
3.本发明一般涉及视频译码,具体涉及指示(signal)参数以支持多层码流译码的改进。


背景技术:

4.即使在视频较短的情况下,也需要大量的视频数据来描述,当数据要在带宽容量受限的通信网络中流式传输或以其它方式传输时,这样可能会造成困难。因此,视频数据通常要先压缩,然后在现代电信网络中发送。由于内存资源可能有限,当在存储设备上存储视频时,视频的大小也可能成为问题。视频压缩设备通常在信源侧使用软件和/或硬件对视频数据进行编码,然后进行传输或存储,从而减少表示数字视频图像所需的数据量。然后,解码视频数据的视频解压缩设备在目的地侧接收压缩数据。在网络资源有限以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。


技术实现要素:

5.在一个实施例中,本发明包括一种由解码器实现的方法,其中,所述方法包括:所述解码器的接收器接收包括多个图像的码流;当当前接入单元(access unit,au)的以亮度样本为单位的最大图像宽度(pigemaxinsamplesy)值与解码顺序中的前一au的picwidthmaxinsamplesy值不同时,所述处理器设置先前图像不输出标志(nooutputofpriorpicsflag)值;根据所述nooutputofpriorpicsflag值,在不输出包含的图像的情况下清空解码图像缓冲区(decoded picture buffer,dpb);所述处理器对当前图像进行解码;所述dpb存储所述当前图像。
6.视频译码系统可以将视频序列编码到多层中。这些层可以从经编码码流中提取并发送到解码器,使得所述解码器可以根据需要使用不同的特征来显示视频序列。例如,当网络条件最优时,图像可以以更高分辨率/更大大小传输,当网络条件恶化时,图像可以以更低分辨率/更小大小传输。此实现方式的一个问题是,解码器侧的dpb可能在层改变期间溢出,可能导致用户体验不佳。nooutputofpriorpicsflag可用于解决此问题。可以设置所述nooutputofpriorpicsflag,使得所述dpb被清空,为新的图像腾出空间。即使所述dpb中的前一图像被指定输出,也可能发生这种情况。在一些视频译码系统中,所述nooutputofpriorpicsflag是根据由于连续图像之间宽度或高度的改变而检测到的图像大小改变来设置的。自适应分辨率改变(adaptive resolution change,arc)是一种辅助分辨
率改变的机制。arc可以动态改变dpb中图像的分辨率,以匹配后续图像的分辨率,使得分辨率改变发生在irap图像以外的图像上。使用arc可能会阻碍所述nooutputofpriorpicsflag正常工作。具体地,arc可以将前一图像的空间分辨率改变为与当前图像的分辨率相同,阻碍了对图像大小改变进行正确检查。因此,通过有效禁用所述nooutputofpriorpicsflag,arc可能会导致dpb溢出。
7.所述方面提供了一种在使用arc时启用nooutputofpriorpicsflag的机制。例如,所述解码器可以检查最大图像高度和/或最大图像宽度的改变,而不是检查图像高度和宽度。所述最大图像高度和最大图像宽度不会因arc而更改。因此,可以正确设置所述nooutputofpriorpicsflag,以防止由于空间分辨率改变而导致dpb溢出,即使在层改变期间使用arc来协调分辨率。因此,可以避免各种错误。在检查经编码码流的标准一致性时,在编码器上操作的假设参考解码(hypothetical reference decoder,hrd)也可以使用类似的过程。这样,所述编码器和所述解码器的功能增加。此外,可以提高编码效率,减少了编码器和解码器侧的处理器、存储器和/或网络信令资源的使用。
8.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:当所述当前au的以亮度样本为单位的最大图像高度(picheightmaxinsamplesy)值与解码顺序中的所述前一au的picheightmaxinsamplesy值不同时,所述处理器设置所述nooutputofpriorpicsflag值。
9.可选地,根据上述任一方面,在所述方面的另一种实现方式中,在对所述当前图像进行解码之前,所述dpb被清空。
10.可选地,根据上述任一方面,在所述方面的另一种实现方式中,在解析所述当前图像中的第一条带的条带头之后,所述dpb被清空。
11.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:为清空所述dpb时删除的每个图像减小dpb满度变量。
12.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:在设置所述nooutputofpriorpicsflag之前,所述处理器构建参考图像列表并对所述当前au进行参考图像列表标记。
13.可选地,根据上述任一方面,在所述方面的另一种实现方式中,当前一图像被标记为不用于参考时,所述dpb被清空。
14.在一个实施例中,本发明包括一种由编码器实现的方法,其中,所述方法包括:所述编码器的处理器将多个图像编码到码流中;在处理器上操作的hrd通过以下方式检查所述码流的一致性:当当前au的以亮度样本为单位的pigemaxinsamplesy值与解码顺序中的前一au的picwidthmaxinsamplesy值不同时,所述处理器设置nooutputofpriorpicsflag值;根据所述nooutputofpriorpicsflag值,在不选择包含的图像进行输出的情况下清空dpb;所述处理器对当前图像进行解码;所述dpb存储所述当前图像;与所述处理器耦合的存储器存储所述码流,以将所述码流发送到解码器。
15.视频译码系统可以将视频序列编码到多层中。这些层可以从经编码码流中提取并发送到解码器,使得所述解码器可以根据需要使用不同的特征来显示视频序列。例如,当网络条件最优时,图像可以以更高分辨率/更大大小传输,当网络条件恶化时,图像可以以更低分辨率/更小大小传输。此实现方式的一个问题是,解码器侧的dpb可能在层改变期间溢
出,可能导致用户体验不佳。nooutputofpriorpicsflag可用于解决此问题。可以设置所述nooutputofpriorpicsflag,使得所述dpb被清空,为新的图像腾出空间。即使所述dpb中的前一图像被指定输出,也可能发生这种情况。在一些视频译码系统中,所述nooutputofpriorpicsflag是根据由于连续图像之间宽度或高度的改变而检测到的图像大小改变来设置的。arc是一种协助分辨率更改的机制。arc可以动态改变dpb中图像的分辨率,以匹配后续图像的分辨率,使得分辨率改变发生在irap图像以外的图像上。使用arc可能会阻碍所述nooutputofpriorpicsflag正常工作。具体地,arc可以将前一图像的空间分辨率改变为与当前图像的分辨率相同,阻碍了对图像大小改变进行正确检查。因此,通过有效禁用所述nooutputofpriorpicsflag,arc可能会导致dpb溢出。
16.所述方面提供了一种在使用arc时启用nooutputofpriorpicsflag的机制。例如,所述解码器可以检查最大图像高度和/或最大图像宽度的改变,而不是检查图像高度和宽度。所述最大图像高度和最大图像宽度不会因arc而更改。因此,可以正确设置所述nooutputofpriorpicsflag,以防止由于空间分辨率改变而导致dpb溢出,即使在层改变期间使用arc来协调分辨率。因此,可以避免各种错误。在检查经编码码流的标准一致性时,在编码器上操作的假设参考解码(hypothetical reference decoder,hrd)也可以使用类似的过程。这样,所述编码器和所述解码器的功能增加。此外,可以提高编码效率,减少了编码器和解码器侧的处理器、存储器和/或网络信令资源的使用。
17.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:当所述当前au的picheightmaxinsamplesy值与解码顺序中的所述前一au的picheightmaxinsamplesy值不同时,在所述处理器上操作的所述hrd设置所述nooutputofpriorpicsflag值。
18.可选地,根据上述任一方面,在所述方面的另一种实现方式中,在对所述当前图像进行解码之前,所述dpb被清空。
19.可选地,根据上述任一方面,在所述方面的另一种实现方式中,在解析所述当前图像中的第一条带的条带头之后,所述dpb被清空。
20.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:在所述处理器上操作的所述hrd为清空所述dpb时删除的每个图像减小dpb满度变量。
21.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:在所述处理器上操作的所述hrd构建参考图像列表并进行参考图像列表标记。
22.可选地,根据上述任一方面,在所述方面的另一种实现方式中,当前一图像被标记为不用于参考时,所述dpb被清空。
23.在一个实施例中,本发明包括一种视频译码设备,包括:处理器、与所述处理器耦合的接收器和与所述处理器耦合的存储器;与所述处理器耦合的发送器,其中,所述处理器、接收器、存储器和发送器用于执行上述方面中任一方面所述的方法。
24.在一个实施例中,本发明包括一种非瞬时性计算机可读介质,包括供视频译码设备使用的计算机程序产品,所述计算机程序产品包括存储在所述非瞬时性计算机可读介质中的计算机可执行指令,当处理器执行所述计算机可执行指令时,使得所述视频译码设备执行任一上述方面所述的方法。
25.在一个实施例中,本发明包括一种解码器。所述解码器包括:接收模块,用于接收
包括多个图像的码流;设置模块,用于当当前au的pigemaxinsamplesy值与解码顺序中的前一au的picwidthmaxinsamplesy值不同时,设置nooutputofpriorpicsflag值;清空模块,用于根据所述nooutputofpriorpicsflag值,在不输出包含的图像的情况下清空dpb;解码模块,用于对当前图像进行解码;存储模块,用于将所述当前图像存储在dpb中;输出模块,用于从所述dpb输出所述当前图像,以显示为解码视频序列的一部分。
26.视频译码系统可以将视频序列编码到多层中。这些层可以从经编码码流中提取并发送到解码器,使得所述解码器可以根据需要使用不同的特征来显示视频序列。例如,当网络条件最优时,图像可以以更高分辨率/更大大小传输,当网络条件恶化时,图像可以以更低分辨率/更小大小传输。此实现方式的一个问题是,解码器侧的dpb可能在层改变期间溢出,可能导致用户体验不佳。nooutputofpriorpicsflag可用于解决此问题。可以设置所述nooutputofpriorpicsflag,使得所述dpb被清空,为新的图像腾出空间。即使所述dpb中的前一图像被指定输出,也可能发生这种情况。在一些视频译码系统中,所述nooutputofpriorpicsflag是根据由于连续图像之间宽度或高度的改变而检测到的图像大小改变来设置的。arc是一种协助分辨率更改的机制。arc可以动态改变dpb中图像的分辨率,以匹配后续图像的分辨率,使得分辨率改变发生在irap图像以外的图像上。使用arc可能会阻碍所述nooutputofpriorpicsflag正常工作。具体地,arc可以将前一图像的空间分辨率改变为与当前图像的分辨率相同,阻碍了对图像大小改变进行正确检查。因此,通过有效禁用所述nooutputofpriorpicsflag,arc可能会导致dpb溢出。
27.所述方面提供了一种在使用arc时启用nooutputofpriorpicsflag的机制。例如,所述解码器可以检查最大图像高度和/或最大图像宽度的改变,而不是检查图像高度和宽度。所述最大图像高度和最大图像宽度不会因arc而更改。因此,可以正确设置所述nooutputofpriorpicsflag,以防止由于空间分辨率改变而导致dpb溢出,即使在层改变期间使用arc来协调分辨率。因此,可以避免各种错误。在检查经编码码流的标准一致性时,在编码器上操作的假设参考解码(hypothetical reference decoder,hrd)也可以使用类似的过程。这样,所述编码器和所述解码器的功能增加。此外,可以提高编码效率,减少了编码器和解码器侧的处理器、存储器和/或网络信令资源的使用。
28.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述解码器还用于执行上述任一方面所述的方法。
29.在一个实施例中,本发明包括一种编码器。所述编码器包括:编码模块,用于将多个图像编码到码流中;hrd模块,用于通过以下方式检查所述码流的一致性:当当前au的pigemaxinsamplesy值与解码顺序中的前一au的picwidthmaxinsamplesy值不同时,设置nooutputofpriorpicsflag值;根据所述nooutputofpriorpicsflag值,在不选择包含的图像进行输出的情况下清空dpb;对当前图像进行解码;将所述当前图像存储在所述dpb中;存储模块,用于存储所述码流,以将所述码流发送到解码器。
30.视频译码系统可以将视频序列编码到多层中。这些层可以从经编码码流中提取并发送到解码器,使得所述解码器可以根据需要使用不同的特征来显示视频序列。例如,当网络条件最优时,图像可以以更高分辨率/更大大小传输,当网络条件恶化时,图像可以以更低分辨率/更小大小传输。此实现方式的一个问题是,解码器侧的dpb可能在层改变期间溢出,可能导致用户体验不佳。nooutputofpriorpicsflag可用于解决此问题。可以设置所述
nooutputofpriorpicsflag,使得所述dpb被清空,为新的图像腾出空间。即使所述dpb中的前一图像被指定输出,也可能发生这种情况。在一些视频译码系统中,所述nooutputofpriorpicsflag是根据由于连续图像之间宽度或高度的改变而检测到的图像大小改变来设置的。arc是一种协助分辨率更改的机制。arc可以动态改变dpb中图像的分辨率,以匹配后续图像的分辨率,使得分辨率改变发生在irap图像以外的图像上。使用arc可能会阻碍所述nooutputofpriorpicsflag正常工作。具体地,arc可以将前一图像的空间分辨率改变为与当前图像的分辨率相同,阻碍了对图像大小改变进行正确检查。因此,通过有效禁用所述nooutputofpriorpicsflag,arc可能会导致dpb溢出。
31.所述方面提供了一种在使用arc时启用nooutputofpriorpicsflag的机制。例如,所述解码器可以检查最大图像高度和/或最大图像宽度的改变,而不是检查图像高度和宽度。所述最大图像高度和最大图像宽度不会因arc而更改。因此,可以正确设置所述nooutputofpriorpicsflag,以防止由于空间分辨率改变而导致dpb溢出,即使在层改变期间使用arc来协调分辨率。因此,可以避免各种错误。在检查经编码码流的标准一致性时,在编码器上操作的假设参考解码(hypothetical reference decoder,hrd)也可以使用类似的过程。这样,所述编码器和所述解码器的功能增加。此外,可以提高编码效率,减少了编码器和解码器侧的处理器、存储器和/或网络信令资源的使用。
32.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述编码器还用于执行上述任一方面所述的方法。
33.在一个实施例中,本发明包括一种由解码器实现的方法,其中,所述方法包括:所述解码器的接收器接收包括多个图像的码流;当当前au的pigemaxinsamplesy值与解码顺序中的前一au的picwidthmaxinsamplesy值不同时,在不输出包含的图像的情况下清空dpb;所述处理器对当前图像进行解码;所述dpb存储所述当前图像。
34.视频译码系统可以将视频序列编码到多层中。这些层可以从经编码码流中提取并发送到解码器,使得所述解码器可以根据需要使用不同的特征来显示视频序列。例如,当网络条件最优时,图像可以以更高分辨率/更大大小传输,当网络条件恶化时,图像可以以更低分辨率/更小大小传输。此实现方式的一个问题是,解码器侧的dpb可能在层改变期间溢出,可能导致用户体验不佳。nooutputofpriorpicsflag可用于解决此问题。可以设置所述nooutputofpriorpicsflag,使得所述dpb被清空,为新的图像腾出空间。即使所述dpb中的前一图像被指定输出,也可能发生这种情况。在一些视频译码系统中,所述nooutputofpriorpicsflag是根据由于连续图像之间宽度或高度的改变而检测到的图像大小改变来设置的。arc是一种协助分辨率更改的机制。arc可以动态改变dpb中图像的分辨率,以匹配后续图像的分辨率,使得分辨率改变发生在irap图像以外的图像上。使用arc可能会阻碍所述nooutputofpriorpicsflag正常工作。具体地,arc可以将前一图像的空间分辨率改变为与当前图像的分辨率相同,阻碍了对图像大小改变进行正确检查。因此,通过有效禁用所述nooutputofpriorpicsflag,arc可能会导致dpb溢出。
35.所述方面提供了一种在使用arc时启用nooutputofpriorpicsflag的机制。例如,所述解码器可以检查最大图像高度和/或最大图像宽度的改变,而不是检查图像高度和宽度。所述最大图像高度和最大图像宽度不会因arc而更改。因此,可以正确设置所述nooutputofpriorpicsflag,以防止由于空间分辨率改变而导致dpb溢出,即使在层改变期
间使用arc来协调分辨率。因此,可以避免各种错误。在检查经编码码流的标准一致性时,在编码器上操作的假设参考解码(hypothetical reference decoder,hrd)也可以使用类似的过程。这样,所述编码器和所述解码器的功能增加。此外,可以提高编码效率,减少了编码器和解码器侧的处理器、存储器和/或网络信令资源的使用。
36.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:当所述当前au的picheightmaxinsamplesy值与解码顺序中的所述前一au的picheightmaxinsamplesy值不同时,在不输出包含的图像的情况下清空所述dpb。
37.可选地,根据上述任一方面,在所述方面的另一种实现方式中,在对所述当前图像进行解码之前,所述dpb被清空。
38.可选地,根据上述任一方面,在所述方面的另一种实现方式中,在解析所述当前图像中的第一条带的条带头之后,所述dpb被清空。
39.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:为清空所述dpb时删除的每个图像减小dpb满度变量。
40.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:在清空所述dpb之前,所述处理器构建参考图像列表并对所述当前au进行参考图像列表标记。
41.可选地,根据上述任一方面,在所述方面的另一种实现方式中,当前一图像被标记为不用于参考时,所述dpb被清空。
42.在一个实施例中,本发明包括一种由编码器实现的方法,其中,所述方法包括:所述编码器的处理器将多个图像编码到码流中;在处理器上操作的hrd通过以下方式检查所述码流的一致性:当当前au的pigemaxinsamplesy值与解码顺序中的前一au的picwidthmaxinsamplesy值不同时,在不输出包含的图像的情况下清空dpb;所述处理器对当前图像进行解码;所述dpb存储所述当前图像;与所述处理器耦合的存储器存储所述码流,以将所述码流发送到解码器。
43.视频译码系统可以将视频序列编码到多层中。这些层可以从经编码码流中提取并发送到解码器,使得所述解码器可以根据需要使用不同的特征来显示视频序列。例如,当网络条件最优时,图像可以以更高分辨率/更大大小传输,当网络条件恶化时,图像可以以更低分辨率/更小大小传输。此实现方式的一个问题是,解码器侧的dpb可能在层改变期间溢出,可能导致用户体验不佳。nooutputofpriorpicsflag可用于解决此问题。可以设置所述nooutputofpriorpicsflag,使得所述dpb被清空,为新的图像腾出空间。即使所述dpb中的前一图像被指定输出,也可能发生这种情况。在一些视频译码系统中,所述nooutputofpriorpicsflag是根据由于连续图像之间宽度或高度的改变而检测到的图像大小改变来设置的。arc是一种协助分辨率更改的机制。arc可以动态改变dpb中图像的分辨率,以匹配后续图像的分辨率,使得分辨率改变发生在irap图像以外的图像上。使用arc可能会阻碍所述nooutputofpriorpicsflag正常工作。具体地,arc可以将前一图像的空间分辨率改变为与当前图像的分辨率相同,阻碍了对图像大小改变进行正确检查。因此,通过有效禁用所述nooutputofpriorpicsflag,arc可能会导致dpb溢出。
44.所述方面提供了一种在使用arc时启用nooutputofpriorpicsflag的机制。例如,所述解码器可以检查最大图像高度和/或最大图像宽度的改变,而不是检查图像高度和宽
度。所述最大图像高度和最大图像宽度不会因arc而更改。因此,可以正确设置所述nooutputofpriorpicsflag,以防止由于空间分辨率改变而导致dpb溢出,即使在层改变期间使用arc来协调分辨率。因此,可以避免各种错误。在检查经编码码流的标准一致性时,在编码器上操作的假设参考解码(hypothetical reference decoder,hrd)也可以使用类似的过程。这样,所述编码器和所述解码器的功能增加。此外,可以提高编码效率,减少了编码器和解码器侧的处理器、存储器和/或网络信令资源的使用。
45.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:当所述当前au的picheightmaxinsamplesy值与解码顺序中的所述前一au的picheightmaxinsamplesy值不同时,在不输出包含的图像的情况下清空所述dpb。
46.可选地,根据上述任一方面,在所述方面的另一种实现方式中,在对所述当前图像进行解码之前,所述dpb被清空。
47.可选地,根据上述任一方面,在所述方面的另一种实现方式中,在解析所述当前图像中的第一条带的条带头之后,所述dpb被清空。
48.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:为清空所述dpb时删除的每个图像减小dpb满度变量。
49.可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:在清空所述dpb之前,所述处理器构建参考图像列表并对所述当前au进行参考图像列表标记。
50.可选地,根据上述任一方面,在所述方面的另一种实现方式中,当前一图像被标记为不用于参考时,所述dpb被清空。
51.为了描述的清晰性,上述任一实施例可以与上述其它任一或多个实施例结合以创建本发明范围内的新实施例。
52.这些和其它特征将结合附图和权利要求书从以下详细描述中更清楚地理解。
附图说明
53.为了更透彻地理解本发明,现参考结合附图和具体实施方式而描述的以下简要说明,其中的相同附图标记表示相同部件。
54.图1为对视频信号进行译码的示例性方法的流程图。
55.图2为用于视频译码的示例性编码和解码(编解码)系统的示意图。
56.图3为示例性视频编码器的示意图。
57.图4为示例性视频解码器的示意图。
58.图5为示例性假设参考解码(hypothetical reference decoder,hrd)的示意图。
59.图6为示例性多层视频序列的示意图。
60.图7为示例性码流的示意图。
61.图8为示例性视频译码设备的示意图。
62.图9为将视频序列编码到码流中以支持与自适应分辨率改变(adaptive resolution change,arc)结合使用先前图像不输出标志(nooutputofpriorpicsflag)的示例性方法的流程图。
63.图10为结合arc使用nooutputofpriorpicsflag时从码流中解码视频序列的示例
性方法的流程图。
64.图11为结合arc使用nooutputofpriorpicsflag时将视频序列译码到码流中的示例性系统的示意图。
具体实施方式
65.首先应理解,尽管下文提供一项或多项实施例的说明性实现方式,但本发明所公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
66.以下术语的定义如下所述,除非在本文相反的上下文中使用。具体地,以下定义旨在更加清晰地描述本发明。但是,术语在不同的上下文中可能会有不同的描述。因此,以下定义应当视为补充信息,不应当视为对此处为这些术语提供的描述的任何其它定义进行限制。
67.码流(bitstream)是包括视频数据的一系列比特,这些视频数据被压缩以在编码器和解码器之间传输。编码器(encoder)是一种用于采用编码过程将视频数据压缩到码流中的设备。解码器(decoder)是一种用于采用解码过程从码流中重建视频数据进行显示的设备。图像是创建帧或其场的亮度样本和/或色度样本组成的阵列。亮度样本是图像中点/像素的亮度值。图像宽度是图像左边界和图像右边界之间的以亮度样本为单位测量的水平距离。图像高度是图像上边界和图像下边界之间的以亮度样本为单位测量的垂直距离。条带(slice)是图像中的整数个完整分块或图像中(例如,一个分块内)的整数个连续完整的编码树单元(coding tree unit,ctu)行,这些分块或ctu行只包括在单个网络抽象层(network abstraction layer,nal)单元中。为了清楚讨论,正在编码或解码的图像可以称为当前图像。经编码图像(coded picture)是图像的经译码表示,包括在接入单元(access unit,au)内具有nal单元头层标识符(nuh_layer_id)的特定值的视频编码层(video coding layer,vcl)nal单元并包括该图像的所有编码树单元(coding tree unit,ctu)。解析是对一串数据进行分析,以获得逻辑数据分量的过程。经解码图像(decoded picture)是通过将解码过程应用于经编码图像而产生的图像。
68.au是一组包括在不同层中并与从解码图像缓冲区(decoded picture buffer,dpb)输出的相同时间相关联的经编码图像。当前au是对应于解码过程和/或hrd一致性检查过程中的特定输出时间的au。前一au是解码顺序中出现在当前au之前(例如,紧靠前面)的au。解码顺序是语法元素通过解码过程进行处理的顺序。nal单元是一种语法结构,包括原始字节序列载荷(raw byte sequence payload,rbsp)形式的数据,是数据类型的指示,并根据需要穿插预防混淆字节。vcl nal单元是经译码为包括视频数据的nal单元,例如图像的经译码条带。非vcl nal单元是包括非视频数据的nal单元,例如支持对视频数据进行解码、一致性检查的性能或其它操作的语法和/或参数。层是vcl nal单元和关联的非vcl nal单元的集合,所述vcl nal单元共用由层id指示的指定特征(例如,公共分辨率、帧率、图像大小等)。
69.dpb是保存经解码图像以供参考、输出重新排序或输出延迟的缓冲区。dpb满度变量是表示存储在dpb中的图像数量的数据元素。减小是指值的减小。参考图像列表是用于帧
间预测的参考图像的列表。参考图像列表标记是根据当前条带的构建参考图像列表,将dpb中的经解码图像标记为参考状态的过程,所述参考状态包括不用于参考、用于短期参考和用于长期参考。不用于参考是表示经解码图像不用作任何要解码的其它图像的参考图像的参考状态。先前图像不输出标志(nooutputofpriorpicsflag)是表示在不输出dpb中包含的图像的情况下,应何时清空dpb的推导变量。以亮度样本为单位的最大图像宽度(picwidthmaxinsamplesy)是表示对应序列和/或层中每个经解码图像的以亮度样本为单位的最大宽度的推导变量。以亮度样本为单位的最大图像高度(picheightmaxinsamplesy)是表示对应序列和/或层中每个经解码图像的以亮度样本为单位的最大高度的推导变量。
70.假设参考解码(hypothetical reference decoder,hrd)是在编码器上运行的解码器模型,检查编码过程产生的码流的可变性,以验证是否符合指定约束条件。码流一致性测试是确定经编码码流是否符合通用视频编码(versatile video coding,vvc)等标准的测试。图像参数集(picture parameter set,pps)是一种语法结构,包括适用于完整的经编码图像的语法元素,所述完整的经编码图像由每个图像头中存在的语法元素确定。图像头是一种语法结构,包括应用于经编码图像中的所有条带的语法元素。条带头(slice header)是经译码条带的一部分,包括与条带中表示的所有分块或一个分块内的ctu行相关的数据元素。编码视频序列是一个或多个经编码图像的集合。解码视频序列是一个或多个经解码图像的集合。
71.本文中使用以下首字母缩写:接入单元(access unit,au)、编码树块(coding tree block,ctb)、编码树单元(coding tree unit,ctu)、编码单元(coding unit,cu)、编码层视频序列(coded layer video sequence,clvs)、编码层视频序列开始(coded layer video sequence start,clvss)、编码视频序列(coded video sequence,cvs)、编码视频序列开始(coded video sequence start,cvss)、联合视频专家组(joint video experts team,jvet)、假设参考解码(hypothetical reference decoder,hrd)、运动约束分块集(motion constrained tile set,mcts)、最大传输单元(maximum transfer unit,mtu)、网络抽象层(network abstraction layer,nal)、输出层集(output layer set,ols)、图像顺序编号(picture order count,poc)、随机接入点(random access point,rap)、原始字节序列载荷(raw byte sequence payload,rbsp)、序列参数集(sequence parameter set,sps)、视频参数集(video parameter set,vps)、通用视频编码(versatile video coding,vvc)。
72.许多视频压缩技术可以用来减小视频文件的大小,同时最大限度地减少数据丢失。例如,视频压缩技术可以包括执行空间(例如,帧内)预测和/或时间(例如,帧间)预测来减少或去除视频序列中的数据冗余。对于基于块的视频译码,视频条带(slice)(例如,视频图像或视频图像的一部分)可以分割成视频块,视频块也可以称为树块、编码树块(coding tree block,ctb)、编码树单元(coding tree unit,ctu)、编码单元(coding unit,cu)和/或编码节点。一个图像的帧内译码(i)条带中的视频块使用针对同一图像内的相邻块中的参考样本的空间预测进行译码。一个图像的帧间译码单向预测(p)或双向预测(b)条带中的视频块可以采用针对同一图像内的相邻块中的参考样本的空间预测,或者采用针对其它参考图像中的参考样本的时间预测进行译码。图像(picture/image)可以称为帧(frame),参考图像可以称为参考帧。空间或时间预测会产生表示图像块的预测块。残差数据表示原始
图像块和预测块之间的像素差。相应地,帧间译码块根据指向构成预测块的参考样本的块的运动矢量和表示编码块与预测块之间的差值的残差数据进行编码,帧内译码块根据帧内译码模式和残差数据进行编码。为了进一步压缩,残差数据可以从像素域变换到变换域,从而产生残差变换系数,然后可以量化残差变换系数。量化变换系数最初可以排列于二维阵列中。可以扫描量化变换系数,以产生变换系数的一维矢量。可以应用熵编码来实现更大程度的压缩。下文将更详细地讨论这些视频压缩技术。
73.为了保证经编码视频能够被准确解码,按照对应的视频编码标准对视频进行编码和解码。视频编码标准包括国际电信联盟标准化部门(international telecommunication union(itu)standardization sector,itu-t)h.261、国际标准化组织/国际电工委员会(international organization for standardization/international electrotechnical commission,iso/iec)运动图像专家组(motion picture experts group,mpeg)-1第2部分、itu-t h.262或iso/iec mpeg-2第2部分、itu-t h.263、iso/iec mpeg-4第2部分、高级视频编码(advanced video coding,avc)(也称为itu-t h.264或iso/iec mpeg-4第10部分),以及高效视频编码(high efficiency video coding,hevc)(也称为itu-t h.265或mpeg-h第2部分)。avc包括可分级视频编码(scalable video coding,svc)、多视点视频编码(multiview video coding,mvc)和多视点视频编码加深度(multiview video coding plus depth,mvc d)以及三维(three dimensional,3d)avc(3d-avc)等扩展版。hevc包括可分级hevc(scalable hevc,shvc)、多视图hevc(multiview hevc,mv-hevc)以及3d hevc(3d-hevc)等扩展版。itu-t和iso/iec的联合视频专家组(joint video experts team,jvet)已开始开发一种称为通用视频编码(versatile video coding,vvc)的视频编码标准。vvc包括在工作草案(working draft,wd)中,该wd包括jvet-o2001-v14。
74.视频译码系统可以将视频序列编码到多层中。这些层可以从经编码码流中提取并发送到解码器,使得所述解码器可以根据需要使用不同的特征来显示视频序列。例如,当网络条件最优时,图像可以以更高分辨率/更大大小传输,当网络条件恶化时,图像可以以更低分辨率/更小大小传输。此实现方式的一个问题是,解码器侧的解码图像缓冲区(decoded picture buffer,dpb)可能在层改变期间溢出,可能导致用户体验不佳。先前图像不输出标志(nooutputofpriorpicsflag)可用于解决此问题。可以设置所述nooutputofpriorpicsflag,使得所述dpb被清空,为新的图像腾出空间。即使所述dpb中的前一图像被指定输出,也可能发生这种情况。在一些视频译码系统中,所述nooutputofpriorpicsflag是根据由于图像之间宽度或高度的改变而检测到的图像大小改变来设置的。自适应分辨率改变(adaptive resolution change,arc)是一种辅助分辨率改变的机制。arc可以动态改变dpb中图像的分辨率,以匹配后续图像的分辨率,有助于分辨率改变发生在帧内随机接入点(intra random access point,irap)图像以外的图像上。使用arc可能会阻碍所述nooutputofpriorpicsflag正常工作。具体地,arc可以将前一图像的空间分辨率改变为与当前图像的分辨率相同,阻碍了对图像大小改变进行正确检查。因此,通过有效禁用所述nooutputofpriorpicsflag,arc可能会导致dpb溢出。
75.本发明公开了一种在使用arc时启用nooutputofpriorpicsflag的机制。例如,所述解码器可以检查最大图像高度和最大图像宽度的改变,而不是检查图像高度和宽度。所
述最大图像高度和最大图像宽度不会因arc而更改。因此,可以正确设置所述nooutputofpriorpicsflag,以防止由于空间分辨率改变而导致dpb溢出,即使在层改变期间使用arc来协调分辨率。因此,可以避免各种错误。在检查经编码码流的标准一致性时,在编码器上操作的假设参考解码(hypothetical reference decoder,hrd)也可以使用类似的过程。这样,所述编码器和所述解码器的功能增加。此外,可以提高编码效率,减少了编码器和解码器侧的处理器、存储器和/或网络信令资源的使用。
76.图1为对视频信号进行译码的示例性操作方法100的流程图。具体地,在编码器侧对视频信号进行编码。编码过程通过使用各种机制来压缩视频信号,从而减小视频文件。较小的文件大小有助于压缩视频文件传输给用户,同时减少相关的带宽开销。然后,解码器对压缩视频文件进行解码,以重建原始视频信号,向终端用户显示。解码过程通常与编码过程一样,有助于解码器以相同方式重建视频信号。
77.在步骤101中,将视频信号输入编码器。例如,视频信号可以是存储在存储器中的未压缩的视频文件。又如,视频文件可以由视频捕获设备(例如,摄像机)捕获,并且进行编码以支持视频的实时流传输。视频文件可以同时包括音频分量和视频分量。视频分量包括一系列图像帧,当按顺序观看时,这些图像帧会产生运动的视觉效果。这些帧包括以光表示的像素(本文称为亮度分量(或亮度样本))和颜色(称为色度分量(或颜色样本))。在一些示例中,所述帧还可以包括深度值以支持三维观看。
78.在步骤103中,将视频分割成块。分割包括将每个帧中的像素细分为正方形和/或矩形块以进行压缩。例如,在高效视频编码(high efficiency video coding,hevc)(还称为h.265和mpeg-h第2部分)中,可以先将帧分成编码树单元(coding tree unit,ctu),这些ctu是预定义大小(例如64
×
64个像素)的块。ctu包括亮度样本和色度样本。可以使用编码树将ctu分成块,然后递归地细分这些块,直到获得支持进一步编码的配置结构。例如,可以细分帧的亮度分量,直到各个块包括相对均匀的亮度(lighting)值。此外,可以细分帧的色度分量,直到各个块包括相对均匀的颜色值。因此,视频帧的内容不同,分割机制就不同。
79.在步骤105中,使用各种压缩机制来压缩在步骤103中分割的图像块。例如,可以使用帧间预测和/或帧内预测。帧间预测旨在利用一个事实,即物体在一个公共场景中往往出现在连续的帧中。因此,无需在相邻帧中重复描述在参考帧中描绘对象的块。一个对象(例如,一张桌子)可以在多个帧中保持恒定的位置。因此,该桌子只描述一次,相邻帧可以回指参考帧。模式匹配机制可用于匹配跨多个帧的对象。此外,由于对象移动或摄像机移动等原因,移动对象可以跨多个帧表示。在特定示例中,一个视频可以跨多个帧显示在屏幕上移动的汽车。运动矢量可以用来描述这种移动。运动矢量是一个二维矢量,提供从对象在一个帧中的坐标与该对象在参考帧中的坐标之间的偏移。因此,帧间预测可将当前帧中的图像块编码为运动矢量集,表示当前帧中的图像块与参考帧中的对应块之间的偏移。
80.帧内预测对公共帧中的块进行编码。帧内预测利用了以下事实:亮度分量和色度分量往往聚集在一个帧中。例如,一棵树的一部分中的一片绿色往往与几片类似的绿色相邻。帧内预测使用多种方向性预测模式(例如,hevc中的33个模式)、平面模式和直流(direct current,dc)模式。方向性模式表示当前块的样本与相邻块在对应方向上的样本相似/相同。平面模式表示可以根据行边缘的邻块对行/列(例如平面)上的一系列块进行插值。实际上,平面模式通过在变化值中使用相对恒定的斜率来表示亮度/颜色在行/列之间
的平滑过渡。dc模式用于边界平滑,表示块和与所有邻块的样本相关联的平均值类似/相同,所述邻块与方向预测模式的角方向相关联。因此,帧内预测块可以将图像块表示为各种关系预测模式值而不是实际值。此外,帧间预测块可以将图像块表示为运动矢量值而不是实际值。在这两种情况下,预测块在一些情况下可以不完全表示图像块。任何差异都存储在残差块中。可以对残差块进行变换以进一步压缩文件。
81.在步骤107中,可以应用各种滤波技术。在hevc中,滤波器是根据环内滤波方案应用的。以上讨论的基于块的预测可在解码器中创建块状图像。此外,基于块的预测方案可以对块进行编码,然后重建经编码块,以供以后用作参考块。环内滤波方案迭代地将噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和样本自适应偏移(sample adaptive offset,sao)滤波器应用到块/帧。这些滤波器减少了这些块伪影,以便可以准确地重建经编码文件。此外,这些滤波器减少了重建参考块伪影,使得伪影不太可能在基于重建参考块编码的后续块中产生其它的伪影。
82.在步骤109中,一旦视频信号被分割、压缩和滤波,则将所得数据编码到码流中。码流包括上述数据以及任何期望支持解码器中适当的视频信号重建的指示数据。例如,这些数据可以包括分割数据、预测数据、残差块和向解码器提供译码指令的各种标志。码流可以存储在存储器中,所述码流用于根据请求发送到解码器。码流还可以向多个解码器广播和/或组播。码流的创建是一个迭代过程。因此,步骤101、103、105、107和109可以在多个帧和块上连续和/或同时发生。图1所示的顺序是为了清楚和便于描述而呈现的,并非旨在将视频译码过程限制于特定顺序。
83.在步骤111中,解码器接收码流并开始解码过程。具体地,解码器使用熵解码方案将码流转换为对应的语法和视频数据。在步骤111中,解码器使用码流中的语法数据来确定帧的分割。所述分割应与步骤103中的块分割的结果匹配。现在描述在步骤111中使用的熵编码/解码。编码器在压缩过程中做出许多选择,例如根据输入图像中的值的空间定位从多个可能选项中选择块分割方案。指示确切的选项可以使用大量的二进制位。本文中使用的二进制位是当作变量的二进制值(例如,可以根据上下文变化的比特值)。熵编码有助于编码器丢弃任何明显不适合特定情况的选项,从而留下一组可使用的选项。然后,为每个可使用的选项分配一个码字。码字的长度取决于可使用选项的数量(例如,一个二进制位对应两个选项,两个二进制位对应三个到四个选项)。然后,编码器对所选选项的码字进行编码。此方案减小了码字的大小,因为码字的大小与期望的一样大,以唯一地指示可使用选项的小子集中的一个选项,而不是唯一地指示所有可能选项的可能大集中的选项。然后,解码器通过以与编码器类似的方式确定可使用选项集对所述选项进行解码。通过确定可使用选项集,解码器可以读取码字并确定编码器做出的选择。
84.在步骤113中,解码器执行块解码。具体地,解码器进行逆变换来生成残差块。然后,解码器使用残差块和对应的预测块,根据分割来重建图像块。预测块可包括编码器在步骤105中生成的帧内预测块和帧间预测块。然后,根据在步骤111中确定的分割数据将重建图像块放置在重建视频信号的帧中。步骤113的语法还可以通过上文讨论的熵编码在码流中指示。
85.在步骤115中,以类似于编码器在步骤107的方式对重建视频信号的帧执行滤波。例如,噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和sao滤波器可以应用于帧,以
去除块伪影。一旦帧被滤波,可以在步骤117中将视频信号输出到显示器以供终端用户观看。
86.图2是用于视频译码的示例性编码和解码(编解码)系统200的示意图。具体地,编解码系统200能够实现操作方法100。广义地,编解码器系统200用于描述编码器和解码器中使用的组件。如关于操作方法100中的步骤101和103所讨论,编解码系统200接收视频信号并对视频信号进行分割,产生分割后的视频信号201。然后,当作为编码器时,编解码系统200将分割后的视频信号201压缩到编码码流中,如关于方法100中的步骤105、107和109所讨论。当充当解码器时,编解码系统200从码流中生成输出视频信号,如结合操作方法100中的步骤111、113、115和117所述。编解码系统200包括通用译码器控制组件211、变换缩放量化组件213、帧内估计组件215、帧内预测组件217、运动补偿组件219、运动估计组件221、缩放和逆变换组件229、滤波器控制分析组件227、环内滤波器组件225、解码图像缓冲区组件223、标头格式和上下文自适应二进制算术编码(context adaptive binary arithmetic coding,cabac)组件231。这些组件如图所示相耦合。在图2中,黑线表示待编码/解码数据的运动,而虚线表示控制其它组件操作的控制数据的运动。编解码系统200的组件都可以在编码器中使用。解码器可包括编解码系统200中组件的子集。例如,解码器可以包括帧内预测组件217、运动补偿组件219、缩放和逆变换组件229、环内滤波器组件225以及解码图像缓冲区组件223。现对这些组件加以说明。
87.分割后的视频信号201是已通过编码树分割成像素块的捕获视频序列。编码树使用各种划分模式将像素块细分为更小的像素块。然后,可以将这些块进一步细分为更小的块。所述块可以称为编码树上的节点。将较大的父节点划分为较小的子节点。节点被细分的次数称为节点/编码树的深度。在一些情况下,划分的块可以包括在编码单元(coding unit,cu)中。例如,cu可以是ctu的子部分,包括亮度块、一个或多个红色差色度(cr)块和一个或多个蓝色差色度(cb)块以及cu的对应语法指令。划分模式可以包括二叉树(binary tree,bt)、三叉树(triple tree,tt)和四叉树(quad tree,qt),用于将节点分别划分为形状不同的两个、三个或四个子节点,具体取决于所使用的划分模式。将分割后的视频信号201转发到通用译码器控制组件211、变换缩放和量化组件213、帧内估计组件215、滤波器控制分析组件227和运动估计组件221进行压缩。
88.通用译码器控制组件211用于根据应用约束条件做出与将视频序列的图像编码到码流中相关的决策。例如,通用译码器控制组件211管理码率/码流大小相对于重建质量的优化。可以根据存储空间/带宽可用性和图像分辨率请求做出这些决策。通用译码器控制组件211还根据传输速度管理缓冲区的利用率,以减轻缓存欠载和超载问题。为了管理这些问题,通用译码器控制组件211管理由其它组件进行的分割、预测和滤波。例如,通用译码器控制组件211可以动态增加压缩复杂度以增大分辨率和带宽利用率,或者降低压缩复杂度以降低分辨率和带宽利用率。因此,通用译码器控制组件211控制编解码系统200的其它组件来平衡视频信号重建质量与码率问题。通用译码器控制组件211创建控制数据,控制其它组件的操作。控制数据还被转发到标头格式化和cabac组件231,以编码到码流中,从而指示用于在解码器中进行解码的参数。
89.分割后的视频信号201还发送到运动估计组件221和运动补偿组件219进行帧间预测。可以将分割后的视频信号201的帧或条带分为多个视频块。运动估计组件221和运动补
偿组件219根据一个或多个参考帧中的一个或多个块对所接收视频块执行帧间预测译码以提供时间预测。编解码系统200可以执行多个译码过程,以便为每个视频数据块选择适当的译码模式,等等。
90.运动估计组件221和运动补偿组件219可以高度集成,但出于概念的目的单独说明。由运动估计组件221执行的运动估计是生成运动矢量的过程,运动矢量用于估计视频块的运动。例如,运动矢量可以指示编码对象相对于预测块的位移。预测块是被发现在像素差方面与待编码块紧密匹配的块。预测块也可以称为参考块。这种像素差可以通过绝对差和(sum of absolute difference,sad)、平方差和(sum of square difference,ssd)或其它差度量确定。hevc使用若干编码对象,包括ctu、编码树块(coding tree block,ctb)和cu。例如,ctu可以划分为多个ctb,然后ctb可以划分为多个cb,多个cb用于包括在cu中。cu可以编码为包括预测数据的预测单元和/或包括cu的变换残差数据的变换单元(transform unit,tu)。运动估计组件221使用率失真分析作为率失真优化过程的一部分来生成运动矢量、预测单元和tu。例如,运动估计组件221可以为当前块/帧确定多个参考块、多个运动矢量等,并且可以选择具有最佳率失真特性的参考块、运动矢量等。最佳率失真特性平衡视频重建的质量(例如,压缩造成的数据丢失量)和译码效率(例如,最终编码的大小)。
91.在一些示例中,编解码系统200可以计算存储在解码图像缓冲区组件223中的参考图像的子整数像素位置的值。例如,视频编解码系统200可对参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置的值进行插值。因此,运动估计组件221可执行有关于整像素位置和分数像素位置的运动搜索,并输出具有分数像素精度的运动矢量。运动估计组件221通过比较预测单元的位置与参考图像的预测块的位置来计算经帧间编码条带中视频块的预测单元的运动矢量。运动估计组件221将计算的运动矢量作为运动数据输出到标头格式化和cabac组件231以进行编码,并将运动输出到运动补偿组件219。
92.由运动补偿组件219执行的运动补偿可涉及根据由运动估计组件221确定的运动矢量获取或生成预测块。同样,在一些示例中,运动估计组件221和运动补偿组件219可以在功能上集成。在接收当前视频块的预测单元的运动矢量时,运动补偿组件219可以定位运动矢量指向的预测块。然后,通过从正在译码的当前视频块的像素值中减去预测块的像素值,产生像素差值,从而形成残差视频块。通常,运动估计组件221对亮度分量进行运动估计,运动补偿组件219将根据亮度分量计算的运动矢量用于色度分量和亮度分量。将预测块和残差块转发到变换缩放和量化组件213。
93.分割后的视频信号201还发送到帧内估计组件215和帧内预测组件217。与运动估计组件221和运动补偿组件219一样,帧内估计组件215和帧内预测组件217可以高度集成,但出于概念的目的单独说明。帧内估计组件215和帧内预测组件217根据当前帧中的块对当前块进行帧内预测,以替代如上所述的由运动估计组件221和运动补偿组件219在帧之间执行的帧间预测。具体地,帧内估计组件215确定用于对当前块进行编码的帧内预测模式。在一些示例中,帧内估计组件215从多个测试的帧内预测模式中选择适当的帧内预测模式对当前块进行编码。然后,将所选择的帧内预测模式转发到标头格式化和cabac组件231用于进行编码。
94.例如,帧内估计组件215使用各种测试的帧内预测模式的率失真分析来计算率失真值,并在测试的模式中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定
经编码块和为了产生经编码块进行编码的原始未编码块之间的失真(或误差)量以及用于产生经编码块的码率(例如,比特数)。帧内估计组件215根据各种经编码块的失真和速率计算比率,确定哪种帧内预测模式得到块的最佳率失真值。另外,帧内估计组件215可用于根据率失真优化(rate-distortion optimization,rdo)使用深度建模模式(depth modeling mode,dmm)对深度图的深度块进行编码。
95.当在编码器上实现时,帧内预测组件217可根据由帧内估计组件215确定的已选帧内预测模式从预测块中生成残差块,或者当在解码器上实现时,从码流中读取残差块。残差块包括预测块和原始块之间的值差,表示为矩阵。然后,将残差块转发到变换缩放和量化组件213。帧内估计组件215和帧内预测分量217可以对亮度分量和色度分量执行操作。
96.变换缩放和量化组件213用于进一步压缩残差块。变换缩放和量化组件213将离散余弦变换(discrete cosine transform,dct)、离散正弦变换(discrete sine transform,dst)等变换或概念上类似的变换应用于残差块,产生包括残差变换系数值的视频块。还可以使用小波变换、整数变换、子带变换或其它类型的变换。变换可将残差信息从像素值域变换到变换域,例如频域。变换缩放和量化组件213还用于根据频率等对变换的残差信息进行缩放。这种缩放涉及对残差信息应用缩放因子,以便在不同的粒度上量化不同的频率信息,可以影响重建视频的最终视觉质量。变换缩放和量化分量213还用于量化变换系数以进一步降低码率。量化过程可以减少与部分或全部系数相关的位深度。可以通过调整量化参数来修改量化程度。在一些示例中,变换缩放和量化组件213随后可对包括量化变换系数的矩阵进行扫描。量化变换系数被转发到标头格式化和cabac组件231,以编码到码流中。
97.缩放和逆变换组件229进行变换缩放和量化组件213的逆操作以支持运动估计。缩放和逆变换组件229进行反缩放、逆变换和/或反量化来重建像素域中的残差块,例如,后续用作参考块,该参考块可成为另一当前块的预测块。运动估计组件221和/或运动补偿组件219可以通过将残差块与对应预测块相加来计算参考块,以用于对后续块/帧进行运动估计。将滤波器应用于重建参考块,以减少在缩放、量化和变换过程中产生的伪影。当预测后续块时,这些伪影可以产生不准确的预测(并产生其它伪影)。
98.滤波器控制分析组件227和环内滤波器组件225将滤波器应用于残差块和/或重建图像块。例如,缩放和逆变换组件229中的变换残差块可以与帧内预测组件217和/或运动补偿组件219中的对应预测块组合以重建原始图像块。然后,可以将滤波器应用于重建图像块。在一些示例中,可以将滤波器应用于残差块。如同图2中的其它组件,滤波器控制分析组件227和环内滤波器组件225高度集成且可以一起实现,但出于概念的目的进行单独描述。应用于重建参考块的滤波器应用于特定空间区域,并且包括多个参数以调整如何应用这些滤波器。所述滤波器控制分析组件227分析重建参考块,以确定应在哪里应用这些滤波器并设置对应的参数。这些数据作为滤波器控制数据转发到标头格式和cabac组件231进行编码。环内滤波器组件225根据滤波器控制数据应用这些滤波器。这些滤波器可以包括去块效应滤波器、噪声抑制滤波器、sao滤波器和自适应环路滤波器。这些滤波器可以根据示例应用于空间/像素域(例如,在重建像素块上)或频域中。
99.当作为编码器操作时,将滤波后的重建图像块、残差块和/或预测块存储在解码图像缓冲区组件223中,以供以后进行如上所述的运动估计。当作为解码器操作时,解码图像缓冲区组件223存储重建块和滤波块并向显示器转发重建块和滤波块,作为输出视频信号
的一部分。解码图像缓冲区组件223可以是能够存储预测块、残差块和/或重建图像块的任何存储器设备。
100.标头格式化和cabac组件231从编解码系统200的各组件接收数据并将此类数据编码到经译码码流中用于向解码器发送。具体地,标头格式化和cabac组件231生成各种标头以对控制数据(如通用控制数据和滤波器控制数据)进行编码。此外,包括帧内预测和运动数据的预测数据以及量化变换系数数据形式的残差数据均编码到码流中。最终码流包括解码器想要重建原始分割后的视频信号201的所有信息。这些信息还可以包括帧内预测模式索引表(也称为码字映射表)、各种块的编码上下文的定义、最可能的帧内预测模式的指示、分割信息的指示等。这些数据可以通过熵编码技术进行编码。例如,可以通过使用上下文自适应可变长度编码(context adaptive variable length coding,cavlc)、cabac、基于语法的上下文自适应二进制算术编码(syntax-based context-adaptive binary arithmetic coding,sbac)、概率区间分割熵(probability interval partitioning entropy,pipe)编码或其它熵编码技术来对所述信息进行编码。在熵编码之后,经译码码流可以发送到另一设备(例如,视频解码器)或存档以供稍后发送或检索。
101.图3为示例性视频编码器300的框图。视频编码器300可用于实现编解码系统200的编码功能和/或实现操作方法100的步骤101、103、105、107和/或109。编码器300对输入视频信号进行分割,产生和分割后的视频信号201基本相似的分割后的视频信号301。然后,通过编码器300的组件将分割后的视频信号301压缩和编码到码流中。
102.具体地,将分割后的视频信号301转发给帧内预测组件317进行帧内预测。帧内预测组件317可与帧内估计组件215和帧内预测组件217基本相似。分割后的视频信号301还转发到运动补偿组件321,用于根据解码图像缓冲区323中的参考块进行帧间预测。运动补偿组件321可与运动估计组件221和运动补偿组件219基本相似。将帧内预测组件317和运动补偿组件321中的预测块和残差块转发到变换和量化组件313以对残差块进行变换和量化。变换和量化组件313可与变换缩放和量化组件213基本相似。将变换和量化残差块和对应的预测块(以及相关控制数据)转发到熵编码组件331以编码到码流中。熵编码组件331可以实质上类似于标头格式化和cabac组件231。
103.变换和量化残差块和/或对应的预测块也从变换和量化组件313转发到逆变换和量化组件329以重建为参考块供运动补偿组件321使用。逆变换和量化组件329可与缩放和逆变换组件229基本相似。根据示例,也将环内滤波器组件325中的环内滤波器应用于残差块和/或重建参考块。环内滤波器组件325可与滤波器控制分析组件227和环内滤波器组件225基本相似。如关于环内滤波器组件225所讨论,环内滤波器组件325可以包括多个滤波器。然后,将滤波块存储在解码图像缓冲区组件323中,以供运动补偿组件321用作参考块。解码图像缓冲区组件323可与解码图像缓冲区组件223基本相似。
104.图4为示例性视频解码器400的框图。视频解码器400可用于实现编解码系统200的解码功能和/或实现操作方法100的步骤111、113、115和/或117。例如,解码器400从编码器300接收码流,并根据所述码流生成重建输出视频信号以向终端用户显示。
105.码流由熵解码组件433接收。熵解码组件433用于实现熵解码方案,例如cavlc、cabac、sbac、pipe编码或其它熵编码技术。例如,熵解码组件433可以使用标头信息来提供上下文以解译在码流中编码为码字的其它数据。解码信息包括对视频信号进行解码所需的
任何信息,例如总体控制数据、滤波器控制数据、分割信息、运动数据、预测数据和残差块的量化变换系数。将量化变换系数转发到逆变换和量化组件429以重建为残差块。逆变换和量化组件429可与逆变换和量化组件329基本相似。
106.将重建残差块和/或预测块转发到帧内预测组件417以根据帧内预测操作重建为图像块。帧内预测组件417可与帧内估计组件215和帧内预测组件217相似。具体地,帧内预测组件417使用预测模式来定位帧中的参考块,并将残差块应用于结果以重建帧内预测图像块。重建帧内预测图像块和/或残差块以及对应的帧间预测数据通过环内滤波器组件425转发到解码图像缓冲区组件423,解码图像缓冲区组件423和环内滤波器组件425可以分别与解码图像缓冲区组件223和环内滤波器组件225基本相似。环内滤波器组件425对重建图像块、残差块和/或预测块进行滤波,并且这些信息存储在解码图像缓冲区组件423中。将解码图像缓冲区组件423中的重建图像块转发到运动补偿组件421进行帧间预测。运动补偿组件421可与运动估计组件221和/或运动补偿组件219基本相似。具体地,运动补偿组件421使用参考块中的运动矢量来生成预测块,并将残差块应用于结果中以重建图像块。所得重建块还可以通过环内滤波器组件425转发到解码图像缓冲区组件423。解码图像缓冲区组件423继续存储其它重建图像块,这些图像块可以通过分割信息重建成帧。这些帧也可以按顺序排列。所述顺序作为重建输出视频信号向显示屏输出。
107.图5为示例性hrd 500的示意图。hrd 500可以在编码器(例如编解码器系统200和/或编码器300)中使用。hrd 500可以检查在方法100的步骤109中产生的码流,然后,将码流转发给解码器,例如解码器400。在一些示例中,当码流进行编码时,码流可以不断地通过hrd 500转发。如果码流的一部分不符合相关约束条件,则hrd 500会向编码器指示这种不符合情况,以使得编码器使用不同的机制对码流的对应部分进行重新编码。
108.hrd 500包括假设流调度方法(hypothetical stream scheduler,hss)541。hss 541是用于执行假设传送机制(hypothetical delivery mechanism)的组件。假设传送机制用于检查码流或解码器的关于输入到hrd 500中的码流551的时间和数据流的一致性。例如,hss 541可以接收从编码器输出的码流551,并管理对码流551进行的一致性测试过程。在一个特定的示例中,hss 541可以控制经编码图像在hrd 500中移动的速率,并验证码流551不包括不符合标准的数据。
109.hss 541可以按预定义的速率将码流551转发给cpb 543。hrd 500可以管理解码单元(decoding unit,du)553中的数据。du 553是接入单元(access unit,au)或au和关联的非视频编码层(video coding layer,vcl)网络抽象层(network abstraction layer,nal)单元的子集。具体地,au包括与输出时间关联的一个或多个图像。例如,au可以包括单层码流中的单个图像,并且可以包括多层码流中每层的图像。au中的每个图像可以被划分为条带,每个条带都包括在对应的vcl nal单元中。因此,du 553可以包括一个或多个图像、图像的一个或多个条带或其组合。此外,用于对au、图像和/或条带进行解码的参数可以包括在非vcl nal单元中。因此,du 553包括非vcl nal单元,这些非vcl nal单元包括支持对du 553中的vcl nal单元进行解码所需的数据。cpb 543是hrd 500中的先入先出缓冲区。cpb 543包括du 553,du 553包括按解码顺序排列的视频数据。cpb 543存储这些视频数据以在码流一致性验证过程中使用。
110.cpb 543将du 553转发给解码过程组件545。解码过程组件545是符合vvc标准的组
件。例如,解码过程组件545可以模拟终端用户使用的解码器400。解码过程组件545按示例性终端用户解码器可以实现的速率对du 553进行解码。如果解码过程组件545不能足够快地对du 553进行解码以防止cpb 543溢出,则码流551不符合标准,需要重新编码。
111.解码过程组件545对du 553进行解码,产生了经解码du 555。经解码du 555包括经解码图像。将经解码du 555转发给dpb 547。dpb 547可以基本上类似于解码图像缓冲区组件223、323和/或423。为了支持帧间预测,将从经解码du 555中获得的标识为用作参考图像556的图像返回给解码过程组件545,以支持进一步解码。dpb 547将解码视频序列输出为一系列图像557。图像557是重建图像,通常是由编码器编码到码流551中的图像的镜像。
112.将图像557转发给输出裁剪组件549。输出裁剪组件549用于将一致性裁剪窗口(conformance cropping window)应用于图像557。这样得到裁剪后的输出图像559。裁剪后的输出图像559是完全重建的图像。因此,裁剪后的输出图像559模仿终端用户在对码流551进行解码时看到的内容。这样一来,编码器可以查看裁剪后的输出图像559,以确保编码令人满意。
113.根据码流551中的hrd参数初始化hrd 500。例如,hrd 500可以从vps、sps和/或sei消息中读取hrd参数。然后,hrd 500可以根据这些hrd参数中的信息对码流551执行一致性测试操作。在特定示例中,hrd 500可以根据hrd参数确定一个或多个cpb传送时间表(delivery schedule)。传送时间表指定将视频数据传送到cpb和/或dpb等存储位置和/或从存储位置传送的时间。因此,cpb传送时间表指定向/从cpb 543传送au、du 553和/或图像的时间。需要说明的是,hrd 500可以针对dpb 547采用类似于cpb传送时间表的dpb传送时间表。
114.视频可以被译码到不同的层和/或ols中,以供不同硬件能力级别的解码器使用以及在不同的网络条件下使用。选择cpb传送时间表以反映这些问题。因此,高层子码流被指定用于最佳硬件和网络条件,因此高层可以接收一个或多个cpb传送时间表,这些传送时间表使用cpb 543中的大量内存和向dpb 547传输du 553的短延迟。同样,低层子码流被指定用于有限的解码器硬件能力和/或恶劣的网络条件。因此,低层可以接收一个或多个cpb传送时间表,这些传送时间表使用cpb 543中的少量内存和向dpb 547传输du 553的长延迟。然后,可以根据对应的传送时间表测试ols、层、子层或其组合,以确保在子码流预期的条件下可以正确解码得到的子码流。因此,码流551中的hrd参数可以表示cpb传送时间表,并且包括足够的数据使hrd 500可以确定cpb传送时间表并将cpb传送时间表与对应的ols、层和/或子层相关联。
115.图6为示例性多层视频序列600的示意图。根据方法100等,多层视频序列600可以由编码器(例如,编解码系统200和/或编码器300)编码,并由解码器(例如,编解码系统200和/或解码器400)解码。此外,多层视频序列600可以通过hrd(例如,hrd 500)检查标准一致性。包括多层视频序列600是为了描绘编码视频序列中的层的示例性应用。多层视频序列600是使用多个层的任何视频序列,例如,层n 631和层n 1 632。
116.在一个示例中,多层视频序列600可以采用层间预测621。层间预测621应用于不同层中的图像611、612、613和614与图像615、616、617和618之间。在所示的示例中,图像611、612、613和614是层n 1 632的一部分,图像615、616、617和618是层n 631的一部分。层n 631和/或层n 1 632等层是一组图像,这些图像都与类似的大小、质量、分辨率、信噪比、能力等
类似的特征值关联。层可以正式定义为共用相同层id的vcl nal单元和关联的非vcl nal单元的集合。vcl nal单元是经译码为包括视频数据的nal单元,例如图像的经译码条带。非vcl nal单元是包括非视频数据的nal单元,例如支持对视频数据进行解码、一致性检查的性能或其它操作的语法和/或参数。
117.在所示的示例中,相比于层n 631,层n 1 632与更大的图像大小相关联。因此,在本示例中,层n 1 632中的图像611、612、613和614比层n 631中的图像615、616、617和618大(例如,高度和宽度更大,因此样本更多)。但是,这些图像可以通过其它特征划分为层n 1 632和层n 631。虽然只显示了两层:层n 1 632和层n 631,但一组图像可以根据关联的特征划分为任意数量的层。层n 1 632和层n 631也可以用层id表示。层id是与图像关联的数据项,并表示图像是所指示层的一部分。因此,图像611至618中的每个图像可以与对应的层id关联,以表示层n 1 632或层n 631中的哪个层包括对应的图像。例如,层id可以包括nal单元头层标识符(nuh_layer_id),是指表示包括nal单元(例如,包括层中图像的条带和/或参数)的层的标识符的语法元素。与较低质量/较小图像大小/较小码流大小相关联的层,例如,层n 631,通常被分配低层id,称为低层。此外,与较高质量/较大图像大小/较大码流大小相关联的层,例如,层n 1 632,通常被分配高层id,称为高层。
118.不同层631和632中的图像611至618被配置为交替显示。在特定示例中,如果需要较小的图像,则解码器可以在当前显示时间解码并显示图像615,或者如果需要较大的图像,则解码器可以在当前显示时间解码并显示图像611。因此,高层n 1 632中的图像611至614与低层n 631中的对应图像615至618包括基本上相同的图像数据(尽管图像大小不同)。具体地,图像611与图像615包括基本上相同的图像数据,图像612与图像616包括基本上相同的图像数据,以此类推。
119.图像611至618可以通过参考同一层n 631或n 1 632中的其它图像611至618进行译码。参考同层中的一个图像对另一个图像进行译码即为帧间预测623。帧间预测623由实线箭头表示。例如,图像613可以通过将层n 1 632中的图像611、612和/或614中的一个或两个图像作为参考的帧间预测623来译码,其中,单向帧间预测使用一个图像作为参考,和/或双向帧间预测使用两个图像作为参考。此外,图像617可以通过将层n 631中的图像615、616和/或618中的一个或两个图像作为参考的帧间预测623来译码,其中,单向帧间预测使用一个图像作为参考,和/或双向帧间预测使用两个图像作为参考。当在执行帧间预测623时将一个图像作为同一层中另一个图像的参考时,该图像可以称为参考图像。例如,图像612可以是用于根据帧间预测623对图像613进行译码的参考图像。帧间预测623也可以称为多层上下文中的层内预测。因此,帧间预测623是通过参考与当前图像不同的参考图像中的指示样本对当前图像中的样本进行译码的机制,其中,参考图像和当前图像位于同一层中。
120.图像611至618也可以通过参考不同层中的其它图像611至618进行译码。这个过程称为层间预测621,由虚线箭头表示。层间预测621是通过参考一个参考图像中的指示样本对当前图像中的样本进行译码的机制,其中,当前图像和参考图像位于不同的层中,因此具有不同的层id。例如,低层n 631中的图像可以作为对高层n 1 632中的对应图像进行译码的参考图像。在一个特定示例中,图像611可以根据层间预测621通过参考图像615进行译码。在这种情况下,图像615被用作层间参考图像。层间参考图像是用于层间预测621的参考图像。在大多数情况下,对层间预测621进行了约束,使得当前图像(例如,图像611)只能使
用同一au中包含的且位于低层中的一个或多个层间参考图像,例如,图像615。当多层(例如,两层以上)可用时,层间预测621可以根据层级比当前图像低的多个层间参考图像对当前图像进行编码/解码。
121.视频编码器可以使用多层视频序列600来通过帧间预测623和层间预测621的许多不同组合和/或排列对图像611至618进行编码。例如,图像615可以根据帧内预测进行译码。然后,通过将图像615作为参考图像,图像616至618可以根据帧间预测623进行译码。此外,通过将图像615作为层间参考图像,图像611可以根据层间预测621进行译码。然后,通过将图像611作为参考图像,图像612至614可以根据帧间预测623进行译码。因此,参考图像可以作为不同译码机制的单层参考图像和层间参考图像。通过根据低层n 631图像对高层n 1 632图像进行译码,高层n 1 632可以避免使用帧内预测,帧内预测的译码效率比帧间预测623和层间预测621的译码效率低得多。因此,译码效率低的帧内预测可以限于最小/最低质量的图像,因此限于对最少量的视频数据进行译码。用作参考图像和/或层间参考图像的图像可以在参考图像列表结构中包括的一个或多个参考图像列表的条目中指示。
122.图像611至618也可以包括在au中。au是一组包括在不同层中并与在解码期间的相同时间相关联的经编码图像。为了清楚地讨论本文所描述的概念,au包括当前au 628和前一au 627。当前au 628是对应于解码过程和/或hrd一致性检查过程中的特定输出时间的au。前一au 627是解码顺序中出现在当前au 628之前的au。例如,前一au 627可以是解码顺序中紧在当前au 628之前的au。
123.同一au中的经编码图像被调度同时从解码器处的dpb输出。例如,图像613和617在同一当前au 628中。图像612和616在前一au 627中,所述前一au 627与包括图像613和617的当前au 628不同。图像612和/或616可以在图像613和/或617之前解码,因为之前au 627按解码顺序在当前au 628之前。此外,当前au 627中的图像613和617可以交替显示。例如,当需要较小图像大小时,可以显示图像617,当需要较大图像大小时,可以显示图像613。当需要较大图像大小时,输出图像613,并且图像617仅用于层间预测621。在这种情况下,一旦层间预测621完成,图像617就被丢弃而不输出。此外,在从层n 631切换到层n 1 632的情况下,可以输出前一au 627的图像616,同时也可以输出当前au 628中的图像613。例如,当用户增大视频输出的大小(例如,增大视频窗口的大小或切换到更大的屏幕)和/或当网络条件改善时,可能会发生这种切换。类似地,在从层n 1 632切换到层n 631的情况下,可以输出前一au 627的图像612,同时也可以输出当前au 628中的图像617。例如,当用户减小视频输出的大小(例如,减小视频窗口的大小或切换到更小的屏幕)和/或当网络条件改善时,可能会发生这种切换。
124.au可以进一步划分为一个或多个图像单元(picture unit,pu)625。pu 625是包括单个经编码图像的au的子集。pu 625正式定义为nal单元的集合,这些nal单元根据指定的分类规则相互关联,按解码顺序连续,并且只包括一个经编码图像。需要说明的是,当从hrd和/或关联的一致性测试的角度讨论时,pu 625可以被称为解码单元(decoding unit,du)。
125.图7为示例性码流700的示意图。例如,码流700可以由编解码系统200和/或编码器300生成,以由编解码系统200和/或解码器400根据方法100进行解码。此外,码流700可以包括多层视频序列600。此外,码流700可以包括各种参数以控制hrd(例如,hrd 500)的操作。根据这些参数,hrd可以在向解码器传输码流700进行解码之前检查码流700是否符合标准。
126.码流700包括vps 711、一个或多个sps 713、多个图像参数集(picture parameter set,pps)715、多个自适应参数集(adaptation parameter set,aps)716、多个图像头718、多个条带头717、图像数据720和sei消息719。vps 711包括与整个码流700相关的数据。例如,vps 711可以包括码流700中使用的数据相关的ols、层和/或子层。sps 713包括码流700中包括的编码视频序列中所有图像共用的序列数据。例如,每层可以包括一个或多个编码视频序列,每个编码视频序列可以参考sps 713获取对应的参数。sps 713中的参数可以包括图像大小、比特深度、编码工具参数、码率限制等。需要说明的是,虽然每个序列都参考sps 713,但在一些示例中,单个sps 713可以包括多个序列的数据。pps 715包括应用于整个图像的参数。因此,视频序列中的每个图像可以参考pps 715。需要说明的是,虽然每个图像都参考pps 715,但是在一些示例中,单个pps 715可以包括多个图像的数据。例如,可以根据类似的参数对多个类似的图像进行译码。在这种情况下,单个pps 715可以包括用于这些类似图像的数据。pps 715可以表示可用于对应图像中的条带的编码工具、量化参数、偏移等。
127.aps 716是包括应用于一个或多个图像725中的一个或多个条带727的语法元素/参数的语法结构。这种相关性可以根据在与条带727关联的条带头717中找到的语法元素来确定。例如,aps 716可以应用于第一图像721中的至少一个但小于全部的条带727,应用于第二图像725中的至少一个但小于全部的条带727等。aps 716可以根据aps 716中包括的参数分为多种类型。这些类型可以包括自适应环路滤波器(adaptive loop filter,alf)aps、亮度映射与色度缩放(luma mapping with chroma scaling,lmcs)aps和/或缩放列表(scaling)aps。alf是一种基于块的自适应滤波器,它包括由可变参数控制的传递函数,并使用反馈环路的反馈来修正传递函数。此外,alf用于校正由于基于块的译码而发生的模糊和振铃伪影等编码伪影(例如,误差)。因此,包括在alf aps中的alf参数可以包括由编码器选择的参数,以使alf在解码器侧进行解码期间删除基于块的编码伪影。lmcs是作为解码过程的一部分应用的过程,所述过程将亮度样本映射到特定值,在一些情况下,还将缩放操作应用于色度样本的值。lmcs工具可以根据到对应的色度分量的映射来重塑亮度分量,以减少率失真。因此,lmcs aps包括编码器选择的参数,使得lmcs工具可以重塑亮度分量。缩放列表aps包括与指定滤波器使用的量化矩阵关联的编码工具参数。因此,aps 716可以包括用于在hrd的一致性测试期间和/或在解码器侧进行解码期间将各种滤波器应用于经译码条带727的参数。
128.图像头718是一种语法结构,包括应用于经编码图像725中的所有条带727的语法元素。例如,图像头718可以包括图像顺序编号信息、参考图像数据、与帧内随机接入点(intra-random access point,irap)图像有关的数据、与图像725的滤波器应用有关的数据,pu可以包括正好一个图像头718和一个图像725。因此,码流700可以包括每个图像725正好一个图像头718。条带头717包括图像725中每个条带727特定的参数。因此,视频序列中的每个条带727可以有一个条带头717。条带头717可以包括条带类型信息、滤波信息、预测权重、分块入口点、去块效应滤波参数等。在一些情况下,对于图像725中的所有条带727,语法元素可以是相同的。为了减少冗余,图像头718和条带头717可以共用某些类型的信息。例如,当某些参数(例如,滤波参数)应用于整个图像725时,这些参数可以包括在图像头718中,或者当这些参数应用于作为整个图像725的子集的一组条带727时,可以包括在条带头
717中。
129.图像数据720包括根据帧间预测和/或帧内预测编码的视频数据以及对应的变换和量化残差数据。例如,图像数据720可以包括层723、图像725和/或条带727。层723是vcl nal单元和关联的非vcl nal单元的集合,所述vcl nal单元共用由层id(例如,nuh_layer_id)指示的指定特征(例如,公共分辨率、帧率、图像大小等)。例如,层723可以包括共用相同nuh_layer_id的一组图像725。层723可以基本上类似于层631和/或632。nuh_layer_id是表示包括至少一个nal单元的层723的标识符的语法元素。例如,称为基本层的最低质量层723可以包括最低nuh_layer_id值,nuh_layer_id值越大,层723的质量越高。因此,低层是nuh_layer_id值较小的层723,高层是nuh_layer_id值较大的层723。
130.图像725是创建帧或其场的亮度样本和/或色度样本组成的阵列。例如,图像725是经编码图像,其可以被输出用于显示或用于支持对其它图像725进行译码,然后输出。图像725包括一个或多个条带727。条带727可以被定义为图像725中的整数个完整分块或图像725中(例如,一个分块内)的整数个连续完整编码树单元(coding tree unit,ctu)行,这些分块或ctu行只包括在单个nal单元中。条带727进一步分成ctu和/或编码树块(coding tree block,ctb)。ctu是一组预定义大小的样本,可以通过编码树(coding tree)分割。ctb是ctu的子集,包括ctu的亮度分量或色度分量。根据编码树,将ctu/ctb进一步划分为编码块。然后可以根据预测机制对编码块进行编码/解码。
131.sei消息719是一种具有指定语义的语法结构,该语法结构传达解码过程不需要的信息,以便确定经解码图像中的样本的值。例如,sei消息719可以包括支持hrd过程的数据或与解码器侧的码流700解码不直接相关的其它支持数据。
132.在码流700中指示各种参数,以支持对图像725、条带727和/或其其它分割部分进行解码,以重建解码视频序列。例如,sps 713可以包括以亮度样本为单位的sps图像宽度最大值(sps_pic_width_max_in_luma_samples)731和以亮度样本为单位的sps图像高度最大值(sps_pic_height_max_in_luma_samples)732。sps_pic_width_max_in_luma_samples 731是指示的数据元素,表示参考sps 713的每个经解码图像725的以亮度样本为单位的最大宽度。sps_pic_width_max_in_luma_samples 732是指示的数据元素,表示参考sps 713的每个经解码图像725的以亮度样本为单位的最大高度。因此,sps_pic_width_max_in_luma_samples 731和sps_pic_width_max_in_luma_samples 732分别表示与sps 713相关的编码视频序列中每个图像725的最大宽度和高度。
133.如上所述,编码器可以根据解码器侧的条件将图像725的各种层723传输到解码器。此外,当解码器侧的条件改变时,传输层723可以改变。例如,当网络条件最优时,图像725可以以更高分辨率/更大大小传输,当网络条件恶化时,图像725可以以更低分辨率/更小大小传输。此实现方式的一个问题是,解码器侧的dpb可能在层723改变期间溢出,可能导致用户体验不佳。例如,在层723改变到更高分辨率之前,dpb可以包括低分辨率的图像725。因此,dpb可能没有足够的空间来存储在切换之后从高层723接收的较高分辨率图像725。这可能导致dpb溢出,导致错误并阻止高分辨率图像725正确解码和显示。
134.先前图像不输出标志(nooutputofpriorpicsflag)可用于解决此问题。nooutputofpriorpicsflag是在一致性测试期间在解码器推导出和/或在hrd推导出的变量。nooutputofpriorpicsflag表示在不输出dpb中包括的图像725的情况下应何时清空
dpb。因此,可以设置nooutputofpriorpicsflag,使dpb被清空,为新的图像725腾出空间。即使dpb中的前一图像725被指定输出,也可能发生这种情况。在一些视频译码系统中,nooutputofpriorpicsflag是根据由于当前图像725和前一图像725之间的图像宽度和/或图像高度的改变而检测到的图像725大小改变来设置的。
135.arc是一种协助分辨率更改的机制。通常,解码器在irap图像的序列和/或层723之间切换。这是因为irap图像可以在不参考其它图像725的情况下解码,因此可以始终解码。非irap图像参考其它图像725进行编码,因此解码器可能没有足够的信息来将非irap图像解码为序列和/或层723中的第一图像725。arc可以帮助实现这种切换。arc可以动态改变dpb中图像725的分辨率,以匹配后续图像725的分辨率。因此,dpb中的参考图像725可以从第一分辨率改变为第二分辨率,使得可以在不需要中间irap图像的情况下,根据参考图像725解码第二分辨率的非irap图像。使用arc带来的问题是arc可能会阻碍nooutputofpriorpicsflag正常工作。具体地,arc可以将前一图像725的空间分辨率改变为与当前图像725的分辨率相同,阻碍了对图像大小改变进行正确检查。因此,通过有效禁用所述nooutputofpriorpicsflag,arc可能会导致dpb溢出。
136.码流700用于在使用arc时正确启用nooutputofpriorpicsflag。例如,所述解码器可以检查最大图像高度和最大图像宽度的改变,而不是检查图像高度和宽度。所述最大图像高度和最大图像宽度不会因arc而更改。因此,可以正确设置nooutputofpriorpicsflag,以防止由于空间分辨率改变而导致dpb溢出,即使在层723改变期间使用arc。
137.在一个特定的示例中,解码器在设置nooutputofpriorpicsflag时可以使用变量picwidthmaxinsamplesy和变量picheightmaxinsamplesy。picwidthmaxinsamplesy是表示对应序列和/或层723中每个经解码图像725的以亮度样本为单位的最大宽度的推导变量。picheightmaxinsamplesy是表示对应序列和/或层723中每个经解码图像725的以亮度样本为单位的最大高度的推导变量。picwidthmaxinsamplesy可以根据sps 713中的sps_pic_width_max_in_luma_samples 731推导出。此外,picheightmaxinsamplesy可以根据sps 713中的sps_pic_height_max_in_luma_samples 732推导出。
138.然后,nooutputofpriorpicsflag可以根据picheightmaxinsamplesy和/或picwidthmaxinsamplesy设置。例如,当au(包括当前图像725)的picwidthmaxinsamplesy值与解码顺序中的前一au(包括前一图像725)的picwidthmaxinsamplesy值不同时,可以设置nooutputofpriorpicsflag。在另一个示例中,当au(包括当前图像725)的picheightmaxinsamplesy值与解码顺序中的前一au(包括前一图像725)的picheightmaxinsamplesy值不同时,可以设置nooutputofpriorpicsflag。
139.一旦设置了nooutputofpriorpicsflag,就可以根据需要清空dpb,以防止dpb溢出。例如,dpb可以在解析当前图像725中的第一条带727的条带头717之后和在对当前图像725进行解码之前被清空。这在对当前图像725进行解码之前,并且因此需要当前图像725的dpb中的存储空间之前,从dpb中的前一au清空前一图像725。
140.在另一个示例中,在设置nooutputofpriorpicsflag之前,可以为条带727构建参考图像列表,并且可以执行参考图像列表标记过程。参考图像列表构建过程可以确定哪些图像725是当前图像725的参考图像。然后,参考图像列表标记过程可以根据参考图像列表构建过程指示dpb中的图像725是否不用于参考、用于短期参考和/或用于长期参考。在一个
具体的示例中,当dpb中的每个前一图像725被标记为不用于参考时,设置nooutputofpriorpicsflag,并清空dpb。这样,如果dpb中包含参考图像,则dpb不会被清空。此外,dpb可以使用dpb满度变量,dpb满度变量是表示存储在dpb中的图像数量的数据元素。对于清空dpb时删除的每个图像,dpb满度变量可以减1。
141.通过采用本文描述的示例,可以设置nooutputofpriorpicsflag,以根据需要清空dpb,防止dpb溢出。因此,本文包括的实施例可以用于避免与层723之间的切换相关的各种解码错误。在检查经编码码流的标准一致性时,在hrd也可以使用类似的过程。该过程可以防止hrd在检查层723一致性时具有dpb溢出,从而减少编码期间一致性测试失败的发生。这样,所述编码器和所述解码器的功能增加。此外,可以提高编码效率,减少了编码器和解码器侧的处理器、存储器和/或网络信令资源的使用。
142.下文更详细地描述上述信息。分层视频编码也被称为可分级视频编码或具有可分级性的视频编码。视频译码的可分级性通常可以通过使用多层译码技术来支持。多层码流包括基本层(base layer,bl)和一个或多个增强层(enhancement layer,el)。可分级性的示例包括空间可分级性、质量/信噪比(signal to noise ratio,snr)可分级性、多视图可分级性、帧率可分级性等。当使用多层译码技术时,可以在不使用参考图像的情况下对图像或图像的一部分进行译码(帧内预测),可以通过参考同一层中的参考图像对图像或图像的一部分进行译码(帧间预测),和/或可以通过参考其它层中的参考图像对图像或图像的一部分进行译码(层间预测)。用于当前图像的层间预测的参考图像称为层间参考图像(inter-layer reference picture,ilrp)。图6示出了用于空间可分级性的多层编码的示例,其中,不同层中的图像具有不同的分辨率。
143.一些视频编码系列支持根据用于单层译码的一个或多个档次(profile)实现一个或多个单独档次中的可分级性。可分级视频编码(scalable video coding,svc)是高级视频编码(advanced video coding,avc)的可分级扩展,支持空间、时间和质量可分级性。对于svc,在el图像中的每个宏块(macroblock,mb)中指示了一个标志,以表示el mb是否使用低层中的并置块进行预测。基于并置块的预测可以包括纹理、运动矢量和/或译码模式。svc的实现方式不能在其设计中直接重用未经修改的avc实现方式。svc el宏块语法和解码过程与avc语法和解码过程不同。
144.可分级hevc(scalable hevc,shvc)是hevc的扩展,支持空间、时间和质量可分级性。多视图hevc(multiview hevc,mv-hevc)是hevc的扩展,支持多视图可分级性。3d hevc(3d-hevc)是hevc的扩展,支持比mv-hevc更高级、更高效的3d视频译码。时间可分级性可以是单层hevc编解码器的组成部分。在hevc的多层扩展中,用于层间预测的经解码图像仅来自同一au,并被视为长期参考图像(long-term reference picture,ltrp)。这些图像分配有参考图像列表中的参考索引和当前层中的其它时间参考图像。层间预测(inter-layer prediction,ilp)是通过将参考索引的值设置为参考一个或多个参考图像列表中的一个或多个层间参考图像而在预测单元级实现的。当ilrp的空间分辨率与正在编码或解码的当前图像的空间分辨率不同时,空间可分级性对参考图像或参考图像的一部分进行重采样。参考图像重采样可以在图像级或编码块级实现。
145.vvc还可以支持分层视频译码。vvc码流可以包括多个层。这些层可以相互独立。例如,每个层都可以在不使用层间预测的情况下译码。在这种情况下,这些层也称为同播层。
在一些情况下,一些层使用ilp进行译码。vps中的标志可以表示这些层是否为同播层,或者一些层是否使用ilp。当一些层使用ilp时,层之间的层依赖关系也会在vps中指示(signal)。与shvc和mv-hevc不同,vvc可以不表示ols。ols包括指定的层集,其中,层集中的一个或多个层被指定为输出层。输出层是ols的输出层。在vvc的一些实现方式中,当层是同播层时,只能选择一层进行解码和输出。在vvc的一些实现方式中,当任何层使用ilp时,指定对包括所有层在内的整个码流进行解码。此外,层中的某些层被指定为输出层。输出层可以被指示为仅最高层、所有层或最高层加上一组指示的低层。
146.上述方面存在一些问题。例如,sps、pps和aps nal单元的nuh_layer_id值可能没有得到适当的约束。此外,sei nal单元的temporalid值可能没有得到适当的约束。此外,当启用参考图像重采样且clvs中的图像具有不同的空间分辨率时,nooutputofpriorpicsflag的设置可能无法正确指定。此外,在一些视频译码系统中,后缀sei消息不能包括在可伸缩嵌套式sei消息中。又如,缓冲周期、图像定时和解码单元信息sei消息可以包括解析vps和/或sps的依赖关系。
147.一般来说,本发明描述了视频译码改进方法。技术描述参见vvc。然而,这些技术还根据其它视频编解码规范应用于分层视频译码。
148.上述一个或多个问题可以如下解决。sps、pps和aps nal单元的nuh_layer_id值在本文中得到适当的约束。sei nal单元的temporalid值在本文中得到适当的约束。当启用参考图像重采样且clvs中的图像具有不同的空间分辨率时,nooutputofpriorpicsflag的设置得到正确指定。可伸缩嵌套式sei消息中可以包括后缀sei消息。可以通过重复bp sei消息语法中的语法元素decoding_unit_hrd_params_present_flag、pt sei消息语法中的语法元素decoding_unit_hrd_params_present_flag和decoding_unit_cpb_params_in_pic_timing_sei_flag以及dui sei消息中的语法元素decoding_unit_cpb_params_in_pic_timing_sei_flag来删除解析bp、pt和dui sei消息对vps或sps的依赖关系。
149.上述机制的示例性实现方式描述如下。通用nal单元语义举例如下:
150.nuh_temporal_id_plus1

1表示nal单元的时间标识符。nuh_temporal_id_plus1的值不应等于0。变量temporalid推导如下:
151.temporalid=nuh_temporal_id_plus1
–1152.当nal_unit_type在idr_w_radl到rsv_irap_13的范围内(包括端值)时,temporalid应等于0。当nal_unit_type等于stsa_nut时,temporalid不应等于0。
153.接入单元中所有vcl nal单元的temporalid值必须相同。经编码图像、层接入单元或接入单元的temporalid值可以为经编码图像、层接入单元或接入单元的vcl nal单元的temporalid值。子层表示的temporalid的值可以是子层表示中所有vcl nal单元的最大的temporalid值。
154.非vcl nal单元的temporalid值的限制条件如下:如果nal_unit_type等于dps_nut、vps_nut或sps_nut,则temporalid应等于0,且包括nal单元的接入单元的temporalid应等于0。否则,如果nal_unit_type等于eos_nut或eob_nut,则temporalid应等于0。否则,如果nal_unit_type等于aud_nut、fd_nut、prefix_sei_nut或suffix_sei_nut,temporalid应等于包括nal单元的接入单元的temporalid。否则,当nal_unit_type等于pps_nut或aps_nut时,temporalid应大于或等于包括nal单元的接入单元的temporalid。当nal单元为非
vcl nal单元时,temporalid值应等于该非vcl nal单元所应用的所有接入单元的最小temporalid值。当nal_unit_type等于pps_nut或aps_nut时,temporalid可以大于或等于包含接入单元的temporalid。这是因为所有pps和aps都可以包括在码流的开头。此外,第一经编码图像的temporalid等于0。
155.示例性序列参数集rbsp语义如下所述。sps rbsp在被参考之前应可用于解码过程。sps可以包括在至少一个temporalid等于0的接入单元中,或者通过外部机制提供。包括sps的sps nal单元可以被限制为nuh_layer_id等于参考sps的pps nal单元的最小nuh_layer_id值。
156.示例性图像参数集rbsp语义如下所述。pps rbsp在被参考之前应可用于解码过程。pps应包括在至少一个temporalid小于或等于pps nal单元的temporalid的接入单元中,或者通过外部机制提供。包括pps rbsp的pps nal单元的nuh_layer_id应等于参考pps的经译码条带nal单元的最小nuh_layer_id值。
157.示例性自适应图像参数集语义如下所述。每个aps rbsp在被参考之前应可用于解码过程。aps还应包括在至少一个temporalid小于或等于参考aps的经译码条带nal单元的temporalid的接入单元中,或者通过外部机制提供。aps nal单元可以被多个层的图像/条带共用。包括aps nal单元的nuh_layer_id应等于参考aps nal单元的经译码条带nal单元的最小nuh_layer_id值。或者,aps nal单元可以不被多个层的图像/条带共用。aps nal单元的nuh_layer_id应等于参考aps的条带的nuh_layer_id。
158.在一个示例中,在对当前图像进行解码之前从dpb中删除图像描述如下。在对当前图像进行解码之前(但在解析当前图像中的第一条带的条带头之后)从dpb中删除图像可以发生在接入单元n(包括当前图像)的第一解码单元的cpb删除时间。过程如下。调用用于参考图像列表构建的解码过程,并调用用于参考图像标记的解码过程。
159.当所述当前图像是图像索引不是0的编码层视频序列(coded layer video sequence start,clvss)图像时,可以应用以下按顺序执行的步骤。为测试解码器推导变量nooutputofpriorpicsflag,如下所示:如果从sps中推导出的pic_width_max_in_luma_samples、pic_height_max_in_luma_samples、chroma_format_idc、separate_colour_plane_flag、bit_depth_luma_minus8、bit_depth_chroma_minus8或sps_max_dec_pic_buffering_minus1[htid]的值分别与从由前一图像参考的sps中推导出的pic_width_in_luma_samples、pic_height_in_luma_samples、chroma_format_idc、separate_colour_plane_flag、bit_depth_luma_minus8、bit_depth_chroma_minus8或sps_max_dec_pic_buffering_minus1[htid]的值不同,则nooutputofpriorpicsflag可以由测试解码器设置为1,不考虑no_output_of_prior_pics_flag的值。需要说明的是,虽然在这些条件下,可以优选将nooutputofpriorpicsflag设置为no_output_of_prior_pics_flag,但是在这种情况下,测试解码器可以将nooutputofpriorpicsflag设置为1。否则,nooutputofpriorpicsflag可以被设置为no_output_of_prior_pics_flag。
[0160]
为测试解码器推导出的nooutputofpriorpicsflag的值应用于hrd,使得当nooutputofpriorpicsflag的值等于1时,在不输出所有图像存储缓冲区所包含的图像的情况下,dpb中的所有图像存储缓冲区都被清空,并且dpb满度(fullness)被设置为0。当以下两个条件对于dpb中的任何图像k都为真时,dpb中的所有此类图像k都将从dpb中删除。图像
k被标记为不用于参考,图像k的pictureoutputflag等于0或对应的dpb输出时间小于或等于当前图像n的第一解码单元(记为解码单元m)的cpb删除时间。当dpboutputtime[k]小于或等于ducpbremovaltime[m]时,可能会发生这种情况。对于从dpb中删除的每一个图像,dpb满度减1。
[0161]
在一个示例中,从dpb中输出和删除图像的示例如下所述。在对当前图像进行解码之前(但在解析当前图像中的第一条带的条带头之后)从dpb中输出和删除图像可以发生在包括当前图像的接入单元的第一解码单元从cpb中删除的时候,并且如下进行。调用用于参考图像列表构建的解码过程,并调用用于参考图像标记的解码过程。
[0162]
如果当前图像是图像索引不是0的clvss图像,则应用以下按顺序执行的步骤。变量nooutputofpriorpicsflag可以如下所述为测试解码器推导出。如果从sps中推导出的pic_width_max_in_luma_samples、pic_height_max_in_luma_samples、chroma_format_idc、separate_colour_plane_flag、bit_depth_luma_minus8、bit_depth_chroma_minus8或sps_max_dec_pic_buffering_minus1[htid]的值分别与从由前一图像参考的sps中推导出的pic_width_in_luma_samples、pic_height_in_luma_samples、chroma_format_idc、separate_colour_plane_flag、bit_depth_luma_minus8、bit_depth_chroma_minus8或sps_max_dec_pic_buffering_minus1[htid]的值不同,则nooutputofpriorpicsflag可以由测试解码器设置为1,不考虑no_output_of_prior_pics_flag的值。需要说明的是,虽然在这些条件下,优选将nooutputofpriorpicsflag设置为no_output_of_prior_pics_flag,但是在这种情况下,测试解码器可以将nooutputofpriorpicsflag设置为1。否则,nooutputofpriorpicsflag可以被设置为no_output_of_prior_pics_flag。
[0163]
为测试解码器推导出的nooutputofpriorpicsflag的值可以如下所述应用于hrd。如果nooutputofpriorpicsflag等于1,则在不输出所包含的图像的情况下,dpb中的所有图像存储缓冲区都被清空,并且dpb满度被设置为0。否则(nooutputofpriorpicsflag等于0),包括标记为不需要输出且不用于参考的图像的所有图像存储缓冲区被清空(不输出),dpb中的所有非空图像存储缓冲区通过反复调用碰撞(bumping)过程来清空,而且dpb满度被设置为0。
[0164]
否则(当前图像不是clvss图像),所有包括被标记为不需要输出且不用于参考的图像的图像存储缓冲区都将清空(不输出)。对于每个空图像存储缓冲区,dpb满度减1。当以下一个或多个条件为真时,重复调用碰撞过程,同时对每个空的额外图像存储缓冲区进一步将dpb满量减1,直到以下条件都不为真。条件是dpb中标记为需要输出的图像的数量大于sps_max_num_reorder_pics[htid]。另一个条件是sps_max_latency_increase_plus1[htid]不等于0,并且dpb中至少有一个图像被标记为需要输出,其关联变量piclatencycount大于或等于spsmaxlatencypictures[htid]。另一个条件是dpb中的图像数量大于或等于subdpbsize[htid]。
[0165]
示例性通用sei消息语法如下所示。
[0166]
[0167][0168][0169]
示例性可伸缩嵌套式sei消息语法如下所示。
[0170][0171]
示例性可伸缩嵌套式sei消息语义如下所示。可伸缩嵌套式sei消息提供了一种机制,将sei消息与特定ols上下文中的特定层或与不在ols上下文中的特定层相关联。可伸缩嵌套式sei消息包括一个或多个sei消息。可伸缩嵌套式sei消息中包括的sei消息也称为可伸缩嵌套的sei消息。当sei消息包括在可伸缩嵌套式sei消息中时,码流一致性可能要求应用以下限制。
[0172]
payloadtype等于132(解码图像哈希)或133(可伸缩嵌套式)的sei消息不应包括在可伸缩嵌套式sei消息中。当可伸缩嵌套式sei消息包括缓冲周期、图像定时或解码单元信息sei消息时,可伸缩嵌套式sei消息不应包括任何其它payloadtype不等于0(缓冲周期)、1(图像定时)或130(解码单元信息)的sei消息。
[0173]
码流一致性还可以要求以下限制应用于包括可伸缩嵌套的sei消息的sei nal单元的nal_unit_type值。当可伸缩嵌套式sei消息包括的sei消息的payloadtype等于0(缓冲
周期)、1(图像定时)、130(解码单元信息)、145(依赖rap指示)或168(帧字段信息)时,包括可伸缩嵌套式sei消息的sei nal单元的nal_unit_type应设置为prefix_sei_nut。当可伸缩嵌套式sei消息包括的sei消息的payloadtype等于132(解码图像哈希)时,包括可伸缩嵌套式sei消息的sei nal单元的nal_unit_type应设置为suffix_sei_nut。
[0174]
nesting_ols_flag可以设置为1,表示可伸缩嵌套的sei消息应用于特定ols上下文中的特定层。nesting_ols_flag可以设置为0,表示可伸缩嵌套的sei消息通常应用于特定层(例如,不在ols的上下文中)。
[0175]
码流一致性可以要求对nesting_ols_flag的值应用以下限制。当可伸缩嵌套式sei消息包括的sei消息的payloadtype等于0(缓冲周期)、1(图像定时)或130(解码单元信息)时,nesting_ols_flag的值应等于1。当可伸缩嵌套式sei消息包括的sei消息的payloadtype等于vclassociatedseilist中的值时,nesting_ols_flag的值应等于0。
[0176]
nesting_num_olss_minus1 1表示应用可伸缩嵌套的sei消息的ols数量。nesting_num_olss_minus1的取值范围可以为0到totalnumolss

1(包括端值)。nesting_ols_idx_delta_minus1[i]用于推导变量nestingolsidx[i],该变量表示可伸缩嵌套的sei消息在nesting_ols_flag等于1时应用于的第i个ols的ols索引。nesting_ols_idx_delta_minus1[i]的取值范围应该为0到totalnumolss

2(包括端值)。变量nestingolsidx[i]可以推导如下:
[0177]
if(i==0)
[0178]
nestingolsidx[i]=nesting_ols_idx_delta_minus1[i]
[0179]
else
[0180]
nestingolsidx[i]=nestingolsidx[i

1] nesting_ols_idx_delta_minus1[i] 1
[0181]
nesting_num_ols_layers_minus1[i] 1表示可伸缩嵌套的sei消息在第nestingolsidx[i]个ols上下文中应用的层数。nesting_num_ols_layers_minus1[i]的取值范围应该为0到numlayersinols[nestingolsidx[i]]

1(包括端值)。
[0182]
nesting_ols_layer_idx_delta_minus1[i][j]用于推导变量nestingolslayeridx[i][j],该变量表示可伸缩嵌套的sei消息在nesting_ols_flag等于1时应用于第nestingolsidx[i]个ols的上下文的第j个层的ols层索引。nesting_ols_layer_idx_delta_minus1[i]的取值范围应该为0到numlayersinols[nestingolsidx[i]]

2(包括端值)。
[0183]
变量nestingolslayeridx[i][j]可以推导如下:
[0184]
if(j==0)
[0185]
nestingolslayeridx[i][j]=nesting_ols_layer_idx_delta_minus1[i][j]
[0186]
else
[0187]
nestingolslayeridx[i][j]=nestingolslayeridx[i][j

1]
[0188]
nesting_ols_layer_idx_delta_minus1[i][j] 1
[0189]
0到nesting_num_olss_minus1(包括端值)范围内的i的所有layeridinols[nestingolsidx[i]][nestingolslayeridx[i][0]]值中的最小值应等于当前sei nal单元(例如,包括可伸缩嵌套式sei消息的sei nal单元)的nuh_layer_id。nesting_all_layers_
circuit,asic)以及一个或多个数字信号处理器(digital signal processor,dsp)。处理器830与下行端口820、tx/rx 810、上行端口850和存储器832通信。处理器830包括译码模块814。译码模块814实现本文描述的公开实施例,例如方法100、方法900和/或方法1000,它们可以采用多层视频序列600和/或码流700。译码模块814还可以实现本文所描述的任何其它方法/机制。此外,译码模块814可以实现编解码系统200、编码器300、解码400和/或hrd 500。例如,译码模块814可以使用信号和/或读取本文所述的各种参数。此外,译码模块可以用于根据这些参数对视频序列进行编码和/或解码。因此,本文描述的信令改变可以提高译码模块814中的效率和/或避免错误。因此,译码模块814可以用于执行解决上述一个或多个问题的机制。因此,译码模块814使视频译码设备800在译码视频数据时具备其它功能和/或更高的译码效率。因此,译码模块814改进了视频译码设备800的功能,并解决了视频译码领域特有的问题。此外,译码模块814可以将视频译码设备800变换到不同的状态。或者,译码模块814可以实现为存储在存储器832中并由处理器830执行的指令(例如,存储在非瞬时性介质上的计算机程序产品)。
[0196]
存储器832包括一个或多个存储器类型,如磁盘、磁带机、固态驱动器、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、闪存、三态内容寻址存储器(ternary content-addressable memory,tcam)、静态随机存取存储器(static random-access memory,sram)等。存储器832可以用作溢出数据存储设备,以在选择程序用于执行时存储此类程序,并存储程序执行期间读取的指令和数据。
[0197]
图9为将视频序列编码到码流(例如,码流700)中以支持结合arc使用nooutputofpriorpicsflag的示例性方法900的流程图。方法900可以由编解码系统200、编码器300和/或视频译码设备800等编码器在执行方法100时执行。此外,方法900可以在hrd500上操作,因此可以在多层视频序列600上执行一致性测试。
[0198]
方法900可以开始于:编码器接收包括视频序列,并根据用户输入等确定将所述视频序列编码到多层码流中。在步骤901中,编码器将多个图像编码到码流中。例如,图像可以包括在au中。此外,图像可以包括在层中。编码器可以将包括图像的一个或多个层编码到多层码流中。层可以包括具有相同层id的vcl nal单元和关联的非vcl nal单元的集合。层可以包括vcl nal单元集,这些vcl nal单元包括经编码图像的视频数据,以及用于对这些图像进行译码的任何参数集。一个或多个层可以是输出层。非输出层的层被编码以支持重建输出层,但这些支持层并不打算在解码器上输出。这样,编码器可以编码层的各种组合,以便根据请求传输到解码器。层可以根据需要传输,以允许解码器根据网络条件、硬件能力和/或用户设置获得视频序列的不同表示。当编码码流时,编码器可以使用hrd来检查码流的一致性。
[0199]
在步骤903中,hrd可以解码前一au中的前一图像,并将前一图像存储在dpb中。例如,前一图像可以是第一层的一部分。然后,hrd可以检查在切换到第二层期间发生的问题。
[0200]
在步骤905中,hrd可以准备解码当前au的第二层中的当前图像。hrd可以解析当前图像中的第一条带的条带头。hrd还可以根据参考图像列表为第一条带构建参考图像列表。hrd还可以对dpb中的图像(例如,包括前一图像)执行参考图像列表标记过程,以将每个图像标记为不用于参考、用于短期参考和/或用于长期参考。
[0201]
在步骤907中,当当前au中的当前图像的picwidthmaxinsamplesy值与解码顺序中
的前一au中的前一图像的picwidthmaxinsamplesy值不同时,hrd可以将nooutputofpriorpicsflag设置为对应的值(例如,1)。picwidthmaxinsamplesy可以根据从码流中的sps获取的sps_pic_width_max_in_luma_samples推导出。进一步地,当当前au中的当前图像的picheightmaxinsamplesy值与解码顺序中的前一au中的前一图像的picheightmaxinsamplesy值不同时,hrd可以设置nooutputofpriorpicsflag。picheightmaxinsamplesy可以根据从码流中的sps获取的sps_pic_height_max_in_luma_samples推导出。nooutputofpriorpicsflag可以被设置为1,表示在不输出所包含的图像的情况下,dpb中的所有图像存储缓冲区都可能被清空,而且dpb满度变量应被设置为0。
[0202]
在步骤909中,hrd可以根据nooutputofpriorpicsflag值(例如,当nooutputofpriorpicsflag被设置为1时),在不选择包含的图像进行输出的情况下清空dpb。hrd还可以为清空dpb时删除的每个图像减小dpb满度变量(例如,减小1)。需要说明的是,当根据步骤905的参考图像列表标记过程,dpb中包括前一图像的所有图像被标记为不用于参考时,nooutputofpriorpicsflag可以仅在步骤907中设置,因此dpb可以仅在步骤909中被清空。
[0203]
然后,hrd可以在步骤911中解码当前au中的当前图像,并将当前图像存储在dpb中。因此,在步骤911中解码当前au中的当前图像之前,在步骤909中清空dpb。此外,在步骤905中解析当前图像中的第一条带的条带头之后,在步骤909中清空dpb。
[0204]
在一些情况下,nooutputofpriorpicsflag可以防止在包括前一图像的第一层和包括当前图像的第二层之间切换时dpb溢出。因此,在检查当前图像的一致性时,hrd一致性测试可能会成功。假设没有遇到其它错误,hrd一致性测试就完成了。假设一致性测试成功,则在步骤913中,码流被存储在长期存储器中,用于通过内容服务器等发送到解码器。码流的层在进行请求时,码流可以发送到解码器。
[0205]
图10为结合arc使用nooutputofpriorpicsflag时从码流(例如,码流700)中解码视频序列的示例性方法1000的流程图。方法1000可以由编解码系统200、解码器400和/或视频译码设备800等解码器在执行方法100时执行。此外,方法1000可以用于已经由hrd(例如hrd 500)检查一致性的多层视频序列600上。
[0206]
解码器开始接收表示多层视频序列的经译码数据的码流,例如作为方法900的结果或响应于解码器的请求时,开始执行方法1000。在步骤1001中,解码器接收码流。所述码流包括多个图像。例如,图像可以包括在au中。此外,图像可以包括在层中。层可以包括具有相同层id的vcl nal单元和关联的非vcl nal单元的集合。例如,当vcl nal单元集都具有相同的层id时,vcl nal单元集是层的一部分。层可以包括vcl nal单元集,这些vcl nal单元包括图像的视频数据,以及用于对这些与非vcl nal单元关联的图像进行译码的任何参数集。一个或多个层可以是输出层。非输出层的层被编码以支持重建输出层,但这些支持层并不打算输出。这样,解码器可以根据网络条件、硬件能力和/或用户设置获得视频序列的不同表示。
[0207]
在步骤1003中,解码器可以解码前一au中的前一图像,并将前一图像存储在dpb中。例如,前一图像可以是第一层的一部分。解码器可以确定切换到第二层,例如,由于用户输入和/或由于操作条件的改变。例如,解码器可以请求切换到第二层。
[0208]
在步骤1005中,解码器可以准备解码当前au的第二层中的当前图像。解码器可以
解析当前图像中的第一条带的条带头。解码器还可以根据参考图像列表为第一条带构建参考图像列表。解码器还可以对dpb中的图像(例如,包括前一图像)执行参考图像列表标记过程,以将每个图像标记为不用于参考、用于短期参考和/或用于长期参考。
[0209]
在步骤1007中,当当前au中的当前图像的picwidthmaxinsamplesy值与解码顺序中的前一au中的前一图像的picwidthmaxinsamplesy值不同时,解码器可以将nooutputofpriorpicsflag设置为对应的值(例如,1)。picwidthmaxinsamplesy可以根据从码流中的sps获取的sps_pic_width_max_in_luma_samples推导出。此外,当当前au中的当前图像的picheightmaxinsamplesy值与解码顺序中的前一au中的前一图像的picheightmaxinsamplesy值不同时,解码器可以设置nooutputofpriorpicsflag。picheightmaxinsamplesy可以根据从码流中的sps获取的sps_pic_height_max_in_luma_samples推导出。nooutputofpriorpicsflag可以被设置为1,表示在不输出所包含的图像的情况下,dpb中的所有图像存储缓冲区都可能被清空,而且dpb满度变量应被设置为0。
[0210]
在步骤1009中,解码器可以根据nooutputofpriorpicsflag值(例如,当nooutputofpriorpicsflag被设置为1时),在不选择包含的图像进行输出的情况下清空dpb。解码器还可以为清空dpb时删除的每个图像减小dpb满度变量(例如,减小1)。需要说明的是,当根据步骤1005的参考图像列表标记过程,dpb中包括前一图像的所有图像被标记为不用于参考时,nooutputofpriorpicsflag可以仅在步骤1007中设置,因此dpb可以仅在步骤1009中被清空。
[0211]
然后,解码器可以在步骤1011中解码当前au中的当前图像,并将当前图像存储在dpb中。因此,在步骤1011中解码当前au中的当前图像之前,在步骤1009中清空dpb。此外,在步骤1005中解析当前图像中的第一条带的条带头之后,在步骤1009中清空dpb。在一些情况下,nooutputofpriorpicsflag可以防止在包括前一图像的第一层和包括当前图像的第二层之间切换时dpb溢出。因此,使用nooutputofpriorpicsflag可以增加解码器的功能。
[0212]
在步骤1013中,解码器可以从dpb输出当前图像以作为解码视频序列的一部分进行显示。
[0213]
图11为结合arc使用nooutputofpriorpicsflag时将视频序列译码到码流中的示例性系统1100的示意图。系统1100可以由编解码系统200、编码器300、解码器400和/或视频译码设备800等编码器和解码器实现。此外,系统1100可以采用hrd 500对多层视频序列600和/或码流700执行一致性测试。此外,系统1100可以用于实现方法100、方法900和/或方法1000。
[0214]
系统1100包括视频编码器1102。视频编码器1102包括编码模块1103,用于将多个图像编码到码流中。视频编码器1102还包括:hrd模块1105,用于通过以下方式检查所述码流的一致性:当当前au的pigemaxinsamplesy值与解码顺序中的前一au的picwidthmaxinsamplesy值不同时,设置nooutputofpriorpicsflag;根据nooutputofpriorpicsflag值,在不选择包含的图像进行输出的情况下清空dpb;对当前图像进行解码;将当前图像存储在dpb中。视频编码器1102还包括存储模块1106,用于存储码流,以将所述码流发送到解码器。视频编码器1102还包括发送模块1107,用于将码流发送到视频解码器1110。视频编码器1102还可以用于执行方法900的任一步骤。
[0215]
系统1100还包括视频解码器1110。视频解码器1110包括:接收模块1111,用于接收
包括多个图像的码流。视频解码器1110还包括:设置模块1113,用于当当前au的picwidthmaxinsamplesy值与解码顺序中的前一au的picwidthmaxinsamplesy值不同时,设置nooutputofpriorpicsflag。视频解码器1110还包括:清空模块1115,用于根据nooutputofpriorpicsflag值,在不输出包含的图像的情况下清空dpb。视频解码器1110还包括:解码模块1117,用于对当前图像进行解码。视频解码器1110还包括:存储模块1119,用于将当前图像存储在dpb中。视频解码器1110还包括:输出模块1121,用于从dpb中输出当前图像,以显示为解码视频序列的一部分。视频解码器1110还可以用于执行方法1000的任一步骤。
[0216]
当第一组件和第二组件之间除了线、迹或其它介质之外没有其它中间组件时,第一组件直接与第二组件耦合。当第一组件和第二组件之间存在线、迹或其它介质之外的其它中间组件时,第一组件间接与第二组件耦合。术语“耦合”及其变体包括直接耦合和间接耦合。除非另有说明否则使用术语“约”是指以下描述的数字的
±
10%。
[0217]
还应当理解,本文中阐述的示例性方法的步骤不一定需要按照所描述的顺序执行,并且这些方法的步骤的顺序应当理解为仅仅是示例性的。同样地,在与本发明各种实施例相一致的方法中,这些方法可以包括其它步骤,并且某些步骤可以省略或合并。
[0218]
虽然本发明提供多个具体实施例,但应当理解,所公开的系统和方法也可通过其它多种具体形式体现,而不会脱离本发明的精神或范围。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或组件可以在另一系统中组合或集成,或者某些特征可以省略或不实现。
[0219]
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、组件、技术或方法进行组合或集成。其它改变、替换、更替示例对本领域技术人员而言是显而易见的,均不脱离本文所公开的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献