视频译码中的恢复点指示
1.相关申请交叉引用
2.本专利申请要求王业奎(ye
‑
kui wang)于2019年5月6日提交的申请号为62/843,999、发明名称为“用于逐步随机接入的假设参考解码(hypothetical reference decoder for gradual random access)”的美国临时专利申请的权益,其内容通过引用结合在本技术中。
技术领域
3.本发明大体上涉及视频译码,具体涉及各种改进点,以实现假设参考解码来支持视频译码中的逐步解码刷新。
背景技术:4.即使视频相对较短,也需要大量的视频数据来描述,当数据要在带宽容量受限的通信网络中进行流式传输或以其它方式传输时,这样可能会造成困难。因此,视频数据通常要先压缩,然后通过现代电信网络进行传输。由于内存资源可能有限,当在存储设备上存储视频时,该视频的大小也可能是一个问题。视频压缩设备通常在源侧使用软件和/或硬件对视频数据进行编码,然后进行传输或存储,从而减少表示数字视频图像所需的数据量。然后,对视频数据进行解码的视频解压缩设备在目的地侧接收压缩数据。在网络资源有限以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。
技术实现要素:5.在一个实施例中,本发明包括一种在解码器中实现的方法。所述方法包括:所述解码器的接收器接收码流,其中,所述码流包括逐步解码刷新(gradual decoding refresh,gdr)图像、解码顺序在所述gdr图像之后的恢复点图像、和与所述gdr图像相关的标头(header),其中,所述标头包括图像顺序编号(picture order count,poc)最低有效位(least significant bit,lsb)值,所述poc lsb值在恢复图像顺序编号值之前译码;所述解码器的处理器根据所述poc lsb值确定所述gdr图像的poc;所述处理器根据所述gdr图像的所述poc和所述恢复图像顺序编号值,确定恢复点图像poc;所述处理器根据以所述gdr图像为基础的gdr和所述恢复点图像poc,对所述码流进行解码;所述处理器转发在所述恢复点图像之后的一个或多个图像,以显示为经解码视频序列的一部分。
6.gdr是一种用于对码流进行译码的机制。gdr图像包括经帧内预测译码的视频数据组成的垂直区域和经帧间预测译码的视频数据组成的一个或多个垂直区域。经帧内预测译码组成的区域的位置在一系列相关图像上移动,产生了一个干净区域。包括干净区域的图像仅使用帧内预测数据或帧间预测数据对这种干净区域进行译码。帧间预测数据参考另一图像中的干净区域。因此,解码器可以在第一gdr图像处开始对码流进行解码,并按顺序对每个图像进行解码。一旦到达恢复点之前的最后一个图像,解码器就会同步,并可以根据可
用的干净数据通过帧间预测对任何其它图像进行解码。视频译码系统可以将相关图像的图像顺序编号指示(signal)在标头(例如图像头/条带头)中。这种指示可以包括恢复图像顺序编号值,其指示所述gdr图像的所述poc与所述恢复点图像的所述poc之间的差值。但是,解码器需要确定所述gdr图像的所述poc,以便确定所述恢复点图像的所述poc。本示例包括所述gdr图像的poc lsb值。所述gdr poc lsb值与所述恢复poc值一起包括在标头中。此外,所述gdr poc lsb值在所述恢复poc值之前译码到所述标头中。这样,所述解码器可以解析所述gdr poc lsb值,然后解析所述恢复poc值。因此,一旦确定出所述gdr图像的所述poc,所述恢复poc值就可以立即推导出,而不是存放到存储器中待获得。这样一来,本发明减少了编码器和/或解码器侧的处理器资源和/或内存资源的使用。
7.可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述与所述gdr图像相关的标头为图像头。
8.可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述poc lsb值作为ph_pic_order_cnt_lsb值包括在所述标头中,所述ph_pic_order_cnt_lsb值表示当前图像的图像顺序编号对最大图像顺序编号lsb取模的值,其中,所述gdr图像为所述当前图像。
9.可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述恢复图像顺序编号值作为recovery_poc_cnt值包括在所述标头中,所述recovery_poc_cnt值表示输出顺序中的经解码图像的恢复点。
10.可选地,根据任一上述方面,在所述方面的另一种实现方式中,当所述当前图像为所述gdr图像时,所述标头中设置有先前图像不输出(no output of prior pictures)标志。
11.可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述gdr图像包括根据帧间预测进行译码的区域和根据帧内预测进行译码的区域。
12.可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述gdr图像包括在gdr接入单元(access unit,au)中,所述码流还包括与所述gdr au相关的缓冲周期(buffering period,bp)补充增强信息(supplemental enhancement information,sei)消息,所述bp sei消息提供用于在所述gdr au在解码顺序中的位置上初始化假设参考解码(hypothetical reference decoder,hrd)的初始编码图像缓冲区(coded picture buffer,cpb)移除时延。
13.在一个实施例中,本发明包括一种在编码器中实现的方法。所述方法包括:所述编码器的处理器将gdr图像和解码顺序在所述gdr图像之后的恢复点图像编码到码流中;所述处理器确定所述gdr图像的poc lsb值和所述恢复点图像的恢复图像顺序编号值;所述处理器将与所述gdr图像相关的标头编码到所述码流中,其中,所述标头包括所述poc lsb值,所述poc lsb值在所述恢复图像顺序编号值之前译码;与所述处理器耦合的存储器存储所述码流,以发送给解码器。
14.gdr是一种用于对码流进行译码的机制。gdr图像包括关于经帧内预测译码的视频数据的垂直区域和经帧间预测译码的视频数据的一个或多个垂直区域。经帧内预测译码的区域的位置在一系列相关图像上移动,产生了一个干净区域。包括干净区域的图像仅使用帧内预测数据或帧间预测数据对这种干净区域进行译码。这些数据参考另一图像中的干净区域。因此,解码器可以在第一gdr图像处开始对码流进行解码,并按顺序对每个图像进行
解码。一旦到达恢复点之前的最后一个图像,解码器就会同步,并可以根据可用的干净数据通过帧间预测对任何其它图像进行解码。视频译码系统可以将相关图像的图像顺序编号指示(signal)在标头(例如图像头/条带头)中。这种指示可以包括恢复图像顺序编号值,其指示所述gdr图像的所述poc与所述恢复点图像的所述poc之间的差值。但是,解码器需要确定所述gdr图像的所述poc,以便确定所述恢复点图像的所述poc。本示例包括所述gdr图像的poc lsb值。所述gdr poc lsb值与所述恢复poc值一起包括在标头中。此外,所述gdr poc lsb值在所述恢复poc值之前译码到所述标头中。这样,所述解码器可以解析所述gdr poc lsb值,然后解析所述恢复poc值。因此,一旦确定出所述gdr图像的所述poc,所述恢复poc值就可以立即推导出,而不是存放到存储器中待获得。这样一来,本发明减少了编码器和/或解码器侧的处理器资源和/或内存资源的使用。
15.可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述与所述gdr图像相关的标头为图像头。
16.可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述poc lsb值作为ph_pic_order_cnt_lsb值包括在所述标头中,所述ph_pic_order_cnt_lsb值表示当前图像的图像顺序编号对最大图像顺序编号lsb取模的值,其中,所述gdr图像为所述当前图像。
17.可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述恢复图像顺序编号值作为recovery_poc_cnt值包括在所述标头中,所述recovery_poc_cnt值表示输出顺序中的经解码图像的恢复点。
18.可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述方法还包括:当所述当前图像为所述gdr图像时,在所述标头中设置先前图像不输出(no output of prior pictures)标志。
19.可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述gdr图像包括根据帧间预测进行译码的区域和根据帧内预测进行译码的区域。
20.可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述方法还包括:所述处理器将所述gdr图像编码到gdr au中;所述处理器将与所述gdr au相关的bp sei消息编码到所述码流中,其中,所述bp sei消息提供用于在所述gdr au在解码顺序中的位置上初始化hrd的初始cpb移除时延。
21.在一个实施例中,本发明包括一种视频译码设备。所述视频译码设备包括:处理器、与所述处理器耦合的接收器、与所述处理器耦合的存储器和与所述处理器耦合的发送器,其中,所述处理器、接收器、存储器和发送器用于执行根据任一上述方面所述的方法。
22.在一个实施例中,本发明包括一种非瞬时性计算机可读介质。所述非瞬时性计算机可读介质包括供视频译码设备使用的计算机程序产品,所述计算机程序产品包括存储在所述非瞬时性计算机可读介质中的计算机可执行指令,当处理器执行所述计算机可执行指令时,使得所述视频译码设备执行根据任一上述方面所述的方法。
23.在一个实施例中,本发明包括一种解码器。所述解码器包括:接收模块,用于接收码流,其中,所述码流包括逐步解码刷新(gradual decoding refresh,gdr)图像、解码顺序在所述gdr图像之后的恢复点图像、和与所述gdr图像相关的标头(header),所述标头包括图像顺序编号(picture order count,poc)最低有效位(least significant bit,lsb)值,所述poc lsb值在恢复图像顺序编号值之前译码;确定模块,用于:根据所述poc lsb值,确
定所述gdr图像的poc;根据所述gdr图像的所述poc和所述恢复图像顺序编号值,确定恢复点图像poc;解码模块,用于根据以所述gdr图像为基础的gdr和所述恢复点图像poc,对所述码流进行解码;转发模块,用于转发在所述恢复点图像之后的一个或多个图像,以显示为经解码视频序列的一部分。
24.可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述解码器还用于执行根据任一上述方面所述的方法。
25.在一个实施例中,本发明包括一种编码器。所述编码器包括:编码模块,用于:将gdr图像和解码顺序在所述gdr图像之后的恢复点图像编码到码流中;将与所述gdr图像相关的标头编码到所述码流中,其中,所述标头包括poc lsb值,所述poc lsb值在恢复图像顺序编号值之前译码;确定模块,用于确定所述gdr图像的所述poc lsb值和所述恢复点图像的恢复图像顺序编号值;存储模块,用于存储所述码流,以发送给解码器。
26.可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述编码器还用于执行根据任一上述方面所述的方法。
27.为了清楚起见,任一上述实施例可以与上述其它任一或多个实施例组合以创建在本发明范围内的新实施例。
28.根据以下结合附图和权利要求书进行的具体实施方式,将更清楚地理解这些和其它特征。
附图说明
29.为了更全面地理解本发明,现在参考以下结合附图和具体实施方式进行的简要描述,其中,相似的附图标记表示相似的部件。
30.图1为对视频信号进行译码的示例性方法的流程图。
31.图2为用于视频译码的示例性编码和解码(编解码)系统的示意图。
32.图3为示例性视频编码器的示意图。
33.图4为示例性视频解码器的示意图。
34.图5为示例性假设参考解码(hypothetical reference decoder,hrd)的示意图。
35.图6为用于对视频序列执行逐步解码刷新(gradual decoding refresh,gdr)的示例性机制的示意图。
36.图7为不期望的运动搜索的示意图。
37.图8为在使用gdr时用于初始化hrd的示例性码流的示意图。
38.图9为示例性视频译码设备的示意图。
39.图10为在将使用gdr的视频序列编码到码流中时指示恢复点图像的图像顺序编号(picture order count,poc)的示例性方法的流程图。
40.图11为根据指示的恢复点图像poc从码流中解码出使用gdr的视频序列的示例性方法的流程图。
41.图12为根据指示的恢复点图像poc将使用gdr的视频序列译码到码流中的示例性系统的示意图。
具体实施方式
42.首先应当理解,尽管下文提供一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可以使用任意数量的技术来实施,无论这些技术是当前已知的还是现有的。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可以在所附权利要求书的范围以及其等效物的完整范围内修改。
43.以下术语的定义如下所述,除非在本文相反的上下文中使用。具体地,以下定义旨在更加清晰地描述本发明。但是,术语在不同的上下文中可能会有不同的描述。因此,以下定义应当视为补充信息,而不应当视为对此处为这些术语提供的描述的任何其它定义进行限制。
44.码流(bitstream)是包括视频数据的一系列比特,这些视频数据被压缩以在编码器和解码器之间传输。编码器(encoder)是一种用于采用编码过程将视频数据压缩到码流中的设备。解码器(encoder)是一种用于采用解码过程从码流中重建视频数据进行显示的设备。图像(picture)是预期在视频序列中的对应时刻向用户完整或部分显示的完整图像。图像可以分割成条带(slice),条带可以可选地分割成分块(tile),条带和/或分块可以分割成编码树单元(coding tree unit,ctu)和/或编码树块(coding tree block,ctb),ctu/ctb可以分割成译码块(coding block),译码块可以根据预测机制进行译码。接入单元(access unit,au)是一个译码单元(coding unit),用于存储单个经译码图像,可选地存储一个或多个标头(header)。这些标头包括描述对经译码图像进行译码所使用的译码机制的参数。标头是一种语法结构,包括应用于经译码视频数据的对应部分的语法元素。标头(header)可以包括图像头和条带头。图像头是一种语法结构,包括应用于经译码图像中的所有条带的语法元素。条带头是经译码条带的一部分,包括与所有分块相关或与在条带中表示的一个分块内的ctu行相关的数据元素。帧间预测(inter
‑
prediction),也称为帧间译码,是一种通过参考与当前图像不同的参考图像中的参考块中的对应样本,对当前图像中的当前块中的样本进行译码的机制。帧内预测(intra
‑
prediction),也称为帧内译码,是一种通过参考当前图像中的参考块中的对应样本,对当前图像中的当前块中的样本进行译码的机制(当前块和参考块位于相同图像中)。gdr是一种对一系列图像进行译码的机制,每个图像都包括帧间译码区域和帧内译码区域,以避免使用完全进行帧内译码的单个图像初始化编码视频序列。gdr au是一个包括一系列gdr相关图像中的第一gdr图像的au。恢复点图像(recovery point picture)是在gdr序列之后的图像,使得该图像可以被完全解码,而无需参考该序列中的第一个gdr图像之前的图像中的数据。图像顺序编号(picture order count,poc)是与每个图像相关的且在编码视频序列中的所有图像之间唯一地识别相关图像的变量/值。此外,当相关图像要从解码图像缓冲区(decoded picture buffer,dpb)中输出时,poc表示相关图像在输出顺序中的位置与同一编码视频序列中也要从dpb中输出的其它图像的输出顺序位置的相对关系。恢复poc是恢复点图像的poc。poc最低有效位(least significant bit,lsb)是poc值中的一个或多个最低有效位。hrd是在编码器上运行的解码器模型,检查编码过程产生的码流的可变性,以验证是否符合指定约束条件。hrd一致性测试是确定经编码码流是否符合vvc等标准的测试。hrd参数是初始化和/或定义hrd运行条件的语法元素。补充增强信息(supplemental enhancement information,sei)消息是一种具
有指定语义的语法结构,该语法结构传达解码过程不需要的信息,以便确定经解码图像中的样本的值。缓冲周期(buffering period,bp)sei消息是包括hrd参数的sei消息,这些参数用于初始化hrd以管理编码图像缓冲区(coded picture buffer,cpb)。cpb是hrd中的先进先出缓冲区,该缓冲区包括解码顺序中的经译码图像,以便在码流一致性验证过程中使用。解码顺序是通过解码过程处理语法元素的顺序。cpb移除时延是当前图像在移除之前可以保存在cpb中的一段时间。先前图像不输出(no output of prior pictures)标志是一种用于表示dpb中先前解码的图像不需要输出的标志。
45.本文中使用以下缩略语:编码树块(coding tree block,ctb)、编码树单元(coding tree unit,ctu)、编码单元(coding unit,cu)、清理随机接入(clean random access,cra)、编码视频序列(coded video sequence,cvs)、逐步解码刷新(gradual decoding refresh,gdr)、逐步随机接入(gradual random access,gra)、假设参考解码(hypothetical reference decoder,hrd)、瞬时解码刷新(instantaneous decoding refresh,idr)、联合视频专家组(joint video experts team,jvet)、运动约束分块集(motion constrained tile set,mcts)、最大传输单元(maximum transfer unit,mtu)、网络抽象层(network abstraction layer,nal)、渐进式帧内刷新(progressive intra refresh,pir)、图像顺序编号(picture order count,poc)、原始字节序列载荷(raw byte sequence payload,rbsp)、补充增强信息(supplemental enhancement information,sei)、序列参数集(sequence parameter set,sps)、通用视频编码(versatile video coding,vvc)。
46.许多视频压缩技术可以用来减小视频文件的大小,同时最大限度地减少数据丢失。例如,视频压缩技术可以包括执行空间(例如,帧内)预测和/或时间(例如,帧间)预测来减少或去除视频序列中的数据冗余。对于基于块的视频译码,视频条带(slice)(例如,视频图像或视频图像中的一部分)可以分割成视频块,这些视频块还可以称为树块(treeblock)、编码树块(coding tree block,ctb)、编码树单元(coding tree unit,ctu)、编码单元(coding unit,cu)和/或译码节点(coding node)。图像中的经帧内译码(i)条带中的视频块是相对于同一图像中的相邻块中的参考样本使用空间预测进行译码的,而图像中的经帧间译码的单向预测(p)或双向预测(b)条带中的视频块可以是相对于同一图像中的相邻块中的参考样本使用空间预测进行译码的,也可以是相对于其它参考图像中的参考样本使用时间预测进行译码的。图像(picture/image)可以称为帧(frame),参考图像可以称为参考帧。空间预测或时间预测会产生表示图像块的预测块。残差数据表示原始图像块与预测块之间的像素差。因此,经帧间译码块是根据运动矢量和残差数据进行编码的,其中,运动矢量指向形成预测块的参考样本组成的块,残差数据表示经译码块与预测块之间的差值;而经帧内译码块是根据帧内译码模式和残差数据进行编码的。为了进一步压缩,残差数据可以从像素域变换到变换域。这些产生可以量化的残差变换系数。量化变换系数最初可以排列为二维阵列。量化变换系数可以扫描,目的是产生变换系数的一维矢量。熵译码可以用于实现进一步压缩。下文更详细地论述了这些视频压缩技术。
47.为了确保经编码视频能够正确解码,视频根据对应的视频编码标准进行编码和解码。视频编码标准包括国际电信联盟(international telecommunication union,itu)标准化部门(itu standardization sector,itu
‑
t)h.261、国际标准化组织/国际电工委员会
(international organization for standardization/international electrotechnical commission,iso/iec)运动图像专家组(motion picture experts group,mpeg)
‑
1第2部分、itu
‑
th.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 dimension,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
‑
n1001
‑
v3。
48.编码器使用许多组件,例如hrd。编码器使用各种组件对码流进行编码。然后,hrd检查经编码码流,以确保编码符合标准。例如,hrd可以检查码流,以验证解码器应该能够对码流进行解码。编码器还使用许多机制对码流进行编码。gdr是一种由编码器对码流进行译码所使用的示例性译码机制。gdr图像包括关于经帧内预测译码的视频数据的垂直区域和经帧间预测译码的视频数据的一个或多个垂直区域。经帧内预测译码的区域的位置在一系列相关图像上移动,产生了一个干净区域。包括干净区域的图像仅使用帧内预测数据或帧间预测数据对这种干净区域进行译码。这些数据参考另一图像中的干净区域。因此,解码器可以在第一gdr图像处开始对码流进行解码,并按顺序对每个图像进行解码。一旦到达恢复点之前的最后一个图像,解码器就会同步,并可以根据可用的干净数据通过帧间预测对任何其它图像进行解码。编码器中的hrd可以用于根据仅包括帧内预测数据的帧内随机接入点(intra random access point,irap)图像检查码流一致性。但是,一些视频译码系统可以使用hrd,这些hrd不用于在使用gdr时检查码流一致性。例如,一些hrd可以用于从irap图像开始检查码流一致性,但可能不检查包括基于gdr的随机接入点的码流序列。
49.在第一示例中,本文公开了用于配置hrd在码流使用gdr图像作为随机接入点时执行码流一致性检查的机制。当gdr图像包括在码流中时,编码器可以包括含有hrd参数的bp sei消息。hrd可以读取bp sei消息以获得初始化参数,并可以在与bp sei消息相关的gdr图像处开始检查码流一致性。此外,解码器可以检查bp sei消息以验证码流符合标准,从而确定码流是可解码的。因此,针对gdr图像包括bp sei消息支持编码器和解码器侧的其它功能。此外,gdr可以支持在网络通信过程中减小带宽峰值。因此,本发明公开的机制可以减少编码器和解码器侧的处理器资源、内存资源和/或网络资源的使用。
50.此外,视频译码系统可以将相关图像的图像顺序编号(picture order count,poc)指示在标头中。根据示例,这些标头可以包括图像头和/或条带头。在一些情况中,这种指示可以包括恢复poc差值,其表示gdr图像的poc与恢复点图像的poc之间的差值。但是,为了确定恢复点图像的实际poc值,解码器需要首先确定gdr图像的poc。因此,解码器将恢复poc差值存储到存储器中。然后,一旦接收到和确定出gdr图像的poc,解码器就可以确定恢复点图像poc。
51.在第二示例中,本文公开了在使用grd时提高译码过程效率的机制。例如,gdr图像的poc lsb值指示在条带头/图像头中。poc lsb值与恢复图像顺序编号值一起包括在标头中。此外,poc lsb值在恢复图像顺序编号之前的位置上译码到标头中。这样,解码器可以解析poc lsb值,然后解析恢复图像顺序编号。因此,一旦确定出gdr图像的poc,恢复图像顺序编号就可以立即推导出,而不是存放到存储器中待获得。因此,本发明支持编码器和解码器侧的其它功能。此外,本发明减少了编码器和/或解码器侧的处理器资源、内存资源和/或网络通信资源的使用。
52.图1为对视频信号进行译码的示例性操作方法100的流程图。具体地,视频信号是在编码器侧编码的。编码过程通过使用各种机制来压缩视频信号,以减小视频文件。文件较小,压缩视频文件可以发送给用户,同时降低相关带宽开销。然后,解码器对压缩视频文件进行解码,以重建原始视频信号,向终端用户显示。解码过程通常是编码过程的逆过程,以使解码器重建的视频信号可以与编码器侧的视频信号保持一致。
53.在步骤101中,将视频信号输入到编码器中。例如,视频信号可以是存储在存储器中的未压缩视频文件。又如,视频文件可以由摄像机等视频捕获设备捕获,并且进行编码以支持视频的直播流传输。视频文件可以包括音频分量和视频分量。视频分量包括一系列图像帧。这些图像帧按顺序观看时,给人以运动的视觉效果。这些帧包括以光表示的像素,在本文中称为亮度分量(或亮度样本),还包括以颜色表示的像素,称为色度分量(或色度样本)。在一些示例中,这些帧还可以包括深度值,以支持三维观看。
54.在步骤103中,将视频分割成块。分割包括将每一帧中的像素细分成方块和/或矩形块进行压缩。例如,在高效视频编码(high efficiency video coding,hevc)(还称为h.265和mpeg
‑
h第2部分)中,首先将帧分成编码树单元(coding tree unit,ctu),它们是预定义大小(例如,64个像素
×
64个像素)的块。这些ctu包括亮度样本和色度样本。编码树可以用于将ctu分成块,然后,重复细分这些块,直到获得支持进一步编码的配置。例如,帧的亮度分量可以细分到各个块包括相对均匀的亮度值。此外,对帧的色度分量可以细分到各个块包括相对均匀的色值。因此,分割机制因视频帧的内容而异。
55.在步骤105中,使用各种压缩机制对在步骤103中分割得到的图像块进行压缩。例如,可以使用帧间预测和/或帧内预测。帧间预测是为了利用公共场景中的对象往往出现在连续帧中这一事实而设计的。这样一来,描述参考帧中的对象的块不需要在相邻帧中重复描述。具体地,一个对象(例如一张桌子)可以在多个帧中保持在固定位置上。因此,该桌子被描述一次,而且相邻帧可以参考回参考帧。模式匹配机制可以用于在多个帧上匹配对象。此外,由于对象移动或相机移动等原因,移动对象可以跨多个帧表示。在一个具体示例中,视频可以在多个帧上显示跨屏幕移动的汽车。运动矢量可以用于描述这种移动。运动矢量是一个二维矢量,提供对象在一个帧中的坐标到该对象在参考帧中的坐标的偏移。因此,帧间预测可以将当前帧中的图像块编码为运动矢量集,表示当前帧中的图像块与参考帧中的对应块的偏移。
56.帧内预测对公共帧中的块进行编码。帧内预测利用亮度分量和色度分量往往聚集在一个帧中这一事实。例如,一棵树某个部分的一片绿色往往与类似的几片绿色相邻。帧内预测使用多种方向性预测模式(例如,hevc中有33种)、平面模式和直流(direct current,dc)模式。这些方向性模式表示当前块的样本与对应方向上的相邻块的样本相似/相同。平
面模式表示一行/列(例如,平面)上的一系列块可以根据该行的边缘上的相邻块进行插值。平面模式实际上通过使用变化值的相对恒定的斜率表示光/颜色跨行/列的平稳过渡。dc模式用于边界平滑,并表示块与所有相邻块的样本的平均值相似/相同,这些相邻块与方向性预测模式的角度方向相关。因此,帧内预测块可以将图像块表示为各种关系预测模式值而不是表示为实际值。此外,帧间预测块可以将图像块表示为运动矢量值而不是表示为实际值。在任一种情况下,预测块在一些情况下可能都无法准确表示图像块。所有差值都存储在残差块中。可以对残差块应用变换以进一步压缩文件。
57.在步骤107中,可以应用各种滤波技术。在hevc中,滤波器是根据环内滤波方案应用的。上文描述的基于块的预测可能会在解码器侧产生块状图像。此外,基于块的预测方案可以对块进行编码,然后重建经编码块,以便后续用作参考块。环内滤波方案迭代地将噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和样本自适应偏移(sample adaptive offset,sao)滤波器应用于块/帧。这些滤波器减少了块伪影,这样可以准确重建经编码文件。此外,这些滤波器减少了重建参考块中的伪影,这样伪影不太可能在根据重建参考块编码的后续块中产生其它伪影。
58.一旦视频信号完成分割、压缩和滤波,则在步骤109中,将所得数据编码到码流中。码流包括上文描述的数据以及支持在解码器侧进行适当的视频信号重建所需要的任何指示数据。例如,这些数据可以包括分割数据、预测数据、残差块和提供译码指令给解码器的各种标志。码流可以将存储在存储器中,以便根据请求向解码器发送。码流还可以广播和/或组播到多个解码器。创建码流是一个迭代过程。因此,步骤101、步骤103、步骤105、步骤107和步骤109可以在多个帧和块中连续和/或同时执行。图1所示的顺序是为了清楚和便于论述的目的,并非旨在将视频译码过程限于特定顺序。
59.在步骤111中,解码器接收码流并开始解码过程。具体地,解码器使用熵解码方案将码流转换为对应的语法数据和视频数据。在步骤111中,解码器使用码流中的语法数据来确定帧的分割部分。分割应该与步骤103中的块分割的结果匹配。下面描述在步骤111中使用的熵编码/解码。编码器在压缩过程中做出许多选择,例如,根据一个或多个输入图像中的值的空间放置从若干个可能选择中选择块分割方案。指示确切的选择可能会使用大量的位元(bin)。本文所使用的“位元”是一个作为变量的二进制值(例如,可能因内容而异的比特值)。熵编码使得编码器丢弃任何明显不适合特定情况的选项,从而留下一组可用选项。然后,为每个可用选项分配一个码字。码字的长度取决于可用选项的数量(例如,一个二元符号对应两个选项,两个二元符号对应三到四个选项,以此类推)。然后,编码器对所选选项的码字进行编码。这种方案减小了码字,这是因为码字与预期的一样大,从而唯一地指示从可允许选项的小子集中进行选择,而不是唯一地指示从所有可能选项的可能大集合中进行选择。然后,解码器通过以与编码器类似的方式确定可允许选项集对该选择进行解码。通过确定可允许选项集,解码器可以读取码字并确定编码器做出的选择。
60.在步骤113中,解码器执行块解码。具体地,解码器使用逆变换,以生成残差块。然后,解码器使用残差块和对应的预测块,以根据分割来重建图像块。预测块可以包括编码器在步骤105中生成的帧内预测块和帧间预测块。接着,根据在步骤111中确定的分割数据将重建图像块放置在重建视频信号的帧中。还可以通过上文描述的熵编码在码流中指示用于步骤113的语法。
61.在步骤115中,以类似于编码器侧的步骤107的方式对重建视频信号的帧执行滤波。例如,噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和sao滤波器可以应用于帧,以去除块伪影。一旦对帧进行了滤波,则在步骤117中,可以将视频信号输出到显示器,以供终端用户观看。
62.图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。下面对这些组件进行描述。
63.分割后的视频信号201是一个捕获到的已经通过编码树分割成像素块的视频序列。编码树使用各种划分模式将像素块细分成较小的像素块。这些块然后可以进一步细分成较小的块。这些块可以称为编码树上的节点。较大的父节点划分成较小的子节点。节点进行细分的次数称为节点/编码树的深度。在一些情况下,划分得到的块包括在编码单元(coding unit,cu)中。例如,cu可以是ctu的子部分,包括亮度块、一个或多个红色差色度(cr)块和一个或多个蓝色差色度(cb)块以及cu的对应语法指令。划分模式可以包括二叉树(binary tree,bt)、三叉树(triple tree,tt)和四叉树(quad tree,qt),用于根据所使用的划分模式将节点分别分割成不同形状的两个、三个或四个子节点。将分割后的视频信号201转发给通用译码器控制组件211、变换缩放和量化组件213、帧内估计组件215、滤波器控制分析组件227以及运动估计组件221进行压缩。
64.通用译码器控制组件211用于根据应用约束条件做出与将视频序列中的图像编码到码流中相关的决策。例如,通用译码器控制组件211管理码率/码流大小相对于重建质量的优化。可以根据存储空间/带宽可用性和图像分辨率请求做出这些决策。通用译码器控制组件211还根据传输速度管理缓冲区利用率,以缓解缓存欠载和超载问题。为了解决这些问题,通用译码器控制组件211管理由其它组件进行的分割、预测和滤波。例如,通用译码器控制组件211可以动态提高压缩复杂度以提高分辨率和增加带宽利用率,或者降低压缩复杂度以降低分辨率和带宽利用率。因此,通用译码器控制组件211控制编解码系统200中的其它组件来平衡视频信号重建质量与码率问题。通用译码器控制组件211生成控制数据,这些控制数据用于控制其它组件的操作。还将控制数据转发给标头格式和cabac组件231,以编
码到码流中,从而指示解码器进行解码使用的参数。
65.还将分割后的视频信号201发送给运动估计组件221和运动补偿组件219进行帧间预测。可以将分割后的视频信号201的帧或条带分成多个视频块。运动估计组件221和运动补偿组件219相对于一个或多个参考帧中的一个或多个块对所接收到的视频块进行帧间预测译码,以提供时间预测。编解码系统200可以执行多个译码回合,以便为每个视频数据块选择合适的译码模式,等等。
66.运动估计组件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可以确定当前块/帧的多个参考块、多个运动矢量等,并且可以选择具有最佳率失真特性的参考块、运动矢量等。最佳率失真特性平衡了视频重建的质量(例如,压缩造成的数据丢失量)和译码效率(例如,最终编码的大小)。
67.在一些示例中,编解码系统200可以计算存储在解码图像缓冲区组件223中的参考图像的子整数像素位置的值。例如,视频编解码系统200可以对参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置的值进行插值。因此,运动估计组件221可以相对于整像素位置和分数像素位置执行运动搜索,并输出具有分数像素精度的运动矢量。运动估计组件221通过将pu的位置与参考图像的预测块的位置进行比较,计算经帧间译码条带中的视频块的pu的运动矢量。运动估计组件221将计算到的运动矢量作为运动数据输出到标头格式和cabac组件231进行编码,并作为运动数据输出到运动补偿组件219。
68.运动补偿组件219执行的运动补偿可以涉及根据运动估计组件221所确定的运动矢量获取或生成预测块。同样,在一些示例中,运动估计组件221和运动补偿组件219可以在功能上集成。在接收到当前视频块的pu的运动矢量时,运动补偿组件219可以定位运动矢量指向的预测块。然后,从正在译码的当前视频块的像素值中减去预测块的像素值,得到像素差,如此形成残差视频块。一般而言,运动估计组件221相对于亮度分量执行运动估计,而运动补偿组件219将根据亮度分量计算到的运动矢量用于色度分量和亮度分量。将预测块和残差块转发给变换缩放和量化组件213。
69.还将分割后的视频信号201发送给帧内估计组件215和帧内预测组件217。与运动估计组件221和运动补偿组件219一样,帧内估计组件215和帧内预测组件217可以高度集成,但出于概念目的,单独说明。帧内估计组件215和帧内预测组件217相对于当前帧中的各块对当前块进行帧内预测,以替代如上所述的由运动估计组件221和运动补偿组件219在各帧之间执行的帧间预测。具体地,帧内估计组件215确定帧内预测模式对当前块进行编码。在一些示例中,帧内估计组件215从多个测试的帧内预测模式中选择合适的帧内预测模式
来对当前块进行编码。然后,将选定的帧内预测模式转发给标头格式和cabac组件231进行编码。
70.例如,帧内估计组件215对各种测试的帧内预测模式进行率失真分析来计算率失真值,并在测试的模式中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定经编码块与经编码以产生经编码块的原始未编码块之间的失真(或误差)量,以及确定用于产生经编码块的码率(例如,比特数)。帧内估计组件215根据各种经编码块的失真和速率计算比率,以确定表现出块的最佳率失真值的帧内预测模式。另外,帧内估计组件215可以用于根据率失真优化(rate
‑
distortion optimization,rdo),使用深度建模模式(depth modeling mode,dmm)对深度图像的深度块进行译码。
71.帧内预测组件217在编码器上实现时可以根据由帧内估计组件215确定的选定帧内预测模式从预测块中生成残差块,或者在解码器上实现时,可以从码流中读取残差块。残差块包括预测块与原始块之间的差值,表示为矩阵。然后,将残差块转发给变换缩放和量化组件213。帧内估计组件215和帧内预测组件217可以对亮度分量和色度分量进行操作。
72.变换缩放和量化组件213用于进一步压缩残差块。变换缩放和量化组件213将离散余弦变换(discrete cosine transform,dct)、离散正弦变换(discrete sine transform,dst)等变换或者进行概念上类似的变换应用于残差块,从而产生包括残差变换系数值的视频块。还可以使用小波变换、整数变换、子频带变换或其它类型的变换。变换可以将残差信息从像素值域转换到变换域,例如频域。变换缩放和量化组件213还用于根据频率等对变换残差信息进行缩放。这种缩放涉及将缩放因子应用于残差信息,以便在不同的粒度下量化不同的频率信息,这可能会影响重建视频的最终视觉质量。变换缩放和量化组件213还用于量化变换系数以进一步降低码率。量化过程可以减小与部分或全部系数相关的位深度。量化程度可以通过调整量化参数来修改。在一些示例中,变换缩放和量化组件213随后可以对包括量化变换系数的矩阵进行扫描。将量化变换系数转发给标头格式和cabac组件231,以编码到码流中。
73.缩放和逆变换组件229进行与变换缩放和量化组件213相反的操作以支持运动估计。缩放和逆变换组件229应用逆缩放、逆变换和/或反量化以重建像素域中的残差块,例如,后续用作参考块。该参考块可以成为另一当前块的预测块。运动估计组件221和/或运动补偿组件219可以通过将残差块添加回对应的预测块来计算参考块,以用于后续块/帧的运动估计。将滤波器应用于重建参考块,以减少在缩放、量化和变换期间产生的伪影。当预测后续块时,这些伪影可能会使预测不准确(并产生额外的伪影)。
74.滤波器控制分析组件227和环内滤波器组件225将滤波器应用于残差块和/或重建图像块。例如,可以将来自缩放和逆变换组件229的变换残差块与来自帧内预测组件217和/或运动补偿组件219的对应预测块组合以重建原始图像块。然后,可以将滤波器应用于重建图像块。在一些示例中,滤波器可以转而应用于残差块。与图2中的其它组件一样,滤波器控制分析组件227和环内滤波器组件225高度集成,可以一起实现,但是出于概念目的,单独描述。将应用于重建参考块的滤波器应用于特定空间区域,这些滤波器包括多个参数以调整使用这些滤波器的方式。滤波器控制分析组件227对重建参考块进行分析,以确定需要使用这些滤波器的位置并设置对应的参数。将这些数据作为滤波器控制数据转发给标头格式和cabac组件231进行编码。环内滤波器组件225根据滤波器控制数据应用这些滤波器。这些滤
波器可以包括去块效应滤波器、噪声抑制滤波器、sao滤波器和自适应环路滤波器。这些滤波器可以根据示例应用于空域/像素域(例如,针对重建像素块)或频域中。
75.当作为编码器操作时,将经滤波波的重建图像块、残差块和/或预测块存储在解码图像缓冲区组件223中,以供后续用于运动估计,如上所述。当作为解码器操作时,解码图像缓冲区组件223存储经重建和经滤波的块并将其作为输出视频信号的一部分转发给显示器。解码图像缓冲区组件223可以是任何能够存储预测块、残差块和/或重建图像块的存储设备。
76.标头格式和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)编码或其它熵编码技术来编码。在熵编码之后,可以将经编码码流发送给另一设备(例如,视频解码器)或存档以供后续发送或检索。
77.图3为示例性视频编码器300的框图。视频编码器300可以用于实现编解码系统200的编码功能和/或执行操作方法100中的步骤101、步骤103、步骤105、步骤107和/或步骤109。编码器300对输入视频信号进行分割,得到基本上类似于分割后的视频信号201的分割后的视频信号301。然后,通过编码器300中的组件压缩分割后的视频信号301并编码到码流中。
78.具体地,将分割后的视频信号301转发给帧内预测组件317进行帧内预测。帧内预测组件317可以基本上类似于帧内估计组件215和帧内预测组件217。还将分割后的视频信号301转发给运动补偿组件321,根据解码图像缓冲区组件323中的参考块进行帧间预测。运动补偿组件321可以基本上类似于运动估计组件221和运动补偿组件219。将来自帧内预测组件317和运动补偿组件321的预测块和残差块转发给变换和量化组件313进行残差块的变换和量化。变换和量化组件313可以基本上类似于变换缩放和量化组件213。将变换量化残差块和对应的预测块(与相关的控制数据一起)转发给熵编码组件331,以译码到码流中。熵编码组件331可以基本上类似于标头格式和cabac组件231。
79.还将变换量化残差块和/或对应的预测块从变换和量化组件313转发给逆变换和量化组件329,以重建为参考块供运动补偿组件321使用。逆变换和量化组件329可以基本上类似于缩放和逆变换组件229。根据示例,还将环内滤波器组件325中的环内滤波器应用于残差块和/或重建参考块。环内滤波器组件325可以基本上类似于滤波器控制分析组件227和环内滤波器组件225。环内滤波器组件325可以包括多个滤波器,如结合环内滤波器组件225所述。然后,将经滤波的块存储在解码图像缓冲区组件323中,以作为参考块供运动补偿组件321使用。解码图像缓冲区组件323可以基本上类似于解码图像缓冲区组件223。
80.图4为示例性视频解码器400的框图。视频解码器400可以用于实现编解码系统200的解码功能和/或执行操作方法100中的步骤111、步骤113、步骤115和/或步骤117。解码器400从编码器300等接收码流,并根据码流生成重建输出视频信号,以向终端用户显示。
81.码流由熵解码组件433接收。熵解码组件433用于执行熵解码方案,例如cavlc、cabac、sbac、pipe解码或其它熵解码技术。例如,熵解码组件433可以使用标头信息来提供上下文以解析在码流中编码为码字的附加数据。经解码信息包括对视频信号进行解码所需的任何信息,例如,通用控制数据、滤波器控制数据、分割信息、运动数据、预测数据和残差块中的量化变换系数。将量化变换系数转发给逆变换和量化组件429,以重建成残差块。逆变换和量化组件429可以类似于逆变换和量化组件329。
82.将重建残差块和/或预测块转发给帧内预测组件417,以根据帧内预测操作重建为图像块。帧内预测组件417可以类似于帧内估计组件215和帧内预测组件217。具体地,帧内预测组件417使用预测模式来定位帧中的参考块,并将残差块添加到上述结果中以重建帧内预测图像块。将重建帧内预测图像块和/或残差块以及对应的帧间预测数据通过环内滤波器组件425转发给解码图像缓冲区组件423。解码图像缓冲区组件423和环内滤波器组件425可以基本上分别类似于解码图像缓冲区组件223和环内滤波器组件225。环内滤波组件425对重建图像块、残差块和/或预测块进行滤波。这些信息存储在解码图像缓冲区组件423中。将来自解码图像缓冲区组件423的重建图像块转发给运动补偿组件421,以进行帧间预测。运动补偿组件421可以基本上类似于运动估计组件221和/或运动补偿组件219。具体地,运动补偿组件421使用参考块的运动矢量来生成预测块,并将残差块应用于上述结果中以重建图像块。还可以通过环内滤波器组件425将所得到的重建块转发给解码图像缓冲区组件423。解码图像缓冲区组件423继续存储其它重建图像块。这些重建图像块可以通过分割信息重建为帧。这些帧还可以放置在一个序列中。该序列作为重建输出视频信号输出到显示器。
83.图5为示例性hrd 500的示意图。hrd 500可以在编码器(例如编解码器系统200和/或编码器300)中使用。hrd 500可以检查在方法100的步骤109中产生的码流,然后,将码流转发给解码器,例如解码器400。在一些示例中,当码流进行编码时,码流可以不断地通过hrd 500转发。如果码流的一部分不符合相关约束条件,则hrd 500会向编码器指示这种不符合情况,以使得编码器使用不同的机制对码流的对应部分进行重新编码。
84.hrd 500包括假设流调度器(hypothetical stream scheduler,hss)541。hss 541是用于执行假设递送机制(hypothetical delivery mechanism)的组件。假设递送机制用于检查码流或解码器关于输入到hrd 500中的码流551的时间和数据流的一致性。例如,hss 541可以接收从编码器输出的码流551,并管理对码流551进行的一致性测试过程。在一个特定的示例中,hss 541可以控制经译码图像在hrd 500中移动的速率,并验证码流551不包括不符合标准的数据。
85.hss 541可以按预定义的速率将码流551转发给cpb 543。为了实现hrd 500,包括码流551中的经译码视频的任何单元,例如au和/或nal单元,可以称为可解码单元(decodable unit,du)553。cpb 543是hrd 500中的先入先出缓冲区。cpb 543包括du553,du 553包括解码顺序中的经译码图像或其子部分(例如条带(slice))。cpb 543存储这些图像以在码流一致性验证过程中使用。
86.cpb 543将du 553转发给解码过程组件545。解码过程组件545是符合vvc标准的组件。例如,解码过程组件545可以模拟终端用户使用的解码器400。解码过程组件545按示例性终端用户解码器可以实现的速率对du 553进行解码。如果解码过程组件545不能足够快地对du 553进行解码以防止cpb 543溢出,则码流551不符合标准,需要重新编码。
87.解码过程组件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中的图像的镜像。
88.将图像557转发给输出裁剪组件549。输出裁剪组件549用于将一致性裁剪窗口(conformance cropping window)应用于图像557。这样得到裁剪后的输出图像559。裁剪后的输出图像559是完全重建的图像。因此,裁剪后的输出图像559模仿终端用户在对码流551进行解码时看到的内容。这样一来,编码器可以查看裁剪后的输出图像559,以确保编码令人满意。
89.图6为用于对视频序列执行gdr 600的示例性机制的示意图。gdr 600可以应用于由编码器(例如编解码器系统200和/或编码器300)编码且由解码器(例如编解码器系统200和/或解码器400)解码的码流。此外,通过使用本文描述的技术,编码器侧的hrd 500可以对使用gdr 600的码流执行码流一致性检查。
90.在一个实施例中,gdr 600可以用于在cvs 608等cvs中产生随机接入点。gdr 600是一种对一系列图像进行译码的机制,这些图像分别包括经帧间译码的区域和经帧内译码的区域,以避免使用完全进行帧内译码的单个图像(例如irap图像)初始化编码视频序列608。具体地,视频序列中的大多数图像都是根据帧间预测进行译码的,因此是通过参考其它图像进行解码的。如果参考图像不可用,则解码器可能无法对经帧间译码的图像进行解码。gdr 600提供了一种产生恢复点的机制,在该恢复点之后的所有图像都可以正确解码。
91.在一个实施例中,cvs 608包括gdr图像602、一个或多个后置图像604和恢复点图像606。在一个实施例中,gdr图像602称为cvs起始(cvs starting,cvss)图像。此外,gdr图像602可以包括在gdr au中,gdr au是一个包括一系列gdr相关图像中的第一gdr图像的au。cvs 608可以是用于视频码流中的每个逐层编码视频序列(coded layer
‑
wise video sequence,clvs)的编码视频序列。需要说明的是,cvs和clvs在视频码流包括单层时相同。cvs和clvs仅在视频码流包括多层时不同。在一个实施例中,后置图像604可以看作是gdr图像的一种形式,因为它们位于gdr周期中的恢复点图像606之前。
92.在一个实施例中,gdr图像602、后置图像604和恢复点图像606可以限定cvs 608中的gdr周期。在一个实施例中,解码顺序从gdr图像602开始,接着是后置图像604,然后是恢复图像606。cvs 608是从gdr图像602开始的一系列图像(或其部分)并包括所有图像(或其部分),直到但不包括下一个gdr图像或直到码流结束。gdr周期是从gdr图像602开始的一系列图像并包括所有图像,直到并包括恢复点图像606。当gdr图像602用作视频中的随机接入点时,cvs 608的解码过程在gdr图像602处开始。随机接入点是码流中解码器可以开始解码以获得可用视频数据的任何位置。
93.如图6所示,gdr 600对开始于gdr图像602且结束于恢复点图像606的一系列图像
应用。gdr图像602包括刷新/干净区域610和未刷新/脏区域612。刷新/干净区域610包括都是通过帧内预测进行译码的块(即帧内预测块),未刷新/脏区域612包括都是通过帧间预测进行译码的块(即帧间预测块)。帧内预测块可以在不参考其它图像的情况下进行解码。但是,脏区域中的帧间预测块只能通过参考在gdr图像602之前的图像进行解码,因此只能在gdr图像602不用作随机接入点时进行解码。
94.紧邻gdr图像602的后置图像604包括刷新/干净区域610,刷新/干净区域610包括通过帧内预测进行译码的第一区域610a和通过帧间预测进行译码的第二区域610b。第二区域610b通过参考cvs 608的gdr周期内的前一个图像等中的刷新/干净区域610进行译码。如图所示,随着译码过程沿一致方向(例如从左到右)移动或前进,后置图像604中的刷新/干净区域610扩大,这样未刷新/脏区域612相应地缩小。最终,译码过程到了仅包括刷新/干净区域610的恢复点图像606。需要说明的是,刷新/干净区域610中的译码为帧间预测块的第二区域610b可以仅参考参考图像中的刷新区域/干净区域610。这种限制确保脏数据不会引入到刷新区域/干净区域610中。
95.因此,恢复点图像606是在gdr序列之后的图像,使得恢复点图像606可以完全解码,而无需参考序列中的第一个gdr图像602之前的图像中的数据。例如,恢复点图像606可以通过参考前面图像中的任何干净区域610,通过帧间预测进行译码。从图6可以看出,解码器可能希望快速确定哪个图像是恢复点图像606,因为解码器可能希望在到达恢复点图像606时就开始显示图像。例如,先前图像不输出(no output of prior pictures)标志可以设置在标头中,例如设置在与gdr图像602相关的图像头或条带头中。当设置有该标志时,在到达恢复点图像606之前,没有图像输出给用户。这样可以防止显示gdr图像602和后置图像604,它们包括不能正确解码进行显示的未刷新/脏区域612。
96.这个过程可以使用poc值来管理。poc是与每个图像相关且在cvs 608中的所有图像之间唯一地识别相关图像的变量/值。此外,当相关图像要从dpb中输出时,poc指示输出顺序中的相关图像的位置与同一cvs 608中的也要从dpb中输出的其它图像的输出顺序位置的相对关系。因此,gdr图像602具有gdr poc 621,后置图像604具有poc 623,恢复点图像606具有恢复poc 622。也就是说,gdr poc 621是gdr图像602的poc,恢复poc 622是恢复点图像606的poc。解码器可以使用poc值来确定与gdr周期相关的解码细节。例如,标头可以用于表示与gdr图像602相关的poc lsb。poc lsb是poc值中的一个或多个最低位。解码器可以使用gdr图像602的poc lsb和其它语法元素一起来确定gdr poc 621。这种方法可以减少用于表示gdr poc 621的位数。恢复poc 622可以表示为gdr poc 621与恢复poc 622之间的差值。因此,解码器可以根据标头中的poc lsb值确定gdr图像602的poc。然后,解码器可以从标头中获取恢复poc 622的值,并根据gdr图像602的gdr poc 621获得恢复poc 622的值。获得/确定出的恢复poc 622的值表示恢复点图像606的poc。然后,解码器可以开始显示从恢复点图像606开始的重建图像。
97.图7为使用编码器限制条件来支持gdr 600时的不期望运动搜索700的示意图。如图所示,运动搜索700示出了当前图像702和参考图像704。当前图像702和参考图像704分别包括通过帧内预测进行译码的刷新区域706、通过帧间预测进行译码的刷新区域705,以及未刷新区域708。刷新区域705、刷新区域706和未刷新区域708分别类似于图6中的刷新/干净区域610中的第一区域610a、刷新/干净区域610中的第二区域610b,以及未刷新/脏区域
612。
98.在运动搜索过程中,约束或防止编码器选择指向参考块712的任何运动矢量710,参考块712包括位于刷新区域705和706外部的样本。即使参考块712在预测当前图像702中的当前块714时提供最佳率失真成本标准,这种情况也会发生。但是,使用这种约束条件确保了刷新区域705和706不参考任何脏数据,因此在相关gdr图像用作随机接入点时不会变得不可解码。
99.图8为在使用gdr(例如gdr 600)时用于初始化hrd(例如hrd 500)的示例性码流800的示意图。例如,码流800可以由编解码系统200和/或编码器300生成,以由编解码系统200和/或解码器400根据方法100进行解码。
100.码流800包括sps 810、多个图像参数集(picture parameter set,pps)811、多个条带头815和图像数据820。sps 810包括码流800中包括的编码视频序列中的所有图像共用的序列数据。这些数据可以包括图像大小、位深度、译码工具参数、码率限制条件等。pps 811包括应用于整个图像的参数。因此,视频序列中的每个图像可以参考pps 811。需要说明的是,虽然每个图像都参考pps 811,但在一些示例中,单个pps 811可以包括多个图像的数据。例如,多个类似的图像可以根据类似的参数进行译码。在这种情况下,单个pps 811可以包括这些类似图像的数据。pps 811可以指示可用于对应图像中条带的译码工具、量化参数、偏移等。条带头815包括图像中的每个条带特有的参数。因此,视频序列中的每个条带可以存在一个条带头815。条带头815可以包括条带类型信息、poc、参考图像列表、预测权重、分块入口点(tile entry point)、去块效应滤波参数等。需要说明的是,在一些上下文中,条带头815还可以称为分块组头。需要说明的是,在一些示例中,码流800还可以包括图像头,图像头是一种语法结构,包括应用于单个图像中所有条带的参数。为此,图像头和条带头815可以在一些上下文中互换使用。例如,某些参数可以在条带头815和图像头之间移动,这取决于这些参数是否对图像中的所有条带是共用的。
101.图像数据820包括根据帧间预测和/或帧内预测进行编码的视频数据以及对应的变换量化残差数据。例如,视频序列包括多个图像823。图像823是预期在视频序列中的对应时刻向用户完整或部分显示的完整图像。图像823可以包括在单个au 821中。au 821是一个译码单元(coding unit),用于存储单个经译码图像823,可选地存储一个或多个标头,例如条带头815。这些标头包括描述对经译码图像823进行译码所使用的译码机制的参数。图像823包括一个或多个条带825。条带825可以被定义为图像823中的整数个完整分块或(例如分块内的)整数个连续完整ctu行,这些分块或ctu行仅包括在单个nal单元中。条带825进一步分成ctu和/或编码树块(coding tree block,ctb)。ctu是一组预定义大小的样本,可以通过编码树(coding tree)分割。ctb是ctu的子集,包括ctu的亮度分量或色度分量。ctu/ctb根据编码树进一步分成译码块(coding block)。然后,译码块可以根据预测机制进行编码/解码。
102.如上所述,当码流800包括根据gdr 600进行译码的图像823时,一些视频译码系统可以不用于执行hrd 500。这是因为hrd 500可以用于在irap图像处开始执行一致性测试。bp sei消息817可以用于解决这个问题。bp sei消息817可以与gdr au相关。例如,对于每个au 821,bp sei消息817可以包括在码流800中,每个au 821包括gdr图像(例如gdr周期中的第一个图像)。sei消息是一种具有指定语义的语法结构,该语法结构传达解码过程不需要
的信息,以便确定经解码图像中的样本的值。因此,sei消息用于指示(signal)与码流800解码不直接相关的参数。bp sei消息817是包括hrd参数836的sei消息,这些参数用于初始化hrd以管理cpb,例如cpb 543。cpb可以在一段指定时间段内保存/缓冲图像。因此,bp sei消息817可以用于指定cpb处的缓冲周期。hrd参数836包括支持hrd初始化的任何参数。例如,hrd参数836可以包括初始cpb移除时延。cpb移除时延是当前图像在移除之前可以保存在cpb中的一段时间。cpb移除时延可以用于在gdr au在解码顺序中的位置上初始化hrd。因此,bp sei消息817可以用于在gdr图像处初始化hrd,因此支持在码流800包括gdr图像时应用码流一致性测试。此外,bp sei消息817中的hrd参数836可以向解码器指示码流已经经过一致性测试。因此,bp sei消息817中的hrd参数836可以向解码器指示解码器能够对码流800进行解码。
103.码流800还可以包括支持使用gdr的其它机制。例如,条带头815或对应的图像头可以包括先前图像不输出(no output of prior pics)标志831。先前图像不输出标志831可以设置在gdr图像的标头中,gdr图像包括在gdr au中。先前图像不输出标志831可以设置为向解码器指示在到达恢复图像之前,不需要输出gdr周期中的图像。然后,可以在不显示部分解码的图像的情况下显示恢复图像。这些部分解码的图像是部分根据脏数据重建的。
104.此外,码流800可以在条带头815或对应的图像头等中包括poc lsb值833和恢复poc值835。poc lsb值833包括poc值中的一个或多个最低位。poc lsb值833可以与gdr图像相关,因此可以指示gdr图像的poc的lsb。例如,poc lsb值833可以作为ph_pic_order_cnt_lsb值包括在标头中。ph_pic_order_cnt_lsb值可以表示当前图像的poc对最大poc lsb取模的值,其中,当前图像为gdr图像。恢复poc值835指示与gdr图像相关的恢复点图像的poc。例如,恢复poc值835可以与poc lsb值833包括在相同的标头中。此外,恢复poc值835可以指示(signal)为恢复poc编号(recovery_poc_cnt)值。recovery_poc_cnt值将输出顺序中的经解码图像的恢复点表示为gdr poc与恢复点图像poc之间的poc编号差值。此外,poc lsb值833可以在标头中位于恢复poc值835之前。这样,解码器可以解析标头,以获得poc lsb值833并确定gdr poc。解码器可以解析标头,以获得恢复poc值835。由于gdr poc已经根据poc lsb值833确定出,因此恢复poc值835可以立即获得,使得可以确定出恢复点图像poc。这样,解码器可以避免在解析并获得gdr图像的poc lsb值833之前将未获得的恢复poc值835存储到存储器中。因此,码流800包括各种机制,能够增加关于hrd和/或解码器等的gdr功能。因此,参考码流800描述的机制可以增加编码器和/或解码器的功能。此外,参考码流800描述的机制可以提高译码效率和/或减少编码器和/或解码器侧的处理器资源、内存资源和/或网络通信资源。
105.下面更详细地描述上述信息。实现高效视频编码(high efficiency video coding,hevc)的视频译码系统可以使用多个irap图像。具体地,在hevc中,idr图像、断点连接接入(broken link access,bla)图像和cra图像都视为irap图像。使用vvc的视频译码系统可以将idr图像和cra图像用作irap图像。irap图像可以提供以下功能/优势。irap图像的存在可以指示解码过程可以从该图像开始。这个功能支持随机接入功能,其中,只要irap图像存在于码流中的一个位置上,但这个位置不一定是码流的起始,解码过程就可以在该位置上开始。irap图像的存在还可以刷新解码过程,使得解码顺序中在irap图像之后译码的图像,不包括跳过随机接入前置(random access skipped leading,rasl)图像,在不参考
irap图像之前的图像的情况下进行译码。因此,可能在对irap图像之前的图像进行解码时发生的任何译码错误可以不通过irap图像传播到解码顺序在irap图像之后的图像中。
106.irap图像提供了各种功能,但降低了压缩效率。例如,irap图像的存在会导致码率激增。压缩效率降低有两个原因。首先,irap图像是帧内预测图像。因此,表示irap图像会比表示其它帧间预测图像使用更多的比特。其次,irap图像的存在可能会中断时间预测。这是因为irap图像可以刷新解码过程并从dpb中移除先前的参考图像。因此,解码顺序在irap图像之后的图像的译码效率可能会降低,因为在执行帧间预测译码时,可供这些图像选择的参考图像较少。
107.在视为irap图像的图像类型中,idr图像与其它图像类型相比可以使用不同的指示和推导方式。其中一些区别如下所述。为了指示和推导idr图像的poc值,poc的最高有效位(most significant bit,msb)部分可能不是根据前一关键图像推导出的,而是可以设置为0。为了指示参考图像管理使用的信息,idr图像的条带头可以不包括辅助参考图像管理的信息。cra图像和后置图像等其它图像类型可以包括参考图像集(reference picture set,rps)或参考图像列表信息等信息,以支持参考图像标识过程。参考图像标识过程是一种确定dpb中参考图像的状态为用于参考或不用于参考的过程。但是,对于idr图像,可以不指示(signal)这些信息,因为idr图像的存在表示解码过程需要将dpb中的所有参考图像标识为不用于参考。
108.前置图像(如果存在)与irap图像相关。前置图像是解码顺序在相关irap图像之后但输出顺序在irap图像之前的图像。根据译码配置和图像参考结构,前置图像进一步分为两种类型。第一种类型是在解码过程在相关irap图像处开始时可能无法正确解码的前置图像。这些图像称为跳过随机接入前置(random access skipped leading,rasl)图像。rasl图像在这种情况下可能不可解码,因为rasl图像是在参考解码顺序在irap图像之前的图像的情况下进行译码的。第二种类型是即使在解码过程在相关irap图像处开始时也可以正确解码的前置图像。这些图像称为可解码随机接入前置(random access decodable leading,radl)图像。radl图像可以进行解码,因为radl图像是在没有直接或间接参考解码顺序在irap图像之前的图像的情况下进行译码的。一些视频译码系统使用约束条件,使得当rasl图像和radl图像与相同的irap图像相关时,rasl图像需要在输出顺序中位于radl图像之前。
109.irap图像和前置图像分配有不同的nal单元类型,以支持由系统级应用进行识别。例如,视频拼接器可以用于确定经译码图像类型,无需查看经译码码流中的详细语法元素。例如,视频拼接器可以从非irap图像中识别irap图像,并从后置图像中识别前置图像,包括确定rasl图像和radl图像。后置图像是与irap图像相关的且输出顺序在irap图像之后的图像。与特定irap图像相关的图像是解码顺序在该irap图像之后且解码顺序在任何其它irap图像之前的图像。因此,为irap图像和前置图像分配不同的nal单元类型支持这些应用。
110.图像类型的一些示例性nal单元类型如下所述。伴随前置图像的bla(bla_w_lp)是解码顺序可以在一个或多个前置图像之前的断点连接接入(broken link access,bla)图像的nal单元。伴随radl图像的bla(bla_w_radl)是解码顺序可以在一个或多个radl图像之前但不存在rasl图像的bla图像的nal单元。未伴随前置图像的bla(bla_n_lp)是解码顺序不在前置图像之前的bla图像的nal单元。伴随radl图像的idr(idr_w_radl)是解码顺序可
以在一个或多个radl之前但不存在rasl图像的idr图像的nal单元。未伴随前置图像的idr(idr_n_lp)是解码顺序不在前置图像之前的idr图像的nal单元。cra是可以在前置图像(例如rasl图像和radl图像中的一个或两个)之后的cra图像的nal单元。radl是radl图像的nal单元。rasl是rasl图像的nal单元。
111.对于低时延应用,避免irap图像可能是有益的,因为irap图像译码比非irap图像译码需要相对更大的码率,这种更大码率需求会导致延迟和/或时延增加。但是,在所有低时延应用中,不可能完全避免使用随机接入点。例如,多方电话会议等对话应用可能需要提供新用户可以加入远程会议的常规点(regular point)。
112.渐进式帧内刷新(progressive intra refresh,pir)是一种示例性机制,可以用于在不使用irap图像的情况下将随机接入点提供到码流中。这种方法可以使得新用户加入多方远程会议应用,同时避免增加与irap图像相关的码率峰值。pir也可以称为逐步解码刷新(gradual decoding refresh,gdr)和/或逐步随机接入(gradual random access,gra)。图6示出了一种用于执行gdr的示例性机制。gdr技术应用于从gdr图像开始的多个图像。gdr图像包括一个区域,该区域中的所有经译码块都被译码为帧内预测块。该区域可以称为刷新区域/干净区域。gdr图像其余部分中的块可以被译码为帧间预测块。该区域可以称为未刷新区域/脏区域。在位于gdr图像之后的后续图像中,使用帧内预测块进行译码的区域沿一致方向(例如从左到右)移动。这种机制缩小了包括帧间预测块的脏区域。对于每个后续图像,与先前图像中的干净区域并置的区域可以根据帧间预测进行译码,这增大了干净/刷新区域的大小。当前图像中的干净区域只能通过帧间预测来参考位于参考图像中的干净区域中的块。
113.使用hevc的视频系统可以通过使用恢复点sei消息和区域刷新信息sei消息,非规范地支持gdr。这些sei消息可能不定义执行gdr的方式,但可以提供一种机制来指示gdr周期中的(例如恢复点sei消息中的)第一个图像和最后一个图像以及(例如区域刷新信息sei消息中的)被刷新的区域。gdr可以通过约束帧内预测(constraint intra prediction,cip)和用于运动矢量的编码器约束条件来执行。cip可以用于对帧内译码区域进行译码,因为cip确保帧内译码区域不参考未刷新区域中的样本。cip可能会导致译码性能下降,因为相关约束条件既应用于刷新区域中的帧内译码块,也应用于图像中的所有帧内译码块。用于运动矢量的编码器约束条件通过限制编码器使用参考图像中的位于刷新区域外部的任何样本进行应用。这种约束条件可能会导致非最佳运动搜索。图7示出了使用编码器限制条件支持gdr而产生的示例性非最佳运动搜索。在运动搜索过程中,防止编码器选择参考块中的位于刷新区域外部的任何样本的任何运动矢量。即使当根据率失真成本标准,该参考块是最佳参考块,也会保持这个条件。
114.基于cip和编码器约束条件方法的gdr的一种示例性实现方式可以概括如下。帧内预测模式以列为单位应用于译码单元(coding unit)。启用约束帧内预测是为了确保帧内预测译码单元的重建。约束运动矢量指向刷新区域内部,同时考虑额外的余量(例如6个像素),以避免滤波器错误扩散。重新循环帧内预测列时,先前的参考图像可能会被移除。gdr的另一种示例性实现方式可以用于表示图像用作gdr周期中的第一个图像和最后一个图像。这个示例可以概括如下:具有nal单元类型恢复点指示的nal单元可以用作非视频编码层(video coding layer,vcl)nal单元。nal单元的载荷包括一个语法元素,用于表示可以
用于推导gdr周期中的最后一个图像的poc值的信息。包括具有类型恢复点指示的非vcl nal单元的接入单元可以称为恢复点开始(recovery point begin,rbp)接入单元。rbp接入单元中的图像称为rbp图像。解码过程可以从rbp au开始。当解码从rbp au开始时,gdr周期中除最后一个图像外,所有图像都不输出进行显示。
115.在一种示例性实现方式中,使用vvc来实现gra的视频译码系统可以使用以下元素,使得编码视频序列(coded video sequence,cvs)能够开始于未完全进行帧内译码的gra图像。sps中的gra_enabled_flag可以表示是否存在gra图像。gra_nut是表示gra图像的nal单元类型。条带头中的recovery_poc_cnt可以表示对应的图像为恢复图像,因此该图像开始新的cvs,恢复图像和后续图像可以根据gra周期中的图像进行正确解码。cvs可以通过在cra图像之后开始cvs的类似方式从gra图像开始。
116.上述方面存在一些问题。例如,使用gra图像的vvc实现方式可能不支持为包括gra图像的码流指定hrd参数和定义hrd一致性操作。因此,开始于gra图像的码流等码流的解码能力要求可能不清楚。
117.一般情况,本发明描述了用于支持为包括gdr图像的视频码流指定码流一致性机制的方法。例如,这种支持可以通过定义机制来管理这些码流的hrd来实现。本文所使用的技术的描述以vvc实现方式为基础,但也可以应用于其它视频编解码器规范。
118.上述一个或多个问题可以解决如下。例如,本发明包括一种方法,该方法指定hrd参数并可以定义hrd一致性操作,这些操作可以对包括gra图像的码流执行。例如,nalhrdbppresentflag可以设置为1,或者vclhrdbppresentflag可以设置为1,以表示cvs何时存在hrd参数。在这种情况下,缓冲周期sei消息可以与每个gra接入单元相关。此外,缓冲周期sei消息可以包括hrd参数。因此,hrd参数可供gra接入单元使用,并且hrd操作可以在任何gra接入单元处初始化。例如,包括多个gra接入单元的视频码流可以包括gra图像。码流可以由解码器解码。每个gra接入单元都可以与缓冲周期sei消息相关。解码器可以至少根据与gra接入单元相关的缓冲周期sei消息,对从其中一个gra接入单元开始的视频码流进行解码。又如,编码器可以对视频码流进行编码。例如,编码器可以通过将每个gra图像编码到码流中的一个接入单元内,对多个gra图像进行编码。对于每个gra图像,编码器可以对相关缓冲周期sei消息进行编码。下面包括了一个或多个示例性实现方式。
119.通用条带头的语法举例如下。
[0120][0121]
序列结束rbsp的语义举例如下。序列结束rbsp(如果存在)表示当前接入单元是编码视频序列中位于解码顺序中的最后一个接入单元,码流中位于解码顺序中的下一个接入单元(如果存在)是irap接入单元或gra接入单元。数据位字符串(string of data bit,sodb)的语法内容和用于序列结束rbsp的rbsp为空。
[0122]
通用条带头的语义举例如下。条带头语法元素slice_pic_parameter_set_id、slice_pic_order_cnt_lsb、no_output_of_prior_pics_flag和slice_temporal_mvp_enabled_flag(如果存在)中的每一个的值在经译码图像的所有条带头中可以是相同的。在解码不是码流中的第一个图像的编码视频序列起始(coded video sequence start,cvss)图像之后,no_output_of_prior_pics_flag可能会影响输出解码图像缓冲区中先前解码的图像。
[0123]
用于在解码当前图像之前从dpb中移除图像的机制举例如下。当该当前图像是图像索引不是0的cvss图像时,可以应用以下按顺序执行的步骤。变量nooutputofpriorpicsflag可以如下所述为测试解码器推导出。如果从活动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[highesttid]的值分别与从用于前一图像的活动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[highesttid]的值不同,则nooutputofpriorpicsflag可以(但不需要)由测试解码器设置为1,不考虑no_output_of_prior_pics_flag的值。虽然在这些条件下,可以优选将nooutputofpriorpicsflag设置为no_output_of_prior_pics_flag,但是在这种情况下,测试解码器可以将nooutputofpriorpicsflag设置为1。否则,nooutputofpriorpicsflag可以被设置为no_output_of_prior_pics_flag。为测试解码器推导出的nooutputofpriorpicsflag的值应用于hrd,使得当nooutputofpriorpicsflag的值等于1时,dpb中的所有图像存储缓冲区都被清空,而不输出它们包括的图像,并且dpb满度(fullness)被设置为0。
[0124]
示例性码流一致性如下所述。码流中的第一个经译码图像应该是irap图像(例如idr图像或cra图像)或gra图像。
[0125]
从dpb中输出和移除图像的示例如下所述。如果当前图像是图像索引不是0的cvss图像,则可以应用以下按顺序执行的步骤。变量nooutputofpriorpicsflag可以如下所述为测试解码器推导出。如果从活动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[highesttid]的值分别与从用于前一图像的活动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[highesttid]的值不同,则nooutputofpriorpicsflag可以(但不需要)由测试解码器设置为1,不考虑no_output_of_prior_pics_flag的值。虽然在这些条件下,优选将nooutputofpriorpicsflag设置为no_output_of_prior_pics_flag,但是在这种情况下,测试解码器可以将nooutputofpriorpicsflag设置为1。否则,nooutputofpriorpicsflag可以被设置为no_output_of_prior_pics_flag。
[0126]
为测试解码器推导出的nooutputofpriorpicsflag的值可以如下所述应用于hrd。如果nooutputofpriorpicsflag等于1,则dpb中的所有图像存储缓冲区都可能被清空,而不
输出它们包括的图像,而且dpb满度可以被设置为0。否则(nooutputofpriorpicsflag等于0),包括标记为不需要输出且不用于参考的图像的所有图像存储缓冲区都可能被清空(没有输出),dpb中的所有非空图像存储缓冲区可以通过反复调用碰撞(bumping)过程来清空,而且dpb满度可以被设置为0。
[0127]
缓冲周期sei消息的语义举例如下。缓冲周期sei消息的存在可以如下详述。如果nalhrdbppresentflag等于1或者vclhrdbppresentflag等于1,则以下内容可以适用于cvs中的每个接入单元。如果接入单元是irap接入单元或gra接入单元,则适用于操作点的缓冲周期sei消息可以与该接入单元相关。如果接入单元包括notdiscardablepic,则适用于操作点的缓冲周期sei消息可以与该接入单元相关。否则,接入单元可能不与适用于操作点的缓冲周期sei消息相关。否则(nalhrdbppresentflag和vclhrdbppresentflag都等于0),cvs中的任何接入单元都可能不与缓冲周期sei消息相关。当该当前图像包括缓冲周期sei消息且concateation_flag等于1时,当前图像可以不使用cpb_removal_delay_minus1。在一些情况下,上述约束条件能够通过在用于irap图像或gra图像的缓冲周期sei消息中将concatenation_flag的值从0改为1,在拼接点处拼接码流(使用参考结构)。当concateation_flag等于0时,上述约束条件使得解码器能够检查约束条件是否满足,以检测图像prevnondiscardablepic是否丢失。
[0128]
图像定时sei消息的语义举例如下。对于未通过碰撞过程输出的图像,因为它们在解码顺序中位于no_output_of_prior_pics_flag等于1或被推断等于1的cvss图像之前,从dpb_output_delay推导出的输出时间可以随着picordercntval的值相对于相同cvs内的所有图像增加而增加。
[0129]
图9为示例性视频译码设备900的示意图。视频译码设备900适用于实现本文描述的公开示例/实施例。视频译码设备900包括下行端口920、上行端口950和/或收发单元(tx/rx)910。收发单元910包括发送器和/或接收器,用于通过网络在上行和/或下行进行数据通信。视频译码设备900还包括处理器930和存储器932。处理器930包括逻辑单元和/或中央处理单元(central processing unit,cpu),以处理数据。存储器932用于存储数据。视频译码设备900还可以包括与上行端口950和/或下行端口920耦合的电组件、光电(optical
‑
to
‑
electrical,oe)组件、电光(electrical
‑
to
‑
optical,eo)组件和/或无线通信组件,用于通过电通信网络、光通信网络或无线通信网络进行数据通信。视频译码设备900还可以包括输入和/或输出(input/output,i/o)设备960,用于与用户进行数据通信。i/o设备960可以包括输出设备,例如显示视频数据的显示器、输出音频数据的扬声器等。i/o设备960还可以包括键盘、鼠标、轨迹球等输入设备和/或与这些输出设备交互的对应接口。
[0130]
处理器930通过硬件和软件实现。处理器930可以实现为一个或多个cpu芯片、一个或多个核(例如,实现为多核处理器)、一个或多个现场可编程门阵列(field
‑
programmable gate array,fpga)、一个或多个专用集成电路(application specific integrated circuit,asic)以及一个或多个数字信号处理器(digital signal processor,dsp)。处理器930与下行端口920、tx/rx 910、上行端口950和存储器932通信。处理器930包括译码模块914。译码模块914实现本文描述的公开实施例,例如方法100、方法1000和/或方法1100,它们可以使用gdr 600和/或码流800。译码模块914还可以实现本文描述的任何其它方法/机制。此外,译码模块914可以实现编解码系统200、编码器300、解码器400和/或hrd 500。例
如,译码模块914可以与关联于gdr图像的bp sei消息相关。此外,译码模块914可以将poc lsb值放置在与图像相关的标头中的恢复图像顺序编号值之前。因此,译码模块914使得视频译码设备900在对视频数据进行译码时提供其它功能和/或提高译码效率。因此,译码模块914改进了视频译码设备900的功能,同时解决了视频译码领域特有的问题。此外,译码模块914影响了视频译码设备900到不同状态的转换。可选地,译码模块914可以实现为存储在存储器932中并由处理器930执行的指令(例如,实现为存储在非瞬时性介质中的计算机程序产品)。
[0131]
存储器932包括一种或多种存储器类型,例如磁盘、磁带机、固态硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、闪存、三态内容寻址存储器(ternary content
‑
addressable memory,tcam)、静态随机存取存储器(static random
‑
access memory,sram)等。存储器932可以用作溢出数据存储设备,以在选择程序来执行时存储这些程序以及存储在执行程序过程中读取的指令和数据。
[0132]
图10为在将使用gdr(例如gdr 600)的视频序列编码到码流(例如码流800)中时指示恢复点图像poc的示例性方法1000的流程图。方法1000可以由编码器(例如编解码系统200、编码器300和/或视频译码设备900)在执行方法100时执行。这种编码器还可以使用hrd 500。
[0133]
方法1000可以开始于:编码器接收包括多个图像的视频序列,并根据用户输入等确定将所述视频序列编码到码流中。在步骤1001中,所述编码器将包括gdr图像(例如图6所述的gdr图像602)和一个或多个后置图像(例如图6所述的后置图像604)的gdr周期编码到码流中。具体地,所述gdr图像和所述相关后置图像分别包括一个或多个根据帧间预测进行译码的区域(例如第二区域610b和/或未刷新/脏区域612)和根据帧内预测进行译码的区域(例如第一区域610a)。在一些示例中,所述根据帧间预测进行译码的区域和所述根据帧内预测进行译码的区域都可以如图6所示,高度比宽度大。所述编码器还将恢复点图像(例如恢复点图像606)编码到所述码流中。所述恢复点图像在解码顺序中位于所述gdr周期中的所述gdr图像和所述相关后置图像之后。所述gdr图像可以编码到gdr au中。所述后置图像和所述恢复点图像可以编码到后置au中。
[0134]
在步骤1003中,所述编码器可以将与所述gdr au相关的bp sei消息编码到所述码流中。所述bp sei消息提供初始cpb移除时延和/或其它hrd参数。这些参数可以用于在所述码流中的所述gdr au在解码顺序中的位置上初始化hrd(例如hrd 500)。
[0135]
在步骤1005中,所述编码器确定所述gdr图像的poc lsb值。所述poc lsb值可以用于从所述码流中的其它图像中识别出所述gdr图像。所述解码器还确定识别所述恢复点图像的恢复图像顺序编号值。在一些示例中,所述恢复图像顺序编号值表示所述恢复点图像相对于所述gdr图像的位置。例如,所述恢复图像顺序编号值可以表示所述gdr图像的所述poc与所述恢复点图像的所述poc之间的差值。需要说明的是,所述恢复图像poc与所述gdr poc之间的差值可以是比所述恢复图像poc小的值。因此,将所述恢复图像poc指示(signal)为差值通过压缩指示的数据,提高了译码效率。
[0136]
在步骤1007中,所述编码器将与所述gdr图像相关的标头编码到所述码流中。此外,所述编码器将所述poc lsb值和所述恢复图像顺序编号值编码到所述标头中。具体地,所述poc lsb值在所述恢复图像顺序编号值之前编码到所述标头中。这样,所述解码器可以
解析所述标头并根据所述poc lsb获得所述gdr poc,然后解析所述恢复图像顺序编号值。这样一来,所述恢复图像顺序编号值可以在所述恢复图像顺序编号值解析出后立即获得。这可能比在确定出所述gdr poc之前将所述恢复图像顺序编号值存储到存储器中更高效。在各种示例中,所述与所述gdr图像相关的标头为图像头和/或条带头。因此,所述poc lsb值和所述恢复图像顺序图像值可以包括在图像头和/或条带头中。例如,所述poc lsb值作为图像头图像顺序编号lsb(ph_pic_order_cnt_lsb)值包括在所述标头中。所述ph_pic_order_cnt_lsb值表示当前图像的图像顺序编号对最大图像顺序编号lsb取模的值,其中,所述gdr图像是所述当前图像。例如,所述恢复图像顺序编号值作为恢复poc编号(recovery_poc_cnt)值包括在所述标头中。所述recovery_poc_cnt值表示输出顺序中的经解码图像的恢复点。例如,当所述当前图像为所述gdr图像时,所述编码器还可以在所述标头中设置先前图像不输出(no output of prior pictures)标志。这个标志指示所述解码器在所述恢复点图像之前不输出所述gdr图像和所述相关后置图像,以避免输出包括可能无法完全解码的脏数据的图像。
[0137]
在步骤1009中,所述编码器可以存储所述码流,以发送给解码器。
[0138]
图11为根据指示(signal)的恢复点图像poc从码流(例如码流800)中解码出使用gdr(例如gdr 600)的视频序列的示例性方法1100的流程图。方法1100可以由解码器(例如编解码系统200、解码器400和/或视频译码设备900)在执行方法100时使用。
[0139]
方法1100可以开始于:解码器开始接收表示视频序列的经译码数据的码流(例如,编码器中使用hrd 500的方法1000的结果)。在步骤1101中,所述解码器接收码流。所述码流包括gdr周期,所述gdr周期包括gdr图像(例如图6所述的gdr图像602)和一个或多个后置图像(例如图6所述的后置图像604)。具体地,所述gdr图像和所述相关后置图像分别包括一个或多个根据帧间预测进行译码的区域(例如第二区域610b和/或未刷新/脏区域612)和根据帧内预测进行译码的区域(例如第一区域610a)。在一些示例中,所述根据帧间预测进行译码的区域和所述根据帧内预测进行译码的区域都可以如图6所示,高度比宽度大。所述码流还包括恢复点图像(例如恢复点图像606)。所述恢复点图像在解码顺序中位于所述gdr周期中的所述gdr图像和所述相关后置图像之后。所述gdr图像可以编码到gdr au中。所述后置图像和所述恢复点图像可以编码到后置au中。
[0140]
所述码流还可以包括与所述gdr图像相关的标头。在各种示例中,所述与所述gdr图像相关的标头为图像头和/或条带头。所述标头包括poc lsb值和恢复图像顺序编号值。具体地,所述poc lsb值在所述恢复图像顺序编号值之前译码到所述标头中。这样,所述解码器可以解析所述标头并根据所述poc lsb获得所述gdr poc,然后解析所述恢复图像顺序编号值。这样一来,所述恢复图像顺序编号值可以在所述恢复图像顺序编号值解析出后立即获得。这可能比在确定出所述gdr poc之前将所述恢复图像顺序编号值存储到存储器中更高效。例如,所述poc lsb值作为ph_pic_order_cnt_lsb值包括在所述标头中。所述ph_pic_order_cnt_lsb值表示当前图像的图像顺序编号对最大图像顺序编号lsb取模的值,其中,所述gdr图像是所述当前图像。例如,所述恢复图像顺序编号值作为recovery_poc_cnt值包括在所述标头中。所述recovery_poc_cnt值表示输出顺序中的经解码图像的恢复点。例如,当所述当前图像为所述gdr图像时,所述标头中设置有先前图像不输出(no output of prior pictures)标志。这个标志指示所述解码器在所述恢复点图像之前不输出所述
gdr图像和所述相关后置图像,以避免输出包括可能无法完全解码的脏数据的图像。
[0141]
在一些示例中,所述码流还包括与所述gdr au相关的bp sei消息。所述bp sei消息提供用于在所述gdr au在解码顺序中的位置上初始化hrd的初始cpb移除时延。此外,所述解码器可以根据所述bp sei消息的存在确定所述码流符合标准,因此是可解码的。例如,所述bp sei消息存在于所述码流中表示hrd已经对所述码流执行一致性测试。
[0142]
在步骤1103中,所述解码器根据所述poc lsb值确定所述gdr图像的poc。例如,所述标头还可以包括含有所述当前图像的所述poc的最高有效位(most significant bit,msb)的值。因此,所述解码器可以根据所述msb和所述lsb确定所述gdr的所述poc。
[0143]
在步骤1105中,所述解码器根据所述gdr图像的所述poc和所述恢复图像顺序编号值,确定恢复点图像poc。例如,所述恢复图像顺序编号值可以包括所述gdr poc与所述恢复点图像poc之间的差值。
[0144]
在步骤1107中,所述解码器根据以所述gdr图像为基础的gdr和所述恢复点图像poc,对所述码流进行解码。例如,所述码流可以使用所述gdr poc和所述恢复点图像poc从所述码流中获取对应的经译码图像和相关后置图像。然后,所述解码器可以根据gdr对所述gdr图像、所述相关后置图像和所述恢复点图像进行解码。所述解码器还可以根据先前图像不输出标志不输出所述恢复点图像之前的所述gdr图像和后置图像。
[0145]
在步骤1109中,所述解码器可以转发在所述恢复点图像之后的一个或多个图像,以显示为经解码视频序列的一部分。
[0146]
图12为根据指示(signal)的恢复点图像poc将使用gdr(例如gdr 600)的视频序列译码到码流(例如码流800)中的示例性系统1200的示意图。系统1200可以由使用hrd500的编码器和解码器(例如编解码系统200、编码器300、解码器400和/或视频译码设备900)实现。此外,系统1200可以在实现方法100、方法1000和/或方法1100时使用。
[0147]
系统1200包括视频编码器1202。视频编码器1202包括编码模块1203,用于将gdr图像和解码顺序在所述gdr图像之后的恢复点图像编码到码流中。编码模块1203还用于将与所述gdr图像相关的标头编码到所述码流中,其中,所述标头包括poc lsb值,所述poc lsb值在恢复图像顺序编号值之前译码。视频编码器1202还包括确定模块1205,用于确定所述gdr图像的所述poc lsb值和所述恢复点图像的恢复图像顺序编号值。视频编码器1202还包括存储模块1206,用于存储所述码流,以发送给解码器。视频编码器1202还包括发送模块1207,用于将所述码流发送给解码器,以重建到视频序列中。视频编码器1202还可以用于执行方法1000的任一步骤。
[0148]
系统1200还包括视频解码器1210。视频解码器1210包括接收模块1211,用于接收码流,其中,所述码流包括gdr图像、解码顺序在所述gdr图像之后的恢复点图像、和与所述gdr图像相关的标头(header),所述标头包括poc lsb值,所述poc lsb值在恢复图像顺序编号值之前译码。视频解码器1210包括确定模块1213,用于根据所述poc lsb值,确定所述gdr图像的poc。确定模块1213还用于根据所述gdr图像的所述poc和所述恢复图像顺序编号值,确定恢复点图像poc。视频解码器1210还包括解码模块1215,用于根据以所述gdr图像为基础的gdr和所述恢复点图像,对所述码流进行解码。视频解码器1210还包括转发模块1217,用于转发在所述恢复点图像之后的一个或多个图像,以显示为经解码视频序列的一部分。视频解码器1210还可以用于执行方法1100的任一步骤。
[0149]
当第一组件与第二组件之间除线、迹线或其它介质之外不存在中间组件时,第一组件与第二组件直接耦合。当第一组件与第二组件之间除线、迹线或其它介质之外还存在中间组件时,第一组件与第二组件间接耦合。术语“耦合”及其变体包括直接耦合和间接耦合。除非另有说明,否则使用术语“约”表示包括后续数字
±
10%的范围。
[0150]
还应当理解,本文中阐述的示例性方法的步骤不一定需要按照所描述的顺序执行,并且这些方法的步骤的顺序应当理解为仅仅是示例性的。同理,在与本发明各种实施例相一致的方法中,这些方法可以包括其它步骤,并且某些步骤可以省略或组合。
[0151]
虽然本发明提供了若干个实施例,但应当理解,在不脱离本发明的精神或范围的情况下,所公开的系统和方法可以通过其它多种具体形式体现。本发明的示例将被视为说明性而非限制性的,且本发明并不限于本文中所给出的详细内容。例如,各种元件或组件可以组合或集成在另一系统中,或者一些特征可以省略或不实施。
[0152]
另外,在不脱离本发明范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、组件、技术或方法组合或集成。其它变更、替换、更改示例能够由本领域技术人员确定,并且可以在不脱离本文公开的精神和范围的情况下进行。