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

用于视频译码的参数集的制作方法

2022-03-16 02:37:15 来源:中国专利 TAG:

用于视频译码的参数集
1.相关申请案的交叉引用
2.本专利申请要求fnu hendry等人于2018年11月7日递交的第62/756,983号、发明名称为“用于视频译码的头参数集(header parameter set for video coding)”的美国临时专利申请案的权益,该申请案通过引用的方式并入本文中。
技术领域
3.本发明大体上涉及一种视频译码,具体地,涉及视频译码中用于压缩视频数据的译码工具参数的高效指示(signaling)。


背景技术:

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


技术实现要素:

5.在一个实施例中,本发明包括在解码器中实现的方法,所述方法包括:所述解码器的接收器接收码流,所述码流包括:包含第一类型译码工具参数的第一头参数集(header parameter set,hps)、包含第二类型译码工具参数的第二hps、条带头以及与所述条带头相关的条带;所述解码器的处理器确定所述条带头包含对所述第一hps的第一参考和对所述第二hps的第二参考;所述处理器当确定所述条带头包含所述第一参考和所述第二参考,使用所述第一类型译码工具参数和所述第二类型译码工具参数对所述条带进行解码;以及所述处理器发送所述条带以作为解码视频序列的一部分显示。hps,也称为自适应参数集(adaptation parameter set,aps),可用于描述粒度比图像参数集(picture parameter set,pps)的粒度小但比条带头的粒度大的视频数据。所公开的方面允许单个条带头参考多种类型的hps。通过提供一种允许单个条带头参考多种类型的hps的机制,可以在hps级指示各种译码工具参数。这使得译码工具参数可以在同一图像/帧中的条带之间改变,而无需用额外数据加载条带头。因此,编码器在执行率失真优化(rate distortion optimization,rdo)时具有更大的灵活性,因为同一图像中不同条带之间的译码工具参数可以不加载到每个条带头中。此外,由于找到了最优译码解决方案,编码器可以访问更多编码选项,因此平均译码效率得到提高。从而降低了在编码器和解码器侧存储视频数据和发送视频数据时内存资源的占用率和网络资源的占用率。
6.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述第一hps和所述第二hps包括自适应环路滤波器(adaptive loop filter,alf)hps、亮度映射色度缩放(luma mapping with chroma scaling,lmcs)hps、缩放列表参数hps或其组合。
7.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述码流还包括多个hps,所述多个hps包括所述第一hps和所述第二hps,其中,所述多个hps中的每个hps被阻止参考来自所述多个hps中的其它hps的译码工具参数。在一些系统中,当前hps可以继承先前hps的译码参数。理论上,这使得当前hps仅包括当前hps与先前hps之间的差异。但是,实际上该方法的继承链通常较长,只要后续hps可能参考旧的hps,则需要解码器在缓冲器中保留大量旧的hps。这既造成了缓冲器内存问题,又增加了因为hps在发送过程中丢失而导致译码错误的可能性。本发明的一些方面通过要求每个hps包含所有相关的译码参数而不参考其它hps来解决这一问题。
8.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述第一hps包含在与时间标识符(identifier,id)相关的接入单元中,其中,所述第一hps包含与包含所述第一hps的所述接入单元相关的所述时间id。在一个示例中,每个hps可以需要与包含hps的接入单元保持相同的时间id。
9.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述条带是图像的一部分,其中,所述图像与时间id相关,所述第一hps包含与所述图像相关的所述时间id。在一些示例中,每个hps可以需要与和参考hps的第一条带相关的图像保持相同的时间id。
10.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述码流包括多个图像,每个图像包含一个或多个条带,所述一个或多个条带包括所述条带,其中,所述码流还包括多个hps,所述多个hps包括所述第一hps和所述第二hps,其中,所述hps中的每个hps和所述条带中的每个条带都与多个时间id中的一个时间id相关,其中,具有第一时间id的每个条带被阻止参考具有第二时间id的任何hps,所述第二时间id大于所述第一时间id。在一些示例中,图像和条带的码流可以与多个时间id中的一个(例如,三个时间id中的一个)相关。时间id各自与对应的帧率相关。在呈现(render)较低帧率时,帧率较高的数据项可能会被忽略。在本示例中,防止条带参考具有较大时间id和较高帧率的hps。该方法确保条带不参考较高帧率hps,而当呈现条带的较低帧率时,这些较高帧率hps将被忽略。这可以确保hps实际上对条带可用,并且不会由于帧率不匹配而被忽略。
11.在一个实施例中,本发明包括一种在编码器中实现的方法,所述方法包括:所述编码器的处理器将多个图像分割为多个条带;所述处理器将所述多个条带编码到码流中,其中,所述条带被至少通过基于第一类型译码工具参数的第一类型译码工具和基于第二类型译码工具参数的第二类型译码工具进行编码;所述处理器将第一hps和第二hps编码到所述码流中,所述第一hps包含所述第一类型译码工具参数,所述第二hps包含所述第二类型译码工具参数;所述处理器将第一条带头编码到描述所述多个条带中的第一条带的编码的所述码流中,其中,所述第一条带头包含对所述第一hps的第一参考和对所述第二hps的第二参考;以及与所述处理器耦合的存储器存储发送到解码器的所述码流。hps,也称为aps,可用于描述粒度比pps的粒度小但比条带头的粒度大的视频数据。所公开的方面允许单个条带头参考多种类型的hps。通过提供一种允许单个条带头参考多种类型的hps的机制,可以在hps级指示各种译码工具参数。这使得译码工具参数可以在同一图像/帧中的条带之间改
变,而无需用额外数据加载条带头。因此,编码器在执行rdo时具有更大的灵活性,因为同一图像中不同条带之间的译码工具参数可以不加载到每个条带头中。此外,由于找到了最优译码解决方案,编码器可以访问更多编码选项,因此平均译码效率得到提高。从而降低了在编码器和解码器侧存储视频数据和发送视频数据时内存资源的占用率和网络资源的占用率。
12.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述第一hps和所述第二hps包括alf hps、lmcs hps、缩放列表参数hps或其组合。
13.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:还包括所述处理器将多个hps编码到所述码流中,其中,所述多个hps包括所述第一hps和所述第二hps,其中,所述多个hps中的每个hps被阻止参考来自所述多个hps中的其它hps的译码工具参数。在一些系统中,当前hps可以继承先前hps的译码参数。理论上,这使得当前hps仅包括当前hps与先前hps之间的差异。但是,实际上该方法的继承链通常较长,只要后续hps可能参考旧的hps,则需要解码器在缓冲器中保留大量旧的hps。这既造成了缓冲器内存问题,又增加了因为hps在发送过程中丢失而导致译码错误的可能性。本发明的一些方面通过要求每个hps包含所有相关的译码参数而不参考其它hps来解决这一问题。
14.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述第一hps包含在与时间id相关的接入单元中,其中,所述第一hps包含与包含所述第一hps的所述接入单元相关的所述时间id。在一个示例中,每个hps可以需要与包含hps的接入单元保持相同的时间id。
15.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述第一条带从第一图像中分割,其中,所述图像与时间id相关,所述第一hps包含与所述图像相关的所述时间id。在一些示例中,每个hps可以需要与和参考hps的第一条带相关的图像保持相同的时间id。
16.在上述任一方面中,提供了所述方面的另一种实现方式:对包括所述第一hps和所述第二hps的多个hps进行编码,其中,所述多个hps中的每个hps和所述条带中的每个条带都与多个时间id中的一个时间id相关,其中,具有第一时间id的每个条带被阻止参考具有第二时间id的任何hps,所述第二时间id大于所述第一时间id。在一些示例中,图像和条带的码流可以与多个时间id中的一个(例如,三个时间id中的一个)相关。时间id各自与对应的帧率相关。在呈现较低帧率时,帧率较高的数据项可能会被忽略。在本示例中,防止条带参考具有较大时间id和较高帧率的hps。该方法确保条带不参考较高帧率hps,而当呈现条带的较低帧率时,这些较高帧率hps将被忽略。这可以确保hps实际上对条带可用,并且不会由于帧率不匹配而被忽略。
17.在一个实施例中,本发明包括一种视频译码设备,包括:处理器、与所述处理器耦合的接收器、存储器和发送器,其中,所述处理器、接收器、存储器和发送器用于执行前述方面中任一项所述的方法。
18.在一个实施例中,本发明包括一种非瞬时性计算机可读介质,包括被视频译码设备使用的计算机程序产品,其中,所述计算机程序产品包括存储在所述非瞬时性计算机可读介质中的计算机可执行指令,当处理器执行所述计算机可执行指令时,使得所述视频译码设备执行上述任一方面的方法。
19.在一个实施例中,本发明包括解码器,包括:接收模块,用于接收码流,所述码流包括:包含第一类型译码工具参数的第一hps、包含第二类型译码工具参数的第二hps、条带头以及与所述条带头相关的条带;确定模块,用于确定所述条带头包含对所述第一hps的第一参考和对所述第二hps的第二参考;解码模块,用于当确定所述条带头包含所述第一参考和所述第二参考,使用所述第一类型译码工具参数和所述第二类型译码工具参数对所述条带进行解码;以及发送模块,用于发送所述条带以作为解码视频序列的一部分显示。
20.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述解码器还用于执行上述任一方面的方法。
21.在一个实施例中,本发明包括一种编码器,包括:分割模块,用于将多个图像分割为多个条带;编码模块,用于:将所述多个条带编码到码流中,其中,所述条带被至少通过基于第一类型译码工具参数的第一类型译码工具和基于第二类型译码工具参数的第二类型译码工具进行编码;将第一hps和第二hps编码到所述码流中,所述第一hps包含所述第一类型译码工具参数,所述第二hps包含所述第二类型译码工具参数;以及将第一条带头编码到描述所述多个条带中的第一条带的编码的所述码流中,其中,所述第一条带头包含对所述第一hps的第一参考和对所述第二hps的第二参考;以及存储模块,用于存储发送到解码器的所述码流。
22.可选地,在上述任一方面中,提供了所述方面的另一种实现方式:所述编码器还用于执行上述任一方面的方法。
23.为了清楚起见,上述任一实施例可以与上述其它实施例中的任意一个或多个实施例结合,在本发明的范围内创建一个新的实施例。
24.根据以下详细说明结合附图和权利要求将能更清楚地理解这些和其它特征。
附图说明
25.为了更透彻地理解本发明,现结合附图和具体实施方式,参阅以下简要说明,其中,相同的附图标记表示相同的部分。
26.图1为对视频信号进行译码的示例性方法的流程图;
27.图2为用于视频译码的示例性编码和解码(编解码)系统的示意图;
28.图3为示例性视频编码器的示意图;
29.图4为示例性视频解码器的示意图;
30.图5为包含具有头参数集(header parameter set,hps)的编码视频序列的示例性码流的示意图;
31.图6为用于时间缩放的示例性机制的示意图;
32.图7为示例性视频译码设备的示意图;
33.图8为使用hps将视频序列编码到码流中的示例性方法的流程图;
34.图9为使用hps从码流中解码视频序列的示例性方法的流程图;
35.图10为使用hps对码流中图像的视频序列进行译码的示例性系统的示意图。
具体实施方式
36.首先应理解,尽管下文提供一个或多个实施例的说明性实现方式,但所公开的系
统和/或方法可使用任何数目的技术来实现,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
37.本文中使用以下缩略语:自适应环路滤波器(adaptive loop filter,alf)、译码树块(coding tree block,ctb)、译码树单元(coding tree unit,ctu)、译码单元(coding unit,cu)、译码视频序列(coded video sequence,cvs)、基于超文本传输协议的动态自适应媒体流(dynamic adaptive streaming over hypertext transfer protocol,dash)、视频联合专家小组(joint video experts team,jvet)、运动约束分块集(motion-constrained tile set,mcts)、最大传输单元(maximum transfer unit,mtu)、网络抽象层(network abstraction layer,nal)、图像顺序编号(picture order count,poc)、原始字节序列载荷(raw byte sequence payload,rbsp)、像素点自适应偏移(sample adaptive offset,sao)、序列参数集(sequence parameter set,sps)、通用视频译码(versatile video coding,vvc)和工作草稿(working draft,wd)。
38.许多视频压缩技术可以用来减小视频文件的大小,同时尽量减少数据丢失。例如,视频压缩技术可以包括执行空间(例如,帧内)预测和/或时间(例如,帧间)预测,以减少或移除视频序列中的数据冗余。对于基于块的视频译码,可以将视频条带(例如,视频图像或视频图像的一部分)分割为视频块,所述视频块也可以称为树块、译码树块(coding tree block,ctb)、译码树单元(coding tree unit,ctu)、译码单元(coding unit,cu)和/或译码节点。相对于同一图像中的邻块中的参考像素点使用空间预测对图像的帧内编码(i)条带中的视频块进行译码。可以通过相对于同一图像中的邻块中的参考像素点使用空间预测或相对于其它参考图像中的参考像素点使用时间预测来对图像的帧间译码的单向预测(p)或双向预测(b)条带中的视频块进行译码。图像可以称为帧(frame)和/或图像(picture/image),参考图像可以称为参考帧和/或参考图像。空间或时间预测产生表示图像块的预测块。残差数据表示原始图像块与预测块之间的像素差。因此,根据指向构成预测块的参考像素点块的运动矢量和表示译码块与预测块之间的差的残差数据对帧间译码块进行编码。根据帧内译码模式和残差数据对帧内译码块进行编码。为了进一步压缩,残差数据可以从像素域变换到变换域。这样会产生残差变换系数,所述残差变换系数可以被量化。量化变换系数最初可以布置在二维阵列中。可以扫描量化变换系数,以产生变换系数的一维矢量。可以应用熵译码以达到更大的压缩。下文将更详细地讨论这种视频压缩技术。
39.为了保证可以对编码视频进行准确解码,根据对应的视频译码标准对视频进行编码和解码。视频译码标准包括国际电联(international telecommunication union,itu)电信标准化部门(international telecommunication union-telecommunicationstandardization 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(three dimensional 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)中,所述工作草稿包括jvet-l1001-v1和jvet-k1002-v3,分别提供vvc wd的算法描述、编码端描述以及参考软件。
40.为了对视频图像进行译码,首先对图像进行分割,并将得到的各部分译码到码流中。有多种图像分割方案。例如,可以将图像分割为规则条带、非独立条带、分块(tile),和/或根据波前并行处理(wavefront parallel processing,wpp)对图像进行分割。为了简单起见,hevc限制了编码器,使得在将条带分割为用于视频译码的ctb组时,只能使用规则条带、非独立条带、分块、wpp及其组合。这种分割可以用于支持最大传输单元(maximum transfer unit,mtu)大小匹配、并行处理和减少端到端时延。mtu表示单个报文中能够发送的最大数据量。如果报文有效载荷超过mtu,则通过称为分割的过程将该载荷分划为两个报文。
41.规则条带,也简称为条带,是图像的分割部分,可以独立于同一图像中的其它规则条带重建,尽管由于循环滤波操作存在一些相互依赖性。每个规则条带封装在自己的网络抽象层(network abstraction layer,nal)单元中进行发送。此外,可以禁用跨条带边界的帧内预测(帧内像素点预测、运动信息预测、译码模式预测)和熵译码依赖,以支持独立重建。这种独立重建支持并行化。例如,基于规则条带的并行化使用最小的处理器间或核间通信。但是,由于每个规则条带是独立的,因此每个条带都与单独的条带头相关。由于每个条带的条带头的位成本,以及由于缺乏跨条带边界的预测,使用规则条带会造成大的译码开销。此外,可以使用规则条带,以支持mtu大小匹配要求。具体地,由于规则条带封装在单独的nal单元中,并且可以独立译码,因此每个规则条带应小于mtu方案中的mtu,以避免将条带分为多个报文。因此,为了实现并行化和mtu大小匹配,图像中的条带布局可能互相矛盾。
42.非独立条带与规则条带类似,但非独立条带具有缩短的条带头,并且允许在不影响帧内预测的情况下对图像树块边界进行分割。因此,非独立条带允许将规则条带分割为多个nal单元,这通过在整个规则条带的编码完成之前发送规则条带的一部分,降低端到端时延。
43.分块是图像中由水平和垂直边界创建的分割部分,这些边界创建了分块的列和行。分块可以按光栅扫描顺序(从右到左,从上到下)进行译码。ctb的扫描顺序在分块内部进行。因此,在进行到下一个分块中的ctb之前,按照光栅扫描顺序对第一分块中的ctb进行译码。与规则条带类似,分块去除了帧内预测依赖以及熵解码依赖。但是,单个nal单元中可以不包括分块,因此,分块可以不用于mtu大小匹配。每个分块可以由一个处理器/核处理,处理器间/核间通信(该通信用于处理单元之间的帧内预测,处理单元对相邻分块进行解码)可以限于发送共享的条带头(当相邻分块在同一条带中时),并对重建像素点和元数据进行循环滤波相关的共享。当条带中包括多个分块时,除条带中的第一入口点偏移之外,还可以在条带头中指示(signal)每个分块的入口点字节偏移。对于每个条带和分块,应满足
以下条件中的至少一个:(1)条带中的所有译码树块属于同一分块;(2)分块中的所有译码树块属于同一条带。
44.在wpp中,图像被分割为单行的ctb。熵解码和预测机制可以使用来自其它行中的ctb的数据。通过对ctb行进行并行解码,支持并行处理。例如,当前行可以与前一行并行解码。但是,当前行的解码比先前行的解码过程延迟两个ctb。该延迟确保在对当前ctb进行译码之前,与当前行中当前ctb上方和右边的ctb相关的数据可用。当用图形表示时,该方法表现为波前。如果图像包含ctb行,这种交错启动支持尽可能多的处理器/内核进行并行处理。由于支持在图像内相邻树块行之间进行帧内预测,因此处理器间/核间通信可以实现帧内预测。wpp分割不考虑nal单元大小。因此,wpp不支持mtu大小匹配。但是,规则条带可以与wpp结合使用,以根据需要实现mtu大小匹配,这需要一定的译码开销。
45.分块界定了将图像分割为分块列和行的水平和垂直边界。在按图像的分块光栅扫描的顺序对下一分块的左上ctb进行解码之前,可以将ctb的扫描顺序更改为局部。本地扫描顺序表示分块的ctb光栅扫描顺序。与规则条带类似,分块可以去除帧内预测依赖关系以及熵解码依赖关系。但是,分块可以不包括在各个nal单元中。因此,分块可以不用于mtu大小匹配。每个分块可以由一个处理器/核处理。用于对相邻分块进行解码的处理单元之间的帧内预测的处理器间/核间通信可以限于在条带跨越多个分块的情况下发送共享的条带头。处理器间/核间通信还可以用于对重建像素点和元数据的循环过滤相关的共享。当条带中包括多个分块或wpp段时,可以在条带头中指示除条带中的第一个分块或wpp段之外的每个分块或wpp段的入口点字节偏移。为了实现简单性,可以对四种不同的图像分割方案的应用进行限制。例如,译码视频序列(coded video sequence,cvs)可以不包括hevc中指定的大多数文档(profile)的分块和波前。对于每个条带和分块,也可以满足以下条件中的一个或两个。条带中的所有译码树块可以属于同一分块;分块中的所有译码树块可以属于同一条带。此外,波前段可以正好包含一个ctb行。同时,当使用wpp时,从ctb行开始的条带应在相同的ctb行中结束。
46.vvc可以包括分块和分块组图像分割方案。vvc中的分块可以与hevc中的分块相同。vvc可以使用分块组代替条带。条带定义为包含一组ctu,而分块组定义为包含一组分块。译码图像可以由一个或多个条带(或分块组)构成。每个条带/分块组都具有条带头,其中包含表示用于解码条带的信息的语法元素。每个条带头可以包含仅解码条带的信息。但是,来自条带头的信息对于同一图像中的其它条带可以相同。这是因为译码工具可以在图像级操作,因此用于图像内的所有条带的参数可以相同。这种情况可能导致条带头中具有冗余信息。
47.头参数集(header parameter set,hps)也称为aps,可用于克服与冗余条带头信息有关的问题。hps可以包含多个条带共享的条带级信息。hps可以由编码器生成,并且可以包含当在解码器侧解码对应条带时使用的译码工具参数。某些系统采用hps和参考hps来实现hps方案。在该方案中,译码顺序的初始hps包含对应条带的所有相关译码工具参数。当这些参数对于后续条带发生改变时,后续hps仅包括已经改变的参数。然后,后续hps返回参考初始hps。因此,初始hps充当后续hps的参考hps。然后,可以使用其它hps来参考先前hps等。
48.以这种方式参考hps具有一些问题。例如,允许hps参考其它hps会导致复杂的机制。在特定示例中,该机制可能导致一系列hps参考。在一些情况下,该方法可能导致hps的
链较长,因为在包含视频数据的码流中使用的hps参考的数量可能没有明确的限制。为了管理此方案,可以需要解码器以在解码图像缓冲器中保留任意数量个hps,以供可能的后续参考使用。为了解决这一问题,可以添加hps重置机制以中断任何此类扩展的hps参考链,这样会进一步增加复杂度。此外,这种方法很容易出错。例如,如果早期的hps由于发送错误而丢失,则后续参考的hps将不包含足够的数据来解码对应的条带。此外,这种方法可能导致码流中具有大量hps。但是,可以限制hps标识符(id)的数量,以避免对较大的hps id值进行译码。因此,hps id可以在码流中重复使用。这可能会导致歧义,例如当hps参考由多个参考hps使用的hps id时。此外,hps可以在经译码的码流内指示,称为带内指示。hps也可以在元数据信息等中由外部机制指示。这种指示称为带外指示。这种双指示机制进一步增加了hps方案的复杂度。
49.本文公开了各种降低hps指示复杂度的机制。hps是指在最新的标准文档中的hps。因此,为了清楚讨论,以下公开通常是指hps。但是,术语hps和aps可以在大多数方面互换使用。本发明避免hps参考其它hps,以避免hps具有复杂性和易出错性。由于hps可能不参考另一个hps,因此单个hps的丢失只会导致局部错误。此外,当后续hps替换先前hps时,解码器不需要在存储器中保留hps。在具体示例中,在hps类型指示hps中包含的译码工具参数的类型的情况下,可以使用多种类型的hps。这种hps类型可以包括自适应环路滤波器(adaptive loop filter,alf)hps、亮度映射色度缩放(luma mapping with chroma scaling,lmcs)hps和/或缩放列表参数hps。在这种示例中,当解码器获得第一类型的当前hps时,可以丢弃第一类型的先前hps,因为当前hps会替代此类先前hps。为了可以实现多种类型的hps,单个条带头可以参考多个hps以参考对应条带的所有译码工具参数。这与使条带头可以参考单个hps的其它方案形成对比,所述单个hps随后参考其它hps。因此,允许单个条带头参考多个hps会导致无法实现hps参考链。此外,本发明描述了一种使hps能够以时间缩放操作的机制。在时间缩放中,码流用于使解码器和/或用户可以从多个帧率中进行选择。为了实现这种方案,为每个图像/帧分配一个时间id。具有较小时间id的帧以每种帧率显示。对于较低的帧率,将跳过具有较大时间id的帧,而对于较高的帧率,仅进行显示。为了支持这种时间缩放(temporal scaling),为hps分配一个时间id。hps可以接收包含参考hps的第一条带的图像的时间id。在其它示例中,hps可以接收包含hps的接入单元的时间id。接入单元是包含足以解码对应图像的视频数据的码流数据分组。为了进一步支持时间缩放,可以阻止与较小时间id相关的条带参考包含较大时间id的hps。这确保了较低的帧率设置不会使条带参考由于时间缩放而忽略的hps,从而防止在以较低帧率解码某些条带时,译码工具参数不可用。
50.图1为对视频信号进行译码的示例性操作方法100的流程图。具体地,在编码器中对视频信号进行编码。编码过程通过采用各种机制来压缩视频信号以减小视频文件大小。较小的文件大小使得压缩的视频文件可以发送给用户,同时减少相关带宽的开销。然后,解码器对压缩的视频文件进行解码,以重建原始视频信号,并向终端用户显示。解码过程通常与编码过程成镜像以使得解码器可以一致地重建视频信号。
51.在步骤101中,将视频信号输入编码器中。例如,所述视频信号可以是存储在存储器中的未压缩的视频文件。在另一示例中,视频文件可以由视频捕获设备(如视频摄像机)捕获,并且进行编码以支持视频的直播流。所述视频文件可以包括音频分量和视频分量。所
述视频分量包含一系列图像帧,当按顺序观看时,这些图像帧会产生运动的视觉效果。这些帧包括根据光(本文称为亮度分量(或亮度像素点))和颜色(称为色度分量(或颜色像素点))表示的像素。在一些示例中,这些帧还可以包含深度值以支持三维观看。
52.在步骤103中,将视频分割为块。分割包括将每个帧中的像素细分为正方形和/或矩形块以进行压缩。例如,在高效视频译码(high efficiency video coding,hevc)(也称为h.265和mpeg-h第2部分)中,可以首先将帧分为译码树单元(coding tree unit,ctu),这些译码树单元是预定义大小(例如,64个像素
×
64个像素)的块。ctu包含亮度像素点和色度像素点。可以使用译码树将ctu分为块,然后递归地细分这些块,直到获得支持进一步编码的配置。例如,可以对帧的亮度分量进行细分,直到各个块包含相对均匀的照明值。此外,可以对帧的色度分量进行细分,直到各个块包含相对均匀的色值。因此,分割机制根据视频帧的内容而不同。
53.在步骤105中,采用各种压缩机制来压缩在步骤103中分割的图像块。例如,可以采用帧间预测和/或帧内预测。帧间预测旨在利用一个事实,即在一个共同场景中的对象,往往会在连续的帧中出现。因此,无需在相邻帧中对参考帧中描绘对象的块进行重复描述。具体地,一个对象(如一张桌子)可能在多个帧中保持恒定的位置。因此,只描述一次桌子,相邻帧可以返回参考参考帧。可以采用模式匹配机制来在多个帧上匹配对象。此外,由于对象移动或摄像机移动等,移动的对象可以通过多个帧表示。在特定示例中,视频可以通过多个帧显示在屏幕上移动的汽车。可以使用运动矢量描述这种移动。运动矢量是一个二维矢量,提供从帧中对象的坐标到参考帧中该对象的坐标的偏移。因此,帧间预测可以将当前帧中的图像块编码为运动矢量集合,指示相对于参考帧中对应块的偏移。
54.帧内预测对公共帧中的块进行编码。帧内预测利用了一个事实,即亮度分量和色度分量往往聚集在一个帧中。例如,一棵树的一部分中的一片绿色往往与几片类似的绿色相邻。帧内预测采用多种方向预测模式(例如,hevc中的33种模式)、平面模式和直流(direct current,dc)模式。所述方向模式指示当前块与对应方向上邻块的像素点类似/相同。平面模式指示可以根据行边缘处的邻块对行/列(例如,平面)上的一系列块进行插值。实际上,平面模式通过采用具有变化值的相对恒定的斜率来指示光/颜色在行/列上的平滑转变。dc模式用于边界平滑,指示块和与所有邻块的像素点相关的平均值类似/相同,所述邻块与方向预测模式的角方向相关。因此,帧内预测块可以将图像块表示为各种关系预测模式值而非实际值。此外,帧间预测块可以将图像块表示为运动矢量值而非实际值。在任一种情况下,预测块在一些情况下可能无法准确地表示图像块。所有差值都存储在残差块中。可以对残差块应用变换以进一步压缩文件。
55.在步骤107中,可以应用各种滤波技术。在hevc中,根据环内滤波方案应用滤波器。上文描述的基于块的预测可以使得在解码器侧创建块状图像。此外,基于块的预测方案可以对块进行编码,然后重建编码块,以供以后用作参考块。环内滤波方案迭代地将噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和像素点自适应偏移(sample adaptive offset,sao)滤波器应用于块/帧。这些滤波器减少了此类块伪影,从而可以准确地重建编码文件。此外,这些滤波器减少了重建参考块中的伪影,使得伪影不太可能在根据重建参考块编码的后续块中产生其它的伪影。
56.在步骤109中,对视频信号进行了分割、压缩和滤波之后,在码流中编码得到的数
据。码流包括上述数据以及支持在解码器侧进行适当的视频信号重建所需要的任何指示数据。例如,此类数据可以包括分割数据、预测数据、残差块和向解码器提供译码指令的各种标志。码流可以存储在存储器中,以便在请求时向解码器发送。还可以向多个解码器广播和/或组播所述码流。创建码流是一个迭代过程。因此,步骤101、103、105、107和109可以在多个帧和块中连续和/或同时进行。图1所示的顺序是为了清楚和便于描述而呈现的,并非旨在将视频译码过程限制于特定顺序。
57.在步骤111中,解码器接收码流并开始解码过程。具体地,解码器采用熵解码方案将码流转换为对应的语法数据和视频数据。在步骤111中,解码器使用码流中的语法数据来确定帧的分割。分割应与步骤103中的块分割结果匹配。现在描述步骤111中采用的熵编码/解码。编码器在压缩过程中进行许多选择,如根据一个或多个输入图像中值的空间定位从多个可能选择中选择块分割方案。指示确切的选择可能会占用大量的位元。本文中使用的位元是被视为变量的二进制值(例如,可能根据上下文变化的位值)。熵译码允许编码器丢弃任何明显不适合特定情况的选项,从而留下一组可使用的选项。然后,为每个可使用的选项分配一个码字。码字的长度取决于可使用的选项的数量(例如,一个位元对应两个选项,两个位元对应三个或四个选项等)。然后,所述编码器对所选选项的码字进行编码。该方案减小了码字的大小,因为码字的大小与唯一地指示从可使用选项的小子集中进行选择,而非唯一指示从所有可能选项的潜在大集中进行所需要的码字一样大。然后,解码器通过以与编码器类似的方式确定可使用选项集来对所述选择进行解码。通过确定可使用选项集,解码器可以读取码字并确定编码器做出的选择。
58.在步骤113中,解码器执行块解码。具体地,解码器进行逆变换来生成残差块。然后,解码器使用残差块和对应的预测块,根据分割重建图像块。预测块可以包括在步骤105中编码器侧生成的帧内预测块和帧间预测块。然后,根据在步骤111中确定的分割数据将重建图像块定位到重建视频信号的帧中。步骤113的语法还可以通过上文描述的熵译码在码流中指示。
59.在步骤115中,以类似于步骤107的方式在编码器侧对重建视频信号的帧进行滤波。例如,可以对帧应用噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和sao滤波器以去除块伪影。在对帧进行滤波之后,可以在步骤117中将视频信号输出到显示器以供终端用户观看。
60.图2为用于视频译码的示例性编码和解码(编解码)系统200的示意图。具体地,编解码系统200能够实现操作方法100。编解码系统200广义地描述编码器和解码器中使用的组件。编解码系统200接收视频信号并对视频信号进行分割,如操作方法100中的步骤101和103所描述,从而产生经分割的视频信号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。现对这些组件进行描述。
61.经分割的视频信号201是已通过译码树分割为像素块的捕获视频序列。译码树采用各种划分模式将像素块细分为更小的像素块。然后,可以将这些块进一步细分为更小块。所述块可以称为所述译码树上的节点。较大的父节点被划分为较小的子节点。节点被细分的次数称为节点/译码树的深度。在某些情况下,划分的块可以包括在译码单元(coding unit,cu)中。例如,cu可以是ctu的子部分,包括亮度块、一个或多个红差色度(cr)块和一个或多个蓝差色度(cb)块以及cu的对应语法指令。所述划分模式可以包括二叉树(binary tree,bt)、三叉树(triple tree,tt)和四叉树(quad tree,qt),用于根据所采用的划分模式,分别将节点划分为不同形状的两个、三个或四个子节点。将经分割的视频信号201发送给通用译码器控制组件211、变换缩放和量化组件213、帧内估计组件215、滤波器控制分析组件227和运动估计组件221进行压缩。
62.通用译码器控制组件211用于根据应用约束条件做出与将视频序列的图像译码到码流中相关的决策。例如,通用译码器控制组件211管理码率/码流大小相对于重建质量的优化。可以根据存储空间/带宽可用性和图像分辨率请求做出此类决策。通用译码器控制组件211还根据发送速度管理缓冲器的使用,以缓解缓存欠载和超载问题。为了管理这些问题,通用译码器控制组件211管理由其它组件进行的分割、预测和滤波。例如,通用译码器控制组件211可以动态地提高压缩复杂度以提高分辨率和带宽使用,或者降低压缩复杂度以降低分辨率和带宽使用。因此,通用译码器控制组件211控制编解码系统200的其它组件来平衡视频信号重建质量与码率问题。通用译码器控制组件211创建控制数据,这些控制数据控制其它组件的操作。还将所述控制数据发送给标头格式化和cabac组件231,以编码到码流中,从而指示用于在解码器侧解码的参数。
63.还将经分割的视频信号201发送到运动估计组件221和运动补偿组件219进行帧间预测。可以将经分割的视频信号201的帧或条带分为多个视频块。运动估计组件221和运动补偿组件219相对于一个或多个参考帧中的一个或多个块对所接收视频块进行帧间预测译码以提供时间预测。编解码系统200可以执行多个译码过程,以便为每个视频数据块选择适当的译码模式等。
64.运动估计组件221和运动补偿组件219可以高度集成,但出于概念目的进行单独说明。运动估计组件221执行的运动估计是生成运动矢量的过程,其中,这些运动矢量用于估计视频块的运动。例如,运动矢量可以表示译码对象相对于预测块的位移。预测块是被发现在像素差异方面与待译码块高度匹配的块。预测块也可以称为参考块。此类像素差异可以通过绝对差异和(sum of absolute difference,sad)、平方差异和(sum of square difference,ssd)或其它差异度量来确定。hevc采用若干译码对象,包括ctu、译码树块(coding tree block,ctb)和cu。例如,可以将ctu分为多个ctb,然后可以将ctb分为多个cb以包括在cu中。可以将cu编码为包含预测数据的预测单元(prediction unit,pu)和/或包含cu的变换残差数据的变换单元(transform unit,tu)。运动估计组件221使用率失真分析作为率失真优化过程的一部分来生成运动矢量、pu和tu。例如,运动估计组件221可以确定
当前块/帧的多个参考块、多个运动矢量等,并且可以选择具有最佳率失真特性的参考块、运动矢量等。最佳率失真特性平衡视频重建的质量(例如,压缩造成的数据丢失量)和译码效率(例如,最终编码的大小)。
65.在一些示例中,编解码系统200可以计算存储在解码图像缓冲器组件223中的参考图像的子整数像素位置的值。例如,视频编解码系统200可以插值参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置的值。因此,运动估计组件221可以执行相对于全像素位置和分数像素位置的运动搜索,并输出具有分数像素精度的运动矢量。运动估计组件221通过将pu的位置与参考图像的预测块的位置进行比较来计算帧间译码条带中视频块的pu的运动矢量。运动估计组件221将计算的运动矢量作为运动数据输出到标头格式化和cabac组件231以进行编码,并将运动输出到运动补偿组件219。
66.运动补偿组件219执行的运动补偿可以涉及根据运动估计组件221所确定的运动矢量获取或生成预测块。同样,在一些示例中,运动估计组件221和运动补偿组件219可以在功能上集成。在接收当前视频块的pu的运动矢量之后,运动补偿组件219可以定位运动矢量指向的预测块。然后,从所译码的当前视频块的像素值中减去预测块的像素值,从而形成像素差值,如此形成残差视频块。通常,运动估计组件221相对于亮度分量执行运动估计,运动补偿组件219将根据亮度分量计算的运动矢量用于色度分量和亮度分量。将预测块和残差块发送给变换缩放和量化组件213。
67.还将经分割的视频信号201发送到帧内估计组件215和帧内预测组件217。如同运动估计组件221和运动补偿组件219,帧内估计组件215和帧内预测组件217可以高度集成,但出于概念目的进行单独说明。帧内估计组件215和帧内预测组件217相对于当前帧中的块对当前块进行帧内预测,以替代如上所述的由运动估计组件221和运动补偿组件219在各帧之间执行的帧间预测。具体地,帧内估计组件215确定帧内预测模式来用于对当前块进行编码。在一些示例中,帧内估计组件215从多个测试的帧内预测模式中选择适当的帧内预测模式来对当前块进行编码。然后,将所选择的帧内预测模式发送给标头格式化和cabac组件231进行编码。
68.例如,帧内估计组件215对各种测试的帧内预测模式进行率失真分析来计算率失真值,并在测试的模式中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定编码块与经编码以产生编码块的原始未编码块之间的失真(或误差)量,以及用于产生编码块的码率(例如,位数)。帧内估计组件215根据各种编码块的失真和速率计算比率,以确定表现出块的最佳率失真值的帧内预测模式。此外,帧内估计组件215可用于根据率失真优化(rate-distortion optimization,rdo),使用深度建模模式(depth modeling mode,dmm)对深度图的深度块进行译码。
69.当在编码器上实现时,帧内预测组件217可以根据由帧内估计组件215确定的所选帧内预测模式从预测块生成残差块,或者当在解码器上实现时,从码流读取残差块。所述残差块包括预测块与原始块之间的值差,表示为矩阵。然后,将残差块发送给变换缩放和量化组件213。帧内估计组件215和帧内预测组件217可以对亮度分量和色度分量进行操作。
70.变换缩放和量化组件213用于进一步压缩残差块。变换缩放和量化组件213对残差块应用变换,如离散余弦变换(discrete cosine transform,dct)、离散正弦变换(discrete sine transform,dst)或概念上类似的变换,从而产生包括残差变换系数值的
arithmetic coding,sbac)、概率区间分割熵(probability interval partitioning entropy,pipe)译码或其它熵译码技术对信息进行编码。在熵译码之后,可以将经译码的码流发送到另一设备(例如,视频解码器)或存档以用于后续发送或检索。
75.图3为示例性视频编码器300的框图;视频编码器300可以用于实现编解码系统200的编码功能和/或实现操作方法100的步骤101、103、105、107和/或109。编码器300对输入视频信号进行分割,从而产生经分割的视频信号301,其中,所述经分割的视频信号301基本上类似于经分割的视频信号201。然后,通过编码器300的组件压缩经分割的视频信号301并将其编码到码流中。
76.具体地,将经分割的视频信号301发送给帧内预测组件317进行帧内预测。帧内预测组件317可以基本上类似于帧内估计组件215和帧内预测组件217。还将经分割的视频信号301发送给运动补偿组件321,以根据解码图像缓冲器组件323中的参考块进行帧间预测。运动补偿组件321可以基本上类似于运动估计组件221和运动补偿组件219。将帧内预测组件317和运动补偿组件321的预测块和残差块发送给变换和量化组件313以对残差块进行变换和量化。变换和量化组件313可以基本上类似于变换缩放和量化组件213。将经变换和量化的残差块和对应的预测块(连同相关控制数据)发送给熵译码组件331以译码到码流中。熵译码组件331可以基本上类似于标头格式化和cabac组件231。
77.也将经变换和量化的残差块和/或对应的预测块从变换和量化组件313发送给逆变换和量化组件329以重建为参考块以供运动补偿组件321使用。逆变换和量化组件329可以基本上类似于缩放和逆变换组件229。根据示例,也将环内滤波器组件325中的环内滤波器应用于残差块和/或重建参考块。环内滤波器组件325可以基本上类似于滤波器控制分析组件227和环内滤波器组件225。环内滤波器组件325可以包括多个滤波器,如环内滤波器组件225所描述。然后,将滤波块存储在解码图像缓冲器组件323中,以供运动补偿组件321用作参考块。解码图像缓冲器组件323可以基本上类似于解码图像缓冲器组件223。
78.图4为示例视频解码器400的框图。视频解码器400可以用于实现编解码系统200的解码功能和/或实现操作方法100的步骤111、113、115和/或117。例如,解码器400从编码器300接收码流,并根据所述码流生成重建的输出视频信号,以向终端用户显示。
79.所述码流由熵解码组件433接收。熵解码组件433用于实现熵解码方案,如cavlc、cabac、sbac、pipe译码或其它熵译码技术。例如,熵解码组件433可以采用标头信息来提供上下文以解释编码到码流中的码字的其它数据。解码信息包括对视频信号进行解码所需的任何信息,如总体控制数据、滤波器控制数据、分割信息、运动数据、预测数据和残差块中的量化变换系数。将量化变换系数发送给逆变换和量化组件429以重建为残差块。逆变换和量化组件429可以类似于逆变换和量化组件329。
80.将重建残差块和/或预测块发送给帧内预测组件417,以根据帧内预测操作重建为图像块。帧内预测组件417可以类似于帧内估计组件215和帧内预测组件217。具体地,帧内预测组件417采用预测模式来定位帧中的参考块,并将残差块应用于结果以重建帧内预测图像块。将重建的帧内预测图像块和/或残差块以及对应的帧间预测数据通过环内滤波器组件425发送给解码图像缓冲器组件423,所述解码图像缓冲器组件423和环内滤波器组件425可以分别基本上类似于解码图像缓冲器组件223和环内滤波器组件225。环内滤波器组件425对重建图像块、残差块和/或预测块进行滤波,并且将此类信息存储在解码图像缓冲
器组件423中。将解码图像缓冲器组件423的重建图像块发送给运动补偿组件421进行帧间预测。运动补偿组件421可以基本上类似于运动估计组件221和/或运动补偿组件219。具体地,运动补偿组件421使用参考块的运动矢量来生成预测块,并将残差块应用于结果以重建图像块。还可以通过环内滤波器组件425将所得到的重建块发送给解码图像缓冲器组件423。解码图像缓冲器组件423继续存储其它重建图像块,这些重建图像块可以通过分割信息重建为帧。此类帧也可以位于序列中。将所述序列作为重建的输出视频信号向显示器输出。
81.图5是示出包含具有hps 513的编码视频序列的示例性码流500的示意图。例如,码流500可以由编解码系统200和/或编码器300生成,用于由编解码系统200和/或解码器400进行解码。在另一示例中,码流500可以在方法100的步骤109处由编码器生成,以供解码器在步骤111处使用。
82.码流500包括序列参数集(sequence parameter set,sps)510、多个图像参数集(picture parameter set,pps)512、多个hps 513、多个条带头514和图像数据520。sps 510包含码流500中包含的视频序列中所有图像共用的序列数据。这些数据可以包括图像大小、位深度、译码工具参数、码率限制等。pps 512包含应用于整个图像的参数。因此,视频序列中的每个图像可以参考pps 512。应注意,虽然每个图像都参考pps 512,但是在一些示例中,单个pps 512可以包含多个图像的数据。例如,可以根据类似的参数对多个类似的图像进行译码。在这种情况下,单个pps 512可以包含用于此类类似图像的数据。pps 512可以表示可用于对应图像中的条带、量化参数、偏移等的译码工具。条带头514包含图像中的每个条带特定的参数。因此,视频序列中的每个条带可以有一个条带头514。条带头514可以包含条带类型信息、图像顺序计数(picture order count,poc)、参考图像列表、预测权重、分块入口点、去块参数等。
83.hps 513是一种语法结构,包含应用于零个或更多个条带的语法元素,所述零个或更多个条带由在条带头中找到的零个或更多个语法元素确定。因此,hps 513包含用于译码工具的与多个条带相关的参数的语法元素。hps 513在某些系统中也可以称为hps。例如,一个或多个条带可以指hps 513。因此,解码器可以根据这些参考获得hps 513,从hps 513获得译码工具参数,并使用译码工具参数解码对应的条带。hps 513在概念上占据pps 512和条带头514之间的分层位置。例如,某些数据可能与多个条带相关,而与整个图像无关。这种数据可以不存储在pps 512中,因为数据与整个图像无关。但是,否则这种数据将包含在多个条带头514中。hps 513可以接受这种数据,以避免多个条带头514之间的冗余指示。hps 513译码结构在vvc中引入,在hevc或以前的译码标准中都没有类似的结构。下面讨论hps 513的各种实现方式。
84.图像数据520包含根据帧间预测和/或帧内预测编码的视频数据以及对应的经变换和量化的残差数据。例如,视频序列包括译码为图像数据的多个图像521。图像521是视频序列的单帧,因此在显示视频序列时通常以单个单元显示。但是,可以显示部分图像以实现某些技术,如虚拟现实、画中画等。图像521各自参考pps 512。图像521被分为条带523。条带523可定义为图像521的水平部分。例如,条带523可以包含图像521的高度的一部分和图像521的完整宽度。在一些系统中,条带523被细分为分块525。在其它系统中,条带523由包含分块525的分块组(tile group)替换。条带523和/或分块525的分块组参考条带头514和/或
hps 513。分块525可以包括图像521的矩形部分和/或图像521的由列和行所限定的一部分。分块525进一步分为译码树单元(coding tree unit,ctu)。根据译码树,将ctu进一步分为译码块。然后可以根据预测机制对译码块进行编码/解码。
85.码流500译码为vcl nal单元533和非vcl nal单元531。nal单元是译码数据单元,其大小可设置为单个报文的有效载荷,以便通过网络进行发送。vcl nal单元533是包含译码视频数据的nal单元。例如,每个vcl nal单元533可包含一个条带523和/或包括对应条带525、ctu和/或译码块的数据的分块组。非vcl nal单元531是包含支持语法但不包含译码视频数据的nal单元。例如,非vcl nal单元531可以包含sps 510、pps 512、hps 513、条带头514等。因此,解码器在离散vcl nal单元533和非vcl nal单元531中接收码流500。接入单元535是一组vcl nal单元533和/或非vcl nal单元531,包括足以对单个图像521译码的数据。
86.在一些示例中,hps 513可以实现如下。hps 513可以是带内和/或带外可用的,其中带内指示包括在码流500中,带外指示包括在支持元数据中。hps 513包括在nal单元中,如非vcl nal单元531中,其中,hps 513由nal单元类型标识。hps 513可以包含用于译码工具的参数,如但不限于alf、sao、去块、量化矩阵、帧间预测参数、参考图像集构造相关参数,和/或参考图像列表构造相关参数。hps 513可以包括类型。该类型定义了hps 513中包含哪些译码工具参数。每个hps 513可以只包含一种译码工具参数。不同类型的hps 513可以组合在一起称为参数集组(group of parameter set,gps)。条带523可以参考gps,而不是参考单个hps 513。被对应的条带523和/或分块组参考之前,hps 513可用于解码器侧。经译码图像521的不同条带523可以参考不同的hps 513。hps 513可以置于码流500中的任何条带523的边界处。这使得甚至对于hps 513之后的当前图像521的所有条带523可以重复使用hps 513中的参数(例如,alf参数)。
87.从条带头514到hps 513的参考可以是可选的。例如,当以下任一种情况为真时,条带523可以参考hps 513。首先,这种参考可以在对应的pps 512中指示:hps 513可用于码流500。其次,当对码流500启用参数包含在hps 513中的译码工具中的至少一个时,条带523可以参考hps 513。每个hps 513可以与hps id相关。参考hps 513的条带523应包含经参考的hps 513的hps id。可以使用无符号整数0阶exp-golomb译码的语法元素对hps id进行译码,其中,左位优先(例如,ue(v))。hps id的值可能受到限制,例如,在0到63的范围之间。对于译码工具的每个参数,hps 513中可以存在标志,以指示参数是否在hps 513中存在。当对条带523启用译码工具并且用于译码工具的参数在条带523所参考的hps 513中存在时,可以不在对应的条带头514中指示参数。hps 513可以分段为一个或多个nal单元,并且可以独立地解析和应用hps 513的每个片段。条带523可以参考单个hps 513或多个hps 513。当允许参考多个hps 513时,可采用每个对hps 513的参考来解析特定译码工具的参数。
88.以下实现允许hps 513参考其它hps 513并通过此类参考继承译码工具参数。hps 513可包含一个或多个对其它hps 513的参考。在此类示例中,当hps 513不参考任何其它hps 513时,hps 513可以称为帧内hps。当hps 513参考另一个hps 513时,参考hps /////从参考hps 513复制一个或多个参数。hps 513可以具有多个对其它hps 513的参考,其中,每个参数组有一个参考hps 513。在一些示例中,hps 513的链表可以形成为通过参考机制连接的一系列hps 513。当译码工具的参数被指定为在hps 513中不存在(例如,存在标志的值等于0)时,可以存在其它标志以指示是否可以从参考hps 513推断参数。可以隐式指定从
hps 513到另一个hps 513的参考,使得当译码工具的参数在hps 513中不存在时,推断这些参数与先前hps 513的译码工具的参数相同。
89.在一些情况下,当调用随机接入以获取瞬时解码器刷新(instantaneous decoder refresh,idr)和/或纯随机存取(clean random access,cra)图像时,hps 513可能不再存在。因此,可以采用两个hps缓冲器来存储hps 513,其中,每个缓冲器交替地在每个帧内随机接入点(intra random access point,irap)图像的开始处激活。在这种情况下,将接收到的hps 513存储在活跃hps(active hps)缓冲器中。为了提高抗误码韧性,可以指定hps id的范围以指示当前使用的hps id。当hps 513具有在使用的hps id范围之外的hps id时,其它hps 513可以使用hps id。然后,可以按照滑动窗口方法更新使用的hps id。当使用此技术时,hps 513可以仅参考hps id在使用范围内的其它hps 513。可以定义活跃hps513的数量的限制,以便限制解码器存储器中的hps 513存储要求。当达到限值并且接收新的hps 513时,可以移除缓冲器中的最旧的(例如,最早接收的)hps 513并且插入新的hps 513。
90.在某些情况下,解码器一旦接收到hps 513,就可以解析所有hps 513参考。例如,当解码器接收到hps 513时,可以立即复制译码工具参数,并且译码工具参数在当前hps 513中不可用,但在参考hps 513中可用。提高抗误码韧性的另一个方法可以需要帧内hps 513在指定时间段内存在。当接收到帧内hps 513时,可以丢弃缓冲器中所有可用的相同类型的hps 513。当hps 513中不存在译码工具的参数时,可以存在标志以指示是否对参考hps 513的条带523禁用译码工具。此外,nal单元标头(例如,nal_ref_flag)中的标志可以指定nal单元中包含的hps 513是否可以由用作参考的图像521的条带523参考。例如,当包含hps 513的nal单元的nal_ref_flag等于0时,hps 513只能由非参考图像521的条带523参考。该标志还可用于确定哪个hps 513可以用作其它hps 513的参考。例如,hps 513可以不参考包含在nal_ref_flag等于0的nal单元中的其它hps 513。sps 510中可以指定hps缓冲器的重置周期。hps 513缓冲器可以在irap图像出现时重置。
91.如从审查前述实现方式中可以理解,允许hps 513参考其它hps 513可能相当复杂。因此,在所公开的示例中,hps 513可以被阻止参考其它hps 513。相反,可以采用多种类型的hps 513。hps 513类型表示hps 513中包含的译码工具参数的类型。这种hps 513类型可以包括alf hps、lmcs hps和/或缩放列表参数hps。alf hps是一种hps,它包含作为对应条带的自适应环路滤波的一部分的译码工具参数。lmcs hps包含用于lmcs机制的译码工具参数。lmcs是一种滤波技术,它根据到对应的色度分量的映射来重塑亮度分量,以减少率失真。缩放列表参数hps包含与指定过滤器使用的量化矩阵相关的译码工具参数。在这种示例中,当解码器获得第一类型的当前hps 513时,可以丢弃第一类型的先前hps 513,因为当前hps 513会替代此类先前hps 513。此外,为了可以实现多种类型hps 513,单个条带头514可以参考多个hps 513,以参考对应条带523和/或分块组的所有译码工具参数。这与使条带头514可以参考单个hps 513的其它方案形成对比,所述单个hps 513随后参考其它hps 513。因此,使单个条带头514可以参考多个hps 513会导致无法实现hps 513参考链。这种方法显著降低了复杂度,因此减少了编码器和解码器的处理资源的占用率。此外,该过程减少了解码器侧缓存的hps 513的数量。例如,在解码器侧可以缓存每种类型的仅一个hps 513。这样可以减少解码器的内存的占用率。此外,通过避免hps 513参考链,定位并因此减少潜在错误。这是因为在发送错误期间丢失hps 513可能只影响直接参考hps 513的条带523。因此,
当在码流500中采用hps 513时,所公开的机制在编码器和解码器侧产生改进。
92.图6为用于时间缩放的示例机制600的示意图。例如,当显示解码码流(如码流500)时,解码器(如编解码系统200和/或解码器400)可以采用机制600。此外,当输出视频用于显示时,机制600可以用作方法100的步骤117的一部分。此外,编码器(如编解码系统200和/或编码器300)可以对码流中的数据进行编码,这样在解码器侧可以同样采用机制600。
93.机制600对多个解码图像601、603和605进行操作。图像601、603和605是有序视频序列的一部分,并且已经通过采用上述机制等方式从码流中解码。对码流进行编码以使解码器可以以多个帧率中的一个帧率显示视频序列,包括第一帧率(fr0)610、第二帧率(fr1)611和第三帧率(fr2)612。帧率是视频序列的帧/图像显示的频率的一种度量。可以以帧为单位测量一段时间的帧率。帧率的差异可以使不同的解码器以不同的质量显示相同的视频序列,以解释解码器能力的差异。例如,硬件能力较低的解码器和/或通过质量较差网络连接流式传输的解码器可以在fr0 610处显示。在另一示例中,可以访问快速网络连接的高质量解码器可以在fr2 612处显示。在又一示例中,具有某些质量损伤的解码器能够在fr1 611处显示,但是不能在fr2 612处显示。因此,采用时间缩放(例如,机制600)以使每个解码器可以根据不同的解码端能力和约束条件以可能的最高帧率显示视频,以获得最佳用户体验。在大多数系统中,每个帧率都是前一帧率的频率的两倍。例如,可以将fr0 610、fr1 611和fr2 612分别设置为15帧每秒(frames per second,fps)、30fps和60fps。
94.为了实现时间缩放,编码器以尽可能高的帧率(在这种情况下为fr2 612)将图像601、603和605译码到码流中。编码器还为每个图像601、603和605分配时间标识符(temporal identifier,tid)。图像601、603和605分别接收到为0、1和2的tid。解码器在显示所得到的解码视频时,选择帧率,确定对应的帧率tid,并显示tid等于或小于该帧率tid的所有帧。忽略tid大于所选帧率的帧率tid的图像。例如,选择fr2 612的解码器显示tid为2或更小的所有图像,并且因此显示所有图像601、603和605。在另一示例中,选择fr1 611的解码器显示tid为1或更小的所有图像,并且因此显示图像601和603,而忽略图像605。在另一示例中,选择fr0 610的解码器显示tid为0或更小的所有图像,并且因此显示图像601,而忽略图像603和605。通过采用该机制600,视频序列可以通过解码器时间缩放到所选的帧率。
95.可以实现如图5中描述的hps 513,以支持机制600的时间缩放。这可以通过为每个hps分配tid,如tid 0、tid 1或tid 2来完成。在进行时间缩放时,对tid小于或等于所选帧率tid的hps进行解码,丢弃tid大于所选帧率tid的hps。根据各种实施例,可以将tid分配给hps。
96.参考图5,在一个示例中,hps 513可以接收包含参考hps 513的第一条带523的图像521的时间id。在其它示例中,hps 513可以接收包含hps 513的接入单元535的时间id。为了进一步支持时间缩放,可以阻止与较小时间id相关的条带523参考包含较大时间id的hps 513。这确保了较低的帧率设置不会使条带523参考由于机制600的时间缩放而忽略的hps 513,并且因此防止在以fr0 610和/或fr1 611等较低帧率解码某些条带523时,译码工具参数不可用。
97.前述机制可以如下实现。以下方面可以单独和/或组合应用。hps也称为自适应参数集(adaptation parameter set,aps)。码流的hps的可用性可以是全部带内可用、全部带
外可用、和/或一些带内可用和一些带外可用。当在带外提供时,hps可以在下文中存在。在基于iso的媒体文件格式中,hps可以在样本入口(例如,样本描述盒子)中存在。在基于iso的媒体文件格式中,hps可以在时间同步的轨迹中存在,如参数集轨迹或有时间属性的元数据轨迹中存在。
98.在一种具体实现方式中,当在带外提供时,可以如下携带hps。在基于iso的媒体文件格式中,当不存在hps更新时,hps可能仅在样本入口(例如,样本描述盒子)中存在。当重新使用hps标识符(id),同时hps其它参数与之前发送的具有相同hps id的hps不同时,可能不存在hps更新。当存在hps更新时,例如当hps包含基于国际标准化组织(international organization for standardization,iso)的媒体文件格式的自适应环路滤波器(adaptive loop filter,alf)参数时,hps可以携带在时间同步轨迹中,如参数集轨迹或有时间属性的元数据轨迹中。这样,各自包含一组完整分块的条带可以携带在自己的文件格式轨迹中。此外,hps可以携带在时间同步轨迹中。因此,这些轨迹可以各自以超文本传输协议的动态自适应流媒体(dynamic adaptive streaming of hypertext transfer protocol,dash)表示的方式进行携带。对于条带/分块轨迹子集的解码和呈现,客户端可以以逐段的方式请求包含条带/分块轨道子集的dash表示以及包含hps的dash表示。
99.在另一示例中,hps可以指定为始终在带内提供。hps也可以携带在时间同步轨迹中,如参数集轨迹或有时间属性的元数据轨迹中。因此,hps可以如上所述进行下发。此外,在视频编解码的文件格式的规范中,码流重建过程可以从条带/分块轨迹的子集和包含hps的时间同步轨迹中构建输出码流,使得hps是输出码流的一部分。
100.hps应以解码顺序和在参考hps的第一条带之前存在和/或对解码器可用。例如,如果hps在带内可用,则hps可以按解码顺序在参考hps的第一条带之前。否则,hps解码时间应等于或小于参考hps的第一个条带的解码时间。
101.hps可以包括sps等序列级参数集的id。当sps id在hps中不存在时,以下约束条件可以适用。当参考hps的第一条带是帧内随机接入点(intra random access point,irap)图像的一部分且hps在带内携带时,hps可以在irap接入单元中存在。当参考hps的第一条带是irap图像的一部分,且hps在带外携带时,hps的解码时间可以与irap图像的解码时间相同。当参考hps的第一条带不是irap图像的一部分且hps在带内携带时,hps可以在开始译码视频序列的irap接入单元与包含条带的接入单元之间(包括端值)的接入单元中的一个接入单元中存在。当参考hps的第一条带不是irap图像的一部分且hps在带内携带时,hps的解码时间可以在开始译码视频序列的irap接入单元的解码时间与包含条带的接入单元的解码时间之间(包括端值)。
102.当sps id在hps中存在时,以下情况可以适用。如果在带内提供,则只要hps按解码顺序在参考hps的第一条带之前,hps可以在码流的开始或任何译码序列中存在。否则,只要hps解码时间小于参考hps的第一条带的解码时间,hps就可以在样本入口中或时间同步轨迹中存在。
103.对于hps的条带参考,以下情况可以适用。如果sps id在hps中存在,则每个条带和条带所参考的hps可以参考同一个sps。否则,条带可以不参考在接入单元中存在的hps,该接入单元在与条带相关的irap接入单元之前。也可以限制条带参考解码时间小于与条带相关的irap接入单元的解码时间的hps。
104.作为使用标志来表示hps中译码工具的参数的存在的一种替代方案,可以使用双位指示符(例如,译码为u(2))。指示符的语义定义如下:指示符的一个值(例如,值0)表示参数在hps中不存在,并且不存在用于推导参数的对另一个hps的参考。指示符的另一值(例如,值1)表示参数在hps中不存在,并且存在用于推导参数的对另一个hps的参考。指示符的另一值(例如,值2)表示参数在hps中存在,并且不存在对另一个hps的参考。可以保留指示符的另一值。在另一示例中,指示符的另一值(例如,值3)表示参数在hps中存在,并且存在用于推导参数的对另一个hps的参考。在这种情况下,最终参数通过输入从在hps中显式地指示的参数和在参考hps中存在的参数推导得到。
105.当通过任何指示方式表示对译码视频序列禁用译码工具(例如,序列参数标志中的启用标志表示译码工具被禁用)时,可以单独或组合应用以下约束条件。译码工具的参数存在的标志或指示和译码工具的参数可以在与译码视频序列相关的hps中不存在。可以存在译码工具的参数存在的标志或指示,但受到限制,使得值表示译码工具参数不存在并且用于推导和/或推断参数的参考hps不存在。
106.当条带参考可包含译码工具的参数的hps时,以下约束条件可以单独应用或组合应用。当对条带启用译码工具且译码工具的参数在hps中可用时,译码工具的参数可以在条带头中不存在。当译码工具参数被直接指示和/或存在于hps中或通过参考hps可用时,可能会发生这种情况。当对条带启用译码工具,且译码工具的参数在hps中不可用时,译码工具的参数可以在条带头中存在。当译码工具参数未直接指示和/或在hps中不存在或通过参考hps不可用时,可能会发生这种情况。当对条带启用译码工具且译码工具的参数在hps中可用时,译码工具的参数可以在条带头中存在。当译码工具参数被直接指示和/或存在于hps中或通过参考hps可用时,可能会发生这种情况。在这种情况下,用于在对条带进行解码期间调用译码工具的参数为在条带头中存在的参数。
107.当对hps进行带内和带外传输时,以下情况可能适用。如果hps在带内携带,则hps可以不参考在带外携带的另一个hps。否则,hps可以不参考在带内携带的另一个hps。
108.当对hps进行带内和带外传输时,以下约束条件可以单独或组合应用。在带外携带的hps可以仅在时间同步轨迹上携带。仅当存在hps更新时,hps可以在带外携带。
109.作为将hps id译码为具有左位优先的无符号整数0阶exp-golomb译码的语法元素(ue(v))的替代方案,hps id可以译码为u(v)。指示hps id的位数可以在sps中指定。
110.同一译码视频序列中的两个hps可以具有相同的hps id,在这种情况下,以下情况可能适用。当hps a和hps b具有相同的hps id时,hps b按解码顺序在hps a之后,并且sps包含参考hps id的id,然后hps b替换hpsa。当hps a和hps b具有相同的hps id时,hps b的解码时间大于hps a的解码时间,并且sps包含参考hps id的id,然后hps b替换hpsa。通过具有相同的sps id(例如,当sps id在hps中存在时)或通过使包含hps的接入单元相关,将hps a、hps b、hps c和hps d设为包括在相同译码视频序列中的hps。当hps a和hps d的hps id相同,并且hps a、hps b和hps c的hps id唯一时,hps a、hps b和hps c的hps id的值可以被约束为单调递增。sps中可以有一个标志来表示hps是否可以参考另一参考hps。
111.当不允许hps之间进行参考时,一个条带头可以有多个对同一hps的参考,也可以有多个对不同hps的参考。在这种情况下,以下情况可能适用。可以存在hps参考,以用于为条带启用的每个译码工具,并且可以从hps推断译码工具的参数。当条带参考hps来推断译
码工具的参数时,译码工具的参数应在该hps中存在。
112.当译码工具的参数在hps中不存在并且参数存在对另一个hps的参考时,参数应在该参考hps中存在。hps可以不参考来自不同译码视频序列的另一个hps。如果sps id在hps中存在,则当前hps和对应的参考hps的sps id的值应相同。否则,hps可以不参考在接入单元中存在的另一个hps,所述接入单元按解码顺序在最后一个irap接入单元之前,所述最后一个irap接入单元在hps之前。hps也可以不参考解码时间小于按解码顺序在hps之前的最后一个irap接入单元的解码时间的另一个hps,或者解码时间最接近且小于hps的解码时间的最后一个irap接入单元。
113.当一个hps参考另一个hps时,参考hps的hps id应小于hps的hps id。当sps id在任一hps中存在时,hps a、hps b、hps c和hps d可以都具有相同的sps id。当hps b按解码顺序在hps a之后,hps c按解码顺序在hps b之后,hps d按解码顺序在hps c之后时,以下约束条件可以单独应用或组合应用。当hps c参考hps a时,hps b的hps id可以与hps a的hps id不相同。当hps b参考hps a,hps c与hps a的hps id相同时,hps d可以不参考hps a或hps b。当hps b和hps a具有相同的hps id时,可以不存在按解码顺序在hps b之后的参考hps a的条带。当hps b参考hps a,并且hps c具有与hps a相同的hps id时,可以不存在按解码顺序在hps c之后的参考hps a或hps b中的任一个的条带。
114.当使用时间可扩展性时,hps的时间id可以指定如下。hps的时间id可以设置为与包含hps的接入单元的时间id相同。在一个示例中,可以将hps的时间id设置为与参考hps的第一条带的图像的时间id相同。
115.具有时间id(tid)a的图像中的条带可以不参考具有id tid b的hps,其中,tid b大于tid a。具有tid a的hps可以不参考具有tid b的参考hps,其中,tid b大于tid a。具有tid a的hps不能替代具有tid b的hps,其中,tid a大于tid b。
116.序列级参数(例如,sps)中可以有用于表示条带是否参考hps的标志。当标志的值设置为1时,可以表示条带参考hps,并且可以表示hps id在条带头中存在。标志的值当设置为0时,可以表示条带不参考hps,并且hps id在条带头中不存在。
117.上述各个方面可以根据以下语法实现。
[0118][0119]
hps_present_flag可以设置为1,以表示hps_id在条带头中存在。hps_present_flag可以设置为0,以表示hps_id在条带头中不存在。
[0120][0121]
header_parameter_set_id可以标识hps,以供其它语法元素参考。hdr_parameter_set_id的值可能在0到63之间(包括端值)。hps_seq_parameter_set_id表示活跃sps(activesps)的sps_seq_parameter_set_id的值。pps_seq_parameter_set_id的值可以在0到15之间(包括端值)。alf_parameters_idc[header_parameter_set_id]可以设置为2,以表示alf_data()在hps中存在。alf_parameters_idc[header_parameter_set_id]可以设置为1,以表示alf_data()在hps中不存在,但是推断与在参考hps中存在的alf_data()相同,所述参考hps由alf_ref_hps_id[header_parameter_set_id]表示。可以将alf_parameters_idc[header_parameter_set_id]设置为0,以表示alf_data()和alf_ref_hps_id[header_parameter_set_id]在hps中均不存在。alf_parameters_idc[header_parameter_set_id]等于3的值可以保留。alf_ref_hps_id[header_parameter_set_id]可以表示参考hps的header_parameter_set_id,以从中推断alf_data()的值。
[0122]
码流一致性检查示例可以需要应用以下约束条件。当存在时,alf_ref_hps_id[header_parameter_set_id]的值可能小于header_parameter_set_id的值。当前hps中与由alf_ref_hps_id[header_parameter_set_id]表示的hps中的hps_seq_parameter_set_id的值可以相同。alf_parameters_idc[alf_ref_hps_id[header_parameter_set_id]]的值可能等于2。
[0123]
给定header_parameter_set_id等于hpsa的hps a、header_parameter_set_id等于hpsb的hps b、header_parameter_set_id等于hpsc的hps c和当前的hps,当以下条件为真(ture)时,alf_ref_hps_id[header_parameter_set_id]的值可以不等于hpsa或hpsb。这些条件是,hps a按解码顺序在hps b之前,hps b按解码顺序在hps c之前,hps c按解码顺序在当前hps之前。这些条件还包括alf_ref_id[hpsb]的值等于hpsa,hpsc的值等于hpsa。
[0124][0125]
slice_hps_id表示条带参考的hps的header_parameter_set_id。当slice_hps_id不存在时,推断alf_parameters_idc[slice_hps_id]等于0。码流一致性检查示例可以需要应用以下约束条件。在解析条带头之前,header_parameter_set_id等于slice_hps_id的hps应该可用。当header_parameter_set_id等于slice_hps_id的hps在带内可用时,header_parameter_set_id应在以下接入单元中的一个中存在。即,与当前条带的图像相关的irap接入单元,或按解码顺序,在irap接入单元之后但在当前接入单元之前的任何接入单元,或当前接入单元。给定header_parameter_set_id等于hpsa的hps a、header_parameter_set_id等于hpsb的hps b、header_parameter_set_id等于hpsc的hps c和当前条带,当两个以下条件为真时,slice_hps_id的值应不等于hpsa或hpsb。条件包括:hps a按解码顺序在hps b之前,hps b按解码顺序在hps c之前,hps c按解码顺序在当前条带之前。条件还包括:alf_ref_id[hpsb]的值等于hpsa,hpsc的值等于hpsa。
[0126]
另一个示例实现方式在下文中予以描述。
[0127][0128]
alf_parameters_idc[header_parameter_set_id]可以设置为2,以表示alf_data()在hps中存在。alf_parameters_idc[header_parameter_set_id]可以设置为1,以表示alf_data()在hps中不存在,但是推断与在参考hps中存在的alf_data()相同,所述参考hps由alf_ref_hps_id[header_parameter_set_id]表示。可以将alf_parameters_idc[header_parameter_set_id]设置为0,以表示alf_data()和alf_ref_hps_id[header_parameter_set_id]均在hps中不存在。当不存在时,可以推断[header_parameter_set_id]等于0。alf_parameters_idc[header_parameter_set_id]等于3的值可以保留。
[0129]
下文包括另一个示例实现方式。
[0130]
条带头可以参考多个hps。图像的条带可以参考alf参数(例如,pic_alf_hps_id_luma[i])的hps、lmcs参数(例如,pic_lmcs_aps_id)的hps,以及缩放列表参数(例如,pic_scaling_list_aps_id)的hps。pic_alf_aps_id_luma[i]表示与ph相关的条带的亮度分量所参考的第i个alf hps的adaptation_parameter_set_id。slice_alf_aps_id_luma[i]表示条带的亮度分量所参考的第i个alf hps的adaptation_parameter_set_id。aps_params_type等于alf_aps且adaptation_parameter_set_id等于slice_alf_aps_id_luma[i]的hps nal单元的temporalid应小于或等于经译码条带nal单元的temporalid。当slice_alf_enabled_flag等于1且slice_alf_aps_id_luma[i]不存在时,推断slice_alf_aps_id_luma[i]的值等于pic_alf_aps_id_luma[i]的值。pic_lmcs_aps_id表示与ph相关的条带所参考的lmcs hps的adaptation_parameter_set_id。aps_params_type等于lmcs_aps且adaptation_parameter_set_id等于pic_lmcs_aps_id的hps nal单元的temporalid应小于或等于与ph相关的图像的temporalid。pic_scaling_list_aps_id表示缩放列表hps的adaptation_parameter_set_id。aps_params_type等于scaling_aps和adaptation_parameter_set_id等于pic_scaling_list_aps_id的hps nal单元的temporalid应小于或等于与ph相关的图像的temporalid。
[0131]
hps nal单元的temporalid应与包含hps的接入单元(access unit,au)相同。hps nal单元的temporalid应小于或等于参考hps的经译码条带nal单元的temporalid。在具体示例中,非vcl nal单元的temporalid的值受到如下约束:如果nal_unit_type等于dps_nut、vps_nut或sps_nut,则temporalid应等于0,并且包含nal单元的au的temporalid应等于0。否则,如果nal_unit_type等于ph_nut,则temporalid应等于包含nal单元的pu的temporalid。否则,如果nal_unit_type等于eos_nut或eob_nut,则temporalid应等于0。否则,如果nal_unit_type等于aud_nut、fd_nut、prefix_sei_nut或suffix_sei_nut,则temporalid应等于包含nal单元的au的temporalid。否则,当nal_unit_type等于pps_nut、prefix_aps_nut或suffix_aps_nut时,temporalid应大于或等于包含nal单元的pu的temporalid。当nal单元为非vcl nal单元时,temporalid的值等于非vcl nal单元所适用的所有au的temporalid值的最小值。当nal_unit_type等于pps_nut、prefix_aps_nut或suffix_aps_nut时,temporalid可以大于或等于包含au的temporalid,因为所有的pps和hps都可以包括在码流的开始中(例如,当它们在带外传输时,并且接收器将它们放置在码流的开始处),其中,第一经译码图像的temporalid等于0。
[0132]
图7为示例性视频译码设备700的示意图。视频译码设备700适用于实现本文描述的所公开示例/实施例。视频译码设备700包括下行端口720、上行端口750,和/或收发单元(tx/rx)710,其中,所述收发单元包括用于通过网络在上行和/或下行发送数据的发送器和/或接收器。视频译码设备700还包括:处理器730,包括用于处理数据的逻辑单元和/或中央处理单元(central processing unit,cpu);和用于存储数据的存储器732。视频译码设备700还可以包括与上行端口750和/或下行端口720耦合的电子组件、光电(optical-to-electrical,oe)组件、电光(electrical-to-optical,eo)组件,和/或无线通信组件,用于通过电、光或无线通信网络进行数据通信。视频译码设备700还可以包括输入和/或输出(input/output,i/o)设备760,用于向用户发送数据和从用户发送数据。i/o设备760可以包括输出设备,如用于显示视频数据的显示器、用于输出音频数据的扬声器等。i/o设备760还可以包括输入设备,如键盘、鼠标、轨迹球等,和/或用于与此类输出设备交互的对应接口。
[0133]
处理器730通过硬件和软件实现。处理器730可以实现为一个或多个cpu芯片、核(例如,多核处理器)、现场可编程门阵列(field-programmable gate array,fpga)、专用集成电路(application specific integrated circuit,asic)和数字信号处理器(digital signal processor,dsp)。处理器730与下行端口720、tx/rx 710、上行端口750和存储器732通信。处理器730包括译码模块714。译码模块714实现上述公开的实施例,如方法100、800和900,所述实施例可以采用码流500和/或机制600。译码模块714还可以实现本文描述的任何其它方法/机制。此外,所述译码模块714可以实现编解码系统200、编码器300和/或解码器400。例如,译码模块714可以对码流中的图像进行编码/解码,并对与多个hps中的图像的条带相关的参数进行编码/解码。各种类型的hps可以包括在对应类型的译码工具参数中。然后条带头可以参考各种类型的hps以获得对应条带的译码工具参数。也可以为该hps分配时间id,以与时间缩放算法一起运行。使用hps可以使多个条带使用的译码工具参数聚合到单个位置(例如,当参数改变时,与其它hps一起)。因此,去除冗余指示,提高了译码效率,降低了存储码流时的内存资源的占用率,并且减少了发送码流时的网络资源的占用率。因此,译码模块714使视频译码设备700在译码视频数据时提供其它功能和/或译码效率。因此,译码
模块714改进了视频译码设备700的功能,并解决了视频编码领域特有的问题。此外,译码模块714可以将视频译码设备700变换到不同的状态。或者,译码模块714可以实现为存储在存储器732中并由处理器730执行的指令(例如,存储在非瞬时性介质上的计算机程序产品)。
[0134]
存储器732包括一个或多个类型的存储器,如磁盘、磁带机、固态驱动器、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、闪存、三态内容寻址存储器(ternary content-addressable memory,tcam)、静态随机存取存储器(static random-access memory,sram)等。存储器732可用作溢出数据存储设备,以在选择执行此类程序时存储该程序,以及存储在程序执行期间读取的指令和数据。
[0135]
图8是使用hps将视频序列编码到码流如码流500中的示例方法800的流程图。编码器(例如编解码系统200、编码器300和/或视频译码设备700)在执行方法100时可以采用方法800。方法800还可以根据机制600在解码器(如解码器400)处对码流进行编码以支持时间缩放。
[0136]
当编码器接收包括多个图像的视频序列,并且例如根据用户输入确定将该视频序列编码到码流中时,方法800可以开始。视频序列在编码之前被分割为图像(picture/image)/帧,以供进一步分割。在步骤801中,将多个图像分割为包括第一条带的多个条带。
[0137]
在步骤803,包括第一条带的多个条带被编码到码流中。条带可以由多个译码工具参数编码。在一些示例中,条带由至少第一类型译码工具和第二类型译码工具进行编码。具体地,条带由第一类型译码工具根据第一类型译码工具参数进行编码。条带还由基于第二类型译码工具参数第二类型译码工具进行编码。例如,此类译码工具可以包括alf译码工具、lmcs译码工具和/或缩放列表参数译码工具。
[0138]
在步骤805,将多个hps编码到码流中。该多个hps可以包括至少第一hps和第二hps。第一hps包含第一类型译码工具参数,而第二hps包含第二类型译码工具参数,所述第一类型译码工具参数和所述第二类型译码工具参数在步骤803中用于对条带进行编码。
[0139]
在步骤807,将第一条带头编码到码流中。第一条带头描述多个条带中的第一条带的编码,以支持在解码器侧进行解码。例如,第一条带头可包含对第一hps的第一参考和对第二hps的第二参考。因此,条带头可以从多个不同类型的hps中继承译码工具参数。这样可以从条带头中省略此类译码工具参数,并通过减少冗余译码工具参数指示来提高码流的译码效率。在具体示例中,第一hps和第二hps可以包括alf hps、lmcs hps、缩放列表参数hps或其组合。
[0140]
为了降低hps相关译码方法的复杂度,可以阻止hps参考存储在其它hps中的译码工具参数。因此,在步骤805中编码的多个hps(包括第一hps和第二hps)被阻止参考来自多个hps中的其它hps的译码工具参数。此外,可以通过在每个hps中包括时间id来对hps进行编码以支持时间缩放。在一个示例中,第一hps包含在与时间id相关的接入单元中。此外,第一hps包含与包含第一hps的接入单元相关的相同时间id。在另一个示例中,第一条带从第一图像中分割,并且第一图像与时间id相关。在该示例中,第一个hps包含与图像相关的时间id。此外,为了支持时间缩放,多个hps中的每个hps和条带中的每一个条带与多个时间id中的一个时间id相关。此外,阻止具有第一时间id的每个条带参考具有比第一时间id大(例如,与更高的帧率相关)的第二时间id的任何hps。这确保与较低帧率相关的条带不参考与较高帧率相关的hps,因为当根据时间缩放机制采用较低帧率时,这种hps被忽略。
[0141]
在步骤809,将码流存储在存储器中。根据请求,码流随后可以例如通过发送器发送到解码器。
[0142]
图9是使用hps从码流(如码流500)解码视频序列的示例方法900的流程图。解码器(如编解码系统200、解码器400和/或视频译码设备700)在执行方法100时可以采用方法900。方法900的结果还可以用于根据机制600在解码器侧支持时间缩放。方法900可以响应于从编码器(如编码器300)接收码流而使用,因此方法900可以响应于方法800而使用。
[0143]
当解码器开始接收表示视频序列的译码数据的码流时,例如作为方法800的结果,方法900可以开始。在步骤901,在解码器侧接收码流。码流包括多个hps,包括第一hps和第二hps。第一hps为第一类型hps,包含第一类型译码工具参数。第二hps为第二类型hps,包含第二类型译码工具参数。码流还包括条带头和与该条带头相关的条带。
[0144]
在步骤903,解码器确定条带头包含对第一hps的第一参考和对第二hps的第二参考。因此,条带头可以从多个不同类型的hps中继承译码工具参数。这样可以从条带头中省略此类译码工具参数,并通过减少冗余译码工具参数指示来提高码流的译码效率。在具体示例中,第一hps和第二hps可以包括alf hps、lmcs hps、缩放列表参数hps或其组合。
[0145]
在步骤905,解码器可以当确定条带头包含第一参考和第二参考,使用第一类型译码工具参数和第二类型译码工具参数对条带进行解码。为了降低hps相关译码方法的复杂度,可以阻止hps参考存储在其它hps中的译码工具参数。因此,在步骤901中在码流中接收的多个hps(包括第一hps和第二hps)被阻止参考来自多个hps中的其它hps的译码工具参数。此外,可以通过在每个hps中包括时间id来对hps进行译码以支持时间缩放。在一个示例中,第一hps包含在与时间id相关的接入单元中。此外,第一hps包含与包含第一hps的接入单元相关的相同时间id。在另一个示例中,第一条带从第一图像中分割,并且第一图像与时间id相关。在该示例中,第一个hps包含与图像相关的时间id。此外,为了支持时间缩放,多个hps中的每个hps和条带中的每一个条带与多个时间id中的一个时间id相关。此外,阻止具有第一时间id的每个条带参考具有比第一时间id大(例如,与更高的帧率相关)的第二时间id的任何hps。这确保与较低帧率相关的条带不参考与较高帧率相关的hps,因为当根据时间缩放机制采用较低帧率时,这种hps被忽略。
[0146]
在步骤907,解码器可以发送该条带以作为解码视频序列的一部分显示。
[0147]
图10是使用hps对码流(如码流500)中的图像的视频序列进行译码的示例系统1000的示意图。系统1000可以由编码器和解码器实现,如编解码系统200、编码器300、解码器400和/或视频译码设备700。此外,当实现方法100、800和/或900时,可以使用系统1000。此外,系统1000可用于支持如关于机制600所讨论的时间缩放。
[0148]
系统1000包括视频编码器1002。视频编码器1002包括分割模块1001,用于将多个图像分割为多个条带。视频编码器1002还包括编码模块1003,用于将多个条带编码到码流中,其中,所述条带被至少通过基于第一类型译码工具参数的第一类型译码工具和基于第二类型译码工具参数的第二类型译码工具进行编码。编码模块1003还用于将第一hps和第二hps编码到码流中,第一hps包含第一类型译码工具参数,第二hps包含第二类型译码工具参数。编码模块1003还用于将第一条带头编码到描述多个条带中的第一条带的编码的所述码流中,其中第一条带头包含对第一hps的第一参考和对第二hps的第二参考。视频编码器1002还包括存储模块1005,用于存储向解码器发送的码流。视频编码器1002还包括发送模
块1005,用于使用第一hps和第二hps发送码流,以支持根据第一类型译码工具和第二类型译码工具在解码器侧对条带解码。视频编码器1002还可以用于执行方法800的步骤中的任一步骤。
[0149]
系统1000还包括视频解码器1010。视频解码器1010包括接收模块1011,用于接收码流,所述码流包括:包含第一类型译码工具参数的hps、包含第二类型译码工具参数的第二hps、条带头以及与条带头相关的条带。视频解码器1010还包括确定模块1013,用于确定条带头包含对第一hps的第一参考和对第二hps的第二参考。视频解码器1010还包括解码模块1015,用于当确定条带头包含第一参考和第二参考,使用第一类型译码工具参数和第二类型译码工具参数对条带进行解码。视频解码器1010还包括发送模块1017,用于发送用于作为解码视频序列一部分显示的条带。视频解码器1010还可以用于执行方法900的步骤中的任一步骤。
[0150]
当第一组件与第二组件之间除了线、迹线或其它介质之外没有中间组件时,第一组件与第二组件直接耦合。当第一组件与第二组件之间除了线、迹线或其它介质之外还有中间组件时,第一组件与第二组件间接耦合。术语“耦合”及其变型包括直接耦合和间接耦合。除非另有说明,否则使用术语“约”意指包括后续数字
±
10%的范围。
[0151]
还应理解,本文中阐述的示例性方法的步骤不一定需要按照所描述的顺序执行,并且这些方法的步骤的顺序应理解为仅仅是示例性的。同样地,在与本发明各种实施例相一致的方法中,这些方法可以包括其它步骤,并且某些步骤可以省略或组合。
[0152]
虽然本发明中已提供若干实施例,但可以理解,在不脱离本发明的精神或范围的情况下,所公开的系统和方法可以以许多其它特定形式来体现。当前的示例应视为说明性而非限制性的,且意图不限于本文所给出的细节。例如,可以在另一系统中结合或集成各种元件或组件,或者可以省略或不实现某些特征。
[0153]
此外,在不脱离本发明范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、组件、技术或方法进行组合或集成。变化、替换和变更的其它实例可由本领域技术人员确定,并可在不脱离本文公开的精神和范围的情况下举例。
再多了解一些

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

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

相关文献