在视频编码中解码图片缓冲器的部分输出的制作方法

未命名 10-09 阅读:139 评论:0


1.本发明涉及在视频编码中解码图片缓冲器的部分输出,并且具体地但非排他地,涉及用于解码图片缓冲器的部分输出的方法和系统、使用这样的方法的视频解码器装置、视频编码器装置和比特流生成器装置、以及用于执行这样的方法的计算机程序产品。


背景技术:

2.比如avc、av1、hevc、vvc等最先进的视频编码标准依赖于假设解码器模型,该假设解码器模型指定了包括图片序列的经编码表示的比特流的缓冲过程、用于对该图片序列的经编码表示进行解码的解码器过程、以及用于在输出该图片序列之前对该图片序列进行缓冲的缓冲过程之间的关系。例如,hevc标准在作为iso/iec 23008-2发布的hevc规范的附件c中定义了所谓的假设参考解码器(hrd)模型。hrd允许编码器指定比特流的约束以识别确保该比特流可以被正确地缓冲、解码和输出所需要的能力。
3.hrd通常定义编码图片缓冲器(cpb)、瞬时解码过程和解码图片缓冲器(dpb)。解码器在其输入处接收包括图片序列的经编码表示的格式化比特流,其中可以包括携带经编码视频数据和相关联元数据的数据结构,比如nal单元。解析器可以从比特流中提取nal单元,对包括有效载荷和相关联元数据的nal单元进行解包,并且使用元数据将经编码视频数据存储在cpb中。元数据可以包括与图片解码顺序(即,要对图片进行解码的顺序)有关的信息、以及用于识别cpb中的图片的与要输出或渲染图片的顺序有关的信息,比如图片顺序计数(poc)。
4.最先进的解码器能够将经编码视频数据存储为访问单元(au)(即,整张图片)或au的子集、表示图片的一部分的解码单元du(例如,图片的独立条带)。因此,在后一种情况下,多个du可以定义完整图片。hrd的操作包括初始化,其中,cpb和dpb两者都被设置为空的,并且此后,假设流调度器(hss)根据指定到达时间表将du输送存储到cpb中。在解码期间,在从cpb移除du时通过瞬时解码过程对du进行移除和瞬时解码。此后,将每个经解码图片放置在dpb中,并且根据进一步定时信息输出该经解码图片。
5.比如hevc标准的hrd模型等当前假设解码器模型定义了访问单元级别(即,整个图片)的输出。因此,原则上,一旦形成图片的所有du已经被解码,就从dpb输出该图片。然而,如今,许多应用程序需要快速访问cpb中的经解码数据。
6.例如,一些应用程序将不同视频对象打包在同一图片内部,而这些不同对象不一定必须一起或同时显示,并且在一些情况下,这些对象在通过渲染步骤被修剪掉时最终根本不显示。这样打包到相同帧中的一个优点是:不同对象通过视频基本流的设计实现了时间锁定(同步),即,属于与特定解码时间戳相对应的单个帧,因此参考媒体时间线的单个时间点。但当这些不同视频对象一起被打包在同一图片中时,它们在解码之后作为单个输出图片全部同时对应用程序可用。因此,应用程序无法对这些对象中的每一个进行精细访问,而是仅当包括其对象的整个图片被解码时才能访问。
7.当对比如立方图投影视频等全向内容进行解码时,图片包含球形视频的不同部分
(面)。在渲染期间,每个面的相关性可以取决于当前用户的视口。因此,对于特定时间实例,一个或多个面可以包含用户的视口的像素,而其他面未被用户看到。因此,可能有利的是,应用程序尽可能快地检索或至少访问下一帧在用户的视口中的已更新像素以应用渲染流水线的其余部分,使得可以以高速率刷新所呈现的图片。
8.因此,从上文得知,本领域需要允许应用程序快速且部分访问解码器的解码像素缓冲器中的经解码数据的改进的视频编码方法和视频编码系统。


技术实现要素:

9.如本领域技术人员将认识到的,本发明的各方面可以体现为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或者在本文中通常可以被称为“电路”、“模块”或者“系统”的组合软件和硬件方面的实施例的形式。本披露内容中描述的功能可以实施为由计算机的微处理器执行的算法。此外,本发明的各方面可以采取在具有在其上体现的、例如存储的计算机可读程序代码的一种或多种计算机可读介质中体现的计算机程序产品的形式。
10.可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁、光、电磁、红外、或半导体系统、装置或设备、或者上述的任何合适的组合。计算机可读存储介质的更具体的示例(非穷举列表)将包括以下各项:具有一个或多个导线的电连接装置、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪速存储器)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储设备、磁存储设备、或者上述的任何合适的组合。在本文献的上下文中,计算机可读存储介质可以是可以包含或存储用于由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的程序的任何有形介质。
11.计算机可读信号介质可以包括具有在其中(例如,在基带中或作为载波的一部分)体现的计算机可读程序代码的传播数据信号。这种传播信号可以采取各种形式中的任何一种,包括但不限于电磁的、光的或其任何合适的组合。计算机可读信号介质可以是并非计算机可读存储介质并且可以传送、传播、或传输程序以用于由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的任何计算机可读介质。
12.可以使用任何适当的介质传输在计算机可读介质上体现的程序代码,这种介质包括但不限于无线、有线、光纤、电缆、rf等、或者上述的任何合适的组合。用于执行本发明的各方面的操作的计算机程序代码可以以一种或多种编程语言的任何组合编写,该一种或多种编程语言包括比如java(tm)、smalltalk、c++等面向对象的编程语言和比如“c”编程语言或相似的编程语言等常规过程编程语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为独立软件包执行、部分地在用户计算机上执行并部分地在远程计算机上执行、或完全地在远程计算机或服务器上执行。在后一种场景中,远程计算机可以通过包括局域网(lan)或广域网(wan)的任何类型网络连接到用户计算机,或可以进行与外部计算机的连接(例如,使用互联网服务提供商、通过互联网)。
13.下面参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解的是,流程图和/或框图的每个框以及流程图和/或
框图中的框的组合可以由计算机程序指令实施。可以将这些计算机程序指令提供给通用计算机、专用计算机、或其他可编程数据处理装置的处理器,特别是微处理器或中央处理单元(cpu),以产生机器,使得经由计算机、其他可编程数据处理装置或其他设备的处理器执行的指令创建用于实施流程图和/或框图的一个或多个框中指定的功能/动作的装置。
14.这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以指导计算机、其他可编程数据处理装置、或其他设备以用特殊的方式发挥功能,从而使得存储在该计算机可读介质中的指令产生包括指令的制品,这些指令实施流程图和/或框图的一个或多个框中指定的功能/动作。
15.计算机程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以引起在计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实施的过程,从而使得在计算机或其他可编程装置上执行的指令提供用于实施在流程图和/或框图的一个或多个框中指定的功能/动作的过程。另外,指令可以由任何类型的处理器执行,包括但不限于一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)、或其他等效的集成或分立的逻辑电路系统。
16.附图中的流程图和框图展示了根据本发明的各实施例的系统、方法和计算机程序产品的可能实施方式的体系架构、功能和操作。关于此,流程图或框图中的每个框可以表示包括用于实施(多个)指定逻辑功能的一个或多个可执行指令的代码的模块、片段或部分。还应当指出的是,在一些替代实施方式中,框中标明的功能可以不按图中标明的顺序发生。例如,根据涉及的功能,连续示出的两个框实际上可能基本上同时执行,或者这些框可能有时以相反的顺序被执行。还将指出的是,可以通过执行指定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实施框图和/或流程图的每个框与框图和/或流程图中框的组合。
17.本披露内容中的实施例的主要见解是,在图片的经编码表示包括多个解码单元(du)的情况下,该解码器装置可以被配置为在完整图片被解码并存储在该解码器装置的解码图片缓冲器dpb中之前(即,在经编码图片的所有du从cpb被移除之前)执行完整图片的部分重建的输出(当前图片的部分输出)。本披露内容中描述的实施例允许应用程序编程接口api或应用程序、特别是超低时延应用程序(例如,vr应用程序或图像后处理应用程序)在图片被完全解码之前访问包含存储在dpb中的当前图片一部分的数据槽。应用程序可以访问数据槽中的经解码图片(的一部分),而图片的其他部分尚未被解码(即,du还未到达cpb或还未从cpb移除)。这样,应用程序可能已经基于当前图片的第一部分开始渲染过程或视频处理步骤,而当前图片的第二部分仍在被解码。
18.数据槽中的经解码信息通过部分图片输出方案变得可用的粒度可能取决于应用程序的类型。此处,可以通过部分输出变得可用的最小单元被称为解码单元du,即,发生解码器过程(例如,在avc中输出一个或多个宏块或者在hevc或vvc中输出一个或多个编码树单元(ctu))的基本处理单元。还可以在更高级别的图片分割方案中实现dpb的子图片输出,比如如分别在hevc和vvc中定义的解码单元(du)或子图片。经编码du可以表示是经编码图片的一部分的经编码样本块。经解码du可以定义预定形状的样本区域,例如矩形样本区域、三角形样本区域等。
19.在第一方面,本发明可以涉及一种处理图片序列的经编码表示的方法。该方法可
以包括由解码装置的处理器在解码图片缓冲器dpb中为一个或多个图片分配存储器。该方法可以包括由该处理器接收包括当前图片的经编码表示的比特流。该当前图片的经编码表示可以包括多个解码单元du,其中,该多个du中的每一个可以包括一组经编码像素。该方法可以进一步包括由该处理器将该当前图片的多个du存储在编码图片缓冲器cpb中。该方法可以进一步包括:由该处理器将该多个du解码为该当前图片的经解码du,并且将这些经解码du存储在该dpb的所分配存储器中;以及由该处理器在该当前图片的多个du的解码期间执行该dpb中的du的至少一个部分输出。
20.因此,本发明允许解码器装置在该图片的解码过程期间执行图片的经解码du的一个或多个部分输出。这样,一旦通过解码器装置的解码过程可获得经解码数据,api或应用程序就可以使用并处理图片的一部分的经解码数据。可以加速由应用程序对经解码视频数据进行这种方式的处理。
21.在实施例中,该执行该至少一个部分输出可以包括:在该多个du中的所有du被解码之前将这些经解码du中的一个或多个从该dpb复制到数据槽。因此,该部分输出可以包括:在该多个du中的所有du被解码之前将这些经解码du中的一个或多个从该dpb复制到数据槽。此处,数据槽是能够从解码器装置接收数据的任何存储或缓冲装置的通用术语。数据槽的实施例包括外部缓冲器,例如vr应用程序的渲染缓冲器、套接字、存储器、管线、硬盘等。数据槽可以定位在解码器的输出与实际应用程序之间,例如,作为中间件或解码器接口应用程序的一部分。在其他实施例中,数据槽可以是解码器装置的一部分,例如,在解码器控制器的控制下的解码器存储器。
22.在实施例中,每个经解码du可以包括表示该当前图片中的区域的一组像素,该数据槽可由在该解码器装置外部的应用程序访问。
23.在实施例中,该图片序列的经编码表示中的经编码图片可独立于在该图片序列的经编码表示外部的经编码图片进行解码。
24.在实施例中,该执行该至少一个部分输出可以包括确定标识该当前图片中与该一个或多个复制的经解码du相关联的区域的输出信息。
25.在另一实施例中,该执行该至少一个部分输出可以包括优选地经由应用程序编程接口api提供对供该应用程序使用的该输出信息的访问。
26.在又一实施例中,该输出信息可以进一步包括以下项中的至少一项:指示该当前图片的经编码表示是否被完全解码的信息;指示尚未被解码的du数量和/或被解码的du数量的信息;或用于确定尚未被解码的du数量和/或被解码的du数量的信息;该当前图片中尚未被解码的一个或多个区域和/或该当前图片中被解码的一个或多个区域。
27.在实施例中,该提供对该输出信息的访问可以包括将已执行该部分输出用信号发送给该应用程序或该api。
28.在另一实施例中,可以响应于将这些经解码du中的一个或多个复制到该数据槽或响应于接收到来自该应用程序或该api的请求而执行该信令。
29.在实施例中,该图片序列可以与输出顺序相关联,其中,该输出顺序定义了该图片序列的图片由该解码器装置输出的顺序。在另一实施例中,该图片序列可以与定义经编码图片被解码的顺序的解码顺序相关联。
30.在实施例中,该输出顺序可以基于图片顺序信息,该图片顺序信息标识该图片序
列中的图片并且指示该图片相对于该序列中的其他图片的输出顺序位置的输出顺序位置。在实施例中,该图片顺序信息可以包括图片顺序计数poc值。
31.在实施例中,如果该输出顺序用信号表示可以输出该当前图片,则可以执行将该一个或多个经解码du复制到该数据槽。在实施例中,该输出顺序信息可以包括输出顺序位置标识符,例如与该当前图片相关联的poc值可以用信号表示可以输出该当前图片。
32.在实施例中,该图片序列可以与输出顺序相关联,该输出顺序定义了该图片序列中的图片由该解码器装置输出的顺序,该图片序列中的每个图片与输出顺序位置相关联,该图片序列进一步与解码顺序相关联,该解码顺序定义了该图片序列中的图片由该解码器装置解码的顺序,该图片序列中的每个图片与解码顺序位置相关联。
33.在实施例中,确定输出信息可以进一步包括:如果该当前图片的解码顺序位置与该当前图片的输出顺序位置不同,则将输出顺序位置标识符添加到该输出信息。
34.在实施例中,该输出顺序位置标识符可以基于图片顺序信息,例如,一个或多个图片顺序计数poc值,其中,poc值可以标识该图片序列中的图片,并且其中,该poc值指示该图片相对于该序列中的其他图片的输出顺序位置的输出顺序位置。
35.在实施例中,该图片序列可以与解码顺序和输出顺序相关联,该图片序列的解码顺序与该图片序列的输出顺序相同。
36.为了通知api或应用程序关于当前图片的解码状态,可以确定输出信息。这样,可以通知api或应用程序通过解码器装置使哪些经解码像素值在数据槽中可用。该输出信息可以是解码状态消息的形式。这样的消息的数据格式可以如下所示:
[0037][0038]
如这个表中所示出的,消息包括与图片的解码状态相关联的不同语法元素。消息可以包括用于用信号表示图片是否被完全解码的标志incomplete_flag。将在解码期间更新该消息直到每个区域填充有du像素为止。可以在每个部分输出处将这个消息或至少在该消息中的信息用信号发送给应用程序。在实施例中,消息可以由解码器装置或与解码器装置相关联的解码器api生成,并且被发送到应用程序。
[0039]
在另一实施例中,可以执行将这些经解码du中的一个或多个复制到该数据槽,而不管该当前图片的poc值是否用信号表示应输出当前图片。在这种情况下,在实施例中,确
定输出信息可以包括将该当前图片的poc值添加到该输出信息。
[0040]
在这种情况下,在实施例中,该输出信息可以包括解码状态消息,该解码状态消息可以包括关于poc的信息,例如,比如poc_present_flag等标志和poc值。例如,如果设置了标志,则解码状态消息可以包括du的图片的poc值。
[0041][0042]
在实施例中,该提供对该输出信息的访问可以包括
[0043]
将已执行该部分输出用信号发送给该应用程序或该api。在实施例中,可以响应于将这些经解码du中的一个或多个复制到该数据槽或响应于接收到来自该应用程序或该api的请求而执行该信令。
[0044]
在实施例中,执行至少一个部分输出可以包括:将存储在该dpb中的一个或多个经解码du标记为准备用于部分输出,该标记将不响应于执行该至少一个部分输出而从该dpb中移除该一个或多个经解码du用信号发送给该解码器装置。
[0045]
在另一实施例中,在执行该至少一个部分输出之前,该处理器可以确定是否可以或应执行部分输出。
[0046]
在实施例中,该确定可以包括确定比特流中的元数据是否用信号表示可以或应执行部分输出,该元数据优选地是部分输出标志和/或补充增强信息sei消息,比如图片定时sei消息;
[0047]
在另一实施例中,该确定可以包括确定比特流中的元数据、优选地滤波标志是否用信号表示激活或停用环内滤波,优选地,用信号表示跨存储在该dpb中的至少两个相邻经解码du之间的边界激活或停用环内滤波。
[0048]
在实施例中,如果元数据用信号表示可以或应进行部分输出,则确定元数据是否包括用于在对经编码图片进行解码期间执行一个或多个部分输出的定时信息。在实施例中,该定时信息包括用于执行该一个或多个部分输出的输出间隔。
[0049]
在这个实施例中,新的语法元素(dpb partial output time delay参数)可以用于将可以在每个时间段(由间隔定义的)之后执行部分图片输出用信号发送给符合hrd的解
码器。这样,在解码过程期间,在picture dpb output delay结束之前dpb中的经解码信息变得可用于输出。
[0050]
因此,本技术中的实施例基于解码过程不是瞬时的而是需要特定量的时间的见解。在这个解码时间期间,可以使dpb中的经解码信息可用于输出,使得它可能已经被应用程序使用。实际上,这意味着在一个或多个时间实例(由dpb部分输出间隔定义的),dpb中直到这些时间实例中的每一个的时刻所处理的经解码信息被传输到数据槽,使得该经解码信息可以在如例如由picture dpb output delay参数定义的时间间隔结束之前由应用程序访问。因此,在经编码图片的解码期间,可以在picture dpb output delay结束之前发生经解码信息从dpb到数据槽的一个或多个(多次)传输。
[0051]
在实施例中,如果元数据用信号表示可以或应进行部分输出,则确定元数据是否包括用于在经编码图片的解码期间执行一个或多个部分输出的定时信息。在实施例中,该定时信息可以包括用于执行该一个或多个部分输出的输出间隔。
[0052]
在实施例中,该数据槽可以包括至少与经解码du的大小相匹配的至少一个缓冲器。在实施例中,执行至少一个部分输出可以包括:将该dpb中的经解码du的像素复制到该至少一个缓冲器;
[0053]
在实施例中,该数据槽可以包括至少n个缓冲器,n是大于二的整数。在实施例中,该整数n可以等于该多个du的数量。在实施例中,该n个缓冲器中的每一个的大小可以与经解码du的大小相匹配。在另一实施例中,执行至少一个部分输出包括:在该n个缓冲器中的至少一个中复制该经解码du的像素;
[0054]
在实施例中,该数据槽包括至少与至少一个图片或整数数量的图片的大小相匹配的至少一个缓冲器,该执行至少一个部分输出包括:根据经解码du的像素在该当前图片中的位置将该du的像素复制到该缓冲器中的某个位置处。
[0055]
在实施例中,du可以基于如在avc中定义的一个或多个宏块、如在hevc中定义的一个或多个编码树单元ctu、如在hevc或vvc中定义的一个或多个条带或者如在vvc中定义的一个或多个子图片。
[0056]
在实施例中,该解码可以基于编码标准,优选地基于块的视频编码标准,更优选地avc、hevc、vp9、av1、vvc、evc编码标准或者基于该avc、hevc、vp9、av1、vvc、ev编码标准的编码标准。
[0057]
在另一方面,本发明可以涉及一种可以被配置为执行上文描述的方法步骤中的任何方法步骤的解码器装置。
[0058]
本发明还可以涉及一种解码方法,该解码方法包括以下步骤:指示解码器覆盖用于控制输出经解码图片的时间和/或条件的参数,其中,该输出包括将经解码图片从dpb复制到数据槽中;接收包括经编码图片的比特流,这些经编码图片按解码顺序布置在该比特流中,并且将这些经编码图片的至少一部分按解码顺序存储在编码图片缓冲器cpb中;对存储在该cpb中的经编码图片进行解码,将该经解码图片存储在该解码图片缓冲器dpb中,并且如果该经解码图片被用作对另一图片进行解码的参考图片,则通过将该经解码图片从该cpb复制到该数据槽中来直接输出该经解码图片而无需从该dpb移除该解码图片缓冲器;以及,将已执行该dpb的输出用信号发送给与该数据槽相关联的应用程序或应用程序编程接口api。在实施例中,该信令包括与该图片的呈现顺序相关联的信息,例如,图片顺序计数标
志和/或图片顺序计数(poc)值。
[0059]
因此,在这个实施例中,该解码器可以经由aip通信地连接到需要快速访问该dpb中的经解码图片的应用程序。解码器可以覆盖包括比如pic_spt_dpb_output_du_delay或pic_dpb_output_du_delay(其指定在从cpb移除au中的最后一个du之后在从dpb输出经解码图片之前等待多少子时钟刻度)等hdr延迟参数的参数或者引入解码延迟的任何其他类似标志。一旦帧准备好,就将其放置在数据槽中使得应用程序可以使用该帧,例如用于比如滤波操作等数据处理操作。在这种情况下,数据槽需要足够大以保存多个图片,并且需要将经解码图片保持在dpb中,只要需要这些图片用作参考(因为从dpb移除的条件可能仍然适用)。
[0060]
在另一方面,本发明可以涉及一种用于处理图片序列的经编码表示的解码装置。在实施例中,该解码装置可以包括:计算机可读存储介质,该计算机可读存储介质具有用其体现的程序的至少一部分;以及计算机可读存储介质,该计算机可读存储介质具有用其体现的计算机可读程序代码;以及处理器,优选地微处理器,该处理器耦合至该计算机可读存储介质,其中,响应于执行该计算机可读程序代码,其中,该处理器可以被配置为执行可执行操作,这些可执行操作包括:在解码图片缓冲器dpb中为一个或多个图片分配存储器;由该处理器接收包括当前图片的经编码表示的比特流,该当前图片的经编码表示包括多个解码单元du,该多个du中的每一个包括一组经编码像素;将该当前图片的多个du存储在编码图片缓冲器cpb中;将该多个du解码为该当前图片的经解码du,并且将这些经解码du存储在该dpb的所分配存储器中;在该当前图片的多个du的解码期间执行至少一个部分输出,该执行该至少一个部分输出包括:在对该多个du中的所有du进行解码之前将这些经解码du中的一个或多个从该dpb复制到数据槽,每个经解码du包括表示该当前图片中的区域的一组像素,该数据槽可由在该解码器装置外部的应用程序访问。
[0061]
在实施例中,该图片序列的经编码表示中的经编码图片可独立于在该图片序列的经编码表示外部的经编码图片进行解码。在实施例中,该执行该至少一个部分输出进一步可以包括确定标识该当前图片中与该一个或多个复制的经解码du相关联的区域的输出信息。在另一实施例中,该执行该至少一个部分输出进一步可以包括优选地经由应用程序编程接口api提供对供该应用程序使用的该输出信息的访问。
[0062]
在又一实施例中,该输出信息可以进一步包括以下项中的至少一项:指示该当前图片的经编码表示是否被完全解码的信息;指示尚未被解码的du数量和/或被解码的du数量的信息;或用于确定尚未被解码的du数量和/或被解码的du数量的信息;该当前图片中尚未被解码的一个或多个区域和/或该当前图片中被解码的一个或多个区域。
[0063]
在实施例中,该提供对该输出信息的访问可以包括将已执行该部分输出用信号发送给该应用程序或该api。
[0064]
在另一实施例中,可以响应于将这些经解码du中的一个或多个复制到该数据槽或响应于接收到来自该应用程序或该api的请求而执行该信令。
[0065]
在另一方面,本发明可以涉及一种用于确定图片序列的经编码表示的编码器装置。在实施例中,该编码器装置可以包括:计算机可读存储介质,该计算机可读存储介质具有用其体现的计算机可读程序代码;以及处理器,优选地微处理器,该处理器耦合至该计算机可读存储介质,其中,响应于执行该计算机可读程序代码。进一步地,该处理器可以被配
置为执行包括以下步骤中的一个或多个的可执行操作:接收包括像素的图片序列;识别该图片序列中的当前图片的像素区与该图片序列中的其他图片的像素区之间的编码相依性;将该当前图片编码成多个解码单元du,该多个du中的每一个包括一组经编码像素;将该多个du变换成比特流,该比特流包括用于对这些du进行解码的元数据,该元数据包括将可以或应执行部分输出用信号发送给解码器的信息,优选地该信息包括部分输出标志和/或信令消息,比如补充增强信息sei消息,例如图片定时sei消息;以及将包含这些du和该元数据的所述比特流存储在输出缓冲器或存储介质中。
[0066]
在实施例中,如果元数据用信号表示可以或应进行部分输出,则确定元数据是否包括用于在对经编码图片进行解码期间执行一个或多个部分输出的定时信息。
[0067]
元数据可以包括上文描述的可以帮助解码器通过该解码器装置执行部分输出的任何参数。
[0068]
在又一方面,本发明可以涉及一种用于修改图片序列的经编码表示的比特流生成装置,该比特流生成装置被配置为:接收包括图片序列的经编码表示的比特流;解析该比特流并且针对该序列中的图片的每个经编码表示识别表示当前图片的多个du,该多个du中的每一个包括一组经编码像素;在该比特流中注入元数据以形成修改后的比特流,该元数据包括将可以或应执行部分输出用信号发送给解码器的信息,优选地该信息包括部分输出标志和/或信令消息,比如补充增强信息sei消息,例如图片定时sei消息;以及输出该修改后的比特流。
[0069]
本发明还可以涉及一种计算机程序产品,该计算机程序产品包括软件代码部分,这些软件代码部分被配置用于当在计算机的存储器中运行时执行根据上文描述的任何过程步骤所述的方法步骤。在本技术中,使用以下缩写词和术语:
[0070]
将参考附图进一步说明本发明,附图将示意性地示出根据本发明的实施例。将理解的是,本发明不以任何方式局限于这些具体实施例。
附图说明
[0071]
图1a和图1b是展示了用于假设参考解码器(hrd)的缓冲器模型的框图。
[0072]
图2a至图2c展示了解码单元和图片序列结构的概念。
[0073]
图3a和图3b是展示了根据本发明的实施例的修改后的假设参考解码器(hrd)模型的框图。
[0074]
图4描绘了根据本发明的实施例的解码过程的流程图;
[0075]
图5描绘了用于生成适合于部分输出的比特流的编码器装置;
[0076]
图6描绘了根据本发明的实施例的被配置为执行部分输出的解码器装置。
[0077]
图7a和图7b描述了根据本发明的另一实施例的解码过程的示意图。
[0078]
图8描绘了根据本发明的实施例的缓冲器输出方案。
[0079]
图9描绘了根据本发明的另一实施例的缓冲器输出方案。
[0080]
图10a至图10c描绘了根据本发明的各种实施例的缓冲器输出方案。
[0081]
图11描绘了根据本发明的实施例的部分读出方案的示例。
[0082]
图12描绘了展示可以与本披露内容中描述的实施例一起使用的示例性数据处理系统的框图。
具体实施方式
[0083]
图1a和图1b是展示了如在hevc视频标准(作为iso/iec 23008-2和建议itu-t h.265发布的hevc规范的附件c)中定义的用于假设参考解码器(hrd)的缓冲器模型的框图。大部分编解码器使用标准化解码器模型来指定关于在编码和解码期间使用的缓冲器的约束。如图1a中所示出的,由假设流调度器(hss)102输送比特流,该比特流包括根据指定到达时间表馈送到编码图片缓冲器cpb 104的输入的图片的经编码表示。经编码图片和相关联元数据是从比特流中提取的并且存储在编码图片缓冲器cpb中。该cpb是用于在被提供到解码过程106之前存储经编码图片的先进先出缓冲器。在一些情况下,每个经编码图片可以包括多个解码单元(du)。在这种情况下,经编码图片可以在比特流中输送到cpb并且作为du存储在cpb中。然后,通过以预定顺序将多个du中的每一个提供到解码过程104来对经编码图片进行解码。一旦提供到解码过程,就从cpb移除du。由于解码过程是被瞬时考虑的,因此在从cpb移除du时对du进行解码。
[0084]
通过解码过程104产生的经解码du存储在解码图片缓冲器dpb 106中。dpb是保存经解码图片(的样本)用作参考(例如,帧间预测)并且用于延迟输出的缓冲器。当帧间预测不再需要并且输出不再需要经解码图片时可以从dpb移除该经解码图片。在一些示例中,dpb 106中的经解码图片可以在被输出和显示之前由输出裁剪单元108裁剪。输出裁剪单元108可以是视频解码器的一部分或可以是外部处理器的一部分,例如,被配置为进一步处理视频解码器的输出的渲染引擎。cpb和dpb的行为在数学上由假设参考解码器模型指定,该模型对不同定时、缓冲器大小和比特率施加约束。典型hrd参数可以包括比如以下项等参数:初始cpb移除延迟、cpb大小、比特率、初始dpb输出延迟和dpb大小。
[0085]
图1b描绘了定义图片序列(例如,经编码视频序列(cvs)或图片组(gop))的解码的hrd的定时模型,该图片序列形成可以在不具有任何进一步信息的情况下解码的独立视频数据集。图片的解码被定义为在t=0开始并且在序列的最后一图片被解码并且被输出时结束的一连串步骤。定义hrd以用于解码两个访问单元(au),其中,每个au表示完整图片的经编码样本以及解码单元(du),其中,每个du表示图片的一部分的经编码样本(在vvc中被称为子图片)。这个模型考虑了数个事件,其中,每个事件在解码过程期间与一个时间点相关联:
[0086]-cpb中的第(i+1)个du的初始到达(前几个比特)和最终到达(最后几个比特),和
[0087]-从cpb移除第i个du,
[0088]-dpb中的第(i-1)个经解码du(ddu)的到达,
[0089]-图片的输出,
[0090]
在这里,从cpb移除经编码du并且经解码du到达dpb相同于在比如hevc和vvc等编码标准中假设du的解码过程是瞬时的。
[0091]
cpb的输入是包括du的比特流,其中,du可以是au或au的子集。cpb移除基于访问单元(au),即完整经编码图片,该访问单元可以被格式化为包括一个经编码图片的数据的一组网络抽象层(nal)单元。au的子集的示例可以是例如au的条带,如图2a中所示出的。这个图展示了例如包括一组nal单元的比特流,该组nal单元包括形成au的非vcl nal单元(vsp、
sps和pps)以及两个vcl nal单元。这个示例因此展示了包括被划分为两个条带2041、2042的视频帧202的经编码表示的比特流,每个条带占据帧的二分之一并且对该帧进行水平划分。当解码器接收到比特流时,它可以解析比特流并提取vcl nal单元并且将vcl nal单元中的每一个存储为du。这样的du可以是例如图片的条带。
[0092]
对于对帧的解码可以例如被分解为解码多个块行的低延迟应用程序,在比如hevc标准等标准中引入被定义为au子集的du。可以使用sei消息将定时信息指派给du。例如,图片定时sei消息可以用于指示整个访问单元的编码图片缓冲器(cpb)移除和解码图片缓冲器(dpb)移除的定时。因此,在hrd模型中引入du的概念以能够在图片(视频帧)的并非所有du已到达cpb的同时开始该图片的解码。这样,可以减少由于例如编码和传输而在解码器装置的输入层发生的延迟。然而,cpb的输出由hrd在图片级别进行管理,因此dpb中的经解码du的概念不具有任何功能用途。
[0093]
在本技术中,在修改后的hrd模型中扩展并使用如参考图1和图2描述的du的概念,以实现图片的区域的经解码像素组的低延迟输出。此处,在整个图片被解码之前实现经编码图片的经解码像素组的输出(即,图片的一部分的输出)。在本技术中,术语du可以是指在任何已知或未来视频编码标准中定义的基本解码单元。例如,du可以表示图片(子图片)的一部分的经编码像素,包括一些元数据(如例如图2a中所示出的)。
[0094]
du的示例可以包括从avc中已知的一个或多个宏块、从hevc和vvc中已知的一个或多个编码树单元(ctu)或从vvc中已知的子图片。du形成了形成图片中的区域的一组像素的经编码表示,其中,一个du的经编码像素对同一图片的其他du的经编码像素将不具有任何空间编码相依性。形成图片中的区域的该组像素可以在本技术中被称为输出图片区域。
[0095]
dpb的大小取决于编码层次结构,因为该dpb被配置为保存将用于解码图片序列结构中的当前图片和/或一个或多个未来图片的参考图片。例如,可能发生的情况是,取决于经解码图片的结构,图片首先被解码,但仅稍后才呈现。无序编码就是这种情况,其中,比特流中的经编码图片是按解码顺序布置的。由于编码相依性,dpb可以在短周期内保存某些经解码图片,直到对图片进行解码所需的所有图片都被解码为止。此后,如果解码不再需要经解码图片,则可以输出经解码图片并且将其从dpb移除。
[0096]
这一点在图2b和图2c中展示,这些图示出了按输出顺序布置的经编码图片p1至p4和b1至b4的两个序列,其中,编号指示解码顺序。由于解码相依性,因此对这些序列进行解码在这些示例中需要(至少)三个图片的dbp大小。例如,当p3正在被解码时图2a中的经解码图片p1和p2都需要存储在dpb中,因为它们都是在p3之后输出的。因此,dpb需要能够同时存储p1、p2和p3。类似地,在图2b中,每个图片使用两个参考图片,因此dpb需要足够大以同时存储三个图片。例如,对b2进行解码需要经解码图片b0和b1。图2b中的参考结构是基于b图片的所谓的低延迟结构的示例,其中,广泛使用双向预测。在这个结构中,编码顺序和输出顺序是相同的。
[0097]
在hevc hrd模型中,可以在au级别(整个图片)或du级别(子图片)管理从cpb移除经编码视频数据,其中,假设au或du的解码是瞬时的。au定义了形式是一组网络抽象层(nal)单元的数据结构,包括一个经编码图片。解码器可以遵循由视频编码器生成的用信号表示的解码时间(例如,如在所谓的图片定时补充增强信息(sei)消息中定义的)来开始au的解码。hrd模型定义了可以用于控制解码和输出的定时的语法元素。
[0098]
cpb可以在au级别(即,图片级别)或du级别(子图片级别,即,小于整个图片)操作。au或du级别操作可以取决于解码器是否优选子图片级别cpb操作(这可以由未在hevc标准中指定的外部装置来指定)以及比特流中是否存在子图片cpb参数(或经由未在hevc标准中指定的外部装置提供给解码器)。当两个条件都成立时,cpb可以在子图片级别操作,使得每个du被定义为au的子集。比特流中的参数和/或标志可以将解码器应在哪种模式中操作用信号发送给解码器。例如,如果语法元素subpiccpbflag等于0,则du可以等于au,否则du是au的子集。
[0099]
编码器或应用程序可以在比特流中插入hrd参数以基于hrd模型来控制解码过程。例如,在实际视频应用程序中,解码器装置可以遵循由视频编码器生成的用信号表示的解码时间(例如,如在所谓的图片定时补充增强信息(sei)消息中定义的)来开始au的解码。在这种情况下,输出特定经解码图片的最早可能时间等于该特定图片的解码时间(即图片开始被解码的时间)加上对该特定图片进行解码所需的时间(在hrd模型中该时间被假设为瞬时的)。
[0100]
利用视频编解码器的视频应用程序不仅包括流式传输和广播/多播应用程序,而且包括虚拟现实(vr)和游戏应用程序。虚拟现实和游戏应用程序是消费所谓的全向内容的视频应用程序的示例。当编码全向内容时,比如立方图投影等特殊投影用于将球面上的像素映射在视频图片的2d平面上。这样投影的视频帧包括球形视频的不同部分,其中,所渲染的内容是由当前用户的视口确定的。全向内容的其他示例可以包括例如点云数据,其中,点云的每个点表示定义3d空间的坐标系中的矢量。在每个时间实例处,全向视频的一些部分由用户的视口覆盖,而其他部分未由用户的视口覆盖。因此,对于应用程序来说是有利的,尽快地从下一帧检索用户的视口中更新的样本以能够刷新所呈现的图片。因此,对于这些应用程序,期望低延迟渲染流水线,其中,期望快速访问cpb中的经编码样本和dpb中的经解码样本。
[0101]
然而,当前的hrd模型不允许应用程序在整个图片被解码并且已离开dpb进入数据槽之前访问经解码图片。实际上,dpb是解码器的内部缓冲器并且不可由外部应用程序访问。此外,一旦图片已经被完全解码,hrd模型就仅允许从dpb输出图片。du使得能够在cpb接收到经编码图片的所有du之前对cpb中的du进行解码,但是输出总是在图片被完全解码时。然而现在,许多应用程序将不同视频对象打包在同一图片内部,而这些不同对象不一定必须一起或同时显示,并且在一些情况下,这些对象在通过渲染步骤修剪时最终根本不显示。这样打包到相同帧中的一个优点是:不同对象通过视频基本流的设计实现了时间锁定(同步),即,属于与特定解码时间戳相对应的单个帧,因此参考媒体时间线的单个时间点。但当这些不同视频对象一起被打包在同一图片中时,它们在解码之后作为单个输出图片全部同时对应用程序可用。也就是说,应用程序无法对这些对象中的每一个进行精细访问,而是仅当某个图片的所有对象都被解码时才能访问它们。
[0102]
这在解码器无法及时解码完整图片而是仅能够对帧的一部分进行解码的情景中可能是有问题的。例如,当解码器/cpu/gpu过热并且性能下降时,当由于网络问题导致图片的一部分未及时到达时,当在向解码器馈送du中出现cpb错误时,当传输/比特流操纵中的错误使一个或多个du不可解码时,和/或当解码过程本身中出现故障时,可能会发生这种情况。
[0103]
本技术中的实施例解决了上述问题。本发明的主要见解涉及修改后的假设参考解码器模型,该假设参考解码器模型使得能够快速访问dpb中的经解码du。修改后的hrd模型进一步考虑到du的编码过程并非瞬时的而是需要多个时钟周期,这可能导致在使经解码图片可用于输出到应用程序方面的延迟。为了解决这个问题,修改后的hrd模型在整个图片被解码之前提供对dpb中的经解码du的访问。这样的快速访问在各用例中是特别有利的,其中,在图片的其他部分仍在被接收或解码的同时需要通过应用程序(比如vr应用程序中的视口)对图片的特定部分进行快速访问。
[0104]
图3a和图3b是展示了根据本发明的实施例的假设参考解码器的缓冲器模型的框图。如图3a中所示出的,根据指定到达时间表将包括经编码图片的比特流输入到编码图片缓冲器cpb 302中。这个过程由假设流调度器(hss)管理。经编码图片和相关联元数据作为解码单元(du)被存储在cpb中。cpb是包含需要被解码的图片的du的缓冲器。类似于图1的hrd模型,可以将视频数据作为比特流输送到cpb的输入并且由解码器装置解析该视频数据。这样,图片的包括视频数据和元数据的nal单元可以作为du存储在cpb中。du的经编码像素组形成图片中的像素区域的经编码表示。这个像素区域在本技术中被称为输出图片区域。
[0105]
本技术中的实施例允许例如应用程序在图片被完全解码之前快速访问图片的部分。这使应用程序能够访问图片的特定部分,而图片的其他部分仍在被解码的过程中或甚至在被解码装置接收的过程中。这样,可以在解码装置的输出侧开始图片的渲染或后处理步骤,而该图片并未被完全解码。
[0106]
在下文,描述了允许对由解码器装置输出的视频数据进行快速渲染或后处理的解码过程。参考图4描述了这样的解码过程的示例。这个图描绘了根据本发明的实施例的解码过程的流程图。如这个图中所示出的,该过程可以从解码器在解码器的解码图片缓冲器(dpb)中为经解码图片分配存储器(步骤402)开始。经解码图片可以包括表示视频数据的样本。该方法可以进一步包括解码器接收包括解码单元(du)的比特流,并且将du存储在解码器的编码图片缓冲器(cpb)中(步骤404)。该比特流可以是包括nal单元的格式化比特流。解析器随后从该比特流中提取nal单元,对包括有效载荷和相关联元数据的nal单元进行解包,并且使用元数据将有效载荷作为du存储在cpb中。此处,一组du可以表示需要被解码成经解码图片的经编码图片。进一步地,du中的每一个可以表示经编码样本块,该经编码样本块表示图片的一部分。
[0107]
在步骤406中,解码器可以确定在经编码图片的解码期间是否可以执行至少一个部分输出。此处,部分输出可以包括将一个或多个经解码du的样本从dpb复制到数据槽,而经编码图片的其他du尚未被解码并从cpb移除和/或到达cpb。一个或多个经解码du可以表示经解码图片的一个或多个部分的样本。如果处理器确定可以执行至少一个部分输出,则解码器可以执行至少一个部分输出操作(步骤408)。部分输出的执行可以包括将存储在dpb中的一个或多个经解码du标记为准备用于部分输出。标记可以将不从dpb移除一个或多个经解码du用信号发送给解码器。
[0108]
另一步骤可以包括将一个或多个带标记的经解码du从dpb复制到数据槽而无需从dpb移除一个或多个经解码du。
[0109]
在实施例(未示出)中,解码器可以将已执行dpb的部分输出用信号发送给与数据
槽相关联的应用程序。在另一实施例中,如果经编码图片的所有du都被解码,则可以将经解码图片标记为可用于输出。在这种情况下,可以将dpb中的完整经解码图片复制到数据槽中并且可以从dpb移除该图片,除非需要该图片作为用于帧间预测的参考图片。
[0110]
本披露内容中的实施例的主要见解是,如果经编码视频的每个经编码图片包含多个du,则解码器可以被配置为在完整图片被解码之前(即在图片的所有du从cpb被移除之前)输出完整图片的部分重建(经解码图片的部分输出)。本披露内容中所描述的实施例允许视频应用程序(例如,vr应用程序或图像后处理应用程序)在经编码图片完全被解码之前访问包括存储在dpb中的图片的一部分的样本的数据槽。因此,本发明使得应用程序能够访问经解码图片的一部分,而该图片的另一部分尚未被解码并且例如仍存储在cpb中或到达cpb(du仍在到达cpb或du尚未从cpb被移除)。这样,在完整图片尚未完全解码的同时应用程序(例如,渲染过程或视频处理步骤)可能已经基于图片的经解码部分开始。
[0111]
图5是展示了视频编码器装置500的框图,该视频编码器装置被配置为提供如参考本技术中的实施例所描述的部分输出功能。视频编码器装置500可以对视频帧或其部分(例如,视频条带)内的视频块执行帧内编码和帧间编码。帧内编码依赖于空间预测来减少或去除给定图片内视频中的空间冗余。帧间编码依赖于时间预测来减少或去除相邻图片或视频序列的图片内视频中的时间冗余。帧内模式(i模式)可以指几种基于空间的压缩模式中的任何一种。帧间模式(比如单向预测(p模式)或双向预测(b模式))可以指几种基于时间的压缩模式中的任何一种。
[0112]
视频编码器装置可以接收要编码的视频数据502。在图5的示例中,视频编码器装置500可以包括分割单元503、模式选择单元504、求和器506、变换单元508、量化单元510、熵编码单元512和解码图片缓冲器514。模式选择单元504进而可以包括运动估计单元516、帧间预测单元520和帧内预测单元520。帧间预测单元可以包括运动矢量预测单元522,该运动矢量预测单元可以被配置为根据本技术中的实施例生成运动矢量预测值候选列表。对于视频块重建,视频编码器装置500还可以包括逆量化和变换单元515以及求和器528。还可以包括比如去块滤波器518等环内滤波器以从重建的视频帧中滤除伪像。除了去块滤波器之外,还可以使用附加的环路滤波器(环内的或环后的)。假使在将经编码图片解码成经解码图片期间使用环内滤波器来滤除伪像,则元数据(例如,标志)可以插入到比特流中以将解码器应在解码期间使用环内滤波器用信号发送给解码器。例如,在hevc中,取决于在每图片或每图片组基础上启用还是禁用环内滤波,可以将是否启用(多个)环内滤波器的信息插入sps或pps消息中。
[0113]
模式选择单元504可以选择编码模式之一(例如,基于比如率失真优化(rdo)函数等优化函数的误差结果选择帧内预测模式或帧间预测模式),并且将得到的帧内编码块或帧间编码块提供给求和器506以生成残差视频数据块(残差块),并且将得到的帧内编码块或帧间编码块提供给求和器528以重建经编码块以用作参考图片。在编码过程期间,视频编码器500可以接收图片并且将该图片分割成多个视频块。模式选择单元504中的帧间预测单元520可以相对于一个或多个参考图片中的一个或多个块来对接收到的视频块执行帧间预测编码,以提供时间压缩。可替代地,模式选择单元中的帧内预测单元518可以相对于与要编码的块在同一图片或条带中的一个或多个相邻块来对接收到的视频块执行帧内预测编码,以提供空间压缩。视频编码器可以执行多次编码过程,例如,以便为视频数据的每个块
选择适当的编码模式。
[0114]
分割单元503可以基于对先前编码过程中的先前分割方案的评估来将视频块进一步分割为子块。例如,分割单元可以最初基于率失真分析(例如,率失真优化)将图片或条带分割为lcu,并且将lcu中的每一个分割为子cu。分割单元可以进一步产生指示将lcu分割为子cu的四叉树数据结构。四叉树的叶节点cu可以包括一个或多个pu和一个或多个tu。
[0115]
运动矢量估计单元516可以执行确定视频块的运动矢量的过程。例如,运动矢量可以指示参考图片内的视频块的预测块(预测单元或pu)(或其他编码单元)相对于在当前图片(或其他编码单元)内被编码的当前块的位移dx,dy。运动估计单元可以通过将视频块的位置与和该视频块的像素值近似的参考图片的预测块的位置进行比较来计算运动矢量。因此,一般而言,运动矢量的数据可以包括参考图片列表(例如,存储在编码器装置的存储器中的已经解码的图片(视频帧)的(索引)列表)、到参考图片列表的索引、运动矢量的水平(x)分量和竖直(y)分量。可以从一个或多个参考图片列表(例如,第一参考图片列表、第二参考图片列表或组合参考图片列表)中选择参考图片,这些参考图片列表中的每一个都标识存储在参考图片存储器514中的一个或多个参考图片。
[0116]
mv运动估计单元516可以生成标识参考图片的预测块的运动矢量并将该运动矢量发送到熵编码单元512和帧间预测单元520。也就是说,运动估计单元516可以生成并发送运动矢量数据,该运动矢量数据标识:包含预测块的参考图片列表、到参考图片列表的标识该预测块的图片的索引、以及用于在所标识的图片内定位预测块的水平分量和竖直分量。
[0117]
代替发送实际运动矢量,运动矢量预测单元522可以预测运动矢量以进一步减少传送运动矢量所需的数据量。在这种情况下,不是对运动矢量本身进行编码和传送,而是运动矢量预测单元522可以生成相对于已知运动矢量、即运动矢量预测值mvp的运动矢量差(mvd)。mvp可以与mvd一起使用以定义当前运动矢量。一般而言,要成为有效的mvp,用于预测的运动矢量指向与当前正被编码的运动矢量相同的参考图片。
[0118]
运动矢量预测单元522可以被配置为建立mvp候选列表,该候选列表可以包括与在空间和/或时间方向上的多个已经编码的块相关联的运动矢量作为mvp的候选。在实施例中,多个块可以包括当前视频帧中已经被解码的块和/或一个或多个参考帧中存储在解码器装置的存储器中的块。在实施例中,多个块可以包括相邻块(即在空间和/或时间方向上与当前块相邻的块)作为mvp的候选。相邻块可以包括与当前块直接相邻的块或在当前块附近(例如,在几块的距离内)的块。
[0119]
当多个mvp候选可用(来自多个候选块)时,mv预测单元522可以根据预定选择标准确定当前块的mvp。例如,mv预测单元522可以基于对编码速率和失真的分析(例如,使用率失真成本分析或其他编码效率分析)来从候选列表中选择最准确的预测值。选择运动矢量预测值的其他方法也是可能的。在选择了mvp之后,mv预测单元可以确定mvp索引,该索引可以用于通知解码器装置将mvp定位在包括mvp候选块的参考图片列表中的什么位置。mv预测单元522还可以确定当前块与所选mvp之间的mvd。可以使用mvp索引和mvd来重建当前块的运动矢量。通常,分割单元和模式选择单元(包括帧内预测单元和帧间预测单元以及运动矢量预测值单元)以及运动矢量估计单元可以是高度集成的。这些单元出于概念性的目的而在图中单独展示。
[0120]
可以通过加法器506从正被编码的原始视频块中减去从模式选择单元504接收到
的预测视频块(如由运动矢量标识)来形成残差视频块。变换处理单元509可以用于将比如离散余弦变换(dct)或概念上类似的变换等变换应用于残余视频块,以便形成具有残差变换系数值的块。在概念上类似于dct的变换可以包括例如小波变换、整数变换、子带变换等。变换处理单元509将变换应用于残差块,从而产生变换后的残差块。在实施例中,变换后的残差块可以包括残差变换系数块。变换可以将残差信息从像素值域转换到变换域(比如频域)。变换处理单元509可以将所产生的变换系数发送到量化单元510,该量化单元对变换系数进行量化以进一步降低比特率。
[0121]
控制器517可以将编码过程的语法元素(元数据)(比如帧间模式指示符、帧内模式指示符、分割信息和语法信息)提供给熵编码和比特流格式化器单元512。此处,语法元素可以包括用于用信号表示(所选)运动矢量预测值(例如,编码器所选择的mvp候选的指示,例如索引列表中的索引)、运动矢量差以及与运动矢量预测过程相关联的元数据的信息。控制器可以基于可以定义语法元素(例如,部分输出是可能的标志和/或用于部分输出的定时的图片定时sei消息)的hrd模型511来控制编码过程,这些语法元素可以用于生成适合于部分输出的格式化比特流513。例如,在编码过程期间,编码器可以将使解码器装置能够部分地输出存储在dpb中的经解码du的参数和/或消息(比如sei消息)插入到比特流中。下文更详细地描述了这样的消息的示例。
[0122]
逆量化和逆变换单元515可以被配置为分别应用逆量化和逆变换,以在像素域中重建残差块,例如,以供稍后用作参考块。帧间预测单元520可以通过将残差块添加到存储在解码图片缓冲器514中的参考图片之一的预测块来计算参考块。帧间预测单元520还可以将一个或多个插值滤波器应用于重建残差块,以计算用于运动估计的分段整数像素值。重建残差块可以被添加到由帧间预测单元520产生的运动预测块,以产生用于存储在参考图片存储器514中的重建视频块。运动矢量估计单元516和帧间预测单元520可以将重建视频块用作参考块,以对后续图片中的块进行帧间编码。
[0123]
熵编码单元512熵可以被配置为将经量化变换系数和语法元素编码为比特流528。例如,熵编码单元可以执行上下文自适应可变长度编码(cavlc)、上下文自适应二进制算术编码(cabac)、基于语法的上下文自适应二进制算术编码(sbac)、概率区域间分割熵(pipe)编码或另一种熵编码技术。在基于上下文的熵编码的情况下,上下文可以基于相邻块。在通过熵编码单元进行熵编码之后,可以将经编码比特流传输到另一设备(例如,视频解码器),或者将经编码比特流进行存储以用于稍后的传输或检索。
[0124]
比特流格式化器513可以被配置为对比特流进行格式化,使得比特流包括du以及用于根据特定编码标准对这些du进行解码的相关联元数据。元数据可以包括用于将可以如何对du进行解码用信号发送给解码器的参数。这个元数据可以包括将可以或应执行部分输出的信息用信号发送给解码器。这样的元数据可以包括部分输出标志和/或信令消息,比如补充增强信息sei消息,例如图片定时sei消息。
[0125]
因此,从上文得知,编码过程可以包括:接收包括像素的图片序列;识别该图片序列中的当前图片的像素区与该图片序列中的其他图片的像素区之间的编码相依性;将该当前图片编码成多个解码单元du,该多个du中的每一个包括一组经编码像素;将该多个du变换成比特流,该比特流包括用于对这些du进行解码的元数据,该元数据包括将可以或应执行部分输出用信号发送给解码器的信息,优选地该信息包括部分输出标志和/或信令消息,
比如补充增强信息sei消息,例如图片定时sei消息;以及将包含这些du和该元数据的所述比特流存储在输出缓冲器或存储介质中。
[0126]
编码器装置可以执行已知的率失真优化(rdo)过程,以便为图片中的编码块找到最佳编码参数。此处,最佳编码参数(包括模式决策(帧内预测或帧间预测);帧内预测模式估计;运动估计;和量化)是指提供用于对块进行编码的比特数与通过使用该比特数进行编码所引入的失真之间的最佳折衷的参数集。
[0127]
术语率失真优化有时也被称为rd优化或简称为“rdo”。适合于avc和hevc型编码标准的rdo方案本身是这样已知的,参见例如sze等人的“high efficiency video coding[高效视频编码](hevc)”(集成电路和系统、算法和架构,施普林格(2014):1-375;章节:9.2.7rd优化)。rdo可以采用许多方式实施。在一个众所周知的实施方式中,rdo问题可以表示为关于拉格朗日乘数最小化拉格朗日成本函数j:
[0128]
λ::
[0129]
此处,参数r表示率(即,编码所需的比特数),并且参数d表示与某一率r相关联的视频信号的失真。失真d可以被视为对视频质量的度量。用于客观地确定质量的已知度量(客观地,从该度量与内容无关的意义上来说)包括均方误差(mse)、峰值信噪比(psnr)和绝对差值之和(sad)。
[0130]
在hevc的情况下,率失真成本可能要求编码器装置使用可用预测模式(即,一个或多个帧内预测模式和/或一个或多个帧间预测模式)中的每一个或至少一部分来计算预测视频块。编码器装置然后可以确定每个预测块与当前块之间的差视频信号(此处,差信号可以包括残差视频块),并且将所确定的残差视频块中的每个残差视频块从空间域变换为频域,以获得变换后的残差块。接下来,编码器装置可以量化变换后的残差块中的每一个,以生成对应的经编码视频块。编码器装置可以对经编码视频块进行解码并且将经解码视频块中的每一个与当前块进行比较以确定失真度量d。此外,率失真分析可以涉及计算与预测模式之一相关联的每个经编码视频块的速率r,其中,速率r包括用于用信号表示经编码视频块的多个比特。针对每个预测模式如此确定的编码块的rd成本、失真d和率r然后用于选择提供用于对块进行编码的比特数与通过使用该比特数进行编码所引入的失真之间的最佳折衷的编码视频块。
[0131]
代替编码器装置,比特流包括du,并且还可以通过修改图片序列的现有经编码表示来创建用于对du进行解码的相关联元数据。这样的修改可以通过被配置为进行以下操作的装置(比特流生成装置)来实现:接收包括图片序列的经编码表示的比特流;解析该比特流并且针对该序列中的图片的每个经编码表示识别表示当前图片的多个du,该多个du中的每一个包括一组经编码像素;在该比特流中注入元数据以形成修改后的比特流,该元数据包括将可以或应执行部分输出用信号发送给解码器的信息,优选地该信息包括部分输出标志和/或信令消息,比如补充增强信息sei消息,例如图片定时sei消息;以及输出该修改后的比特流。
[0132]
图6是展示了根据本发明的实施例的视频解码器装置600的框图。该解码器装置或者简言之解码器装置可以被配置为对包括如由参考图5描述的视频编码器装置生成的经编码视频数据的比特流进行解码。
[0133]
在图6的示例中,视频解码器装置600可以包括比特流解析器602、编码图片缓冲器(cpb)603、熵解码单元604、预测单元618、逆量化和逆变换单元608、求和器609、控制器610以及用于存储经解码信息(包括在解码过程中使用的参考图片)的解码图片缓冲器(dpb)616。此处,预测单元618可以包括帧间预测单元622和帧内预测单元620。进一步地,帧间预测单元可以包括运动矢量预测单元624。
[0134]
类似于图5的编码器装置的运动矢量预测值单元,解码器的运动矢量预测单元可以被配置为建立可以包括多个块(包括当前视频帧中已经被解码的块(比如相邻块)和/或一个或多个参考帧中存储在解码图片缓冲器中的块)的运动矢量的mvp候选列表。
[0135]
解码器装置600可以包括被配置为从视频编码器接收包括经编码图片(例如,经编码视频块和相关联语法元素)的格式化比特流601的输入601。在实施例中,格式化比特流可以包括所谓的网络抽象层(nal)单元。比特流解析器602(滤波器)可以从比特流中提取nal单元,对包括有效载荷和相关联元数据的nal单元进行解包,并且使用元数据将有效载荷和一些元数据作为du存储在cpb中。元数据可以包括与图片解码顺序和图片显示顺序有关的信息,比如图片顺序计数(poc)。图片解码信息可以用于按解码顺序将du存储在cpb中并且按解码顺序将du提供到解码算法。图片显示顺序表示经解码图片应呈现的顺序。通常,解码顺序不同于poc顺序,因此经解码图片(或形成经解码图片的经解码du)在被输出之前需要临时存储在cpb中。
[0136]
熵解码单元604对比特流进行解码以生成变换后的经解码残差块(例如,与残差块相关联的已量化系数)、运动矢量差、以及用于使视频解码器能够对比特流进行解码的语法元素(元数据)。将运动矢量差异和相关联语法元素转发到预测单元618。可以在视频条带级和/或视频块级接收到语法元素。例如,作为背景,视频解码器600可以接收经压缩视频数据,该经压缩视频数据已被压缩以经由网络传输到所谓的网络抽象层(nal)单元中。每个nal单元可以包括标头,该标头标识存储到nal单元的数据的类型。有两种类型的数据共同存储到nal单元。存储到nal单元的第一种类型数据是视频编码层(vcl)数据,该数据包括经压缩视频数据。存储到nal单元的第二种类型数据被称为非vcl数据,该数据包括附加信息,比如定义大量nal单元共有的标头数据的参数集以及补充增强信息(sei)。
[0137]
当视频帧的视频块被帧内编码(i)时,预测单元618的帧内预测单元620可以基于用信号表示的帧内预测模式以及来自当前图片的先前解码块的数据来生成当前视频条带的视频块的预测数据。当视频帧的视频块被帧间编码(例如,b或p)时,预测单元618的帧间预测单元622可以基于运动矢量差和从熵解码单元604接收的其他语法元素来产生当前视频条带的视频块的预测块。可以从存储在视频解码器的存储器中的一个或多个参考图片列表内的一个或多个参考图片产生预测块。视频解码器可以使用默认构建技术基于存储在参考图片存储器616中的参考图片来构建参考图片列表。
[0138]
帧间预测单元620可以通过解析运动矢量差和其他语法元素来确定针对当前视频条带的视频块的预测信息,并且使用该预测信息来产生正在解码的当前视频块的预测块。例如,帧间预测单元620使用接收到的语法元素中的一些来确定用于对视频条带的视频块进行编码的预测模式(例如,帧内预测或帧间预测)、帧间预测条带类型(例如,b条带或p条带)、该条带的一个或多个参考图片列表的构建信息、该条带的每个帧间编码视频块的运动矢量预测值、该条带的每个帧间编码视频块的帧间预测状态、以及用于对当前视频条带中
的视频块进行解码的其他信息。在一些示例中,帧间预测单元620可以从运动矢量预测单元624接收某些运动信息。
[0139]
解码器装置可以检索运动矢量差mvd以及表示需要被解码的当前块的相关联经编码块。为了基于mvd来确定运动矢量,运动矢量预测单元624可以确定与当前块相关联的运动矢量预测值候选的候选列表。运动矢量预测值单元624可以被配置为以与编码器中的运动矢量预测值单元的操作相同的方式建立运动矢量预测值列表。
[0140]
运动矢量预测算法可以评估与当前帧或参考帧中相对于当前块的位置具有预定位置(通常是相邻)的块相关联的运动矢量预测值候选。这些相对位置对于编码器装置和解码器装置是已知的。此后,运动矢量预测单元可以基于在比特流中传输到解码器的所选运动矢量预测候选的指示来从运动矢量预测候选列表中选择运动矢量预测值mvp。基于mvp和mvd,帧间预测单元可以确定用于当前块的预测块。
[0141]
逆量化和逆变换单元608可以对比特流中提供的并由熵解码单元解码的经量化变换系数进行逆量化,即,去量化。逆量化过程可以包括使用由视频编码器针对视频条带中的每个视频块计算的量化参数来确定量化程度,并且同样地确定要应用的逆量化程度。该逆量化和逆变换单元可以进一步将逆变换(例如,逆dct、逆整数变换或概念上类似的逆变换过程)应用于变换系数,以便在像素域中产生残差块。
[0142]
在帧间预测单元620已生成当前视频块的预测块之后,视频解码器可以通过对残差块与对应预测块进行求和来形成经解码视频块。求和器609表示执行此求和操作的一个或多个部件。如果需要,还可以应用去块滤波器来对经解码块进行滤波,以去除成块(blocking)伪像。还可以使用其他环路滤波器(在编码环路中或在编码环路之后)来平滑像素过渡,或以其他方式提高视频质量。然后将给定图片中的经解码视频块存储在解码图片缓冲器616中,该解码图片缓冲器存储可以用于另外的当前块的后续编码的参考图片。解码图片缓冲器616还可以存储经解码视频以供稍后在显示设备上呈现。
[0143]
在实施例中,解码器可以包括被配置为控制dpb中的一个或多个经解码du的部分输出的输出模块617。在另一实施例中,输出模块的至少一部分可以在解码器装置外部。例如,输出模块可以在解码器api 626中实施或连接到该解码器api。因此,如果解码器控制器确定在图片的多个du的解码期间可以执行部分输出,则控制器可以将来自dpb的一个或多个经解码du复制到输出模块的数据槽619,而表示图片的多个du的至少一部分尚未被解码并从cpb被移除。在这种情况下,dpb中的一个或多个经解码du可以被标记为可用于部分输出。在实施例中,标记可以用于将一个或多个经解码du标示为在表示图片的所有du被解码之前并且可选地在表示图片的所有du被用作参考帧以用于另外的图片的一个或多个另外的du的解码过程之前不从dpb被移除。
[0144]
将du复制到数据槽而不从dpb移除一个或多个经解码du。复制到数据槽的一个或多个经解码du可以表示正在解码的图片的一部分,这些经解码du可由(软件)应用程序访问。信令可以用于通知应用程序已执行了dpb的部分输出并且图片的一个或多个经解码du仍未完全解码(即一个或多个经编码du仍在cpb中或在被解码器解码的过程中)。下文参考图7至图10更详细地描述了关于dpb和输出模块的功能的实施例。
[0145]
控制器可以基于可以定义语法元素(例如,部分输出是可能的标志和/或用于部分输出的定时的图片定时sei消息)的hrd模型611来控制解码过程,这些语法元素可以用于处
理比特流602中的经编码du,其中,该处理包括在如参考图4所描述的经编码图片的解码期间执行至少一个部分输出。例如,在解码过程期间,解码器可以确定比特流是否适合于部分输出,如参考本技术中的实施例所描述的。为此目的,解码器或特别是解码过程的控制器可以被配置为检测比特流中将部分输出是可能的用信号发送给解码器装置的某些sei消息。可替代地,解码器可以被配置为通过检查比特流中的某些参数(例如,用信号表示禁用还是启用对图片的环内滤波的参数)来确定部分图片输出是否是可能的。例如在hevc中,可以基于pps非vcl nal单元中的标志(pps_deblocking_filter_disabled_flag)来接通或关断去块滤波器。下文更详细地描述了这样的消息的示例。
[0146]
在下文,更详细地描述如参考图4所描述的部分图片输出的过程。该过程可以从在解码图片缓冲器中为经解码图片分配存储器开始。因此,在新的经编码图片需要被解码的情况下,可以在dpb中分配空间。这个所分配的存储器空间被配置为接收并存储经解码du。最终将输出经解码du,其中,输出可以包括将像素值复制到可以与应用程序相关联的数据槽中。所存储像素值还可以在未来解码步骤中用作参考帧。
[0147]
进一步地,部分输出过程包括接收包括du的比特流并将这些du存储在cpb中。一旦经编码图片的du被存储在cpb中,解码器就可以开始解码过程。由于hevc中的解码过程被认为是瞬时的,因此一旦从cpb移除du,就认为该du被解码并放置在dpb的所分配存储器中。以帧的形式在与du相对应的位置处复制经解码样本(像素值)。可能使用图片单元中的图块或条带片段地址,可以从如在比特流中用信号表示的du在帧中的位置得出du的位置。
[0148]
由于解码过程在hrd模型中被认为是瞬时的,因此不需要关于解码所需的时间的特定信息。相关的唯一定时信息包括从cpb移除(用于解码)和从dpb移除(用于丢弃)的时间。还存在关于将经解码图片从dpb输出到数据槽中的定时的定时信息。这个定时信息提供了应用程序可以经由数据槽访问dpb中的经解码图片的时间。
[0149]
部分输出过程进一步包括确定在经编码图片的解码期间是否可以执行至少一个部分输出。如果启用环内滤波,则在可以发生滤波之前需要图片的相邻du。因此,在这种情况下,如果跨经解码图片中的经解码du的边界停用滤波过程,则部分图片输出仍然是可能的。如果未禁用跨经解码du的边界的滤波,则一旦已通过滤波对来自经解码du的所有样本进行处理(即当在已在dpb中使所需的相邻经解码du可用之后应用了滤波处理时),部分输出仍然是可能的。
[0150]
因此,为了确定部分图片输出是否是可能的,解码器需要知晓是否针对特定图片或针对多个图片设置了环内滤波。在实施例中,解码器可以检查环内滤波是否被启用。例如,在hevc中,(多个)环内滤波器是否被启用的信息可以包含在sps或pps消息中,这取决于环内是否分别在每图片或每图片组的基础上被启用/禁用。这个信息可以用于标识部分图片输出是否适用。如果启用环内滤波器,并且存在条带,则关于每个条带的相应滤波器的单独信息包含在条带片段标头中。在其他标准中,可以在比如av1中的开放比特流单元(obu)等其他数据容器中携带关于滤波器的信息。
[0151]
可替代地,比特流可以包括可以使用部分图片输出的指示,例如,标志。这样的信令对于客户端应用程序用于初始化处理流水线、设置所需缓冲器等是有用的。这个信令可以使用作为非vcl单元的sei消息来实施。可替代地,信令可以在包括图片的经编码du的vcl-nal单元的sps或pps中实施(取决于部分图片输出可用于单个图片还是多个图片)。在
另一实施例中,信令可以基于外部通道,例如经由解码器接口(api)连接到解码器装置的应用程序。
[0152]
在实施例中,在可以使用部分图片输出的情况下,解码器可以假设环内滤波被禁用,跨经解码图片中的经解码du的边界被禁用,或来自经解码du的样本已通过滤波被处理。
[0153]
在下文,解码器的消息的示例用于在输出完全解码的图片之前用信号表示部分图片输出。在实施例中,用于用信号表示部分图片输出的消息包括解码sei消息(nal单元的一种类型),例如,如从hevc和vvc已知的用于将图片的解码信息用信号发送给解码器的所谓图片定时sei消息。比如解码单元信息sei消息等其他解码sei消息同样也可以用于向解码器传送相关解码信息。例如,其他相关sei消息类型是具有如cpb_delay_offset等缓冲参数的缓冲周期sei消息。更一般来说,可以基于其他标准(例如,hevc、av1、vp9等)的语法元素来实施信令消息。
[0154]
根据常规hrd模型,一旦经编码图片从cpb被移除,dpb中的相关联经解码图片便可以在预定时间延迟之后变得可用于输出。可以使用时间延迟参数来提供这个信息。在实施例中,在hevc和vvc中,时间延迟可以被称为picture dpb output time delay参数。可以由解码器针对每个图片来确定picture dpb output time delay参数。该参数的值可能取决于多个解码器参数,包括(至少)以下两个时间实例:
[0155]
1.cpb移除时间,即从cpb移除经编码图片(因为该图片被完全解码成经解码图片并且存储在dpb中)的时间实例
[0156]
2.dpb输出时间,输出经解码图片(如存储在dpb中)的时间实例。
[0157]
在vvc和hevc中,由pic_dpb_output_delay语法元素管理图片的dpb output time delay。在这个延迟之后,输出存储在dpb中的经解码图片。通常,在输出之后,从dpb移除该图片,除非保持该图片以供未来使用(例如,用作在其他帧的解码过程中使用的参考)。
[0158]
下文参考下面的表1至表3描述的实施例引入了新的语法元素(dpb partial output time delay参数),该新的语法元素将可以在每个时间段(由间隔定义的)之后执行部分图片输出用信号发送给符合hrd的解码器。这样,在解码过程期间,在picture dpb output delay结束之前dpb中的经解码信息变得可用于输出。
[0159]
因此,本发明不再假设解码过程是瞬时的,而是需要特定量的时间。在这个解码时间期间,可以使dpb中的经解码信息可用于输出,使得它可能已经被应用程序使用。实际上,这意味着在一个或多个时间实例(由dpb部分输出间隔定义的),dpb中直到这些时间实例中的每一个的时刻所处理的经解码信息被传输到数据槽,使得该经解码信息可以在picture dpb output delay结束之前由应用程序访问。因此,在经编码图片的解码期间,可以在picture dpb output delay结束之前发生经解码信息从dpb到数据槽的一个或多个(多次)传输。
[0160]
应注意,访问dpb(是解码器的一部分)中的经解码信息对于应用程序来说是不可能的。假设通过将经解码信息(块)从dpb复制到解码器外部的数据槽来管理hrd模型的输出过程。
[0161]
此处,数据槽是能够从解码器接收数据的任何存储或缓冲装置的通用术语。数据槽的示例包括外部缓冲器,例如vr应用程序的渲染缓冲器、套接字、存储器、硬盘等。
[0162]
数据槽中的经解码信息通过部分图片输出方案变得可用的粒度可能取决于应用
程序的类型。可以变得可用的最小单元是du,即,发生解码器过程(例如,在avc中输出一个或多个宏块或在hevc或vvc中输出一个或多个编码树单元(ctu))的基本处理单元。可替代地,可以在更高级别的图片分割方案中实现dpb的子图片输出,比如如分别在hevc和vvc中定义的解码单元(du)或子图片。
[0163]
取决于应用程序,子图片输出的信令可以基于在比特流中(在带内)插入到解码器的sei消息(或其等效消息)。可替代地,还可以在带外信道中将这些消息传送到解码器。例如,可以经由解码器api将这些消息提供到解码器。
[0164]
表1描绘了根据本发明实施例的图片定时sei消息的一部分。在这个特定实施例中,子图片输出按图片级别进行组织。
[0165][0166]
表1:图片定时sei消息语法提取
[0167]
如表1中所示出的,消息包括可以由解码器用于计算输出dpb中的经解码图片的时间的au cpb removal time delay和pic dpb output delay。该表进一步包括被称为pic_partial_output_interval_present_flag的子图片输出标志。这个二进制标志可以用于用信号表示子图片输出功能是否可用。如果标志是真的,则可以定义子图片输出的输出间隔。输出间隔参数可以由可以被设置为特定值的pic_dpb_partial_output_interval语法元素定义。这个参数定义了用于dpb的子图片输出的输出间隔。该间隔可以以时钟刻度来定义。进一步地,间隔可以被选择为基本上小于picture dpb output delay。这样,子图片输出方案在单个图片的解码期间允许dpb的多个子图片输出,即在由picuture dpb output delay语法元素定义的周期内dpb的多个输出。在这个实施例中,dpb的部分图片输出可以具有图片大小格式,即在每个pic_dpb_partial_output_interval结束时将dpb的全部内容的副本传输到数据槽。
[0168]
表2描绘了根据本发明的另一实施例的图片定时sei消息的一部分。在这个实施例中,子图片输出按du级别进行组织。
[0169][0170]
表2:图片定时sei消息
[0171]
如表2中所示出的,消息包括由解码器用于确定经解码图片何时处于子图片级别(如分别从hevc和vvc中已知的)的au cpb removal delay和pic dpb output delay。表2进一步包括sub_pic_hrd_params_present_flag标志。如果这个标志是真实的,则图片的处理以如例如在hevc和vvc中所定义的子图片级别发生,其中,设置pic_dpb_output_du_delay值。这个延迟值可以由解码器用于计算picture dpb output delay,即在从dpb输出经解码图片之前从cpb移除访问单元中的最后一个解码单元之后的时间。消息进一步包括用于将用于dpb的子图片输出的间隔用信号发送给解码器的pic_dpb_partial_output_interval语法元素。该间隔可以以时钟刻度来定义并且在图片的解码期间以与上文参考表1所描述的方式类似的方式允许多个子图片输出。在这个实施例中,dpb的部分图片输出可以具有图片大小格式,即在每个部分图片输出处,将全部dpb的副本传输到输出槽。
[0172]
表3描绘了根据本发明的又一实施例的图片定时sei消息的一部分。同样在这个实施例中,子图片输出按du级别进行组织。
[0173][0174]
表3:图片定时sei消息
[0175]
同样在这个实施例中,子图片输出(部分输出)是按解码单元(du)或子图片级别组织的。例如如果sub_pic_hrd_params_present_flag等于1,则可以基于标志来设置这个模式。进一步地,消息包括相同语法元素以用信号表示子图片dpb可用,然而在这种情况下,使用pic_dpb_partial_output_interval语法元素代替pic_dpb_partial_output_du_interval语法元素来用信号表示用于dpb的子图片输出的间隔。在这个实施例中,dpb的子图片输出具有du或子图片的大小,即在每个子图片输出处,将dpb中的子图片的副本传输到输出槽。因此,在这个实施例中,数据槽的大小可以是du或子图片大小。
[0176]
部分图片输出方案的下一步骤可以包括将dpb中的经解码du标记为准备好进行部分输出。这个标记可以是将不从dpb移除一个或多个经解码du的标签或标志用信号发送给解码器装置。关于标记用作参考并用于移除的图片,这些类型的标记涉及整个图片的标记并且因此不干扰用于部分图片输出的du的标记。
[0177]
部分图片方案的下一步骤可以包括将一个或多个带标记的经解码du从dpb复制到数据槽而无需从dpb移除一个或多个经解码du。进一步地,可以将已经执行dpb的部分输出用信号发送给与数据槽相关联的应用程序。
[0178]
在第一实施例中,部分图片输出缓冲器可以具有或至少具有与经编码图片的大小相同的大小。因此,在部分图片输出的情况下,将dpb中的经解码du复制到数据槽并且解码器可以将经解码du标记为可用于部分输出,但还未从dpb移除。部分输出的定时可以是“尽快的”或通过hrd参数被确定为可以指定这些部分输出中的每一个的时间。在低延迟应用中,应用程序可能想要尽快访问数据而不具有任何进一步延迟。在这种情况下,标志可以用于指示部分图片输出在数据槽中是可用的,使得渲染器或其他后处理设备可以做出处理(例如,示出)同一帧两次或处理(例如,示出)部分新的帧的决定。
[0179]
在实施例中,可以通知应用程序关于解码器对图片的解码状态。因此,在这种情况下,解码器装置可以被配置为生成与由解码器装置处理的图片相关联的输出信息。例如,在实施例中,输出信息可以标识由解码器处理的图片的哪些区域已经被解码和/或图片的哪些区域尚未被解码。在实施例中,图片中的这样的区域可以定义一个或多个经解码du的像
素组。进一步地,输出信息可以包括被解码的和/或尚未被编码的du数量。这样,通知应用程序通过解码器使哪些经解码像素值在数据槽中可用。表4在下文示出了解码状态消息的语法的示例。
[0180][0181]
表4

解码状态消息的语法
[0182]
如这个表中所示出的,消息包括用于监测图片的解码状态的不同语法元素。消息可以包括用于用信号表示图片是否被完全解码的标志incomplete_flag。将在解码期间更新该消息直到每个区域填充有du像素为止。可以在每个部分输出处将这个消息或至少在该消息中的信息用信号发送给应用程序。在实施例中,消息可以由解码器装置或与解码器装置相关联的解码器api生成,并且被发送到应用程序。语法元素的含义可以如下所示:
[0183]
incomplete_flag
ꢀꢀꢀꢀꢀꢀꢀ
完整图片是否被解码。如果标志是0,则图像是完整的,如果标志是1,则仍存在要填充的区。
[0184]
num_incomplete_areas
ꢀꢀ
需要被描述为不完整的区域数量
[0185]
origin_width
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
不完整区域在x轴上的原点
[0186]
origin_height
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
不完整区域在y轴上的原点
[0187]
width
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
要描述的区域的宽度
[0188]
height
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
要描述的区域的高度
[0189]
因此,可以用信号表示图片中尚不包括经解码样本(表示仍需要解码的du)的区域的数量、以及尚未被解码和/或被解码的图片的每个区域的尺寸和每个区域的位置。
[0190]
实施例中描述的部分输出方案可以与不同图片序列结构(例如,图片gop结构或经编码视频序列cvs结构的组)一起使用。这些图片序列结构的共同点是,这种结构(gop或cvs)中的经编码图片可独立于结构外部的经编码图片进行解码。
[0191]
图7a示出了包括i帧、后面是多个预测(p)帧的图片序列结构的示例,其中,每个p帧往回参考更早的p帧。按解码顺序对图片序列结构中的帧进行排序。进一步地,图片序列结构中的帧i与图片顺序计数(poc)(即用信号表示其中要渲染经解码图片的序列的唯一有序编号)相关联。如图中所示出的,在这个gop结构中,帧被解码的顺序与帧被渲染的顺序相匹配。因此,一旦帧被解码,就可以输出并渲染该帧。因此,可以在低时延应用中使用这个
gop结构。
[0192]
图7b示出了包括i帧、p帧和双向预测b帧的另一图片序列结构,双向预测b帧取决于先前解码的图片和稍后要解码的图片两者。如这个图中所示出的,解码顺序不与如由poc定义的渲染顺序相匹配。例如,在这个示例中,i帧被解码并且可以根据poc来渲染。此后,根据解码顺序,基于i帧来解码p帧并且基于i帧和p帧来解码第一b帧。只有这样,才可以基于i帧和第一b帧来解码要在i帧之后渲染的第二b帧。因此,在可以解码并渲染第二b帧之前,两个其他帧需要被解码并且作为参考帧存储在解码图片缓冲器(dpb)中。
[0193]
解码器可以接收元数据形式的关于解码顺序和图片顺序的信息。通常,图片序列结构作为整体例如在一个数据容器中传输(并到达),其中,比特流中的经编码图片被重新排序为与解码顺序相匹配。在解码期间,以由poc定义的序列输出(渲染)图片。在低时延情景中,一旦从编码器输出帧,就可以传输这些帧。对于这些情况,可以使图片以及与这样的图片相关联的经解码du的解码(和输出)尽快可用于应用程序。对于图7a的低时延gop结构,解码顺序与渲染顺序相同,使得在经解码du的解码和部分输出之后应用程序可以访问并渲染数据槽中的经解码du。
[0194]
而且,在解码顺序并非渲染顺序的情况下,访问由解码器解码的经编码图片的经解码du可以是有用的。例如,在解码器仍在对经编码图片的du进行解码的过程中的同时应用程序可以开始对经解码du执行后处理步骤,例如滤波。在这种情况下,可以输出经解码du(即,将这些经解码du复制到对于应用程序可访问的数据槽中),但还将它们保持在dpb中以供在解码其他图片时用于参考。此外,解码器可以确定包括经解码du所属的经编码图片的位置的输出信息。
[0195]
通常,最先进视频处理系统可以包括解码器的输出与渲染引擎之间的应用程序(与如在解码之后直接渲染的电视机等传统系统相比较)。在这样的视频处理系统中,即使(从解码器)输出图片(或图片的du),该图片也未必直接被渲染,而是可能需要进一步处理,例如裁剪或滤波。因此,非poc顺序图片(或du)可以允许一旦图片(或du)被解码就开始后解码处理,而不管其poc如何。可以被称为非poc顺序输出方案的这种输出方案可以以不同的方式来实现。
[0196]
在实施例中,可以在解码器api中实施功能的一部分,使得它能够按不同于poc顺序的顺序接收经解码图片和相关联的du。在另一实施例中,可以在比特流中、例如在比如sei消息等合适的消息中用信号表示该功能。
[0197]
在这些实施例中,在解码器的初始化阶段期间,可以指示解码器将解码器置于所谓的直接输出模式。在这种模式下,解码器可以覆盖控制图片或du输出(即从dpb复制到数据槽)的时间和/或条件的信令/标记参数。这样的参数可以包括hdr延迟参数和/或poc值。指令可以使解码器不使用信令进行输出。然而,解码器可能不一定忽略用于其他功能的信令/标记。
[0198]
在直接输出模式中,解码器可以被配置为处理每个传入图片或du以用于紧接输出,即就好像不存在来自未来帧的用于解码的相依性一样。例如,图片或du可以被解码,根据参考图片的要求存储在cpb中,并且通过将图片或du复制到该数据槽中来输出。为了实现直接输出模式,解码器需要知道或确定每个图片的poc值。在实施例中,这可以通过显式地用信号表示poc值来实现。在另一实施例中,应用程序可以例如经由带外信令、比特流分析、
比特流中的元数据等知道gop结构。
[0199]
在实施例中,关于图片的解码状态的信息(例如,如参考表5所描述的经解码图片更新消息)可以包括关于poc的信息。表5在下文示出了解码状态消息的语法的示例,该解码状态消息与表4的解码状态消息类似但现在包括关于poc的信息,例如poc_present_flag和poc值。因此,如果设置了标志,则状态消息可以包括du的图片的poc值。
[0200][0201]
表5

解码状态消息的语法
[0202]
图7c描绘了根据本发明的实施例的解码和输出方法的流程图。这个解码和输出方案涉及如上文描述的直接输出模式。在这种情况下,该解码器可以经由aip通信地连接到需要快速访问dpb中的经解码图片的应用程序。在第一步骤中,该方法可以包括指示解码器覆盖用于控制输出经解码图片的时间和/或条件的参数,其中,该输出包括将经解码图片从dpb复制到数据槽中(步骤702)。接收包括经编码图片的比特流,这些经编码图片按解码顺序布置在该比特流中,并且将这些经编码图片按解码顺序存储在编码图片缓冲器cpb中(步骤704)。然后,可以将存储在cpb中的经编码图片解码并存储在解码图片缓冲器dpb中。如果经解码图片被用作对另一图片进行解码的参考图片,则可以通过将该经解码图片从该cpb复制到该数据槽中来直接输出这个经解码图片而无需从该dpb移除该解码图片缓冲器(步骤706)。然后,与数据槽相关联的应用程序或应用程序编程接口api可以用信号表示已执行dpb的输出(步骤708),优选地,该信令包括与图片的呈现顺序相关联的信息,例如图片顺序计数(poc)值。
[0203]
因此,在如图7b所描述的直接输出模式中,解码器覆盖比如pic_spt_dpb_output_du_delay或pic_dpb_output_du_delay(其指定在从cpb移除au中的最后一个du之后在从dpb输出经解码图片之前等待多少子时钟刻度)等参数或者引入解码延迟的任何其他类似标志。因此,解码器(或控制应用程序)可以被配置为跟踪如上提到的poc之上的解码状态(即,解码器是否处于解码状态(当前正对au/du进行解码)或是否处于闲置状态)。然后,一旦帧准备好,就将其放置在槽中使得应用程序可以使用该帧,例如,用于比如滤波操作等数
据处理操作。在这种情况下,数据槽需要足够大以保存多个图片,并且需要将图片保持存储在dpb中,只要需要这些图片用作参考(因为从dpb移除的条件可能仍然适用)。
[0204]
图8描绘了对图片的经解码du进行缓冲的解码图片缓冲器dpb的示例。解码图片缓冲器可以被配置为用于存储像素值的可寻址存储器。存储器单元可以表示2d网格,其中,每个单元可以指派给2d网格中的一个位置并且可以被配置为存储像素值。存储器可以被布置成分配多个图片的存储器空间,例如参考图片以及当前正在解码的一个或多个图片。
[0205]
如图中所示出的,dpb可以包括多个缓冲区域8021至8023。具有所指派位置、优选地在2d网格中(在短区域中)相邻的存储器单元组被格式化以接收经解码du的像素。在这个特定非限制性示例中,缓冲器可以包括预定大小的三个区域。每个缓冲区域可以具有与du的大小相对应的大小。在这个示例中,可以形成存储在每个缓冲区域中的三个经解码du。每个缓冲区域的尺寸可以是基于与例如尺寸8061、8062(height,width)和原点804(origin_width,origin_height)有关的上述语法元素来定义的。该图展示了dpb,其中,存储了经解码du的(顶部)第一区域像素。这个经解码du可以包括图片的第一(顶部)部分的像素,而两个其他区域的其他缓冲区域像素尚未被解码。每当du被解码、存储在dpb的所分配存储器中并且被标记用于部分输出时,可以更新图片的解码状态消息并且将该解码状态消息用信号发送给应用程序。一旦图片的解码结束,不完全标志就可以用信号表示完成了图片的解码过程。在这种情况下,可以开始对下一图片进行解码的过程。
[0206]
解码图片缓冲器可以存储在解码过程中被解码并使用的所有经解码图片。所存储的图片用于两个过程:
[0207]
1.将图片存储在dpb中以用于输出到数据槽,使得可以通过渲染过程处理这些图片。
[0208]
2.将图片存储在dpb中以用作仍需要被解码的图片的参考图片。
[0209]
图9针对两个不同实施例(案例1和案例2)展示了用多个(在这个示例中是两个)不同视频帧n和n+1的经解码du填充dpb的进展。字母a、b和c在时间上表示在如参考本技术的实施例所描述的部分输出过程期间填充缓冲器的不同步骤。第一实施例(案例1)展示了其中在对视频帧n的du进行解码(步骤a)之后刷新缓冲器并且对视频帧n+1的第一du
1,n+1
进行解码并将其存储在dpb中(步骤b)的过程。仅在步骤c中,对视频帧n+1的第二du
2,n+1
进行解码并将其存储在dpb中,从而形成完整图片。因此,在这种情况下,缓冲器的内容在步骤b处无法用作参考并且因此将被丢弃。
[0210]
相比之下,在第二实施例(案例2)中,视频帧的经解码du(步骤a)被用作解码过程中的下一步骤的基础。因此,当在步骤b中对视频帧n+1的第一du(du
1,n+1
)进行解码时,将该第一du复制到dpb的所分配存储器中,从而覆盖属于视频帧n的第一du(du
1,n
)的像素值。在这种情况下,缓冲器的内容在步骤b中仍可用作未来帧的参考。图9的示例提供了参考图10c描述的输出缓冲器架构的两个不同类型。
[0211]
图10a至图10c描绘了可以与根据本发明的实施例一起使用的数据槽的不同架构。数据槽包括:第一数据槽(类型a),该第一数据槽包括大小与至少du的大小相匹配的(至少)一个缓冲器;第二数据槽(类型b),该第二数据槽包括多个缓冲器,其中,每个缓冲器的大小与至少du的大小相匹配;以及第三数据槽(类型c),该第三数据槽具有大小与至少一个图片的大小相匹配的缓冲器。在这种情况下,缓冲器可以包括多个缓冲区域,其中,每个缓冲区
域可以具有至少一个du的大小。
[0212]
图10a描绘了单个du大小的数据槽或输出槽的示例性实施例。如果所有du具有相同大小并且允许相对小大小的一个数据槽(例如,文件指针、计算机插件、存储器指针等),则使用可以这样的架构。由于所输出的每个新du将覆盖存储在数据槽中的du,因此需要关于将来自cpb的经解码du输出到数据槽中而进行应用程序的密切监测以及与解码器的同步。这种方法可以用于存储器是主要约束的系统,但存在足够处理能力和定时保真度来利用到达的du,然后这些du被清除以替换为下一du。
[0213]
图10b描绘了包括多个du大小的数据槽的数据槽的示例性实施例。在实施例中,数据槽可以包括n du大小的数据槽,其中,n是大于一的整数。在这种情况下,每个du的大小是相同的。在另一实施例中,数据槽可以包括不同大小的n个数据槽。如果du具有不同大小并且假设du数量对于整个序列是恒定的,或至少解码器可以针对比特流序列的某个部分从比特流推断出du数量,则可以使用这样的架构。从图片的一个以上du在给定时间可用于处理例如部分输出的意义上来说,当与图10a的数据槽相比较时,这个架构可以允许更大的灵活性。当可以使用du的批次处理时或在处理功率不恒定的情况下,这样的方法是合适的。而且在这种情况下,应用程序需要关于将来自cpb的经解码du输出到数据槽中进行监测并且与解码器同步。
[0214]
图10c描绘了图片大小的数据槽的示例性实施例。在实施例中,在图片包括与hevc图块或vvc子图片的组合的情况下可以使用这个架构,其中,du属于同一图片但可以独立于彼此而解码。如上文参考表4所描述的解码状态消息可以用于监测并且用信号表示用经解码du填充数据槽。
[0215]
对于这些数据槽架构中的每一个,可以通过以规则间隔对槽进行轮询以标识是否存在更新(即新du被解码)来向使用解码器的输出的应用程序通知数据槽的更新。可替代地或另外地,在实施例中,每当更新槽时,例如解码器api可以生成回调事件。在又一实施例中,还可以使用混合方法,其中,第一更新机制(作为例如主要更新机制)正在定期(例如,周期性地或根据预定定时方案)对槽进行轮询并且使用仅针对特定事件(例如,初始化槽、在第一au尚未完全解码的情况下将解码从一个au的du切换到另一au的du等)被激发或触发的回调事件。应用程序可以使用回调信息来调整轮询频率和/或定时。
[0216]
图11描绘了本发明的示例性使用,其中,部分输出的经解码数据的一部分的后处理可能已经开始,而完整图片的解码尚未结束。该图示意性地描绘了由三个du组成的图片1100。在时间t,可以完成第一du 11021的解码,使得可以通过在数据槽中复制经解码du来执行部分输出。应用程序可以使用数据来执行比如扩增等操作。与此同时,解码器可以继续解码并且在t+1处完成第二du 11041的解码,同时应用程序正在使第一du 11022扩增。在t+2,完成第一经扩增的du 11023(达到其原始大小的两倍),可以通过应用程序使第二du 11042扩增,同时对第三du 11061进行解码。
[0217]
图12描绘了可以使用本技术中描述的技术的视频编码和解码系统1200的示意图。如图12中所示出的,系统1200可以包括第一视频处理设备1202(例如,视频捕获设备等),该第一视频处理设备被配置为生成可以由第二视频处理设备1204(例如,视频播放设备)解码的经编码视频数据。第一视频处理设备和第二视频处理设备可以包括多种设备中的任何一种,包括台式计算机、笔记本计算机(即,膝上型计算机)、平板计算机、机顶盒、电话手机(比
如所谓的“智能”电话)、所谓的“智能”平板、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流式传输设备等。在一些情况下,视频处理设备可以被配备用于无线通信。
[0218]
第二视频处理设备可以通过传输信道1206或能够将经编码视频数据从第一视频处理设备移动到第二视频处理设备的任何类型的介质或设备来接收要被解码的经编码视频数据。在一个示例中,传输信道可以包括通信介质,以使第一视频处理设备能够将经编码视频数据直接实时地传输到第二视频处理设备。可以基于比如无线通信协议等通信标准将经编码视频数据传输到第二视频处理设备。通信介质可以包括任何无线或有线通信介质,比如射频(rf)频谱或者一条或多条物理传输线路。通信介质可以形成比如局域网、广域网或全球网络(比如互联网)等基于分组的网络的一部分。通信介质可以包括路由器、交换机、基站、服务器或可以有助于促进第一视频处理设备与第二视频处理设备之间的通信的任何其他设备。
[0219]
可替代地,可以经由第一视频处理设备的i/o接口1208将经编码数据发送到存储设备1210。可以通过输入第二视频处理设备的i/o接口1212来访问经编码数据。存储设备1210可以包括各种分布式或本地访问的数据存储介质中的任一种,比如硬盘驱动器、蓝光光盘、dvd、cd-rom、闪速存储器、易失性或非易失性存储器或用于存储经编码视频数据的任何其他合适的数字存储介质。在另一示例中,存储设备可以对应于可以保存由第一视频处理设备生成的经编码视频的文件服务器或另一中间存储设备。第二视频处理设备可以经由流式传输或下载来从存储设备访问所存储的视频数据。文件服务器可以是能够存储经编码视频数据并将该经编码视频数据传输到第二视频处理设备的任何类型的服务器。示例文件服务器包括web服务器(例如,用于网站)、ftp服务器、网络附加存储(nas)设备或本地磁盘驱动器。第二视频处理设备可以通过任何标准数据连接(包括互联网连接)访问经编码视频数据。这种连接可以包括适合于访问存储在文件服务器上的经编码视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,dsl、电缆调制解调器等)或这两者的组合。来自存储设备36的经编码视频数据的传输可以是流式传输、下载传输或这两者的组合。
[0220]
本披露内容的技术不一定限于无线应用或设置。这些技术可以应用于视频编码,以支持各种多媒体应用中的任何一种,比如空中电视广播、有线电视传输、卫星电视传输、流式视频传输(例如,经由互联网)、对用于存储在数据存储介质上的数字视频的编码、对存储在数据存储介质上的数字视频的解码或其他应用。在一些示例中,系统1200可以被配置为支持单向或双向视频传输,以支持比如视频流、视频回放、视频广播和/或视频电话等应用。
[0221]
在图12的示例中,第一视频处理设备可以进一步包括视频源1214和视频编码器1216。在一些情况下,i/o接口1208可以包括调制器/解调器(调制解调器)和/或发射器。视频源可以包括任何类型的源,比如视频捕获设备(例如,摄像机)、包含先前捕获的视频的视频档案库、用于从视频内容提供者接收视频的视频馈送接口和/或用于生成计算机图形数据作为源视频的计算机图形系统或这样的源的组合。如果视频源1214是摄像机,则第一视频处理设备和第二视频处理设备可以形成所谓的相机电话或视频电话。然而,本披露内容中描述的技术通常可以应用于视频编码,并且可以应用于无线应用和/或有线应用。
[0222]
捕获的、预捕获的或计算机生成的视频可以由视频编码器1216进行编码。经编码视频数据可以经由i/o接口1208直接传输到第二视频处理设备。经编码视频数据还可以(或
可替代地)存储到存储设备1210上,以供第二视频处理设备或其他设备稍后访问,以进行解码和/或回放。
[0223]
第二视频处理设备可以进一步包括视频解码器1218和显示设备1220。在一些情况下,i/o接口1212可以包括接收器和/或调制解调器。第二视频处理设备的i/o接口1212可以接收经编码视频数据。通过通信信道传送的或存储设备1210上提供的经编码视频数据可以包括由视频编码器1216生成的各种语法元素,以供视频解码器(比如视频解码器1218)在解码视频数据时使用。这种语法元素可以被包括在在通信介质上传输、存储在存储介质上或存储在文件服务器上的经编码视频数据中。
[0224]
显示设备1220可以与第二视频处理设备集成在一起或在第二视频处理设备外部。在一些示例中,第二视频处理设备可以包括集成显示设备,并且还被配置为与外部显示设备对接。在其他示例中,第二视频处理设备可以是显示设备。一般而言,显示设备将经解码视频数据显示给用户,并且可以包括各种显示设备中的任何一种,比如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或另一种类型的显示设备。
[0225]
视频编码器1216和视频解码器1218可以根据比如高效视频编码(hevc)、vp9、av1、evc或vvc等视频压缩标准来操作。可替代地,视频编码器1216和视频解码器1218可以根据其他专有标准或行业标准(比如itu-t h.264标准(可替代地称为mpeg-4部分10高级视频编码(avc)),或这种标准的扩展)来操作。然而,本披露内容的技术不限于任何特定的编码标准。
[0226]
尽管未在图12中示出,但在一些方面,视频编码器1216和视频解码器1118可以各自与音频编码器和音频解码器集成在一起,并且可以包括适当的mux-demux单元或其他硬件和软件,以处理对共同数据流或单独数据流中的音频和视频两者的编码。如果适用,在一些示例中,mux-demux单元可以符合itu h.223多路复用器协议或其他协议,比如用户数据报协议(udp)。
[0227]
视频编码器1216和视频解码器1218可以各自实施为各种合适的编码器电路系统中的任何一种,比如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件或其任何组合。当这些技术部分地以软件实施时,设备可以将针对软件的指令存储在合适的非暂态计算机可读介质中,并使用一个或多个处理器以硬件方式执行指令以执行本披露内容的技术。视频编码器1216和视频解码器1218中的每一个可以被包括在一个或多个编码器或解码器中,这些编码器或解码器中的任一个可以作为组合编码器/解码器(codec)的一部分被集成在相应设备中。
[0228]
本披露内容通常可以涉及视频编码器将某些信息“用信号发送”给另一设备(比如视频解码器)。术语“用信号发送”通常可以是指传送用于解码经压缩视频数据的语法元素和/或其他数据(元数据)。这种传送可以实时或近实时地发生。可替代地,这种传送可以在一定时间跨度内发生,比如可能在编码时将语法元素以经编码比特流的形式存储到计算机可读存储介质中时发生,然后,这些语法元素可以在被存储到此介质之后的任何时间由解码设备检索。
[0229]
本披露内容的技术可以在包括无线手持机、集成电路(ic)或一组ic(例如,芯片组)的各种设备或装置中实施。在本披露内容中描述了各种部件、模块或单元以强调被配置为执行所披露技术的设备的功能方面,但不一定需要由不同硬件单元来实现。而是,如上所
述,各种单元可以组合在编解码器硬件单元中,或者由互操作硬件单元(包括如上所述的一个或多个处理器)的集合结合合适的软件和/或固件来提供。
[0230]
本文所使用的术语仅用于描述特定实施例,并且不旨在限制本发明。如本文所使用的,单数形式“一个(a)”、“一种(an)”和“该(the)”旨在同样包括复数形式,除非上下文以其他方式清晰表明之外。将进一步理解的是,当在本说明书中使用术语“包括(comprises)”和/或“包括(comprising)”时,其指定所陈述的特征、整数、步骤、操作、元件和/或部件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、部件和/或其组的存在或添加。
[0231]
所附权利要求中所有装置或步骤加上功能元件的对应结构、材料、动作和等同物旨在包括用于与如具体要求保护的其他要求保护的元件结合执行功能的任何结构、材料或动作。已经出于说明和描述的目的而呈现本发明的描述,但是该描述并不旨在穷举本发明或将本发明限于所披露的形式。在不脱离本发明的范围和精神的情况下,很多修改和变化对本领域普通技术人员都将是明显的。实施例的选择和描述是为了最佳地解释本发明的原理和实际应用,并且当适合于所构想的特定用途时,使得本领域的其他普通技术人员能够针对具有各种修改的各个实施例理解本发明。

技术特征:
1.一种处理图片序列的经编码表示的方法,该图片序列优选地是由可独立于在该序列外部的经编码图片进行解码的经编码图片所定义的图片序列,该方法包括:由解码装置的处理器在解码图片缓冲器dpb中为一个或多个图片分配存储器;由该处理器接收包括当前图片的经编码表示的比特流,该当前图片的经编码表示包括多个解码单元du,该多个du中的每一个包括一组经编码像素;由该处理器将该当前图片的多个du存储在编码图片缓冲器cpb中;由该处理器将该多个du解码为该当前图片的经解码du,并且将这些经解码du存储在该dpb的所分配存储器中;由该处理器在该当前图片的多个du的解码期间执行至少一个部分输出,该执行该至少一个部分输出包括:在对该多个du中的所有du进行解码之前将这些经解码du中的一个或多个从该dpb复制到数据槽,每个经解码du包括表示该当前图片中的区域的一组像素,该数据槽可由在该解码器装置外部的应用程序访问。2.根据权利要求1所述的方法,其中,该执行该至少一个部分输出进一步包括:确定标识该当前图片中与该一个或多个复制的经解码du相关联的区域的输出信息;以及可选地,优选地经由应用程序编程接口api提供对供该应用程序使用的该输出信息的访问。3.根据权利要求2所述的方法,其中,该输出信息进一步包括以下项中的至少一项:-指示该当前图片的经编码表示是否被完全解码的信息;-指示尚未被解码的du数量和/或被解码的du数量的信息;或用于确定尚未被解码的du数量和/或被解码的du数量的信息;-该当前图片中尚未被解码的一个或多个区域和/或该当前图片中被解码的一个或多个区域。4.根据权利要求1至3中任一项所述的方法,其中,该提供对该输出信息的访问包括:将已执行该部分输出用信号发送给该应用程序或该api,优选地,响应于将这些经解码du中的一个或多个复制到该数据槽或响应于接收到来自该应用程序或该api的请求而执行该信令。5.根据权利要求1至4中任一项所述的方法,其中,该图片序列与输出顺序相关联,该输出顺序定义了该图片序列中的图片由该解码器装置输出的顺序,优选地该输出顺序基于图片顺序信息,比如图片顺序计数poc值,该图片顺序信息标识该图片序列中的图片并且指示该图片相对于该序列中的其他图片的输出顺序位置的输出顺序位置,其中,如果该输出顺序用信号表示可以输出该当前图片,则执行将该一个或多个经解码du复制到该数据槽;优选地,该当前图片的poc值用信号表示可以输出该当前图片。6.根据权利要求1至5中任一项所述的方法,其中,该图片序列与输出顺序相关联,该输出顺序定义了该图片序列中的图片由该解码器装置输出的顺序,该图片序列中的每个图片与输出顺序位置相关联,该图片序列进一步与解码顺序相关联,该解码顺序定义了该图片序列中的图片由该解码器装置解码的顺序,该图片序列中的每个图片与解码顺序位置相关联;其中,该确定输出信息进一步包括:
如果该当前图片的解码顺序位置与该当前图片的输出顺序位置不同,则将输出顺序位置标识符添加到该输出信息,优选地该输出顺序位置标识符基于图片顺序信息,例如,一个或多个图片顺序计数poc值,poc值标识该图片序列中的图片并且指示该图片相对于该序列中的其他图片的输出顺序位置的输出顺序位置。7.根据权利要求1至6中任一项所述的方法,其中,该执行至少一个部分输出进一步包括:将存储在该dpb中的一个或多个经解码du标记为准备用于部分输出,该标记将不响应于执行该至少一个部分输出而从该dpb中移除该一个或多个经解码du用信号发送给该解码器装置。8.根据权利要求1至7中任一项所述的方法,其中,在执行该至少一个部分输出之前,该处理器确定是否可以或应执行部分输出,该确定包括以下项中的至少一项:确定该比特流中的元数据是否用信号表示可以或应执行部分输出,该元数据优选地是部分输出标志和/或信令消息,比如补充增强信息sei消息,例如图片定时sei消息;确定该比特流中的元数据、优选地滤波标志是否用信号表示激活或停用环内滤波,优选地,用信号表示跨存储在该dpb中的至少两个相邻经解码du之间的边界激活或停用环内滤波。9.根据权利要求8所述的方法,其中,如果该元数据用信号表示可以或应进行部分输出,则确定元数据是否包括用于在对该经编码图片进行解码期间执行一个或多个部分输出的定时信息,优选地,该定时信息包括用于执行该一个或多个部分输出的输出间隔。10.根据权利要求1至9中任一项所述的方法,其中,该数据槽包括至少与经解码du的大小相匹配的至少一个缓冲器,该执行至少一个部分输出包括:将该dpb中的经解码du的像素复制到该至少一个缓冲器;或,其中,该数据槽包括至少n个缓冲器,n是大于二的整数,优选地,n等于该多个du的数量,该n个缓冲器中的每一个的大小至少与经解码du的大小相匹配,该执行至少一个部分输出包括:在该n个缓冲器中的至少一个中复制该经解码du的像素;或,其中,该数据槽包括至少与至少一个图片或整数数量的图片的大小相匹配的至少一个缓冲器,该执行至少一个部分输出包括:根据经解码du的像素在该当前图片中的位置将该du的像素复制到该缓冲器中的某个位置处。11.根据权利要求1至10中任一项所述的方法,其中,du基于如在avc中定义的一个或多个宏块、如在hevc中定义的一个或多个编码树单元ctu、如在hevc或vvc中定义的一个或多个条带或者如在vvc中定义的一个或多个子图片;和/或,其中,该解码基于编码标准,优选地基于块的视频编码标准,更优选地avc、hevc、vp9、av1、vvc、evc编码标准或者基于avc、hevc、vp9、av1、vvc、evc编码标准的编码标准。12.一种用于处理图片序列的经编码表示的解码装置,该解码装置包括:计算机可读存储介质,该计算机可读存储介质具有用其体现的程序的至少一部分;以及计算机可读存储介质,该计算机可读存储介质具有用其体现的计算机可读程序代码;以
及处理器,优选地微处理器,该处理器耦合至该计算机可读存储介质,其中,响应于执行该计算机可读程序代码,该处理器被配置为执行可执行操作,这些可执行操作包括:由解码装置的处理器在解码图片缓冲器dpb中为一个或多个图片分配存储器;由该处理器接收包括当前图片的经编码表示的比特流,该当前图片的经编码表示包括多个解码单元du,该多个du中的每一个包括一组经编码像素;由该处理器将该当前图片的多个du存储在编码图片缓冲器cpb中;由该处理器将该多个du解码为该当前图片的经解码du,并且将这些经解码du存储在该dpb的所分配存储器中;由该处理器在该当前图片的多个du的解码期间执行至少一个部分输出,该执行该至少一个部分输出包括:在对该多个du中的所有du进行解码之前将这些经解码du中的一个或多个从该dpb复制到数据槽,每个经解码du包括表示该当前图片中的区域的一组像素,该数据槽可由在该解码器装置外部的应用程序访问。13.根据权利要求12所述的解码装置,该执行该至少一个部分输出进一步包括:确定标识该当前图片中与该一个或多个复制的经解码du相关联的区域的输出信息;以及可选地,优选地经由应用程序编程接口api提供对供该应用程序使用的该输出信息的访问,优选地,该输出信息进一步包括以下项中的至少一项:-指示该当前图片的经编码表示是否被完全解码的信息;-指示尚未被解码的du数量和/或被解码的du数量的信息;或用于确定尚未被解码的du数量和/或被解码的du数量的信息;-该当前图片中尚未被解码的一个或多个区域和/或该当前图片中被解码的一个或多个区域。14.根据权利要求12或13所述的解码装置,其中,该图片序列与输出顺序相关联,该输出顺序定义了该图片序列中的图片由该解码器装置输出的顺序,优选地该输出顺序基于图片顺序信息,比如图片顺序计数poc值,该图片顺序信息标识该图片序列中的图片并且指示该图片相对于该序列中的其他图片的输出顺序位置的输出顺序位置,其中,如果该输出顺序用信号表示可以输出该当前图片,则执行将该一个或多个经解码du复制到该数据槽;优选地,该当前图片的poc值用信号表示可以输出该当前图片。15.根据权利要求12至14中任一项所述的解码装置,其中,该图片序列与输出顺序相关联,该输出顺序定义了该图片序列中的图片由该解码器装置输出的顺序,该图片序列中的每个图片与输出顺序位置相关联,该图片序列进一步与解码顺序相关联,该解码顺序定义了该图片序列中的图片由该解码器装置解码的顺序,该图片序列中的每个图片与解码顺序位置相关联;其中,该确定输出信息进一步包括:如果该当前图片的解码顺序位置与该当前图片的输出顺序位置不同,则将输出顺序位置标识符添加到该输出信息,优选地该输出顺序位置标识符基于图片顺序信息,例如,一个或多个图片顺序计数poc值,poc值标识该图片序列中的图片并且指示该图片相对于该序列中的其他图片的输出顺序位置的输出顺序位置。
16.一种用于确定图片序列的经编码表示的编码器装置,该编码器装置包括:计算机可读存储介质,该计算机可读存储介质具有用其体现的计算机可读程序代码;以及处理器,优选地微处理器,该处理器耦合至该计算机可读存储介质,其中,响应于执行该计算机可读程序代码,该处理器被配置为执行可执行操作,这些可执行操作包括:接收包括像素的图片序列;识别该图片序列中的当前图片的像素区与该图片序列中的其他图片的像素区之间的编码相依性;将该当前图片编码成多个解码单元du,该多个du中的每一个包括一组经编码像素;将该多个du变换成比特流,该比特流包括用于对这些du进行解码的元数据,该元数据包括将可以或应执行部分输出用信号发送给解码器的信息,优选地该信息包括部分输出标志和/或信令消息,比如补充增强信息sei消息,例如图片定时sei消息;以及,将包含这些du和该元数据的所述比特流存储在输出缓冲器或存储介质中。17.一种用于修改图片序列的经编码表示的比特流生成装置,该比特流生成装置包括:接收包括图片序列的经编码表示的比特流;解析该比特流并且针对该序列中的图片的每个经编码表示识别表示当前图片的多个du,该多个du中的每一个包括一组经编码像素;在该比特流中注入元数据以形成修改后的比特流,该元数据包括将可以或应执行部分输出用信号发送给解码器的信息,优选地该信息包括部分输出标志和/或信令消息,比如补充增强信息sei消息,例如图片定时sei消息;以及,输出该修改后的比特流。18.一种计算机程序产品,包括软件代码部分,这些软件代码部分被配置成当在计算机的存储器中运行时执行根据权利要求1至11中任一项所述的方法步骤。

技术总结
披露了用于处理图片序列的经编码表示的方法和装置,其中,该方法包括:解码装置的处理器在解码图片缓冲器DPB中为一个或多个图片分配存储器;该处理器接收包括当前图片的经编码表示的比特流,该当前图片的经编码表示包括多个解码单元DU,该多个DU中的每一个包括一组经编码像素;该处理器将该当前图片的多个DU存储在编码图片缓冲器CPB中;该处理器将该多个DU解码为该当前图片的经解码DU,并且将这些经解码DU存储在该DPB的所分配存储器中,该处理器在该当前图片的多个DU的解码期间执行至少一个部分输出,该执行该至少一个部分输出包括:在该多个DU中的所有DU被解码之前将这些经解码DU中的一个或多个从该DPB复制到数据槽,该一个或多个经解码DU表示该当前图片中的一个或多个像素区域;确定输出信息,该输出信息包括关于被复制到该数据槽的一个或多个像素区域的信息以及用于标识该当前图片的信息;提供对该输出信息的访问以供在该解码装置外部的应用程序或应用程序编程接口API使用。应用程序或应用程序编程接口API使用。应用程序或应用程序编程接口API使用。


技术研发人员:E
受保护的技术使用者:荷兰应用自然科学研究组织
技术研发日:2021.12.21
技术公布日:2023/10/7
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐