用于视频编码和解码的装置、方法和计算机程序

文档序号:98611 发布日期:2021-10-12 浏览:33次 >En<

阅读说明:本技术 用于视频编码和解码的装置、方法和计算机程序 (Apparatus, method and computer program for video encoding and decoding ) 是由 M·汉努克塞拉 A·阿明洛 于 2019-12-16 设计创作,主要内容包括:公开了一种用于视频编码和解码的方法、装置和计算机程序产品。根据一个实施例,该方法包括:获取子图片的编码数据,子图片属于图片,并且子图片属于子图片序列;以及确定是否要使用子图片作为被操纵的参考子图片的源。如果该确定揭示子图片将被用作被操纵的参考子图片的源,则从子图片生成该被操纵的参考子图片以用作子图片序列的后续子图片的参考。(A method, apparatus and computer program product for video encoding and decoding are disclosed. According to one embodiment, the method comprises: acquiring encoded data of a sub-picture, the sub-picture belonging to a picture and the sub-picture belonging to a sub-picture sequence; and determining whether to use the sub-picture as a source of the manipulated reference sub-picture. If the determination reveals that the sub-picture is to be used as a source of a manipulated reference sub-picture, the manipulated reference sub-picture is generated from the sub-picture for use as a reference for a subsequent sub-picture of the sequence of sub-pictures.)

用于视频编码和解码的装置、方法和计算机程序

技术领域

本发明涉及一种用于视频编码和解码的装置、方法和计算机程序。

背景技术

本节旨在为权利要求中引用的本发明提供背景或上下文。本文中的描述可能包括有待追求的概念,但不一定是先前已经构想或追求的概念。因此,除非本文中另有说明,否则本节中描述的内容不是本申请中的说明书和权利要求的现有技术,并且不能因为被包括在本节中而被承认为现有技术。

视频编码系统可以包括将输入视频变换为适合存储/传输的压缩呈现(representation)的编码器(encoder)和能够将压缩视频呈现解压缩回可查看形式的解码器(decoder)。编码器可能会丢弃原始视频序列中的一些信息,以便以更紧凑的形式表示视频,例如,以与其他方式可能需要的比特率相比较低的比特率来启用视频信息的存储/传输。

目前正在研究和开发用于提供三维(3D)视频内容的各种技术。特别地,大量研究集中在各种多视图应用上,在多视图应用中,查看者只能从特定视点看到一对立体视频,而从不同视点看到另一对立体视频。这种多视图应用最可行的方法之一已经证明是这样的:其中只有有限数目的输入视图(例如,单声道或立体视频加上一些补充(supplementary)数据)被提供给解码器侧,然后所有需要的视图由解码器本地渲染(render)(即,合成(synthesize))以显示在显示器上。

在3D视频内容的编码中可以使用视频压缩系统,诸如高级视频编码标准(H.264/AVC)、H.264/AVC的多视图视频编码(MVC)扩展(extension)或HEVC(高效率视频编码)的可伸缩(scalable)扩展。

二维(2D)视频编解码器(codec)可以用作新使用场景的基础,诸如点云编码和360度视频。面临以下挑战。可能需要在为单个时刻(time instance)最佳地选择投影表面与在一段时间内保持投影表面恒定以促进帧间预测之间进行权衡。此外,可能无法最佳处理投影表面边界上的运动。当投影表面被打包(pack)到2D图片上时,必须使用诸如运动受限图块集(motion-constrained tile set)等技术来避免从一个表面到另一表面的无意的预测泄漏(unintentional prediction leak)。在360度视频编码中,几何填充(geometriypadding)已经被证明可以提高压缩率,但需要改变核心编码(解码)过程。

发明内容

现在为了至少缓解上述问题,本文中引入了一种增强的编码和解码方法。

根据第一方面的一种方法包括:

-获取子图片的编码数据,子图片属于图片,并且子图片属于子图片序列;

-确定是否要使用子图片作为被操纵的参考子图片的源;

-如果该确定揭示子图片将被用作该被操纵的参考子图片的源,该方法还包括

-从子图片生成被操纵的参考子图片以用作子图片序列的后续子图片的参考。

根据第二方面的一种装置,包括至少一个处理器和包含计算机程序代码的至少一个存储器,存储器和计算机程序代码被配置为与至少一个处理器一起使该装置至少执行以下操作:

-获取子图片的编码数据,子图片属于图片,并且子图片属于子图片序列;

-确定是否要使用子图片作为被操纵的参考子图片的源;

-如果该确定揭示子图片将被用作该被操纵的参考子图片的源,则从子图片生成被操纵的参考子图片以用作子图片序列的后续子图片的参考。

根据第三方面的一种计算机程序产品包括计算机程序代码,该计算机程序代码被配置为当在至少一个处理器上执行时使装置或系统:

-获取子图片的编码数据,子图片属于图片,并且子图片属于子图片序列;

-确定是否要使用子图片作为被操纵的参考子图片的源;

-如果该确定揭示子图片将被用作被操纵的参考子图片的源,则从子图片生成被操纵的参考子图片以用作子图片序列的后续子图片的参考。

根据第四方面的一种编码器包括:

-输入,用于获取子图片的编码数据,子图片属于图片,并且子图片属于子图片序列;

-确定器,被配置为确定是否要使用子图片作为被操纵的参考子图片的源;

-操纵器,被配置为如果该确定揭示子图片将被用作该被操纵的参考子图片的源,则从子图片生成被操纵的参考子图片以用作子图片序列的后续子图片的参考。

根据第五方面的一种解码器包括:

-输入,用于接收子图片的编码数据,子图片属于图片,并且子图片属于子图片序列;

-确定器,被配置为确定是否要使用子图片作为被操纵的参考子图片的源;

-操纵器,被配置为如果该确定揭示子图片将被用作该被操纵的参考子图片的源,则从子图片生成被操纵的参考子图片以用作子图片序列的后续子图片的参考。

根据第六方面的一种方法包括:

-对第一子图片的编码数据进行解码,第一子图片属于第一图片,并且第一子图片属于第一子图片序列;

-对第二子图片的编码数据进行解码,第二子图片属于第一图片,并且第二子图片属于第二子图片序列,该解码独立于第一子图片的编码数据的解码;以及

-对第三子图片的编码数据进行解码,第三子图片属于第二图片,第三子图片属于第一子图片序列,该解码使用第一子图片作为预测的参考。

根据第七方面的一种用于对视频序列进行编码的方法包括:

-对第一子图片的数据进行编码,第一子图片属于第一图片,并且第一子图片属于第一子图片序列;

-对第二子图片的数据进行编码,第二子图片属于第一图片,并且第二子图片属于第二子图片序列,该编码独立于第一子图片的编码数据的编码;以及

-对第三子图片的数据进行编码,第三子图片属于第二图片,第三子图片属于第一子图片序列,该编码使用第一子图片作为预测的参考。

根据第八方面的一种装置,包括至少一个处理器和包含计算机程序代码的至少一个存储器,存储器和计算机程序代码被配置为与至少一个处理器一起使该装置至少执行以下操作:

-对第一子图片的编码数据进行解码,第一子图片属于第一图片,并且第一子图片属于第一子图片序列;

-对第二子图片的编码数据进行解码,第二子图片属于第一图片,并且第二子图片属于第二子图片序列,该解码独立于第一子图片的编码数据的解码;以及

-对第三子图片的编码数据进行解码,第三子图片属于第二图片,第三子图片属于第一子图片序列,该解码使用第一子图片作为预测的参考。

根据第九方面的一种装置,包括至少一个处理器、包含计算机程序代码的存储器,存储器和计算机程序代码被配置为与至少一个处理器一起使该装置至少执行以下操作:

-对第一子图片的数据进行编码,第一子图片属于第一图片,并且第一子图片属于第一子图片序列;

-对第二子图片的数据进行编码,第二子图片属于第一图片,并且第二子图片属于第二子图片序列,该编码独立于第一子图片的编码数据的编码;以及

-对第三子图片的数据进行编码,第三子图片属于第二图片,第三子图片属于第一子图片序列,该编码使用第一子图片作为预测的参考。

另外的各方面涉及一种其上存储有代码的装置和计算机可读存储介质,该代码被布置为执行上述方法以及与其相关的实施例中的一个或多个。

附图说明

为了更好地理解本发明,现在将通过示例的方式参考附图,在附图中:

图1示出了MPEG全向媒体格式(OMAF)的一个示例;

图2示出了图像拼接(image stitching)、投影和按区域(region-wise)打包的一个示例;

图3示出了图像拼接、投影和按区域打包的另一示例;

图4示出了形成单视场等距柱状图全景图片(monoscopic equirectangularpanorama picture)的过程的一个示例;

图5示出了基于图块的全向视频流传输(omnidirectional video streaming)的一个示例;

图6示出了解码过程的一个示例;

图7示出了根据一个实施例的按子图片序列的缓冲;

图8示出了根据一个实施例的解码过程;

图9示出了根据另一实施例的解码过程;

图10示出了已经分为四个子图片的图片的示例;

图11示出了根据一个实施例的适用于编码过程和/或解码过程的预测;

图12示出了使用共享编码子图片用于多分辨率视口独立(multi-resolutionviewport independent)360度视频流传输的一个示例;

图13示出了使用另一子图片的一部分作为参考帧的子图片的一个示例;

图14示出了使用另一子图片的一部分作为参考帧的子图片的另一示例;

图15示出了根据一个实施例的斑块生成(patch generation)的一个示例;

图16是示出根据一个实施例的方法的流程图;

图17是示出根据另一实施例的方法的流程图;

图18示出了根据一个实施例的装置。

具体实施方式

在下文中,将在一种视频编码布置(arrangement)的上下文中描述若干实施例。然而,应当注意,本发明不限于这种特定布置。例如,本发明可以适用于视频编码系统,如流传输系统、DVD(数字多功能盘)播放器、数字电视接收器、个人录像机、个人计算机、手持计算机和通信设备上的系统和计算机程序、以及网络元件(诸如在其中处理视频数据的转码器和云计算布置)。

在下文中,使用提及编码(解码)的惯例来描述若干实施例,这表明这些实施例可以应用于解码和/或编码。

高级视频编码标准(可以缩写为AVC或H.264/AVC)由国际电信联盟(ITU-T)的电信标准化部门的视频编码专家组(VCEG)和国际标准化组织(ISO)/国际电工委员会(IEC)的运动图片专家组(MPEG)的联合视频小组(JVT)制定。H.264/AVC标准由两个上级标准化组织发布,称为ITU-T建议书H.264和ISO/IEC国际标准14496-10,也称为MPEG-4第10部分高级视频编码(AVC)。H.264/AVC标准有多个版本,每个版本将新的扩展或特征集成到规范中。这些扩展包括可伸缩视频编码(SVC)和多视图视频编码(MVC)。

高效视频编码标准(可以缩写为HEVC或H.265/HEVC)由VCEG和MPEG的联合协作小组视频编码(JCT-VC)开发。该标准由两个上级标准化组织发布,称为ITU-T建议书H.265和ISO/IEC国际标准23008-2,也称为MPEG-H第2部分高效视频编码(HEVC)。H.265/HEVC的扩展包括可伸缩、多视图、三维和保真度范围扩展,它们可以分别称为SHVC、MV-HEVC、3D-HEVC和REXT。除非另有说明,否则本说明书中出于理解这些标准规范的定义、结构或概念的目的而对H.265/HEVC、SHVC、MV-HEVC、3D-HEVC和REXT的引用应当理解为对在本申请的日期之前可获取的这些标准的最新版本的引用。

通用视频编码标准(VVC、H.266或H.266/VVC)目前正在由联合视频专家组(JVET)开发,它是ISO/IEC MPEG和ITU-T VCEG之间的合作。

本节中描述H.264/AVC和HEVC的一些关键定义、比特流和编码结构、概念以及它们的一些扩展,作为实施例可以在其中实现的视频编码器、解码器、编码方法、解码方法和比特流结构的示例。H.264/AVC的一些关键定义、比特流和编码结构、以及概念与HEVC标准中的相同,因此,它们在下面共同描述。各种实施例的各方面不限于H.264/AVC或HEVC或其扩展,而是针对一种可能的基础给出描述,在此基础上可以部分地或完全实现本实施例。

视频编解码器可以包括将输入视频变换为适合存储/传输的压缩呈现的编码器和可以将压缩视频呈现解压缩回可查看形式的解码器。压缩呈现可以称为比特流或视频比特流。视频编码器和/或视频解码器也可以彼此分开,即,不需要形成编解码器。编码器可以丢弃原始视频序列中的一些信息,以便以更紧凑的形式(即,以较低的比特率)表示视频。

混合视频编解码器(例如,ITU-T H.264)可以分两个阶段对视频信息进行编码。首先,例如通过运动补偿手段(在先前编码的视频帧之一中找出并指示与正在编码的块紧密对应的区域)或通过空间手段(使用要以指定方式进行编码的块周围的像素值)来预测特定图片区域(或“块”(block))中的像素值。然后,对预测误差(即,预测的像素块与原始像素块之间的差异)进行编码。这可以通过使用指定变换(例如,离散余弦变换(DCT)或其变形)对像素值的差异进行变换、对系数进行量化并且对量化后的系数进行熵编码来进行。通过改变量化过程的保真度,编码器可以控制像素呈现的准确性(图片质量)与所得到的编码视频呈现的大小(文件大小或传输比特率)之间的平衡。

在时间预测中,预测源是先前已解码的图片(也称为参考图片)。在块内复制(IBC;也称为块内复制预测或当前图片参考)中,对时间预测类似地应用预测,但参考图片是当前图片且在预测过程中只能参考先前已解码的样本。可以对时间预测类似地应用层间或视图间预测,但是参考图片是分别来自另一可伸缩层或另一视图的已解码图片。在某些情况下,帧间预测可以仅是指时间预测,而在其他情况下,帧间预测可以共同指代时间预测、以及块内复制、层间预测和视图间预测中的任何一个,前提是它们以与时间预测相同或类似的过程执行。帧间预测或时间预测有时可称为运动补偿或运动补偿预测。

帧内预测利用同一图片内的相邻像素可能相关这一事实。帧内预测可以在空间域或变换域中执行,即,可以预测样本值或变换系数。帧内预测通常用于帧内编码,其中在帧内编码中不应用帧间预测。

编码过程的结果之一是编码参数集(a set of coding parameters),诸如运动矢量(motion vector)和量化变换系数(quantized transformcoefficient)。如果首先从空间或时间上相邻的参数中预测很多参数,则可以更有效地对这些很多参数进行熵编码。例如,可以从空间上相邻的运动矢量中预测运动矢量,并且可以仅对相对于运动矢量预测器的差异进行编码。编码参数的预测和帧内预测可以统称为图片内预测。

熵编码/解码可以以多种方式执行。例如,可以应用基于上下文的编码/解码,其中编码器和解码器都基于先前编码/解码的编码参数来修改编码参数的上下文状态。例如,基于上下文的编码可以是上下文自适应二进制算术编码(CABAC)或基于上下文的可变长度编码(CAVLC)或任何类似的熵编码。熵编码/解码可以替代地或另外地使用可变长度编码方案(诸如Huffman编码/解码或Exp-Golomb编码/解码)来执行。从熵编码比特流或码字中对编码参数进行解码可以称为解析(parsing)。

视频编码标准可以规定比特流语法(syntax)和语义(semantics)、以及无误差比特流的解码过程,而编码过程可能没有规定,但编码器可能只需要生成合规的比特流。比特流和解码器的合规性可以使用假定参考解码器(HRD)验证。这些标准可以包含有助于处理传输错误和丢失的编码工具,但该工具在编码中的使用可以是可选的,并且可能没有规定错误比特流的解码过程。

语法元素可以定义为在比特流中表示的数据元素。语法结构可以定义为以指定顺序一起出现在比特流中的零个或多个语法元素。

用于向编码器的输入和解码器的输出的基本单元通常分别是图片。作为向编码器的输入而给出的图片也可以称为源图片,并且由解码器解码的图片可以称为解码图片或重构图片。

源图片和解码图片均由一个或多个样本数组(sample array)组成,诸如以下各样本数组集之一:

-仅亮度(Y)(单色)。

-亮度和两个色度(YCbCr或YCgCo)。

-绿色、蓝色和红色(GBR,也称为RGB)。

-表示其他未指定单色或三色刺激色采样的数组(例如,YZX,也称为XYZ)。

在下文中,无论使用中的实际颜色呈现方法如何,这些数组可以称为亮度(或L或Y)和色度,其中两个色度数组可以称为Cb和Cr。使用中的实际颜色呈现方法可以例如使用HEVC的视频可用性信息(VUI)语法等例如在编码比特流中指示。分量(component)可以定义为三个样本数组(亮度和两个色度)之一的数组或单个样本、或者构成单色格式图片的数组或数组的单个样本。

图片可以定义为帧(frame)或场(field)。帧包括亮度样本的矩阵,可能还包括对应色度样本。场是帧的交替样本行的集合,并且当源信号交织(interlace)时,可以用作编码器输入。与亮度样本数组相比,色度样本数组可以不存在(并且因此可以使用单色采样)或色度样本数组可以被欠采样(subsample)。

一些色度格式可以总结如下:

-在单色采样中,只有一个样本数组,其在名义上可以被认为是亮度数组。

-在4:2:0采样中,两个色度数组中的每个色度数组具有亮度数组的一半高度和一半宽度。

-在4:2:2采样中,两个色度数组中的每个色度数组具有亮度数组的相同高度和一半宽度。

-在4:4:4采样中,当没有使用单独颜色平面时,两个色度数组中的每个具有与亮度数组相同的高度和宽度。

编码格式或标准可以允许将样本数组作为单独颜色平面编码到比特流中,并且分别从比特流中解码单独编码的颜色平面。当使用单独颜色平面时,颜色平面中的每个颜色平面(由编码器和/或解码器)作为具有单色采样的图片单独进行处理。

当使用色度欠采样(例如,4:2:0或4:2:2色度采样)时,可以在编码器侧确定色度样本相对于亮度样本的位置(例如,作为预处理步骤或作为编码的一部分)。相对于亮度样本位置的色度样本位置可以例如在诸如H.264/AVC或HEVC等编码标准中预定义,或者可以在比特流中指示,例如作为H.264/AVC或HEVC的VUI的一部分。

通常,作为编码输入而提供的(多个)源视频序列可以表示交织式源内容或渐进式源内容。已经在不同时间为交织式源内容捕获了相反奇偶性(parity)的场(field)。渐进式源内容包含捕获帧。编码器可以以两种方式对交织式源内容的字段进行编码:可以将一对交织场编码为编码帧,或者可以将场编码为编码场(coded field)。同样,编码器可以以两种方式对渐进式源内容的帧进行编码:可以将渐进式源内容的帧编码为编码帧或一对编码场。场对(field pair)或互补场对(complementary field pair)可以定义为按解码和/或输出顺序彼此相邻的两个场,这两个场具有相反的奇偶性(即,一个是顶场(top field),另一是底场(bottom field))并且不属于任何其他互补场对。一些视频编码标准或方案允许在同一编码视频序列中混合编码帧和编码场。此外,可以在编码和/或解码中启用从编码帧中的场中预测编码场和/或预测用于互补场对(编码为场)的编码帧。

分区可以定义为将一个集合分为多个子集,使得该集合的每个元素恰好在子集之一中。

在H.264/AVC中,宏块(macroblock)是一个16×16的亮度样本块和对应的色度样本块。例如,在4:2:0采样模式中,宏块针对每个色度分量包含一个8×8的色度样本块。在H.264/AVC中,图片被划分为一个或多个切片组(slice group),并且一个切片组包含一个或多个切片。在H.264/AVC中,切片由特定切片组内在光栅扫描中连续排序的整数个宏块组成。

当描述HEVC编码和/或解码的操作时,可以使用以下术语。编码块(coding block)可以定义为对于某个N值的N×N个样本块,使得将编码树块分为编码块是分区。编码树块(CTB)可以定义为对于某个N值的N×N个样本块,使得将分量分为编码树块是分区。编码树单元(CTU)可以定义为具有三个样本数组的图片的亮度样本的编码树块、色度样本的两个对应编码树块、或者单色图片或使用三个单独颜色平面和用于对样本进行编码的语法结构进行编码的图片的样本的编码树块。编码单元(CU)可以定义为具有三个样本数组的图片的亮度样本的编码块、色度样本的两个对应编码块、或者单色图片或使用三个单独颜色平面和用于对样本进行编码的语法结构进行编码的图片的样本的编码块。

在诸如高效视频编码(HEVC)编解码器等一些视频编解码器中,视频图片可以被划分为覆盖图片的区域的编码单元(CU)。CU由定义CU内的样本的预测过程的一个或多个预测单元(PU)和定义上述CU中的样本的预测误差编码过程的一个或多个变换单元(TU)组成。CU可以由具有可从可能的CU大小的预定义集合中选择的大小的方形样本块组成。具有最大允许大小的CU可以被命名为LCU(最大编码单元)或编码树单元(CTU),并且视频图片被划分为非重叠LCU。LCU可以进一步拆分为更小CU的组合,例如通过递归地拆分LCU和结果CU。每个结果CU可以具有至少一个PU和与其相关联的至少一个TU。每个PU和TU可以进一步划分(split into)为更小的PU和TU,以分别增加预测和预测误差编码过程的粒度。每个PU具有与其相关联的预测信息,该预测信息定义了要对该PU内的像素应用哪种类型的预测(例如,用于帧间预测PU的运动矢量信息和用于帧内预测PU的帧内预测方向性信息)。

每个TU可以与描述该TU内的样本的预测误差解码过程的信息相关联(包括例如DCT系数信息)。可以在CU级别发信号通知是否对每个CU应用预测误差编码。在没有与CU相关联的预测误差残差(prediction error residual)的情况下,可以认为该CU没有TU。可以在比特流中发信号通知将图像划分为CU以及将CU划分为PU和TU,从而允许解码器再现这些单元的预期结构。

在H.266/VVC的草案版本中适用以下分区。注意,在标准最终确定之前,这里描述的内容可能仍会在H.266/VVC的后续草案版本中演化。尽管最大CTU大小已经增加到128×128,但与HEVC类似,图片被分区为CTU。编码树单元(CTU)首先由四叉树(quaternary tree)(也称为四叉树(quadtree))结构进行分区。然后可以通过多类型树结构(multi-type treestructure)对四叉树的叶节点进一步分区。多类型树结构中有四种拆分类型:垂直二元拆分、水平二元拆分、垂直三元拆分和水平三元拆分。多类型树叶节点称为编码单元(CU)。CU、PU和TU具有相同的块大小,除非CU对于最大变换长度而言太大。CTU的分段结构是使用二元和三元拆分的具有嵌套的多类型树的四叉树,即,在使用中没有单独的CU、PU和TU概念,除非在CU的大小对于最大变换长度而言太大时才需要使用这些概念。CU可以是正方形或矩形。

解码器通过应用类似于编码器的预测手段来重构输出视频,以形成像素块的预测呈现(使用由编码器创建并且以压缩呈现存储的运动或空间信息)和预测误差解码(预测误差编码的逆操作,以在空间像素域中恢复量化预测误差信号)。在应用预测和预测误差解码手段之后,解码器将预测和预测误差信号(像素值)相加以形成输出视频帧。解码器(和编码器)还可以应用附加的滤波手段来提高输出视频的质量,然后再将其用于显示和/或将其存储为视频序列中的即将到来的帧的预测参考。

滤波可以例如包括以下中的一种或多种:去块、样本自适应偏移(SAO)和/或自适应环路滤波(ALF)。

去块环路滤波器可以包括多个滤波模式或强度,其可以基于与边界相邻的块的特征(诸如量化参数值)和/或由编码器在比特流中包括的信令来被自适应地选择。例如,去块环路滤波器可以包括普通滤波模式和强滤波模式,这两种模式可以在滤波器抽头(tap)的数目(即,在边界两侧被滤波的样本数)和/或滤波器抽头值方面不同。例如,当省略削波操作(clipping operation)的潜在影响时,可以使用具有(37 9-3)/16的脉冲响应的滤波器来执行沿边界两侧的两个样本的滤波。

运动信息可以用与视频编解码器中的每个运动补偿图像块相关联的运动矢量来指示。这些运动矢量中的每个运动矢量表示要编码(在编码器侧)或解码(在解码器侧)的图片中的图像块相对于先前已编码或解码的图片之一中的预测源块的位移。为了有效地表示运动矢量,可以相对于块特定预测运动矢量对这些运动矢量不同地进行编码。可以以预定义方式(例如计算相邻块的已编码或解码的运动矢量的中值)创建预测运动矢量。用于创建运动矢量预测的另一种方式是从时间参考图片中的相邻块和/或并置块(co-locatedblocks)生成候选预测列表,并且将所选择的候选发信号通知作为运动矢量预测器。除了预测运动矢量值,还可以预测先前已编码/解码的图片的参考索引。参考索引可以从时间参考图片中的相邻块和/或并置块来预测。此外,高效视频编解码器可以采用附加的运动信息编码/解码机制,通常称为合并(merging)/合并(merge)模式,其中包括每个可用参考图片列表的运动矢量和对应参考图片索引在内的所有运动场信息被预测和使用而无需任何修改/校正。类似地,运动场信息的预测使用时间参考图片中的相邻块和/或并置块的运动场信息来执行,并且所使用的运动场信息在填充有可用相邻/并置块的运动场信息的运动场候选列表的列表中被发信号通知。

视频编解码器可以支持来自一个源图像(单预测)和两个源(双预测)的运动补偿预测。在单预测的情况下,应用单个运动矢量,而在双预测的情况下,发信号通知两个运动矢量并且对来自两个源的运动补偿预测求平均以创建最终样本预测。在加权预测的情况下,可以调节两个预测的相对权重,或者可以将发信号通知的偏移添加到预测信号中。

除了将运动补偿应用于图片间预测,类似的方法也可以应用于图片内预测。在这种情况下,位移矢量指示可以从同一图片的何处复制样本块以形成要编码或解码的块的预测。这种帧内块复制方法可以在帧内存在重复结构(诸如文本或其他图形)的情况下显著提高编码效率。

运动补偿或帧内预测之后的预测残差可以首先用变换核(transform kernel)(如DCT)进行变换,然后进行编码。这样做的原因是,残差之间通常仍然存在一些相关性,且变换在很多情况下可以帮助减少这种相关性并提供更有效的编码。

视频编码器可以利用拉格朗日成本函数来找出最佳编码模式,例如期望宏块模式和相关联的运动矢量。这种成本函数使用加权因子λ将因有损编码方法导致的(精确或估计的)图像失真与表示图像区域中的像素值所需要的(精确或估计的)信息量联系在一起:

C=D+λR (等式1)

其中C是要最小化的拉格朗日成本,D是在考虑模式和运动矢量的情况下的图像失真(例如,均方误差),R是表示在解码器中重构图像块所需要的数据所需要的位数(包括用于表示候选运动矢量的数据量)。

一些编解码器使用图片顺序计数(POC)的概念。POC的值是针对每个图片导出的,并且不会随着输出顺序的图片位置的增加而减少。因此,POC指示图片的输出顺序。POC可以在解码过程中使用,例如用于运动矢量的隐式缩放和用于参考图片列表初始化。此外,POC可以用于验证输出顺序合规性(conformance)。

在视频编码标准中,兼容的比特流必须能够被假定的参考解码器解码,该解码器在概念上可以连接到编码器的输出,并且至少包括预解码器缓冲器(pre-decoderbuffer)、解码器和输出/显示单元。该虚拟解码器可以称为假定参考解码器(HRD)或视频缓冲验证器(VBV)。如果流可以被HRD解码而没有缓冲器上溢(overflow)或者在某些情况下没有下溢(underflow),则它就是合规(compliant)的。如果在缓冲器已满时将更多位放入缓冲器,则会发生缓冲器上溢。如果在要从缓冲器中提取某些位以进行解码/回放时这些位不在缓冲器中,则会发生缓冲器下溢。HRD的动机之一是避免所谓的邪恶比特流,该邪恶比特流会消费大量资源,而实际解码器实现将无法处理这些资源。

HRD模型通常包括瞬时解码,而HRD的编码图片缓冲器(CPB)的输入比特率可以被视为编码器和比特流对编码数据的解码速率的约束、以及对解码器的处理速率的要求。编码器可以包括HRD中所规定的CPB,以用于验证和控制在编码中遵守缓冲约束。解码器实现还可以具有CPB,该CPB可以但不一定与针对HRD指定的CPB类似或相同地操作。

解码图片缓冲器(DPB)可以用在编码器和/或解码器中。对解码图片进行缓冲可能有两个原因:用于帧间预测中的参考和用于将解码图片重新排序为输出顺序。诸如HEVC等一些编码格式为参考图片标记和输出重新排序提供了很大的灵活性,用于参考图片缓冲和输出图片缓冲的单独缓冲器可能会浪费存储器资源。因此,DPB可以包括用于参考图片和输出重新排序的统一解码图片缓冲过程。当解码图片不再用作参考且不需要用于输出时,可以将解码图片从DPB中移除。HRD也可以包括DPB。HRD和解码器实现的DPB可以但不需要以相同的方式操作。

输出顺序可以定义为从解码图片缓冲器输出解码图片的顺序(对于要从解码图片缓冲器输出的解码图片)。

解码器和/或HRD可以包括图片输出过程。输出过程可以被认为是解码器提供经解码和裁剪的图片作为解码过程的输出的过程。输出过程通常是视频编码标准的一部分,通常作为假定参考解码器规范的一部分。在输出裁剪中,可以根据裁剪矩形从解码图片中移除样本的行和/或列以形成输出图片。裁剪后的解码图片可以定义为基于例如在要由对应编码图片引用的序列参数集中指定的合规性裁剪窗口来对解码图片进行裁剪的结果。

用于(解码的)参考图片标记的一种或多种语法结构可以存在于视频编码系统中。编码器(例如在每个编码图片中)生成语法结构的实例,并且解码器(例如从每个编码图片中)对语法结构的实例进行解码。例如,语法结构的解码可以引起图片被自适应地标记为“用于参考”(used for reference)或“不用于参考”(unused for reference)。

HEVC的参考图片集(RPS)语法结构是用于参考图片标记的语法结构的示例。对于图片而言有效或活跃(active)的参考图片集合包括可以用作图片的参考的所有参考图片、以及针对按解码顺序的任何后续图片保持标记为“用于参考”的所有参考图片。针对按解码顺序的任何后续图片保持标记为“用于参考”但未被用作当前图片或图像分段的参考图片的参考图片可以被认为是不活跃(inactive)的。例如,它们可能不被包括在(多个)初始参考图片列表中。

在一些编码格式和编解码器中,对所谓的短期和长期参考图片进行了区分。这种区分可以影响一些解码过程(诸如运动矢量缩放)。用于标记参考图片的(多个)语法结构可以指示将图片标记为“用于长期参考”或“用于短期参考”。

在一些编码格式中,可以用参考图片列表的索引来指示帧间预测的参考图片。在一些编解码器中,为每个双预测(B)切片生成两个参考图片列表(参考图片列表0和参考图片列表1),并且为每个帧间编码(P)切片形成一个参考图片列表(参考图片列表0)。

诸如参考图片列表0和参考图片列表1等参考图片列表可以分两步构造:首先,生成初始参考图片列表。初始参考图片列表可以使用标准中预定义的算法来生成。这种算法可以使用例如POC和/或时间子层作为基础。该算法可以处理具有(多个)特定标记(诸如“用于参考”)的参考图片,并且省略其他参考图片,即,避免将其他参考图片插入到初始参考图片列表中。这种其他参考图片的示例是标记为“不用于参考”但仍驻留在等待从解码器输出的解码图片缓冲器中的参考图片。其次,初始参考图片列表可以通过特定语法结构(诸如H.264/AVC的参考图片列表重新排序(RPLR)命令或HEVC的参考图片列表修改语法结构或任何类似语法结构)重新排序。此外,可以为每个列表指示活跃参考图片的数目,并且禁止使用列表中活跃图片之外的图片作为帧间预测的参考。参考图片列表初始化和参考图片列表修改中的一者或两者可仅处理参考图片中标记为“用于参考”等的活跃参考图片。

可伸缩视频编码是指一种编码结构,其中一个比特流可以包含不同比特率、分辨率或帧速率的内容的多种呈现。在这些情况下,接收器可以根据其特性(例如,与显示设备最匹配的分辨率)提取所期望的呈现。替代地,服务器或网络元件可以根据例如接收器的网络特性或处理能力来提取要传输到接收器的比特流的部分(portion)。可伸缩比特流可以包括提供可用的最低质量视频的“基础层”(base layer)和当被与较低层一起接收和解码时用于增强视频质量的一个或多个增强层。为了提高增强层的编码效率,该层的编码呈现可以取决于较低层。例如,增强层的运动和模式信息可以从较低层预测。类似地,较低层的像素数据可以用于创建增强层的预测。

用于质量可伸缩性(也称为信噪比或SNR)和/或空间可伸缩性的可伸缩视频编解码器可以如下实现。对于基础层,使用传统的不可伸缩视频编码器和解码器。基础层的重构/解码图片被包括在针对增强层的参考图片缓冲器中。在H.264/AVC、HEVC、和使用(多个)参考图片列表进行帧间预测的类似编解码器中,可以将基础层解码图片插入到(多个)参考图片列表中,以用于与增强层的解码参考图片类似地对增强层图片进行编码/解码。因此,编码器可以选择基础层参考图片作为帧间预测参考并且指示其用途,例如在编码比特流中使用参考图片索引。解码器从比特流(例如,从参考图片索引)中解码出基础层图片被用作增强层的帧间预测参考。当解码得到的基础层图片用作增强层的预测参考时,它称为层间参考图片。

可伸缩性模式或可伸缩性维度(dimension)可以包括但不限于以下内容:

·质量可伸缩性:基础层图片以低于增强层图片的质量被编码,这可以例如在基础层中使用比在增强层中更大的量化参数值(即,用于变换系数量化的更大量化步长)来实现。

·空间可伸缩性:与增强层图片相比,基础层图片的编码分辨率较低(即,样本较少)。空间可伸缩性和质量可伸缩性有时可以被认为是同一类型的可伸缩性。

·位深可伸缩性:基础层图片以比增强层图片(例如,10或12位)更低的位深(例如,8位)被编码。

·动态范围可伸缩性:可伸缩层表示使用不同色调映射函数和/或不同光学传递函数获取的不同动态范围和/或图像。

·色度格式可伸缩性:与增强层图片(例如,4:4:4格式)相比,基础层图片在色度样本数组(例如,以4:2:0色度格式编码)中提供更低的空间分辨率。

·色域可伸缩性:增强层图片具有比基础层图片更丰富/更广泛的颜色呈现范围,例如,增强层可能具有UHDTV(ITU-R BT.2020)色域,而基础层可能具有ITU-R BT.709色域。

·感兴趣区域(ROI)可伸缩性:增强层表示基础层的空间子集。ROI可伸缩性可以与其他类型的可伸缩性一起使用,例如质量或空间可伸缩性,使得增强层为空间子集提供更高的主观质量。

·视图可伸缩性,也可以称为多视图编码。基础层表示第一视图,而增强层表示第二视图。

·深度可伸缩性,也可以称为深度增强编码。比特流的一个或一些层可以表示(多个)纹理视图,而其他一个层或多个层可以表示(多个)深度视图。

在所有上述可伸缩性情况下,基础层信息可以用于对增强层进行编码以最小化附加的比特率开销。

可伸缩性可以通过两种基本方式实现。通过引入新的编码模式来执行来自可伸缩呈现的较低层的像素值或语法的预测,或者通过将较低层图片放置到较高层的参考图片缓冲器(解码图片缓冲器DPB)。第一种方法更灵活,因此在大多数情况下可以提供更好的编码效率。然而,第二种基于参考帧的可伸缩性方法可以非常有效地实现,对单层编解码器进行的改变最小,同时仍然实现大部分可获得(available)的编码效率增益。本质上,可以通过对所有层使用相同的硬件或软件实现来实现基于参考帧的可伸缩性编解码器,只需通过外部手段处理DPB管理即可。

用于某些编码格式(诸如HEVC)的编码器的输出以及某些编码格式(诸如HEVC)的解码器的输入的基本单元是网络抽象层(NAL)单元。为了通过面向分组的网络进行传输或存储到结构化文件中,NAL单元可以封装到分组或类似结构中。

NAL单元由标头(header)和有效载荷(payload)组成。在HEVC中,针对所有指定NAL单元类型使用两字节的NAL单元标头,而在其他编解码器中,NAL单元标头可以与HEVC中的类似。

在HEVC中,NAL单元标头包含一个保留比特、六比特NAL单元类型指示、用于时间级别或子层的三比特temporal_id_plus1指示(可能要求其大于或等于1)、和六比特nuh_layer_id语法元素。temporal_id_plus1语法元素可以被视为NAL单元的时间标识符,并且基于零的TemporalId变量可以如下导出:TemporalId=temporal_id_plus1-1。缩写TID可以与TemporalId变量互换使用。TemporalId等于0对应于最低时间级别。temporal_id_plus1的值需要为非零,以避免涉及两个NAL单元标头字节的起始码竞争(start codeemulation)。通过排除具有大于或等于所选择的值的TemporalId的所有VCL NAL单元且包括所有其他VCL NAL单元而创建的比特流保持合规。因此,具有等于tid_value的TemporalId的图片不使用具有大于tid_value的TemporalId的任何图片作为帧间预测参考。子层或时间子层可以定义为时间可伸缩比特流的时间可伸缩层(或时间层TL)。这种时间可伸缩层可以包括TemporalId变量为特定值的VCL NAL单元和相关联的非VCL NAL单元。nuh_layer_id可以理解为可伸缩性层标识符。

NAL单元可以分类为视频编码层(VCL)NAL单元和非VCL NAL单元。VCL NAL单元通常是经编码的切片NAL单元。在HEVC中,VCL NAL单元包含表示一个或多个CU的语法元素。在HEVC中,在一定范围内的NAL单元类型指示VCL NAL单元,并且VCL NAL单元类型指示图片类型。

图像可以拆分为独立可编码且可解码的图像分段(例如,切片或图块或图块组)。这样的图像分段可以启用并行处理,本说明书中的“切片”可以是指由以默认编码或解码顺序处理的一定数目的基本编码单元构成的图像分段,而“图块”可以是指已经定义为矩形图像区域的图像分段。图块组可以定义为一组一个或多个图块。图像分段可以被编码为比特流中的单独单元,诸如H.264/AVC和HEVC中的VCL NAL单元。经编码的图像分段可以包括标头和有效载荷,其中标头包含对有效载荷进行解码所需要的参数值。

在HEVC标准中,可以将图片分区成图块,这些块是矩形的且包含整数个CTU。在HEVC标准中,分区成图块形成网格,该网格可以由图块列宽列表(以CTU为单位)和图块行高列表(以CTU为单位)为特征。图块在比特流中以图块网格的光栅扫描顺序连续排序。图块可以包含整数个切片。

在HEVC中,切片由整数个CTU组成。如果未使用图块,则按图块内或图片内的CTU的光栅扫描顺序扫描CTU。切片可以包含整数个图块,或者切片可以被包含在图块中。在CTU内,CU具有特定扫描顺序。

在HEVC中,切片被定义为被包含在一个独立切片分段中的整数个编码树单元,以及在同一访问单元中的下一独立切片分段(若有)之前的所有后续相关切片分段(若有)。在HEVC中,切片分段被定义为在图块扫描中连续排序并且被包含在单个NAL(网络抽象层)单元中的整数个编码树单元。将每个图片分为切片分段即为分区(partitioning)。在HEVC中,独立切片分段被定义为不从在前的切片分段的值推断切片分段标头的语法元素值的切片分段,并且从属切片分段被定义为按解码顺序从在前的独立切片分段的值推断切片分段标头的一些语法元素值的切片分段。在HEVC中,切片标头被定义为作为当前切片分段或作为当前从属切片分段之前的独立切片分段的独立切片分段的切片分段标头,并且切片分段标头被定义为包含数据元素的经编码的切片分段的一部分,该数据元素与切片分段中表示的第一或所有编码树单元有关。如果图块未使用,则按图块内或图片内的LCU的光栅扫描顺序扫描CU。在LCU内,CU具有特定扫描顺序。

在H.266/VVC的草案版本中,图片被分区为沿图块网格的图块(类似于HEVC)。图块在比特流中以图片内的图块光栅扫描顺序排序,而CTU在比特流中以图块内的光栅扫描顺序排序。图块组包含比特流顺序(即,图片内的图块光栅扫描顺序)的一个或多个完整图块,并且VCL NAL单元包含一个图块组。切片尚未被包括在H.266/VVC的草案版本中。注意,在该标准最终确定之前,本段中描述的内容可能仍会在H.266/VVC的后续草案版本中演进。

运动受限图块集(MCTS)使帧间预测过程在编码时受到约束,以使在运动受限图块集之外没有样本值,并且在使用运动受限图块集之外的一个或多个样本值而导出的分数样本(fractional sample)位置处的样本值都没有用于运动受限图块集内的任何样本的帧间预测。此外,MCTS的编码以不从MCTS之外的块中导出运动矢量候选的方式受到约束。这可以通过以下方式来强制执行:针对位于MCTS的右侧图块边界的正左侧的PU(除MCTS的右下角的最后的PU外),关闭HEVC的时间运动矢量预测,或者禁止编码器使用TMVP候选或在合并或AMVP候选列表中紧随TMVP候选的任何运动矢量预测候选。通常,MCTS可以定义为独立于MCTS之外的任何样本值和编码数据(诸如运动矢量)的图块集。MCTS序列可以定义为一个或多个编码视频序列等中的相应MCTS的序列。在某些情况下,可能需要MCTS来形成矩形区域。应当理解,根据上下文,MCTS可以是指图片内的图块集或图片序列中的相应图块集。相应图块集可以但通常不必在图片序列中并置。运动受限图块集可以被视为独立编码的图块集,因为它可以在没有其他图块集的情况下解码。

可以理解,帧间预测中使用的样本位置可以是饱和的,使得否则在图片之外的位置将饱和以指向图片的对应边界样本。因此,在某些用例中,如果图块边界也是图片边界,则运动矢量可以有效地跨越该边界,或者运动矢量可以有效地引起分数样本插值,该插值将引用该边界之外的位置,因为样本位置已经饱和到边界上。在其他用例中,具体地,如果可以从图片边界与另一比特流相邻的位置的比特流中提取编码图块,该图块在该另一比特流中位于不与图片边界相邻的位置,则编码器可以与任何MCTS边界类似地在图片边界上约束运动矢量。

HEVC的时间运动受限图块集SEI(补充增强信息)消息可以用于指示比特流中的运动受限图块集的存在。

非VCL NAL单元例如可以是以下类型之一:序列参数集、图片参数集、补充增强信息(SEI)NAL单元、访问单元定界符、序列结束NAL单元、比特流结束NAL单元、或填充数据NAL单元。解码图片的重构可能需要参数集,而很多其他非VCL NAL单元对于解码样本值的重构则不是必需的。

一些编码格式指定参数集,这些参数集可以携带解码或重构解码图片所需要的参数值。在编码视频序列中保持不变的参数可以被包括在序列参数集(SPS)中。除了解码过程可能需要的参数,序列参数集还可以可选地包含视频可用性信息(VUI),VUI包括可能对缓冲、图片输出定时、渲染和资源预留很重要的参数。图片参数集(PPS)包含可能在若干编码图片中保持不变的参数。图片参数集可以包括可以由一个或多个编码图片的编码图像分段引用的参数。已经提出了标头参数集(HPS)以包含可以根据图片而改变的参数。

参数集可以在它被引用时被激活,例如通过它的标识符。例如,图像分段的标头(诸如切片标头)可以包含PPS的标识符,该PPS的标识符被激活用于对包含图像分段的编码图片进行解码。当PPS被激活时,PPS可以包含被激活的SPS的标识符。特定类型的参数集的激活可能导致相同类型的先前活跃的参数集的解激活(deactivation)。

代替或除了不同层级水平(例如,序列和图片)的参数集,视频编码格式可以包括标头语法结构,诸如序列标头或图片标头。序列标头可以在按比特流顺序的编码视频序列的任何其他数据之前。图片标头可以在按比特流顺序的图片的任何编码视频数据之前。

可以以“带外”数据分别与比特流或编码单元相关联但不包括在其中的方式在权利要求和所描述的实施例中使用短语“沿比特流”(例如,“沿比特流指示”)或“沿比特流的编码单元”(例如,“沿编码图块指示”)来引用传输、发信号通知或存储。短语“沿比特流”或“沿比特流的编码单元”等解码可以是指解码所引用的带外数据(其可以从带外传输、发信号通知或存储获取),该带外数据分别与比特流或编码单元相关联。例如,在以下情况下可以使用短语“沿比特流”:当比特流被包含在容器文件中时,诸如符合ISO基本媒体文件格式(ISO Base Media File Format)的文件,并且某些文件元数据以将元数据与比特流关联的方式存储在文件中,诸如包含比特流的轨道的样本条目中的框(box)、包含比特流的轨道(track)的样本组、或与包含比特流的轨道相关联的定时元数据轨道(timed metadatatrack)。

编码图片是图片的编码呈现。

随机访问点(RAP)图片(也可以称为帧内随机访问点(IRAP)图片)可以仅包括帧内编码图像分段。此外,RAP图片可以将输出顺序的子序列图片约束为使得它们可以被正确解码而无需按解码顺序执行在RAP图片之前的任何图片的解码过程。

访问单元可以包括单个时刻的编码视频数据和相关联的其他数据。在HEVC中,访问单元(AU)可以定义为一组NAL单元,该NAL单元根据指定分类规则彼此关联,按解码顺序是连续的,并且包含具有任何特定nuh_layer_id值的最多一个图片。除了包含编码图片的VCL NAL单元,访问单元还可以包含非VCL NAL单元。上述指定分类规则例如可以将具有相同输出时间或图片输出计数值的图片关联到相同的访问单元中。

可能需要编码图片在访问单元内以特定顺序出现。例如,nuh_layer_id等于nuhLayerIdA的编码图片可能需要按解码顺序在同一访问单元中nuh_layer_id大于nuhLayerIdA的所有编码图片之前。

比特流可以定义为比特序列,在一些编码格式或标准中,比特流可以采用NAL单元流或字节流的形式,该NAL单元流或字节流形成编码图片和相关数据的呈现,以形成一个或多个编码视频序列。在同一逻辑信道中,诸如在同一文件中或在通信协议的同一连接中,第一比特流之后可以是第二比特流。基本流(在视频编码的上下文中)可以定义为一个或多个比特流的序列。在一些编码格式或标准中,第一比特流的结束可以由特定NAL单元指示,该特定NAL单元可以称为比特流结束(EOB)NAL单元并且其是比特流的最后NAL单元。

编码视频序列(CVS)可以定义为按解码顺序的如下编码图片序列:可独立解码且后面是另一编码视频序列或比特流的结束。

比特流或编码视频序列可以如下被编码为在时间上可伸缩。每个图片可以被分配给特定时间子层。可以列举时间子层,例如从0向上。最低时间子层(子层0)可以独立解码。时间子层1的图片可以从时间子层0、1的重构图片预测。时间子层2的图片可以从时间子层0、1、2的重构图片预测,以此类推。换言之,时间子层N的图片不使用大于N的时间子层的任何图片作为帧间预测的参考。通过排除大于或等于所选择的子层值的所有图片并且包括图片而创建的比特流保持合规。

子层访问图片可以定义为子层的解码可以从其正确开始的图片,即,子层的所有图片可以从其正确开始解码的图片。在HEVC中有两种图片类型:时间子层访问(TSA)和逐步时间子层访问(STSA)图片类型,其可以用于指示时间子层切换点。如果在TSA或STSA图片(排他性)且TSA或STSA图片的TemporalId等于N+1前TemporalId高达N的时间子层已经被解码,则TSA或STSA图片启用TemporalId等于N+1的所有后续图片(按解码顺序)的解码。TSA图片类型可以对TSA图片本身以及同一子层中按解码顺序在TSA图片之后的所有图片施加限制(restriction)。不允许这些图片中的任何一个使用来自同一子层中按解码顺序在TSA图片之前的任何图片的帧间预测。TSA定义可以进一步对更高子层中按解码顺序在TSA图片之后的图片施加限制。如果该图片属于与TSA图片相同或更高的子层,则不允许这些图片中的任何一个参考按解码顺序在该TSA图片之前的图片。TSA图片的TemporalId大于0。STSA类似于TSA图片,但不会对更高子层中按解码顺序在STSA图片之后的图片施加限制,因此仅启用向上切换到STSA图片驻留在其中的子层。

可用媒体文件格式标准包括ISO基本媒体文件格式(ISO/IEC14496-12,可以缩写为ISOBMFF)、MPEG-4文件格式(ISO/IEC 14496-14,也称为MP4格式)、NAL单元结构化视频文件格式(ISO/IEC 14496-15)和3GPP文件格式(3GPP TS 26.244,也称为3GP格式)。ISO文件格式是用于导出上述所有文件格式(不包括ISO文件格式本身)的基础。这些文件格式(包括ISO文件格式本身)通常称为ISO文件格式家族(family)。

下面将ISOBMFF的一些概念、结构和规范描述为容器文件格式的示例,实施例可以基于容器文件格式来实现。本发明的各方面不限于ISOBMFF,而是针对一种可能的基础给出描述,本发明可以部分地或完全地在该基础上实现。

ISO基本媒体文件格式的基本构造块称为框。每个框具有标头和有效载荷。框标头以字节指示框的类型和框的大小。框可以包含其他框,并且ISO文件格式指定在特定类型的框内允许的框类型。此外,每个文件中某些框的存在可以是强制性的,而其他框的存在可以是可选的。此外,对于某些框类型,可以允许在文件中存在多个框。因此,可以考虑使用ISO基本媒体文件格式来指定框的层级结构。

根据ISO文件格式家族,文件包括封装到框中的媒体数据和元数据。每个框由四字符代码(4CC)标识,并且以标头开头,该标头告知框的类型和大小。

在符合ISO基本媒体文件格式的文件中,媒体数据可以在媒体数据“mdat”框中提供,而电影“moov”框可以用于封装元数据。在某些情况下,为了使文件可操作,可能需要同时存在“mdat”和“moov”框。电影“moov”框可以包括一个或多个轨道,并且每个轨道可以驻留在一个对应TrackBox(“trak”)中。轨道可以是多种类型中的一种,包括引用根据媒体压缩格式(及其对ISO基本媒体文件格式的封装)被格式化的样本的媒体轨道(media track)。轨道可以被认为是逻辑信道。

可以使用电影片段,例如在例如为了避免在记录应用崩溃、存储器空间不足或其他一些事件发生时丢失数据而将内容记录到ISO文件时。如果没有电影片段,可能会发生数据丢失,因为文件格式可能要求将所有元数据(例如,电影框)写入文件的一个连续区域。此外,在记录文件时,可能没有足够的存储器空间(例如,随机存取存储器RAM)来缓冲电影框的可用存储大小,并且在电影关闭时重新计算电影框的内容可能太慢。此外,电影片段可以使得能够使用常规ISO文件解析器(parser)同时记录和回放文件。此外,渐进式下载可能需要更短的初始缓冲持续时间,例如,当使用电影片段时同时接收和回放文件,并且与具有相同媒体内容但被结构化为没有电影片段的文件相比,初始电影框更小.

电影片段特征可以使得能够将否则可能驻留在电影框中的元数据拆分为多个片段。每个片段可以对应于轨道的某个时间段。换言之,电影片段特征可以启用文件元数据和媒体数据的交织(interleaving)。因此,电影框的大小可以受到限制,并且可以实现上述用例。

在一些示例中,如果电影片段的媒体样本与moov框在同一文件中,则它们可以驻留在mdat框中。然而,对于电影片段的元数据,可以提供moof box。moof框可以包括特定回放时间持续时间(duration)的信息,该信息先前已经在moov框中。moov框本身可能仍然表示有效的电影,但此外,它可以包括mvex框,以指示电影片段将跟随在同一文件中。电影片段可以及时扩展与moov框相关联的呈现。

在电影片段内可以有一组轨道片段,包括每轨道从零到多个的任何地方。轨道片段又可以包括从零到多个轨道轮次(track runs)(也称为轨道片段轮次(track fragmentruns))的任何地方,其中每个文档是针对该轨道的样本的连续轮次(contiguous run)。在这些结构中,很多字段是可选的并且可以是默认的。可以被包括在moof框中的元数据可以限于可以被包括在moov框中并且在一些情况下可以不同地编码的元数据的子集。有关可以被包括在moof框中的框的细节可以从ISO基本媒体文件格式规范中找到。自包含(self-contained)的电影片段可以定义为由moof框和mdat框组成,它们按文件顺序是连续的,其中mdat框包含电影片段的样本(moof框为其提供元数据)且不包含任何其他电影片段的样本(即,任何其他moof框)。

轨道引用机制可以用于将轨道彼此关联。TrackReferenceBox包括(多个)框,每个框提供从包含轨道(containing track)到一组其他轨道的引用。这些引用通过(多个)所包含的框的框类型(即,框的四字符代码)进行标记。

被包含在TrackBox中的TrackGroupBox启用轨道组的指示,其中每个组共享特定特性或者组内的轨道具有特定关系。框包含零个或多个框,并且特定特性或关系由所包含的框的框类型来指示。所包含的框包括标识符,该标识符可以用于推断属于同一轨道组的轨道。包含与TrackGroupBox中所包含的框相同类型且在这些所包含的框中具有相同标识符值的轨道属于同一轨道组。

统一资源标识符(URI)可以定义为用于标识资源名称的字符串。这样的标识使得能够使用特定协议通过网络与资源的呈现进行交互。URI是通过为URI指定具体语法和相关协议的方案来定义的。统一资源定位符(URL)和统一资源名称(URN)是URI的形式。URL可以定义为URI,它标识web资源并且指定对资源进行操作或获取资源呈现的方式,指定其主要访问机制和网络位置。URN可以定义为URI,它通过特定命名空间中的名称来标识资源。URN可以用于标识资源,而无需暗示其位置或访问方式。

最近,超文本传输协议(HTTP)已经广泛用于通过互联网传送实时多媒体内容,诸如在视频流传输应用中。与基于用户数据报协议(UDP)的实时传输协议(RTP)的使用不同,HTTP易于配置并且通常可以穿越防火墙和网络地址转换器(NAT),这使其对多媒体流应用具有吸引力。

基于HTTP的若干自适应流传输商业解决方案(诸如SmoothStreaming、Adaptive HTTP Live Streaming和Dynamic Streaming)已经启动,并且标准化项目已经开展。自适应HTTP流传输(AHS)首次在第三代合作伙伴计划(3GPP)分组交换流(PSS)服务(3GPP TS 26.234第9版:“Transparent end-to-end packet-switched streaming service(PSS);protocols and codecs”(透明端到端分组交换流传输服务(PSS);协议和编解码器))中被标准化。MPEG将3GPP AHS第9版作为MPEG DASH标准的起点(ISO/IEC 23009-1:“Dynamic adaptive streaming over HTTP(DASH)-Part 1:Mediapresentation description and segment formats”(2014年国际标准第2版基于HTTP的动态自适应流传输(DASH)-第1部分:媒体演示描述和分段格式))。3GPP继续致力于与MPEG通信的自适应HTTP流传输,并且发布了3GP-DASH(Dynamic Adaptive Streaming over HTTP(基于HTTP的动态自适应流传输);3GPP TS 26.247:“Transparent end-to-end packet-switched streaming Service(PSS);Progressive download and dynamic adaptiveStreaming over HTTP(3GP-DASH)”(透明端到端分组交换流传输服务(PSS);基于HTTP的渐进式下载和动态自适应流传输(3GP-DASH)))。MPEG DASH和3GP-DASH在技术上彼此接近,因此可以统称为DASH。下面描述DASH的一些概念、格式和操作作为实施例可以在其中实现的视频流传输系统的示例。本发明的各方面不限于DASH,而是针对一种可能的基础给出描述,本发明可以部分地或完全地在该基础上实现。

在DASH中,多媒体内容可以存储在HTTP服务器上并且可以使用HTTP来传送。内容可以分为两部分存储在服务器上:媒体呈现描述(MPD),它描述可用内容的清单、其各种替代物、其URL地址和其他特性;以及分段,其包含单个文件或多个文件中的块形式的实际多媒体比特流。MDP为客户端提供必要的信息,以通过HTTP建立动态自适应流传输。MPD包含描述媒体呈现(media presentation)的信息,诸如每个分段的HTTP统一资源定位符(URL),以发出GET Segment请求。为了播放内容,DASH客户端可以获取MPD,例如通过使用HTTP、电子邮件、拇指驱动器(thumb drive)、广播或其他传输方法。通过解析MPD,DASH客户端可以了解节目时间、媒体内容可用性、媒体类型、分辨率、最小和最大带宽、以及多媒体组件的各种编码替代物的存在、可访问性特征和所需要的数字权限管理(DRM)、网络上的媒体组件位置、以及其他内容特性。使用该信息,DASH客户端可以选择适当的经编码的替代物(codedalternative),并且通过使用例如HTTP GET请求获取分段来开始流传输内容。在适当缓冲以允许网络吞吐量变化之后,客户端可以继续取回后续分段并且还监测网络带宽波动。客户端可以通过取回不同替代物(具有较低或较高比特率)的分段来决定如何适应到可用带宽,以保持足够的缓冲器。

在DASH中,层级数据模型如下用于构造媒体呈现。媒体呈现由一个或多个周期(period)的序列组成,每个周期包含一个或多个组,每个组包含一个或多个适配集(Adaptation Set),每个适配集包含一个或多个呈现,每个呈现由一个或多个分段组成。呈现是媒体内容的替代选择之一或其子集,通常因编码选择(例如因比特率、分辨率、语言、编解码器等)而异。分段包含一定持续时间的媒体数据、以及用于解码和呈现所包括的媒体内容的元数据。分段由URI标识,并且通常可以通过HTTP GET请求进行请求。分段可以定义为与HTTP-URL相关联的数据单元、以及由MPD指定的可选字节范围。

DASH MPD符合可扩展标记语言(XML),因此通过XML中定义的元素和属性进行指定。

在DASH中,所有描述符元素以相同方式构造,即它们包含提供用于对方案进行标识的URI的@schemeIdUri属性、以及可选属性@value和可选属性@id。元素的语义特定于所采用的方案。用于对方案进行标识的URI可以是URN或URL。

在DASH中,独立呈现(independent representation)可以定义为可以独立于任何其他呈现进行处理的呈现。独立呈现可以被理解为包括独立比特流或比特流的独立层。从属呈现(dependent representation)可以定义为如下呈现:对于所包含的媒体内容分量的呈现和/或解码,其互补呈现(complementary representation)中的分段对于该呈现是必要的。从属呈现可以被理解为包括例如可伸缩比特流的预测层。互补呈现可以定义为对至少一个从属呈现进行补充的呈现。互补呈现可以是独立呈现或从属呈现。从属呈现可以由包含@dependencyId属性的呈现元素来描述。从属呈现可以被视为常规呈现,只是它们依赖于一组互补呈现进行解码和/或呈现。@dependencyId包含所有互补呈现的@id属性的值,即,展示(present)和/或解码该从属呈现中包含的媒体内容分量所必需的呈现。

ISOBMFF的轨道引用可以反映在DASH MPD的@associationType属性中的四字符代码列表中,该列表以一对一的方式映射到@associationId中给出的[email protected]值列表。这些属性可以用于将媒体呈现(media Presentation)与元数据呈现链接。

DASH服务可以被提供作为点播服务或直播服务。在前者中,MPD是静态的,并且当内容提供者发布MPD时,媒体呈现的所有分段都已经可用。然而,在后者中,MPD可以是静态的或动态的,这取决于MPD所采用的分段URL构造方法,并且随着内容提供者(contentprovider)生产内容并且将其发布到DASH客户端,分段被连续创建。分段URL构造方法可以是基于模板的分段URL构造方法,也可以是分段列表生成方法。在前者中,DASH客户端能够在请求分段之前构造分段URL,而无需更新MPD。在后者中,DASH客户端必须周期性地下载更新后的MPD以获取分段URL。因此,对于直播服务,基于模板的分段URL构造方法优于分段列表生成方法。

初始化分段(Initialization Segment)可以定义为包含元数据的分段,该元数据对于呈现封装在媒体分段中的媒体流而言是必需的。在基于ISOBMFF的分段格式中,初始化分段可以包括电影框(“moov”),该电影框可能不包括针对任何样本的元数据,即,针对样本的任何元数据都在“moof”框中提供。

媒体分段(Media Segment)包含用于以正常速度回放的一定持续时间的媒体数据,这样的持续时间称为媒体分段持续时间或分段持续时间。内容生产者(contentproducer)或服务提供者(service provider)可以根据服务的期望特性来选择分段持续时间。例如,可以在直播服务中使用相对较短的分段持续时间,以实现较短的端到端延迟。原因是,分段持续时间通常是DASH客户端感知的端到端延迟的下限,因为分段是为DASH生成媒体数据的离散单元。内容生成通常以使得整个媒体数据分段可用于服务器的方式来进行。此外,很多客户端实现使用分段作为GET请求的单位。因此,在直播服务的典型布置中,只有当媒体分段的整个持续时间可用且编码并封装到分段中时,DASH客户端才能够请求分段。对于点播服务,可以使用不同的分段持续时间选择策略。

分段可以进一步划分为子分段(subsegment),例如以启用下载多个部分中的分段。子分段可能需要包含完整的访问单元。子分段可以由分段索引框(Segment Index box)索引,该框包含用于映射每个子分段的呈现时间范围和字节范围的信息。分段索引框还可以通过发信号通知分段中的子分段和流访问点的持续时间和字节偏移来描述分段中的子分段和流访问点。DASH客户端可以使用从(多个)分段索引框获取的信息来使用字节范围HTTP请求对特定子分段发出HTTP GET请求。如果使用相对较长的分段持续时间,则可以使用子分段来保持HTTP响应的大小合理且灵活以适应比特率。分段的索引信息可以放在该分段的开头的单个框中,也可以分布在分段中的多个索引框中。不同的传播方法(诸如层级、菊花链和混合)是可能的。这种技术可以避免在分段的开头添加大框,因此可以防止可能的初始下载延迟。

符号(子)分段是指分段或子分段。如果分段索引框不存在,则符号(子)分段是指分段。如果分段索引框存在,则符号(子)分段可以是指分段或子分段,例如取决于客户是基于分段还是子分段发出请求。

MPEG-DASH为ISO基本媒体文件格式和MPEG-2传输流定义了分段容器格式。其他规范可以指定基于其他容器格式的分段格式。例如,已经提出了基于Matroska容器文件格式的分段格式。

DASH通过动态请求来自适配集中不同呈现的媒体分段以匹配变化的网络带宽来支持速率适配(rate adaptation)。当DASH客户端切换上/下呈现时,必须考虑呈现内的编码依赖性。呈现切换可能发生在随机访问点(RAP),而RAP通常用于视频编码技术,诸如H.264/AVC。在DASH中,引入了一个更通用的概念,名为流访问点(SAP),以提供一种独立于编解码器的解决方案用于访问呈现以及在呈现之间进行切换。在DASH中,SAP被指定为呈现中的一个位置,它使得能够仅使用从该位置开始的呈现数据中包含的信息(在初始化分段中初始化数据之前,若有)开始回放媒体流。因此,可以在SAP中执行呈现切换。

在DASH中,已经基于以下各项在同一适配集中的呈现之间进行自动选择:宽度和高度(@width和@height);帧速率(@frameRate);比特率(@bandwidth);呈现之间的所指示的质量排序(@qualityRanking)。@qualityRanking的语义规定如下:指定呈现相对于同一适配集中的其他呈现的质量排名。较低的值表示较高质量的内容。如果不存在,则不定义排名。

已经指定了若干类型的SAP,包括以下类型。SAP类型1对应于一些编码方案中称为“Closed GOP random access point”(封闭GOP随机访问点)的内容(其中按解码顺序,所有图片可以正确解码,得到正确地解码的图片的连续时间序列,而没有间隙),另外,按解码顺序的第一图片也是按呈现顺序的第一图片。SAP类型2对应于某些编码方案中称为“封闭GOP随机访问点”的内容(其中按解码顺序,所有图片可以正确解码,得到正确地解码的图片的连续时间序列,而没有间隙),其中按解码顺序的第一图片可能不是按呈现顺序的第一图片。SAP类型3对应于一些编码方案中称为“Open GOP random access point”(开放GOP随机访问点)的内容,其中可能存在按解码顺序的一些图片,它们无法正确解码且呈现时间少于与SAP相关联的帧内编码图片。

在诸如MPEG-2等一些视频编码标准中,每个帧内图片都是编码序列中的随机访问点。在一些视频编码标准(诸如H.264/AVC和H.265/HEVC)中灵活使用多个参考图片进行帧间预测的能力导致帧内图片可能不足以进行随机访问。因此,图片可以根据其随机访问点功能进行标记,而不是从编码类型来推断这样的功能;例如,在H.264/AVC标准中指定的IDR图片可以用作随机访问点。封闭图片组(GOP)是如下图片组:其中所有图片都可以正确解码。例如,在H.264/AVC中,封闭GOP可以从IDR访问单元开始。

开放图片组(GOP)是如下图片组:其中按输出顺序在初始帧内图片之前的图片可能无法正确解码,但按输出顺序在初始帧内图片之后的图片可以正确解码。这样的初始帧内图片可以在比特流中指示和/或从来自比特流的指示推断,例如,通过在HEVC中使用CRANAL单元类型。按输出顺序在开始开放GOP的初始帧内图片之前并且按解码顺序在初始帧内图片之后的图片可以称为前导图片(leading picture)。有两种类型的前导图片:可解码的和不可解码的。可解码前导图片(诸如HEVC的RADL图片)使得可以在从开始开放GOP的初始帧内图片开始解码时被正确解码。换言之,可解码前导图片仅使用初始帧内图片或按解码顺序的后续图片作为帧间预测的参考。不可解码前导图片(诸如HEVC的RASL图片)在从开始开放GOP的初始帧内图片开始解码时无法被正确解码。

DASH预选定义了预期由单个解码器实例联合消费的MPD的媒体分量的子集,其中消费可以包括解码和渲染。包含用于预选的主要媒体分量的适配集称为主适配集。此外,每个预选可以包括一个或多个部分适配集。部分适配集可能需要与主适配集一起处理。主适配集和部分适配集可以通过以下两种方式之一来指示:预选描述符或预选元素。

虚拟现实是一个快速发展的技术领域,其中图像或视频内容(有时伴有音频)被提供给用户设备,诸如用户耳机(也称为头戴式显示器)。众所周知,可以向用户设备提供来自内容源的实时或存储的馈送(feed),该馈送表示用于通过用户设备进行沉浸式输出的虚拟空间。目前,很多虚拟现实用户设备使用所谓的三自由度(3DoF),这表示测量偏航(yaw)、俯仰(pitch)和滚动轴(roll axes)上的头部运动并且确定用户看到的内容,即,确定视口(viewport)。众所周知,通过考虑用户设备的位置和位置的变化进行渲染可以增强沉浸式体验。因此,对3DoF的增强是六自由度(6DoF)虚拟现实系统,其中用户可以在欧几里得空间中自由移动,也可以在偏航、俯仰和滚动轴上旋转他们的头部。六自由度虚拟现实系统能够提供和消费大量内容。立体内容包括从所有角度以三维形式表示空间和/或对象的数据,以使得用户能够在空间和/或对象周围充分移动(move fully)以从任何角度查看它们。这种内容可以由描述几何形状(例如,形状、大小、在三维空间中的位置)和属性(诸如颜色、不透明度(opacity)和反射率)的数据来定义。数据还可以定义在给定时刻的几何形状和属性的时间变化,类似于二维视频中的帧。

术语360度视频或虚拟现实(VR)视频有时可以互换使用。它们通常可以指代提供如此大的视场(FOV)的视频内容,使得在显示布置中在单个时间点仅显示视频的一部分。例如,可以在头戴式显示器(HMD)上查看VR视频,该显示器可以能够显示例如大约100度的视场。可以基于HMD的取向(orientation)来选择要显示的VR视频内容的空间子集。在另一示例中,假定平板查看环境,其中可以显示例如高达40度的视场。当在这样的显示器上显示宽FOV内容(例如,鱼眼)时,可能优选显示空间子集而不是整个图片。

MPEG全向媒体格式(ISO/IEC 23090-2)是一种虚拟现实(VR)系统标准。OMAF定义了一种媒体格式(包括源自ISOBMFF的文件格式以及用于DASH和MPEG媒体传输(DASH andMPEG Media Transport)的流传输格式)。OMAF版本1支持360°视频、图像和音频以及相关的定时文本并且促进三自由度(3DoF)内容消费(consumption),这表示可以选择具有被全方位内容覆盖的任意方位角(azimuth)、仰角(elevation)范围以及倾斜角(tilt angle)的视口,但内容与查看位置的任何平移变化不适配。下面进一步描述的视口相关流传输场景也已经为3DoF而设计,尽管其可能潜在地适用于不同数目的自由度。

参考图1讨论OMAF。真实世界视听场景(A)可以由音频传感器以及相机组或具有多个镜头和传感器的相机设备捕获。该获取产生一组数字图像/视频(Bi)和音频(Ba)信号。相机/镜头可以覆盖相机组或相机设备的中心点周围的所有方向,因此称为360度视频。

音频可以使用很多不同麦克风配置来捕获并且存储为若干不同内容格式,包括基于通道的信号、静态或动态(即,在3D场景中移动)对象信号和基于场景的信号(例如,高阶环绕声)。基于通道的信号可以符合在CICP(编码独立代码点)中定义的扬声器布局之一。在全向媒体应用中,所渲染的沉浸式音频节目的扬声器布局信号可以被二进制化以通过耳机呈现。

将同一时刻的图像(Bi)拼接、投影并且映射到打包图片(D)上。

对于单视场360度视频,可以拼接一个时刻的输入图像以生成表示一个视图的投影图片。图2中示出了用于单视场内容的图像拼接、投影和按区域打包过程的示例。输入图像(Bi)被拼接并且投影到三维投影结构上,该结构例如可以是单位球体。投影结构可以被认为包括一个或多个表面,诸如(多个)平面或其一部分。投影结构可以定义为由一个或多个表面组成的三维结构,所捕获的VR图像/视频内容被投影在该表面上,并且可以从该表面形成相应投影图片。投影结构上的图像数据被进一步布置到二维投影图片(C)上。术语投影可以定义为将一组输入图像投影到投影图片上的过程。可以有投影图片的一组预定义呈现格式,包括例如等距柱状投影(ERP)格式和立方体映射投影(CMP)格式。可以认为投影图片覆盖整个球体。

可选地,然后应用按区域打包以将投影图片(C)映射到打包图片(D)上。如果不应用按区域打包,则打包图片与投影图片相同,并且该图片作为图像/视频编码的输入。否则,通过指示打包图片中每个区域的位置、形状和大小,将投影图片(C)的区域映射到打包图片(D)上,并且打包图片(D)被给作图像/视频编码的输入。术语按区域打包(region-wisepacking)可以定义为将投影图片映射到打包图片的过程。术语打包图片(packed picture)可以定义为由投影图片的按区域打包产生的图片。

在立体360度视频的情况下,如图3的示例所示,一个时刻的输入图像被拼接以生成投影图片,该投影图片表示两个视图(CL,CR),分别对应于每只眼睛。两个视图(CL、CR)都可以映射到同一打包图片(D)上,并且由传统2D视频编码器编码。替代地,投影图片的每个视图都可以映射到它自己的打包图片,在这种情况下,图像拼接、投影和按区域打包的执行如图2所示。左视图或右视图的打包图片序列可以独立编码,或者在使用多视图视频编码器时从另一视图进行预测。

接下来以更详细的方式描述用于立体内容的图像拼接、投影和按区域打包过程的示例,其中两个视图被映射到同一打包图片,如图3所示。输入图像(Bi)被拼接并且投影到两个三维投影结构上,分别对应于每只眼睛。将每个投影结构上的图像数据进一步布置到二维投影图片上(左眼为CL,右眼为CR),该图片覆盖整个球面。帧打包(frame packing)用于将左视图图片和右视图图片打包到同一投影图片上。可选地,然后将按区域打包应用于投影图片以打包到打包图片上,并且打包图片(D)被给作图像/视频编码的输入。如果不应用按区域打包,则打包图片与投影图片相同,并且该图片被给作图像/视频编码的输入。

可以对相同的源图像多次执行图像拼接、投影和按区域打包过程,以创建相同内容的不同版本,例如用于投影结构的不同取向。类似地,可以从相同的投影图片多次执行按区域打包过程以创建一个以上的待编码打包图片序列。

360度全景内容(即,图像和视频)水平地覆盖成像设备捕获位置周围的完整360度视场。垂直视场可以变化并且可以是例如180度。覆盖水平360度视场和垂直180度视场的全景图像可以用球体表示,该球体已经使用等距柱状投影(ERP)映射到二维图像平面。在这种情况下,水平坐标可以被认为等同于经度,而垂直坐标可以被认为等同于纬度,没有应用变换或缩放。形成单视场等距柱状全景图片的过程如图4所示。一组输入图像(诸如相机阵列或具有多个镜头和传感器的相机设备的鱼眼图像)被拼接到球面图像上。球面图像进一步投影到圆柱体上(没有顶面和底面)。圆柱体展开,以形成二维投影图片。在实践中,可以合并一个或多个呈现的步骤;例如,输入图像可以直接投影到圆柱体上,而没有中间投影到球体上。用于等距柱状全景图的投影结构可以被认为是包括单个表面的圆柱体。

一般而言,360度内容可以映射到不同类型的立体几何结构上,诸如多面体(即,包含平面多边形面、直边和尖角或顶点的三维立体对象,例如立方体或金字塔)、圆柱体(通过将球面图像投影到圆柱体上,如上所述使用等距柱状投影)、圆柱体(直接投影,而不首先投影到球体上)、圆锥体等,然后展开到二维图像平面。

在某些情况下,具有360度水平视场但垂直视场小于180度的全景内容可以被视为等距柱状投影的特殊情况,其中球体的极区没有被映射到二维图像平面上。在某些情况下,全景图像可以具有小于360度的水平视场和高达180度的垂直视场,同时具有等距柱状投影格式的特性。

可以将按区域打包信息编码为比特流中或沿比特流的元数据。例如,打包信息可以包括从预定义或指示的源格式到打包图片格式(例如如前所述,从投影图片到打包图片)的按区域映射。

矩形的按区域打包元数据可以描述如下:

对于每个区域,元数据定义了投影图片中的矩形、打包图片中的相应矩形、以及90、180或270度旋转和/或水平和/或垂直镜像的可选变换。例如,矩形可以由左上角和右下角的位置指示。映射可以包括重采样。由于投影图片和打包图片中相应矩形的大小可能不同,因此该机制推断按区域进行重采样。

除其他外,按区域打包为以下使用场景提供信号:

1)视口独立投影的附加压缩是通过对不同区域进行致密采样以在整个球体上实现更高均匀性来实现的。例如,对ERP的顶部和底部部分过采样(oversampling),并且可以应用按区域打包来水平下采样(downsample)它们。

2)以自适应方式布置基于平面的投影格式的面,诸如立方图投影(cube mapprojection)。

3)生成使用视口无关投影格式的视口相关比特流。例如,ERP的区域或CMP的面可以有不同采样密度,底层的投影结构可以有不同取向。

4)指示由提取器轨道表示的打包图片的区域。当提取器轨道从不同分辨率的比特流中收集图块时,这是必需的。

保护带(guard band)可以被定义为打包图片中未被渲染但可以用于改进打包图片的渲染部分以避免或减轻诸如接缝(seam)等视觉伪像的区域。

再次参考图1,OMAF允许省略图像拼接、投影和按区域打包并以其捕获格式对图像/视频数据进行编码。在这种情况下,图像(D)被认为与图像(Bi)相同,并且每个时刻的有限数目的鱼眼图像被编码。

音频不需要拼接过程,因为捕获信号本质上是沉浸式和全向的。

拼接图像(D)被编码为编码图像(Ei)或编码视频比特流(Ev)。捕获音频(Ba)被编码为音频比特流(Ea)。然后,根据特定媒体容器文件格式,编码图像、视频和/或音频被组合成用于文件回放的媒体文件(F)或用于流传输的初始化分段和媒体分段序列(Fs)。在本规范中,媒体容器文件格式是ISO基础媒体文件格式。文件封装器(file encapsulator)还将元数据包括到文件或分段中,诸如有助于渲染经解码的打包图片的投影和按区域打包信息。

文件中的元数据可以包括:

-投影图片的投影格式,

-鱼眼视频参数,

-被打包图片覆盖的球面面积,

-与投影图片相对应的投影结构相对于全局坐标轴的取向,

-按区域打包信息,以及

-按区域质量排名(可选)。

按区域打包信息可以被编码为比特流中或沿比特流的元数据,例如作为(多个)按区域打包SEI消息和/或作为包含比特流的文件中的按区域打包框。例如,打包信息可以包括从预定义或指示的源格式到打包图片格式(例如如前所述,从投影图片到打包图片)的按区域映射。对于每个映射区域,按区域映射信息可以例如包括投影图片中的源矩形(也称为投影区域)和打包图片中的目标矩形(也称为打包区域),其中源矩形内的样本被映射到目标矩形并且矩形可以例如由左上角和右下角的位置指示。映射可以包括重采样(resampling)。另外地或替代地,打包信息可以包括以下中的一个或多个:三维投影结构相对于坐标系的取向、关于使用哪种投影格式的指示、指示区域和/或第一和第二空间区域序列之间的图片质量排名的按区域质量排名、一个或多个变换操作(诸如旋转90度、180度或270度)、水平镜像和垂直镜像。打包信息的语义可以以它们指示解码图片的打包区域内的每个样本位置的方式来指定,该每个样本位置是相应球面坐标位置。

可以使用传送机制将分段(Fs)传送给播放器。

文件封装器输出的文件(F)与文件解封装器(file decapsulator)输入的文件(F')相同。文件解封装器处理文件(F')或接收到的分段(F's)并且提取编码比特流(E'a、E'v和/或E'i)并且解析元数据。然后将音频、视频和/或图像解码为解码信号(用于音频的B'a、用于图像/视频的D')。经解码的打包图片(D')基于当前查看取向或视口以及从文件中解析得到的投影、球面覆盖、投影结构取向和按区域打包元数据被投影到头戴式显示器或任何其他显示设备的屏幕上。同样,根据当前查看取向,经解码的音频(B'a)被渲染,例如通过耳机。当前查看取向由头部跟踪以及可能还有眼部跟踪功能确定。除了被渲染器用来渲染经解码的视频和音频信号的适当部分,当前查看取向还可以被视频和音频解码器用于解码优化。

上述过程适用于直播用例和点播用例。

在任何时间点,由应用在HMD或其他显示设备上渲染的视频渲染360度视频的一部分。这部分可以定义为视口。视口可以理解为在360度世界上通过渲染显示器显示的全方位视频中表示的窗口。根据另一定义,视口可以定义为当前显示的球形视频的一部分。视口的特征在于水平和垂直视场(FOV或FoV)。

视点可以定义为用户查看场景的点(point)或空间(space);它通常对应于相机位置。轻微的头部运动并不表示不同视点。查看位置(viewing position)可以定义为用户查看场景的查看空间(viewing space)内的位置。查看空间可以定义为查看位置的3D空间,在该3D空间内启用图像和视频的渲染并且VR体验有效。

体积内容(volumetric content)的典型呈现格式包括三角形网格、点云(pointcloud)和体素(voxes)。关于内容的时间信息可以包括单独的捕获实例,即,作为时间的函数的帧或对象位置。

计算资源和三维获取设备的进步使得能够重构高度详细的体积呈现。红外、激光、飞行时间和结构光技术是如何构造这样的内容的示例。体积内容的呈现可能取决于如何使用数据。例如,密集体素数组可以用于表示立体医学图像。在三维图形中,多边形网格被广泛使用。另一方面,点云非常适合于诸如捕获真实世界场景等应用,其中场景的拓扑结构不一定是二维表面或流形。另一种方法是将三维数据编码为一组纹理和深度图。与此密切相关的是高程(elevation)图和多级表面图的使用。为免生疑问,本文中的实施例适用于上述技术中的任何一种。

三维世界的“体素”对应于二维世界的像素。体素存在于三维网格布局中。八叉树(octree)是一种用于对三维空间进行分区的树数据结构。八叉树是四叉树的三维模拟。稀疏体素八叉树(sparse voxel octree,SVO)描述了包含一组不同大小的实体体素的空间的体积。树中不存在体积内的空白区域,这就是它称为“稀疏”(sparse)的原因。

基于至少一个多相机设备的输入流,可以将场景的三维体积呈现确定为多个体素。因此,可以使用至少一个但优选地多个(即,2、3、4、5个或更多个)多相机设备来捕获场景的3D视频呈现。多相机设备相对于场景分布在不同位置,因此每个多相机设备捕获场景的不同3D视频呈现。由每个多相机设备捕获的3D视频呈现可以用作创建场景的3D体积呈现的输入流,该3D体积呈现包括多个体素。体素可以由所捕获的3D点形成,例如通过将3D点合并(merge)为包括多个3D点的体素,使得对于所选择的3D点,来自所选择的3D点的预定义阈值内的所有相邻3D点都合并到体素中,而不会超过体素中3D点的最大数目。

体素也可以通过构造稀疏体素八叉树来形成。这种树的每个叶子都表示世界空间中的实体体素;树的根节点表示世界的边界。稀疏体素八叉树构造可以有以下步骤:1)将每个输入深度图映射到世界空间点云,其中深度图的每个像素映射到一个或多个3D点;2)通过检查相机图像和深度图中的(多个)源像素的邻域(neighbourhood)来确定体素属性,诸如颜色和表面法向量;3)基于深度图的深度值和深度图的分辨率来确定体素的大小;4)根据其相对于世界边界的大小来确定实体体素的SVO水平;5)确定该级别上相对于世界边界的体素坐标;6)创建新的和/或遍历现有SVO节点,直到到达所确定的体素坐标;7)将实体体素作为树的叶子插入,可能会替换或合并来自这些坐标处的先前存在的体素的属性。然而,场景的3D体积呈现中的体素大小可能彼此不同。因此,3D体积呈现的体素表示场景内的空间位置。

体积视频帧(volumetric video frame)可以被认为是完整的稀疏体素八叉树,该稀疏体素八叉树在视频序列中的特定时间点对世界进行建模。体素属性包含颜色、不透明度、表面法向量和表面材料属性等信息。这些在稀疏体素八叉树中被引用(例如,实体体素的颜色),但也可以单独存储。

点云是用于存储体积内容的常用数据结构。与点云相比,稀疏体素八叉树描述了具有不同大小的实体体素的有限体积的递归细分,而点云描述了一组无组织的单独点,仅受所使用的坐标值的精度的限制。

在诸如密集点云和体素数组等技术中,可能有数千万甚至数亿个点。为了在实体之间(诸如通过IP网络在服务器与客户端之间)存储和传输这样的内容,通常需要进行压缩。

可以相对于体积虚拟现实内容内提供的内容来检测用户的位置,例如以便用户可以在给定虚拟现实空间内、围绕个体对象或对象组自由移动,并且可以根据其头部在现实世界中的移动(例如,旋转和位置)从不同角度查看对象。在一些示例中,用户还可以查看和探索多个不同虚拟现实空间并且从一个虚拟现实空间移动到另一个虚拟现实空间。

通过渲染布置(诸如使用头戴式显示器)可观察或可听到的环境角度范围可以称为视场(FOV)。用户观察或听到的实际FOV取决于瞳孔间距以及虚拟现实耳机的镜头与用户眼睛之间的距离,但可以认为对于给定显示设备的所有用户来说,当用户佩戴虚拟现实耳机时,FOV大致相同。

当从单个查看位置查看立体内容时,可能看不到内容的一部分(通常是一半),因为它背对着用户。这部分有时称为“背面内容”(back facing content)。

一种体积图像/视频传送系统可以包括提供表示体积场景的一部分的多个斑块(patch),并且为每个斑块提供指示一组方向的斑块可见性信息(patch visibilityinformation),从这些方向可以看到斑块的前表面。一种体积图像/视频传送系统还可以包括提供与客户端设备相关联的一个或多个查看位置,以及根据斑块可见性信息是否指示一个或多个斑块的前表面从一个或多个查看位置可见来处理一个或多个斑块。

斑块可见性信息是指示在体积空间中可以看到斑块前表面的位置的数据。例如,斑块可见性信息可以包括可见性锥体(visibility cone),该可见性锥体可以包括可见性锥体方向矢量(X,Y,Z)和张角(A)。张角(A)定义了一组空间角度,从中可以看到斑块的前表面。在另一示例中,斑块可见性元数据可以包括边界球体表面和球面区域元数据的定义,其与全向媒体格式(OMAF)标准(ISO/IEC23090-2)所指定的相同或相似。边界球体表面可以例如由球体中心的三维位置和球体的半径来定义。当观察位置与边界球体表面并置(collocate)时,可以认为斑块在所指示的球体区域内是可见的。一般而言,边界表面的几何形状也可以是球体以外的几何体,诸如圆柱体、立方体或长方体。可以针对边界表面中心的相同三维位置(但具有不同半径(或指示边界表面与三维位置的距离的信息))定义多组块可见性元数据。指示若干斑块可见性元数据可以有利于处理遮挡(occlusion)。

一种立体图像/视频传送系统可以包括一个或多个斑块剔除模块(patch cullingmodule)。一个斑块剔除模块(例如耳机的渲染模块)可以被配置为确定哪个斑块被传输到用户设备。另一斑块剔除模块可以被配置为确定哪个斑块被解码。第三斑块剔除模块可以被配置为确定哪个被解码的斑块被传递到渲染。在立体图像/视频传送或回放系统中可以有斑块剔除模块的任何组合存在或活跃。斑块剔除可以利用斑块的斑块可见性信息、当前查看位置、当前查看取向、预期未来查看位置和/或预期未来查看取向。

在一些情况下,每个体积斑块可以被投影到二维彩色(或其他形式的纹理)图像和对应深度图像(也称为深度图)。这种转换使得每个斑块能够在耳机的客户端渲染模块中使用两个图像转换回体积形式。

在某些情况下,可以将体积图像的源体积(诸如点云帧)投影到一个或多个投影表面上。可以确定投影表面上的斑块,并且可以将这些斑块布置在一个或多个二维帧上。如上所述,可以类似地形成纹理和深度斑块。示出了源体积到投影表面的投影、以及稀疏投影的修复。换言之,包括几何基元(诸如网格元素、点和/或体素)的三维(3D)场景模型被投影到一个或多个投影表面上。这些投影表面几何形状可以“展开”(unfold)到2D平面上(通常每个投影源体积有两个平面:一个用于纹理,一个用于深度)。“展开”可以包括斑块的确定。然后可以使用标准2D图像或视频压缩技术对2D平面进行编码。相关投影几何信息可以与经编码的视频文件一起传输到解码器。然后解码器可以对经编码的图像/视频序列进行解码并且执行逆投影以任何期望的呈现格式重新生成3D场景模型对象,该呈现格式可以不同于初始格式,例如从原始网格模型数据重构点云。

在某些情况下,体积视频或图像的多个点(例如,点云)被投影到同一像素位置。这种情况可以通过创建一个以上的“层”来处理。注意,体积视频中层的概念(诸如点云压缩)可能与可伸缩视频编码中的层概念不同。因此,诸如PCC层或体积视频层等术语可以用于区分可伸缩视频编码层。每个体积(3D)斑块可以投影到一个以上的2D斑块上,表示投影到相同2D位置的不同层的视觉数据,诸如点。例如,可以基于到投影平面的上升距离来组织斑块。更准确地,以下示例过程可以用于创建两个层,但也可以推广到其他层数:设H(u,v)是当前斑块的点集,这些点被投影到同一像素(u,v)。第一层(也称为近层)存储最低深度D0的H(u,v)点。第二层称为远层,捕获间隔[D0,D0+?]内的最高深度的H(u,v)点,其中?是用户定义的用于描述表面厚度的参数。

应当理解,除了或替代纹理和深度,体积图像/视频可以包括其他类型的斑块,诸如反射率、不透明度或透明度(例如,阿尔法通道斑块)、表面法线、反照率和/或其他材料或表面属性斑块。

二维形式的斑块可以打包成一个或多个图集(atlas)。纹理图集是本领域已知的,包括由子图像组成的图像,该图像被图形硬件视为单个单元,并且可以将其作为单个图像进行压缩和传输以用于后续标识和解压缩。几何图集可以与纹理图集类似地构造。纹理和几何图集可以被视为单独的图片(并且在体积视频的情况下被视为单独的图片序列),或者纹理和几何图集可以打包到同一帧上,例如类似于传统上如何执行帧打包。图集可以用图像或视频编码器编码为帧。

图集中的子图像布局也可以被组织成使得可以将具有相似可见性信息的一个斑块或一组斑块编码为可以独立于其他时空单元进行解码的时空单元。例如,如在高效视频编码(HEVC)的上下文中所理解的,可以选择用于编码的图块网格,并且图集可以以使得具有相似可见性信息的斑块或一组斑块可以被编码为运动受限图块集(MCTS)的方式被组织。

在某些情况下,可以提供一个或多个(但不是整组)时空单元并且将其存储为轨道,如在ISO基本媒体文件格式的上下文中所理解的,或作为任何类似的容器文件格式结构。这种轨道可以称为斑块轨道。如在OMAF的上下文中所理解的,斑块轨道例如可以是子图片轨道,或者如在ISO/IEC 14496-15的上下文中所理解的,斑块轨道例如也可以是图块轨道。

在某些情况下,一个或多个图集的若干版本被编码。不同版本可以包括但不限于以下中的一项或多项:同一分辨率下的一个或多个图集的不同比特率版本;图集的不同空间分辨率;以及针对不同随机访问间隔的不同版本;这些可以包括一个或多个帧内编码图集(其中每个图片可以被随机访问)。

在某些情况下,如将在OMAF和/或ISO/IEC 14496-15的上下文中理解的那样,来自不同版本的纹理图集的斑块的组合可以被规定和描述为元数据,诸如提取器轨道。

当纹理图集以及在某些情况下相应几何图片和/或其他辅助图片(若有)的总样本数超过限制(诸如视频编解码器的级别限制)时,对策(prescription)可能以某种方式编写,以便遵守限制。例如,斑块可以根据主观重要性从较低分辨率的纹理图集中选择。选择可以以与查看位置无关的方式执行。对策可能伴随有表征(多个)所遵守的限制的元数据,例如所遵守的编解码器级别。

可以针对可见性锥体(或通常针对特定可见性)制定规定,并且因此排除在可见性锥体中不可见的斑块。为其生成对策的可见性锥体的选择可以被限制为合理数目,使得预计不会频繁发生从一种对策切换到另一种对策。对策的可见性锥体可以重叠以避免在两个对策之间来回切换。对策可以伴随有指示可见性锥体的元数据(或者通常是能见度信息)。

对策可以使用独立时空单元的特定网格或模式。例如,对策可以使用某个图块网格,其中图块边界也是MCTS边界。该对策可以伴随有指示适合作为时空单位的潜在来源(例如,轨道组、轨道或呈现)的元数据。

在某些情况下,斑块轨道形成DASH上下文中的呈现(Representation)。因此,DASHMPD中的呈现元素(Representation element)可以提供与斑块轨道相关的关于斑块的元数据,诸如斑块可见性元数据。客户端可以基于斑块可见性元数据来选择斑块呈现并且从所选择的呈现中请求(子)分段。

收集器轨道(collector track)可以定义为从其他轨道中提取经隐式或显式编码的视频数据(诸如MCTS或子图片的编码视频数据)的轨道。当由文件读取器等进行分解(resolve)时,收集器轨道可能会产生符合视频编码标准或格式的比特流。收集器轨道可以例如提取MCTS或子图片以形成编码图片序列,其中MCTS或子图片被布置成网格。例如,当收集器轨道提取两个MCTS或子图片时,它们可以布置成MCTS或子图片的2×1网格。如随后所讨论的,从其他轨道中提取MCTS或子图片的提取器轨道可以被视为收集器轨道。随后讨论的图块基础轨道(tile base track)是收集器轨道的另一示例。收集器轨道也可以称为收集轨道(collection track)。作为用于提取到收集器轨道的源的轨道可以称为收集项轨道(collection item track)。

在H.264/AVC和HEVC的ISO/IEC 14496-15中指定的提取器启用通过引用来提取NAL单元数据的轨道的紧凑形成。提取器是类似NAL单元的结构。可以指定类似NAL单元的结构以包括NAL单元标头和NAL单元有效载荷,就像任何NAL单元一样,但是在类似NAL单元的结构中可能不会遵循起始码竞争预防(NAL单元所需要的)。对于HEVC,提取器包含一个或多个构造器(constructor)。样本构造器通过引用从另一轨道的样本中提取NAL单元数据。内嵌构造器包括NAL单元数据。术语内嵌(in-line)可以定义为例如与数据单元相关,以指示所包含的语法结构包含或携带数据单元(与通过引用或通过数据指针包含数据单元相反)。当提取器由需要它的文件读取器处理时,提取器在逻辑上被替换为按外观顺序分解所包含的构造器时产生的字节。嵌套提取可能是不允许的,例如由样本构造器引用的字节不应当包含提取器;提取器不得直接或间接引用另一提取器。提取器可以包含一个或多个构造器,用于从当前轨道或通过“scal”类型的轨道引用链接到提取器所在的轨道的另一轨道中提取数据。经分解的提取器的字节可以表示一个或多个完整NAL单元。经分解的提取器以有效长度字段和NAL单元标头开始。样本构造器的字节仅从通过所指示的“scal”轨道引用所引用的轨道中的单个标识样本来复制。对准是在解码时间上进行的,即仅使用时间-样本表格(time-to-sample table),然后是采样数目中的计数偏移。提取器是媒体级别的概念,因此在考虑任何编辑列表之前应用于目的地轨道。(但是,人们通常会期望两个轨道中的编辑列表是相同的)。

在视口相关流传输(viewport-dependent streaming)(也可以称为视口自适应流传输(viewport-adaptive streaming,VAS)或视口特定流传输(viewport-specificstreaming))中,覆盖视口(即,当前视图取向)的360度视频内容的子集以比其余360度视频的质量和/或分辨率更好的质量和/或更高的分辨率进行传输。有几种替代方法可以实现视口相关全向视频流传输。在基于图块的视口相关流传输中,投影图片被分区为被编码为运动受限图块集(MCTS)等的图块。内容的若干版本使用相同的MCTS分区以不同比特率或质量进行编码。每个MCTS序列都可以作为DASH呈现等用于流传输。播放器根据MCTS选择进行接收的比特率或质量。

H.264/AVC不包括图块的概念,但可以通过将区域垂直布置为切片并且以与MCTS的编码类似的方式对编码进行限制来实现类似MCTS的操作。为简单起见,本文档中使用术语图块(tile)和MCTS,但应当理解为也以有限方式适用于H.264/AVC。通常,术语图块和MCTS应当理解为适用于任何编码格式或规范中的类似概念。

基于图块的视口相关流传输方案的一种可能细分如下:

-按区域混合质量(RWMQ)360°视频:多个版本的内容使用相同分辨率、相同图块网格和不同比特率/图片质量进行编码。播放器为视口选择高质量MCTS。

-视口+360°视频:一个或多个比特率和/或分辨率版本的完整低分辨率/低质量全向视频被编码,并且可以用于流传输。此外,执行基于MCTS的编码,并且MCTS序列可以用于流传输。播放器接收完整的低分辨率/低质量全向视频,并且选择和接收覆盖视口的高分辨率MCTS。

-按区域混合分辨率(RWMR)360°视频:MCTS以多种分辨率被编码。播放器选择覆盖视口的高分辨率MCTS和其余区域的低分辨率MCTS的组合。

需要理解,除了上述方法,可能存在将基于图块的视口相关流传输方法细分为其他类别。此外,上述细分可能不是详尽无遗的,即,它们可以是不属于任何所述类别的基于图块的视口相关流传输方法。

所有上述视口相关流传输方法、图块或MCTS(或图块或MCTS的保护带)可以在球面覆盖中重叠在预处理或编码中选择的量。

所有上述视口相关流传输方法都可以通过客户端驱动的比特流重写(rewrite)(也称为后期绑定(late binding))或作者驱动的MCTS合并(也称为早期绑定(earlybinding))来实现。在后期绑定中,播放器选择要接收的MCTS序列,根据需要选择性地重写所接收的视频数据的部分(例如,可能需要重写参数集和切片分段标头)以将所接收的MCTS组合成单个比特流,并且将单比特流解码。早期绑定是指使用作者驱动的信息来根据需要重写所接收的视频数据的部分,用于将MCTS合并为要解码的单个比特流,以及在某些情况下用于选择要接收的MCTS序列。早期绑定和后期绑定之间可能存在一些方法:例如,可以让播放器在没有作者指导的情况下选择要接收的MCTS序列,而作者驱动的方法用于MCTS合并和标头重写。早期绑定方法包括提取器驱动方法和图块跟踪方法,随后将对其进行描述。

在图块轨道方法中,从比特流中提取一个或多个运动受限图块集序列,并且每个所提取的运动受限图块集序列作为图块轨道(例如,HEVC图块轨道)存储在文件中。图块基础轨道(例如,HEVC图块基础轨道)可以被生成并且存储在文件中。图块基础轨道通过从图块轨道隐式收集运动受限图块集来表示比特流。在接收器侧,可以基于查看取向来选择要流传输的图块轨道。客户端可以接收覆盖整个全向内容的图块轨道。与覆盖其余360度视频的质量或分辨率相比,当前视口可以接收质量更好或分辨率更高的图块轨道。区块基础轨道可以包括对区块轨道的轨道引用,和/或区块轨道可以包括对区块基础轨道的轨道引用。例如,在HEVC中,“sabt”轨道参考用于从图块基础轨道中引用图块轨道,图块排序由“sabt”轨道参考所包含的图块轨道的顺序指示。此外,在HEVC中,图块轨道具有对图块基础轨道的“tbas”轨道引用。

在提取器驱动方法中,从比特流中提取一个或多个运动受限图块集序列,并且每个所提取的运动受限图块集序列被修改以成为其自身的兼容比特流(例如,HEVC比特流),并在文件中存储为子图片轨道(例如,对于HEVC,具有未变换的样本条目类型“hvc1”)。一个或多个提取器轨道(例如,HEVC提取器轨道)可以被生成并且存储在文件中。提取器轨道通过从子图片轨道显式地提取(例如,通过HEVC提取器)运动受限图块集来表示比特流。在接收器侧,可以基于查看取向来选择要流传输的子图片轨道。客户端可以接收覆盖整个全向内容的子图片轨道。与覆盖其余360度视频的质量或分辨率相比,可以为当前视口接收更好质量或更高分辨率的子图片轨道。

需要理解,尽管详细描述了图块轨道方法和提取器驱动方法,特别是在HEVC的上下文中,但它们也适用于其他编解码器和与图块轨道或提取器类似的概念。此外,图块轨道和提取器驱动方法的组合或混合是可能的。例如,这种混合可以基于图块轨道方法,但图块基础轨道可以包含用于客户端的重写操作的指导,例如图块基础轨道可以包括重写切片或图块组标头。

作为基于MCTS的内容编码的替代,可以使用基于子图片的内容创作来实现用于基于图块的视口相关流传输的内容创作,如下所述。预处理(在编码之前)包括将未压缩图片分区为子图片。同一未压缩子图片序列的若干子图片比特流被编码,例如以相同分辨率、但不同的质量和比特率被编码。可以以使得能够将经编码的子图片比特流合并到表示全向视频的兼容比特流的方式来对编码进行约束。例如,通过以在帧间预测过程中不会参考图片外的样本位置的方式选择运动矢量,可以在编码中避免对解码图片边界之外的样本的依赖性。每个子图片比特流可以封装为子图片轨道,并且可以附加地形成合并不同子图片位置的子图片轨道的一个或多个提取器轨道。如果以基于图块轨道的方法为目标,则每个子图片比特流被修改为成为MCTS序列并且作为图块轨道存储在文件中,并且为图块轨道创建一个或多个图块基础轨道。

例如取决于播放器运行的设备和操作系统的功能,可以通过针对每个MCTS序列执行单个解码器实例或一个解码器实例(或在某些情况下,介于这两者之间,例如针对具有相同分辨率的每个MCTS,执行一个解码器实例)来实现基于图块的视口相关流传输方法。可以通过后期绑定或早期绑定来启用单个解码器实例的使用。为了促进多个解码器实例,提取器驱动方法可以使用符合编码格式或标准的子图片轨道而无需修改。其他方法可能需要在客户端侧重写图像分段标头、参数集和/或类似信息以构造合规的比特流,或者具有能够在不存在其他编码视频数据的情况下对MCTS序列进行解码的解码器实现。

在图块轨道方法和提取器驱动方法中可以存在至少两种方法分别用于封装和引用图块轨道或子图片轨道:

-引用来自图块基础轨道或提取器轨道的轨道标识符。

-从图块基础轨道或提取器轨道中引用图块组标识符,其中由图块组标识符标识的图块组包含并置图块轨道(collocated tile track)或作为所提取的替代物的子图片轨道。

在RWMQ方法中,每个图片大小和每个图块网格有一个提取器轨道就足够了。在360°+视口视频和RWMR视频中,每个不同查看取向可能需要一个提取器轨道。

接下来描述与上述基于图块的视口相关流传输方法类似的方法,其可以称为基于图块矩形的编码和流传输。该方法可以与任何视频编解码器一起使用,即使与HEVC类似的图块在编解码器中不可用,或者即使运动受限图块集等未在编码器中实现。在基于图块矩形的编码中,源内容在编码之前被拆分为图块矩形序列。每个图块矩形序列覆盖源内容的空间区域的子集,诸如完整的全景内容,其可以是例如等距柱状投影格式。然后每个图块矩形序列彼此独立地编码为单层比特流。可以从同一图块矩形序列编码出若干比特流,例如用于不同比特率。每个图块矩形比特流可以作为其自己的轨道(或类似轨道)封装在文件中并且可用于流传输。在接收器侧,可以基于查看取向来选择要流传输的轨道。客户端可以接收覆盖整个全向内容的轨道。与覆盖其余的、当前不可见视口的质量或分辨率相比,可以针对当前视口接收质量更好或分辨率更高的轨道。在一个示例中,每个轨道可以用单独的解码器实例进行解码。

在视口自适应流传输中,主要视口(即,当前查看取向)以良好的质量/分辨率传输,而360度视频的其余部分以较低质量/分辨率传输。当查看取向改变时,例如当用户在使用头戴式显示器查看内容时转过头时,需要流传输内容的另一版本,以匹配新的查看取向。通常,可以从流访问点(SAP)开始请求新版本,这些访问点通常与(子)分段对准。在单层视频比特流中,SAP对应于随机访问图片,是帧内编码的,并且因此在速率失真性能方面成本很高。通常,因此通常使用相对较长的SAP间隔和因而相对较长的(子)分段持续时间(秒级)。因此,在查看取向改变(例如,转头)之后升级质量的延迟(本文中称为视口质量更新延迟)通常为秒量级,因此显然是明显的且烦人的。

如上所述,视口相关流传输中的视口切换(可能符合MPEG OMAF)在流访问点处被启用,其涉及帧内编码,因此与相同质量的相应帧间编码图片相比具有较大比特率。因此在编码配置中选择流访问点间隔与速率失真性能之间的折衷。

具有MCTS的等分辨率HEVC比特流的视口自适应流传输在下面作为示例进行描述。同一全向源内容的若干HEVC比特流可以使用运动受限图块集以相同分辨率但不同质量和比特率进行编码。所有比特流中的MCTS网格都是相同的。为了使客户端能够使用相同图块基础轨道从自不同原始比特流接收的MCTS重构比特流,每个比特流封装在自己的文件中,并且针对所有这些文件中的相同图块网格位置的每个图块轨道使用相同的轨道标识符。HEVC图块轨道由每个运动受限图块集序列形成,并且附加地形成图块基础轨道。客户端可以解析图块基础轨道以从图块轨道隐式地重构比特流。可以使用合规HEVC解码器对重构比特流进行解码。

客户端可以选择接收每个MCTS的哪个版本。相同的图块基础轨道足以组合来自不同比特流的MCTS,因为在相应图块轨道中使用相同的轨道标识符。

图5示出了如何将相同分辨率的图块轨道用于基于图块的全向视频流传输的示例。4×2图块网格已经用于形成运动受限图块集。源自相同源内容的两个HEVC比特流被以不同图片质量和比特率进行编码。每个比特流可以封装在它自己的文件中,其中每个运动受限图块集序列可以被包括在一个图块轨道中,并且图块基础轨道也被包括在该一个图块轨道中。客户端可以基于查看取向选择接收每个图块轨道的质量。在该示例中,客户端以特定质量接收图块轨道1、2、5和6,以另一质量接收图块轨道3、4、7和8。图块基础轨道用于将所接收的图块轨道数据排序为可以用HEVC解码器进行解码的比特流。

在当前视频编解码器中,原始内容的不同部分需要打包成2D帧,以便由传统2D视频编解码器进行编码。视频编码格式对图片的空间分区有限制。例如,HEVC使用以CTU为单位指定的图片宽图块行和图片高图块列的图块网格,针对图块列和图块行具有某些最小宽度和高度的约束。不同部分可以具有不同大小,因此它们可能无法沿2D视频编解码器的空间分区单元进行最佳打包。打包图片中也可能存在空白空间(未由原始内容的任何部分分配但总之被编码和解码的区域)。然而,接收器不需要的这些空白空间被计数为编解码器的有效像素,并且总之应当被编码和解码。这导致低效的打包。克服这个缺点的已知解决方案集中在更灵活和/或更细粒度的图块的可能性上,例如不需要使用图片宽图块行和图片高图块列的图块网格的CU的图块粒度或图块分区。

另一缺点是,在视口相关360度流传输中,需要选择对应图块并且将其布置在经编码的2D图片中。这也需要对编码数据进行一些改变,因为编码器输出中的图块位置与输入到解码器的合并比特流的图块位置不同。因此,需要为合并比特流重写参数集和切片标头。用于克服视口相关360度流传输的这种提取缺陷的已知解决方案已经与例如客户端侧切片标头重写(但是,这不是标准化解码操作的一部分)相关,并且可能不被解码器API和解码器实现支持;或具有经重写的切片标头的提取器轨道,这与ISO/IEC 14496-15相关,包括提取器的设计,其可以用于重写提取器轨道中的参数集和切片标头,而图块数据通过引用被包括在内。这种方法可能针对每个可能的提取组合需要有一个提取器轨道,诸如针对每个360度视频查看取向范围需要有一个提取器轨道,这会导致不同的拾取图块集。

然而,另一缺点是,在需要对内容的不同部分(例如,不同图块)独立地进行编码(例如,在视口自适应流传输应用或ROI增强层中使用运动受限图块集技术)的情况下,存在速率失真损失。例如,已经发现,与没有图块的编码相比,12×8MCTS网格在14个ERP测试序列中的平均Bjontegaard增量比特率增加超过10%,峰值为22.5%。用于克服该缺点的已知解决方案涉及在运动受限图块边界附近修改运动补偿滤波器以减少MCTS工具的RD(速率失真)损失;或者修改预测块并且移除其对以MCTS模式进行编码的其他图块的依赖性,这减少了MCTS工具的RD损失。

本实施例涉及基于子图片的视频编解码器操作。在特定时刻的视觉内容被分为若干部分,每个部分使用子图片来表示。不同时刻的相应子图片形成子图片序列,其中“相应”(respective)的定义可能取决于上下文,但可以是例如图片序列中的图片区域的相同空间部分或以相同设置获取的内容,诸如相同获取位置、取向和投影表面。特定时刻的图片可以定义为特定时刻的所有子图片的集合。每个子图片使用传统视频编码器进行编码,并且重构子图片存储在与子图片序列相对应的重构子图片存储器中。为了预测特定子图片序列的子图片,编码器可以使用同一子图片序列的重构子图片作为预测的参考。编码子图片作为单独的单元(例如,VCL NAL单元)被包括在同一比特流中。

解码器接收经编码的视频数据(例如,比特流)。使用传统视频解码器将子图片解码为与其他子图片分开的单元。可以使用解码图片缓冲过程来对解码子图片进行缓冲。解码图片缓冲过程可以将特定子图片序列的解码子图片提供给解码器,并且解码器可以使用解码子图片作为预测的参考,以预测同一子图片序列的子图片.

图6示出了解码器的示例。解码器接收经编码的视频数据(例如,比特流)。子图片在解码过程610中使用传统视频解码器被解码为与其他子图片分离的单元。解码子图片可以使用解码图片缓冲过程620进行缓冲。解码图片缓冲过程可以将特定子图片序列的解码子图片提供给解码过程610,并且解码器可以使用解码子图片作为预测的参考,以预测同一子图片序列的子图片。

解码图片缓冲过程620可以包括按子图片序列缓冲,其可以包括将重构子图片标记为“用于参考”和“不用于参考”,以及跟踪是否已经从解码器输出重构子图片。子图片序列的缓冲可以彼此独立,也可以通过以下方式中的一种或两种进行同步:

-同一时刻的所有重构子图片的输出可以同步执行。

-同一时刻的重构子图片的参考图片标记可以同步执行。

按子图片序列缓冲730可以用图7来图示。该示例示出了两个子图片序列的解码,它们具有相同高度但不同宽度。需要理解,子图片序列的数目和/或子图片尺寸可以被选择得不同并且这些选择仅表示作为可能的示例。

根据一个实施例,来自解码器的输出包括不同且单独的解码子图片的集合。

根据另一示例,来自解码过程的输出图片(其也可以或替代地称为解码图片)是不同且单独的子图片的集合。根据另一实施例,通过将重构子图片布置成二维(2D)图片来合成输出图片。该实施例保持单个输出图片(每个时刻)作为视频解码器的输出的传统设计,因此可以直接集成到系统中。解码子图片被提供给解码子图片缓冲。解码过程然后可以使用(多个)经缓冲的子图片作为解码后续图片的参考。解码过程可以获取关于(多个)解码子图片中的哪个将被用作用于生成(多个)被操纵的子图片的源的指示或推断。这些子图片被提供给参考子图片操纵过程。被操纵的参考子图片然后被提供给解码子图片缓冲,在该解码子图片缓冲中被操纵的参考子图片被缓冲。子图片和被操纵的参考子图片然后可以被输出图片合成过程使用,该输出图片合成过程将图片合成数据作为输入并且将重构子图片布置(arrange)成输出图片。编码器将图片合成数据编码到比特流中或沿比特流编码,其中图片合成数据指示将如何将重构子图片布置成形成(多个)输出图片的(多个)2D图片。解码器从比特流中或沿比特流解码图片合成数据,并且根据解码图片合成数据从重构子图片和/或被操纵的参考子图片形成输出图片。解码或图片合成数据可以作为输出图片合成过程的一部分或在操作上与输出图片合成过程连接。因此,传统的视频解码过程对图片合成数据进行解码。

根据另一实施例,其示例在图8中示出,通过将重构子图片布置成二维(2D)图片来合成输出图片(可以另外地或替代地称为解码图片)。该实施例保持单个输出图片(每个时刻)作为视频解码器的输出的传统设计,因此可以直接集成到系统中。编码器将图片合成数据编码到比特流中或沿比特流进行编码,其中图片合成数据指示将如何将重构子图片布置成形成(多个)输出图片的(多个)2D图片。解码器从比特流中或沿比特流对图片合成数据进行解码,并且根据经解码的图片合成数据从重构子图片中形成输出图像。解码或图片合成数据可以作为解码图片缓冲过程820的一部分发生或在操作上与解码图片缓冲过程820连接。因此,传统的视频解码过程需要对图片合成数据进行解码。

根据一个实施例,图片合成数据使用比特流或子图片的解码顺序和子图片的尺寸在比特流中或沿比特流进行编码和/或从比特流或沿比特流进行解码。在编码器和/或解码器中遵循用于在图片区域内定位子图片的算法,其中子图片以其比特流或解码顺序输入到算法中。在一个实施例中,用于在图片区域内定位子图片的算法如下:当图片包括多个子图片并且图片的编码和/或编码图片的解码开始时,重构图片或解码图片的每个CTU位置被标记为未占用(unoccupied)。对于比特流或解码顺序的每个子图片,子图片在图片内以CTU光栅扫描顺序获取下一个这样的未占用位置,该图片足够大以适合图片边界内的子图片。

图9示出了图8所示的实施例的另一示例,用于将时间对准的重构子图片并排布置成输出图片。解码图片缓冲过程920可以包括输出图片合成过程940,其将图片合成数据作为输入并且将重构子图片布置成输出图片。该示例示出了两个子图片序列的解码,它们具有相同的高度但不同的宽度。在该示例中,输出图片合成过程940将时间对准的重构子图片并排布置到输出图片上。需要理解,子图片序列的数目和/或子图片尺寸可以被不同地选择并且这些选择仅表示可能的示例。

根据一个实施例,编码器在比特流中或沿比特流指示

-解码器是否旨在输出不同且单独的解码子图片的集合;或者

-解码器是否旨在基于图片合成数据生成输出图片;或者

-解码器是否被允许执行上述任一选项。

根据一个实施例,解码器从比特流中或沿比特流进行解码:

-解码器是否旨在输出不同且单独解码子图片的集合;或者

-解码器是否旨在基于图片合成数据生成输出图片;或者

-解码器是否被允许执行上述任一选项。

解码器调节其操作以符合解码意图或许可。

根据一个实施例,解码器包括用于至少在输出不同且单独的解码子图片的集合或基于图片合成数据生成输出图片之间进行选择的接口。解码器调节其操作以符合通过接口指示的内容。

根据一个实施例,图片被分为子图片、图块组和图块。图块可以与HEVC图块类似地被定义,因此图块可以定义为覆盖图片的矩形区域的CTU序列。图块组可以定义为子图片内的图块光栅扫描中的图块序列。可以指定,VCL NAL单元恰好包含一个图块组,即,图块组恰好被包含在一个VCL NAL单元中。子图片可以定义为一个或多个完整图块组的矩形集合。在一个实施例中,图片被分区为子图片,即,整个图片被子图片占用并且图片内没有未占用区域。在另一实施例中,图片包括子图片和一个或多个未占用区域。

根据一个实施例,编码器在比特流中或沿比特流对指示子图片的一个或多个图块分区的信息进行编码和/或解码器从比特流中或沿比特流对指示子图片的一个或多个图块分区的信息进行解码。图块分区可以例如是分别指定为图块列和图块行的宽度和高度的图块网格。编码器在比特流中或沿比特流编码和/或解码器从比特流中或沿比特流解码哪个图块分区适用于特定子图片或子图片序列。在一个实施例中,描述图块分区的语法元素被在图片参数集中进行编码和/或从图片参数集进行解码,并且PPS被激活用于子图片,例如通过图块组标头中的PPS标识符。每个子图片可以参考它自己的PPS,因此可以有它自己的图块分区。例如,图10示出了被划分为4个子图片的图片。每个子图片可以有自己的图块网格。在该示例中,子图片1被划分为等宽和等高的3×2图块的网格,子图片2被划分为3和5个CTU高的2×1图块。子图片3和4中都只有一个图块。子图片1有3个图块组,分别包含1、3和2个图块。子图片2、3和4中的每个具有一个图块组。

图10还示出了用于在图片区域内定位子图片的上述算法。子图片1是解码顺序的第一子图片,因此位于图片区域的左上角。子图片2是解码顺序的第二子图片,因此位于按光栅扫描顺序的下一未占用位置。对于解码顺序的第三和第四子图片,即分别为子图片3和4,该算法也以相同的方式操作。子图片解码顺序在图片边界之外用数字(1、2、3、4)表示。

根据一个实施例,编码器在比特流中对(例如在诸如图块组标头等图像分段标头中)指示子图片内的一个或多个图块位置的信息进行编码和/或解码器从比特流中对指示子图片内的一个或多个图块位置的信息进行解码。例如,可以编码和/或解码图像分段或图块组的按解码顺序的第一图块的图块位置。在一个实施例中,当图像分段或图块组的第一图块是子图片的左上图块时,解码器推断当前图像分段或图块组是子图片的第一图像分段或图块组(例如,图块的按光栅扫描顺序的具有等于0的图块地址或图块索引)。在一个实施例中,关于推断第一图像分段或图块组,解码器推断是否开始新的访问单元。在一个实施例中,当与图片顺序计数相关的图片顺序计数值或(多个)语法元素值(诸如图片顺序计数的最低有效位)与先前子图片的图片顺序计数值或(多个)语法元素值不同时,推断开始新的访问的结论。

根据一个实施例,解码图片缓冲是基于图片而不是基于子图片来执行的。编码器和/或解码器使用图片合成数据从同一访问单元或时刻的解码子图片生成参考图片。参考图片的生成与在用于生成输出图片的其他实施例中描述的相同或类似地执行。当在子图片的编码和/或解码中参考参考图片时,通过从解码图片缓冲器中的参考图片中提取与当前子图片并置的区域来生成用于对子图片进行编码和/或解码的参考子图片。因此,解码过程与其他实施例类似地从解码图像缓冲过程中获取(多个)参考子图片,并且解码过程可以与其他实施例类似地操作。

在一个实施例中,编码器以参考图片包含与当前子图片具有相同位置(在图片内)并且与当前子图片具有相同尺寸(宽度和高度)的子图片的方式选择用于预测当前子图片的参考图片。如果参考图片不包含与当前子图片具有相同位置(在图片内)或与当前子图片具有相同尺寸的子图片,则编码器避免选择用于预测当前子图片的参考图片。在一个实施例中,同一访问单元或时刻的子图片被允许具有不同类型,诸如随机访问子图片和非随机访问子图片,其定义类似于之前已经关于NAL单元类型和/或图片类型描述的内容。编码器编码具有第一位置和大小的随机访问子图片和第二位置和大小的非随机访问子图片的第一访问单元、以及按解码顺序的随后的访问单元,包括以按解码顺序在第一访问单元之前的参考图片被避免的方式受到约束的第一位置和大小的子图片、以及包括第二位置和大小的使用按解码顺序在第一访问单元之前的参考图片作为预测参考的另一子图片。

在一个实施例中,为了对当前子图片进行编码和/或解码,编码器和/或解码器仅将这样的参考图片包括到初始参考图片列表中,这些参考图片包含与当前子图片具有相同位置(在图片内)和与当前子图片具有相同尺寸(宽度和高度)的子图片。不包含与当前子图片具有相同位置(在图片内)或与当前子图片具有相同尺寸(宽度和高度)的子图片的参考图片在生成用于编码和/或解码当前子图片的初始参考图片列表时被跳过或排除。在一个实施例中,同一访问单元或时刻的子图片被允许具有不同类型,诸如随机访问子图片和非随机访问子图片,其定义类似于之前已经关于NAL单元类型和/或图片类型描述的。编码器和/或解码器中的参考图片列表初始化过程或算法仅包括在初始参考图片列表中按解码顺序的先前随机访问子图片和后续子图片,并且跳过或排除按解码顺序在先前随机访问子图片之前的子图片。

根据一个实施例,从第一子图片序列的一个或多个子图片预测第二子图片序列处的子图片。子图片相对于第一子图片序列的一个或多个子图片的空间关系由编码器在比特流中或沿比特流推断或指示和/或由解码器从比特流中或沿比特流解码。在比特流中或沿比特流不存在这种空间关系信息的情况下,编码器和/或解码器可以推断子图片是并置的,即,预测中的空间对应关系完全重叠。空间关系信息与图片合成数据无关。例如,子图片可以组合成在输出图片中在彼此之上(在顶部底部打包布置中),而它们被认为要被并置以用于预测。

编码过程或解码过程的实施例在图11中示出,其中从第一子图片到第二子图片序列的箭头指示预测。在图11的示例中,可以推断子图片要被并置以用于预测。

根据一个实施例,编码器以子图片序列标识符与诸如VCL NAL单元等编码视频数据单元相关联的方式在比特流中或沿比特流指示子图片序列标识符等。根据一个实施例,解码器以子图片序列标识符与编码视频数据单元和/或相应重构子图片相关联的方式从比特流中或沿比特流解码子图片序列标识符等。包含子图片序列标识符和关联机制的语法结构可以包括但不限于以下中的一种或多种:

-被包括在NAL单元标头中并且与NAL单元相关联的子图片序列标识符。

-被包括在VCL NAL单元中的标头(诸如图块组标头或切片标头)中并且与相应图像分段(例如,图块组或切片)相关联的子图片序列标识符。

-被包括在子图片定界符、图片标头或类似语法结构中的子图片序列标识符,其由编码视频数据隐式引用。子图片定界符例如可以是开始新子图片的特定NAL单元。隐式引用可以例如表示可以引用按解码或比特流顺序的先前语法结构(例如,子图片定界符或图片标头)。

-被包括在头参数集、图片参数集或类似语法结构中的子图片序列标识符,其被编码视频数据显式引用。显式引用可以例如表示参考参数集的标识符被包括在编码视频数据中(诸如在图块组标头中或在切片标头中)。

在一个实施例中,子图片序列标识符值在比特流的预定义子集内是有效的(其可以称为“有效期”或“有效期子集”),其可以是但不限于以下之一:

-单个访问单元,即,单个时刻的编码视频数据。

-编码视频序列。

-从封闭随机访问访问单元(random-access access unit)(包括性)直到下一封闭随机访问访问单元(排他性)或比特流的结束。封闭随机访问访问单元可以定义为在其内和之后的所有现有子图片序列以封闭随机访问子图片开始的访问单元。封闭随机访问子图片可以定义为帧内编码子图片,按解码顺序,其后在同一子图片序列中没有如下子图片:引用同一子图片序列中按解码顺序在帧内编码子图片之前的任何子图片。在一个实施例中,封闭随机访问子图片可以是帧内编码子图片或与(多个)外部参考子图片相关联并且仅从外部参考子图片预测(参见下面进一步描述的实施例)并且否则如上所述受到约束的子图片。

-整个比特流。

在一个实施例中,子图片序列标识符值在比特流的所指示的子集中是有效的。编码器可以例如在比特流中包括特定NAL单元,其中NAL单元指示与子图片序列标识符的(多个)较早周期(period)无关的子图片序列标识符的新周期。

在一个实施例中,当两个子图片都在子图片序列标识符的同一有效期内时,具有特定子图片序列标识符值的子图片被推断为在与具有相同子图片序列标识符值的按解码顺序的先前子图片相同的子图片序列内。当两图片处于子图片序列标识符的不同有效期或具有不同子图片序列标识符时,则推断它们在不同子图片序列中。

在一个实施例中,子图片序列标识符是固定长度码字。固定长度码字中的位数可以编码到比特流中或沿比特流进行编码(例如在视频参数集或序列参数集中)和/或可以从比特流中或沿比特流进行解码(例如从视频参数集或序列参数集)。

在一个实施例中,子图片序列标识符是可变长度码字,诸如指数哥伦布码等。

根据一个实施例,编码器以解码顺序指示VCL NAL单元或图像分段到比特流中或沿比特流的子图片或子图片序列的映射,诸如在视频参数集、序列参数集或图片参数集中。同样,根据一个实施例,解码器按解码顺序解码VCL NAL单元或图像分段到来自或沿比特流的子图片或子图片序列的映射。映射可以一次涉及单个时刻或访问单元。

在一个实施例中,提供了若干映射,例如在单个容器语法结构中,每个映射都被索引或明确标识,例如带有标识符值。

在一个实施例中,编码器在比特流中(例如,在访问单元标头或定界符、图片参数集、标头参数集、图片标头、图像分段(例如,图块组或切片)的标头中)指示哪个映射适用于特定访问单元或时刻。同样,在一个实施例中,解码器从比特流中解码哪个映射应用于特定访问单元或时刻。在一个实施例中,应用哪个映射的指示是若干映射列表的索引(例如,在序列参数集中指定)或若干映射集合的标识符(例如,在序列参数集中指定)。在另一实施例中,应用哪个映射的指示包括映射本身,例如作为与映射相关联的访问单元中包括的按解码顺序的VCL NAL单元的子图片序列标识符列表。

根据一个实施例,解码器如下推断VCL NAL单元或图像分段的子图片或子图片序列:

-访问单元的开始被推断为例如如编码规范中指定的,或者新时刻的开始被推断为如分组化或容器文件规范中指定的。

-应用于访问单元或时刻的映射是根据任何较早实施例推断的。

-对于解码顺序的每个VCL NAL单元或图像分段,从映射中推断相应子图片序列或子图片。

下面提供了具有以下设计决策的示例实施例:

-映射在序列参数集中被指定。

-指定用于将VCL NAL单元映射到子图片序列的映射。

-指示哪个映射适用于特定访问单元或者时刻发生在图块组标头中。

应当理解,其他实施例可以通过其他设计决策类似地实现,例如容器语法结构、用于图像分段而不是VCL NAL单元的映射、以及用于子图片而不是子图片序列的映射。

语法元素的语义可以如下指定:num_subpic_patterns等于0指定没有使用基于子图片的解码。num_subpic_patterns大于0指定从VCL NAL单元到子图片序列标识符的映射的数目。subpic_seq_id_len_minus1加1指定subpic_seq_id[i][j]语法元素的长度(以比特为单位)。num_vcl_nal_units_minus1[i]加1指定在第i映射中映射的VCL NAL单元的数目。subpic_seq_id[i][j]指定与第i映射相关联的访问单元中按解码顺序的第j VCL NAL单元的子图片序列标识符。

subpic_pattern_idx的语义可以如下指定。subpic_pattern_idx指定从VCL NAL单元到适用于该访问单元的子图片序列标识符的映射的索引。可能需要subpic_pattern_idx在同一访问单元的所有tile_group_header()语法结构中具有相同的值。

根据一个实施例,特定子图片序列的随机访问子图片可以从其他子图片序列(不包括特定子图片序列)的一个或多个参考子图片进行预测。可能需要并且可以为随机访问子图片指示以下之一:

可能需要对随机访问子图片进行约束,使得按输出顺序在随机访问子图片处或之后的任何子图片的预测不依赖于按解码顺序在随机访问子图片之前的(同一子图片序列中的)任何参考子图片;这种情况对应于开放GOP随机访问点。

可能需要对随机访问子图片进行约束,使得按解码顺序在随机访问子图片处或之后的任何子图片的预测不依赖于按解码顺序在随机访问子图片之前的(同一子图片序列中的)任何参考子图片;这种情况对应于封闭GOP随机访问点。

由于随机访问子图片可以从(多个)其他子图片序列预测,因此随机访问子图片比用帧内编码图片实现的类似随机访问子图片更紧凑。

子图片序列的流访问点(也可以或替代地称为子图片序列访问点)可以定义为子图片序列(等)中的仅使用从该位置开始的信息就能够开始回放子图片序列的位置,假定所参考的子图片序列早先已被解码。子图片序列的流访问点可以与随机访问子图片重合或等效。

根据一个实施例,在比特流的解码开始时,所有子图片序列的解码在解码过程中被标记为未初始化(uninitialized)。当子图片被编码为随机访问子图片(例如,如HEVC中的IRAP图片)并且跨子图片序列的预测未被启用时,对应子图片序列的解码被标记为已初始化(initialized)。当当前子图片被编码为随机访问子图片(例如,如多层HEVC中的所预测的层中的IRAP图片)并且用作预测参考的所有子图片序列的解码被标记为已初始化时,当前子图片的子图片序列的解码被标记为已初始化。当针对某个时刻(例如,针对访问单元)不存在标识符的子图片序列的子图片时,对应子图片序列的解码在解码过程中被标记为未初始化。当当前子图片不是随机访问子图片并且当前子图片的子图片序列的解码未标记为已初始化时,可以省略当前子图片的解码。如其他实施例中所描述的,与省略的子图片相对应的区域(例如,基于图片合成数据)在输出图片合成过程中可以被处理为未占用区域。

作为上述按子图片解码启动的结果,例如可以取决于应用需求而动态地选择子图片的存在与否。

图片合成数据可以包括但不限于针对每个子图片的以下信息中的一条或多条:

-子图片内的有效区域的上、左、下、右坐标。输出图片合成过程中不使用有效区域之外的样本。利用指示有效区域的一个示例是从输出图片合成过程中排除保护带。

-输出图片内的合成区域的上、左、下、右坐标。针对子图片的每个有效区域而指示一个合成区域。子图片的有效区域被映射到合成区域。当合成区域与有效区域的尺寸不同时,对有效图片区域进行重新缩放或重采样以匹配有效区域。

-旋转,例如旋转0、90、180或270,以将有效区域映射到合成区域。

-镜像,例如垂直或水平地,以将有效区域映射到合成区域。

可以理解,可以等效地使用上述之外的其他语法元素选择。例如,有效区域和/或合成区域的坐标和尺寸可以由区域左上角的坐标、区域的宽度和区域的高度来指示。需要理解,可以在比特流中或沿比特流推断或指示用于指示坐标或范围的单位,和/或从比特流中或沿比特流解码用于指示坐标或范围的单位。例如,坐标和/或范围可以被指示为编码树单元的整数倍。

根据一个实施例,z顺序或重叠顺序可以由编码器或另一实体指示为比特流中或沿比特流的图片合成数据的一部分。根据一个实施例,z顺序或重叠顺序可以被推断为例如升序的子图片标识符或与相同输出时间或相同输出顺序的子图片的解码顺序相同。

图片合成数据可以与子图片序列标识符等相关联。图片合成数据可以编码到视频参数集、序列参数集或图片参数集中和/或从视频参数集、序列参数集或图片参数集进行解码。

图片合成数据可以描述未被编码、请求、传输、接收和/或解码的子图片或子图片序列。这使得能够选择用于编码、请求、传输、接收和/或解码的可能或可用的子图片或子图片序列的子集。

根据一个实施例的解码器或播放器可以包括输出图片合成过程等,其可以将表示相同输出时间或相同输出顺序的两个或更多个重构子图片作为输入。输出图片合成过程可以是解码图片缓冲过程的一部分或者可以连接到解码图片缓冲过程。当解码器被触发输出图片时,输出图片合成过程可能被调用。这种触发可以例如在可以合成正确输出顺序的输出图片时发生,即,当比特流内的当前解码位置之后没有按输出顺序在下一重构子图片之前的编码视频数据时。这种触发的另一示例是当指定的缓冲时间已经过(elapse)时。

在输出图片合成过程中,图片合成数据被应用以将上述两个或更多个重构子图片定位在相同坐标上或定位在相同输出图片区域上。根据一个实施例,未占用的输出图片区域被设置为所确定的值,该值可以针对每个颜色分量单独导出。所确定的值可以是默认值(例如,在编码标准中预定义的)、由输出图片合成过程确定的任意值、或者由编码器在比特流中或沿比特流指示和/或从比特流中或沿比特流解码的值。相应地,可以在将上述两个或更多个重构子图片定位到输出图片区域上之前将输出图片区域初始化为所确定的值。

根据一个实施例,解码器一并指示输出图片以及未占用区域。解码器的输出接口或输出图片合成过程可以包括输出图片和指示未占用区域的信息。

根据一个实施例,输出图片合成过程的输出图片是通过以下方式来形成的:将两个或更多个重构子图片的可能经重采样的样本数组按z顺序定位到输出图片上使得按z顺序的较晚的样本数组覆盖或替换按z顺序的较早的样本数组的并置位置的样本值。

根据一个实施例,输出图片合成过程包括对准上述两个或更多个重构子图片的解码呈现。例如,如果一个子图片由YUV 4:2:0色度格式表示,而按z顺序的在后面的另一子图片由YUV 4:4:4色度格式表示,则作为过程的一部分,第一个子图片(the first one)可以被上采样到YUV 4:4:4。同样,如果一个图片由第一色域或格式(诸如ITU-RBT.709)表示,而按z顺序在后面的另一图片由第二色域或格式(诸如ITU-R BT.2020)表示,则作为该过程的一部分,第一个子图片可以被转换为第二色域或格式。

此外,输出图片合成过程可以包括从一种颜色呈现格式到另一颜色呈现格式(或等效地,从一组原色到另一组原色)的一个或多个转换。例如,可以基于使用中的显示器来选择目标颜色呈现格式。例如,输出图片合成过程可以包括从YUV到RGB的转换。

最终,当所有上述两个或更多个重构子图片都被如上所述处理时,所得到的输出图片可以形成要显示的图片或要在显示过程中使用的图片,例如用于为视口生成内容。

应当理解,输出图片合成过程可以附加地包含除上述步骤之外的其他步骤,并且可以缺少上述步骤中的一些步骤。替代地或另外地,输出图片合成过程的上述步骤可以按不同于上述顺序的另一顺序来执行。

当前子图片与(来自不同子图片序列的)参考子图片之间的空间对应关系可以由编码器指示和/或由解码器使用以下描述的空间关系信息进行解码:

根据一个实施例,在不存在空间关系信息的情况下,可以推断当前子图片和参考子图片是并置的。

根据一个实施例,空间关系信息指示当前子图片的左上样本在参考子图片中的位置。注意,当前子图片的左上角样本可以被指示为对应于参考子图片之外的位置(例如,具有负的水平和/或垂直坐标)。同样,当前子图片的底部和/或右侧样本可以位于参考子图片之外。当当前子图片参考在参考子图片之外的样本或经解码的变量值(例如,运动矢量)时,它们可以被认为不可用于预测。

根据一个实施例,空间关系信息指示参考子图片的所指示或所推断的样本位置(例如,参考子图片的左上样本位置)在当前子图片中的位置。注意,参考子图片的所指示或所推断的样本位置可以被指示为对应于当前子图片之外的位置(例如,具有负的水平和/或垂直坐标)。同样,参考子图片的一些样本位置(例如,底部和/或右侧样本)可以位于当前子图片之外。当当前子图片参考在参考子图片之外的样本或经解码的变量值(例如,运动矢量)时,它们可以被认为不可用于预测。注意,不同子图片序列中的子图片可以使用相同的参考子图片作为使用相同或不同空间关系信息进行预测的参考。还应当注意,参考子图片的所指示或所推断的样本位置可以被指示为对应于当前子图片中的分数位置(fractionallocation)。在这种情况下,参考子图片是通过对当前子图片进行重采样来生成的。

根据一个实施例,空间关系信息指示当前子图片的四个角(例如,左上、右上、左下、右下)样本在参考子图片中的位置。当前图片的每个样本在参考子图片中的对应位置可以使用例如双线性插值来计算。

根据一个实施例,可以由编码器和/或解码器推断,或者可以由编码器在比特流中或沿比特流指示,和/或可以由解码器从比特流中或沿比特流解码:空间对应关系水平和/或垂直地以环绕(wrap-around)方式被应用。例如,当子图片覆盖整个360度图片并且两个视图的子图片序列都存在于比特流中时,编码器可以指示这种环绕对应关系。当使用环绕对应关系并且在解码过程中参考在参考子图片边界之外的样本位置时,所参考的样本位置可以水平或垂直地(取决于跨越哪个边界)环绕到参考子图片的另一侧。

根据一个实施例,编码器生成和/或解码器解码空间关系信息的一个以上的实例以指示当前子图片与一个以上参考子图片之间的空间对应关系。

根据一个实施例,编码器生成和/或解码器解码空间关系信息的一个以上的实例以指示当前子图片与(来自不同子图片序列的)参考子图片之间的一个以上的空间对应关系。以上任何实施例都可以用于描述空间关系信息的实例。对于空间关系信息的每个实例,可以在编码器和/或解码器中生成一个或多个参考图片列表中的单独参考图片索引。例如,参考图片列表初始化可以包括:包含参考子图片被包括在初始参考图片列表中的次数可以等于关于参考子图片的空间关系信息的实例的数目。当指示帧间预测的参考时,编码器可以使用对应关系参考索引来指示与空间关系信息的特定实例相关联的参考子图片的使用。相应地,解码器可以解码将用作帧间预测的参考的参考索引,推断与该参考索引相对应的空间关系信息的特定实例,并且使用与所推断的空间关系信息的特定实例相关联的参考子图片作为帧间预测的参考。例如当参考子图片大于当前子图片,并且当前子图片的不同边界的物体运动方向不同时(在空间上,当朝向子图片之外时),可以使用本实施例。因此,针对每个边界,具有空间关系信息的不同实例的不同参考可能会有所帮助。

根据一个实施例,可以从子图片的另一侧复制不可用样本。这在360度视频中尤其有用。

根据一个实施例,访问单元包含同一时刻的子图片,并且单个访问单元的编码视频数据按解码顺序是连续的,并且按解码顺序不与任何其他访问单元的任何编码数据交织。在另一实施例中,同一时刻的子图片不需要按解码顺序是连续的。

根据另一实施例,同一时刻的子图片不需要按解码顺序是连续的。例如,该实施例可以用于对子图片序列的一些子层进行追溯解码(retroactive decoding),这些子层之前以降低的图片速率解码但现在要以更高的图片速率解码。针对于子图片序列的多个图片速率或不同数目子层的这种操作在下面的另一实施例中进一步描述。

根据一个实施例,所有子图片序列都具有相同时刻的子图片。换言之,当一个子图片序列具有任何特定时刻的子图片时,所有其他子图片也具有该时刻的子图片。如果所有子图片序列具有相同时刻的子图片,则编码器可以在比特流中或沿比特流指示(例如在VPS(视频处理系统)中),和/或解码器可以从比特流中或沿比特流进行解码。根据另一实施例,子图片序列可以具有其时刻至少部分不同的子图片。例如,子图片序列可以具有彼此不同的图片速率。

根据一个实施例,所有子图片序列可以具有相同的预测结构,具有相同时刻的子图片,并且使用相同时刻的子图片作为参考。如果所有子图片序列具有相同的预测结构,则编码器可以在比特流中或沿比特流(例如在VPS中)指示,和/或解码器可以从比特流中或沿比特流进行解码。

根据一个实施例,针对子图片序列的参考图片标记独立于其他子图片序列。这可以例如通过对不同子图片序列使用单独SPS(序列参数集)和PPS(图片参数集)来实现。

根据另一实施例,针对所有子图片序列的参考图片标记被同步。换言之,单个时刻的所有子图片要么全部标记为“用于参考”,要么全部标记为“不用于参考”。在一个实施例中,影响参考图片标记的语法结构被包括在子图片特定数据单元(诸如针对于子图片的VCLNAL单元)中和/或由子图片特定数据单元参考。在另一实施例中,影响参考图片标记的语法结构被包括在图片特定数据单元(诸如图片标头、标头参数集等)中和/或由图片特定数据单元参考。

根据一个实施例,比特流或CVS(编码视频序列(Coded Vedio Sequence))属性在两个级别(即,针对每个子图片序列和共同地到所有子图片序列(即,所有编码视频数据))被指示。属性可以包括但不限于编码简档、级别、HRD参数(例如,CPB和/或DPB大小)、已经在编码中应用的约束。针对每个子图片序列的属性可以在应用于子图片序列的语法结构中指示。共同应用于所有子图片序列的属性可以在应用于整个CVS或比特流的语法结构中指示。

根据一个实施例,两个级别的比特流或CVS(编码视频序列)属性(即,针对每个子图片序列并且共同地到所有子图片序列(即,所有编码视频数据))被解码。属性可以包括但不限于编码简档、级别、HRD参数(例如,CPB和/或DPB大小)、已经在编码中应用的约束。解码器或客户端可以根据针对所有子图片序列指示的属性来共同确定其是否可以处理整个比特流。解码器或客户端可以根据针对个体子图片序列指示的属性来确定它能够处理的子图片序列。

根据一个实施例,在比特流中或沿比特流(例如,在SPS中)指示和/或从比特流中或沿比特流解码:

-若运动矢量不会导致对子图片边界上的样本位置的引用,或者

-若运动矢量可能导致对子图片边界上的样本位置的引用。

根据一个实施例,针对每个子图片序列的属性和/或共同应用于所有子图片序列的属性可以提供有关应用于该子图片序列和/或所有子图片序列的样本计数和/或采样率限制的信息,其中:

-排除子图片边界上的样本位置,前提是运动矢量不会导致对子图片边界上的样本位置的引用,以及

-包括可能会参考的子图片边界上的样本位置,前提是运动矢量可能导致对子图片边界上的样本位置的引用。

根据一个实施例,与子图片和/或子图片序列相关的参数被编码到图片参数集中和/或从图片参数集进行解码。相同图片、访问单元或时刻的子图片被允许参考不同的图片参数集,但不一定需要参考不同的图片参数集。

根据一个实施例,指示子图片宽度和高度的信息在图片参数集中指示和/或从图片参数集进行解码。例如,子图片宽度和高度可以以CTU为单位指示和/或进行解码。图片参数集语法结构可以包括以下语法元素:

语法元素的语义可以如下指定:multiple_subpics_enabled_flag等于0指定图片恰好包含一个子图片并且访问单元的所有VCL NAL单元参考同一个活跃PPS。multiple_subpics_enabled_flag等于1指定图片可以包含一个以上的子图片,并且每个子图片可以引用不同的活跃PPS。subpic_width_in_ctus_minus1加1(当存在时)指定该PPS为活跃PPS的子图片的宽度。subpic_height_in_ctus_minus1加1(当存在时)指定该PPS为活跃PPS的子图片的高度。当subpic_width_in_ctus_minus1和subpic_height_in_ctus_minus1存在于激活的PPS中时,与图片尺寸相关的变量可以基于它们导出,并且可以覆盖从SPS的语法元素中导出的相应变量。

需要理解,指示子图片宽度和高度的信息可以与以上详细描述的实现得不同。在第一示例中,PPS可以分别包含所有图块行和图块列的图块行高度和图块列宽度,并且子图片高度和宽度分别是所有图块列高度和宽度的总和。在第二示例中,子图片宽度和高度可以以最小编码块大小为单位指示和/或解码。该选项将为最后图块列和最后图块行启用更精细的粒度。

根据一个实施例,与子图片序列相关的参数被编码到子图片参数集中和/或从子图片参数集进行解码。单个子图片参数集可以被一个以上的子图片序列的子图片使用,但不需要被所有子图片序列使用。子图片参数集可以例如包括与用于传统视频编码(诸如HEVC)的图片参数集中包括的信息类似的信息。例如,子图片参数集可以指示在参考子图片参数集的子图片的经编码的图像分段(coded image segment)中启用的编码工具。同一时刻的子图片可以是指不同的子图片参数集。图片参数集可以指示共同应用于一个以上的子图片序列或跨子图片的参数,诸如空间关系信息。

根据一个实施例,子图片序列被封装为容器文件中的轨道。容器文件可以包含子图片序列的多个轨道。从另一子图片序列对子图片序列的预测可以通过文件格式元数据(诸如轨道参考)来指示。

根据一个实施例,子图片序列的(多个)所选择的子层被封装为轨道。例如,子层0可以被封装为轨道。子层级封装(sub-layer-wise encapsulation)可以启用对渲染而言不需要的轨道的子层子集的请求、传输、接收和/或解码。

根据一实施例,生成一个或多个收集器轨道。收集器轨道指示适合一起消费的子图片轨道。子图片轨道可以被分组到包含要消费的替代物的组中。例如,每个组的一个子图片轨道可以意图在任何时间范围被消费。收集器轨道可以参考子图片轨道和/或子图片轨道组中的一者或两者。收集器轨道可能不包含用于修改经编码的视频内容的指令,诸如VCLNAL单元。在一个实施例中,收集器轨道的生成包括但不限于创作和存储以下信息中的一条或多条:

-在分解收集器轨道时应用的参数集和/或标头。例如,可以生成(多个)序列参数集、(多个)图片参数集、(多个)标头参数集和/或(多个)图片标头。例如,当其子图片可以来自随机访问图片和非随机访问图片两者或者属于随机访问子图片类型和非随机访问子图片类型两者时,收集器轨道可以包含适用于图片的图片标头。

-图片合成数据。

-比特流或CVS(编码视频序列)属性,共同应用于从收集器轨道中分解的子图片序列。属性可以包括但不限于编码简档、级别、HRD参数(例如,CPB和/或DPB大小)、已经在编码中应用的约束。

在一个实施例中,收集器轨道中的样本与相关联的子图片轨道的多个样本有关。例如,通过选择收集器轨道的样本持续时间以与相关联的子图片轨道的多个样本有关,可以指示相同的参数集和/或标头、和/或相同的图片合成数据适用于所关联的子图片轨道中的时间段。

根据一个实施例,客户端等标识可用的一个或多个收集器轨道,其中

-收集器轨道指示适合一起消费的子图片轨道,以及

-收集器轨道可以参考子图片轨道和/或子图片轨道组中的一者或两者(例如,包含替代子图片轨道的组,意图从中选择一个以在任何时间范围进行消费),以及

-收集器轨道可能不包含用于修改经编码的视频内容的指令,诸如VCL NAL单元。

在一个实施例中,客户端等从一个或多个收集器轨道或伴随该一个或多个收集器轨道的信息中解析以下信息中的一条或多条:

-在分解收集器轨道时应用的参数集和/或标头。

-图片合成数据。

-比特流或CVS(编码视频序列)属性,共同应用于从收集器轨道中分解的子图片序列。属性可以包括但不限于编码简档、级别、HRD参数(例如,CPB和/或DPB大小)、已经在编码中应用的约束。

在一个实施例中,客户端等从一个或多个收集器轨道中选择要消费的收集器轨道。该选择可以基于但不限于上面列出的信息。

在一个实施例中,客户端等分解收集器轨道以生成用于解码的比特流。被包括在收集器轨道中或伴随收集器轨道的信息的至少子集可以被包括在比特流中用于进行解码。比特流可以按条(piece-wise)(例如,逐个访问单元)生成。然后可以对比特流进行解码,并且可以按条(例如,逐个访问单元)执行解码。

需要理解,关于收集器轨道而描述的实施例同样适用于不同地称呼但本质上具有相同性质的轨道。例如,可以使用术语参数集轨道(parameter set track)而不是收集器轨道(collector track),因为轨道中包括的信息可以被视为参数或参数集而不是VCL数据。

根据一个实施例,从容器文件的所选择的轨道中解封装(decapsulate)(多个)子图片序列。所选择的轨道的样本可以被布置成符合编码格式或编码标准的解码顺序,然后传递给解码器。例如,当从第一子图片预测第二子图片时,第一子图片被按解码顺序布置在第二子图片之前。

根据一个实施例,包含子图片序列的每个轨道形成MPD中的呈现。针对并置并且还共享相同的属性的每组子图片序列轨道生成适配集,使得适配集的呈现之间的切换是可能的,例如使用单个解码器实例。

根据一个实施例,从另一子图片序列对子图片序列的预测可以通过流传输清单元数据(streaming manifest metadata)(诸如DASH MPD中的@dependencyId)来指示。

根据一个实施例,一组适配集的指示被生成到MPD中,其中适配集包含携带子图片序列的呈现,并且子图片序列使得可以用单个解码器进行解码。根据一个实施例,客户端从所指示的组推断出其互补呈现也在组合中的所选择的从属呈现和任何所选择的独立或互补呈现的任何组合都可以被解码。

根据一个实施例,客户端例如基于上述所指示的组、估计的吞吐量和用例来选择从其请求呈现(子)分段(Representation(Sub)segment)的需求(参见例如以下关于视口相关流传输的实施例)。

根据一个实施例,子图片被编码到多于一层的可伸缩视频编码上和/或从多于一层的可伸缩视频编码进行解码。在一个实施例中,用于层间预测的参考图片包括由输出图片合成过程生成的图片。在另一实施例中,执行从参考层的重构子图片到增强层的子图片的层间预测。

根据一个实施例,子图片序列对应于可伸缩性视频编码。实施例可以用于实现例如质量可伸缩性、感兴趣区域可伸缩性或视图可伸缩性(即,多视图或立体视频编码)。因此,多层编码可以替换为基于子图片的编码。与可伸缩视频编码相比,基于子图片的编码在很多用例中可能更有利。例如,描述的很多实施例能够实现大量的子图片序列,这在例如点云编码或体积视频编码中(其中斑块的生成被动态地适配)可能是有利的。相比之下,可伸缩视频编码通常假定固定的最大层数(例如,由HEVC中的nuh_layer_id语法元素中的比特数确定)。此外,描述的很多实施例启用用于预测的子图片和参考子图片的编码(解码)顺序的动态选择,而可伸缩视频编码通常(在访问单元内)(多个)层具有固定的编码(解码)顺序和在编码视频序列中的一组固定的所允许的层间依赖关系。

实施例可以用于但不限于选择(用于编码)和/或解码子图片或子图片序列作为以下中的任一项:

-普通单视图2D视频的整个图片(在这种情况下,每个图片只有一个子图片)

-视频的空间分区(spatiotemporal partitioning)的分区(partition);分区可以对应于编码图像分段

-视频的时空分区的分区;在各种用例中,可以类似于MCTS来选择时空分区

-如上所述的立体或多视图视频的视图

-如上所述的多层(可伸缩)视频的层

-360度投影的投影结构的表面,诸如多面360度投影的面(例如,立方图)

-由按区域打包信息指示的打包区域

-视频的多分辨率打包的空间连续单分辨率部分(例如,多分辨率ERP或CMP)

-投影到表面的点云的部分或斑块(纹理或深度);子图片序列可能包括在后续时刻的相应斑块

-一个或多个感兴趣区域以比其他区域更高的分辨率编码为子图片

-将来自不同源(例如,不同相机)的编码视频聚合为一个比特流中的子图片序列;这可以用于例如多点视频会议

在下文中,讨论了使用基于子图片的编码(解码)的一些示例实施例:例如视口相关360度视频流传输;可伸缩、多视图和立体视频的编码;使用重叠的多面内容的编码;点云内容的编码。

视口相关360度视频流传输:

根据一个实施例,编码子图片序列可以被封装在容器文件的轨道中,该轨道可以被分区为分段和/或子分段,并且呈现可以在流传输清单(例如,MPEG-DASH MPD)中被创建以通过请求使(子)分段可用并且通知(announce)编码子图片序列的属性。可以对每个编码子图片序列执行前一句的过程。

根据一个实施例,客户端装置可以被配置为从清单中解析多个呈现的信息并且从该清单中解析多个呈现中的每个呈现的球形区域。客户端装置还可以从清单中解析指示球形区域的质量和/或球形区域或其2D投影的分辨率信息的值。客户端装置确定适合其使用的呈现。例如,客户端装置可以包括用于在使用头戴式显示器时检测头部取向并且选择质量高于为其他区域而选择的呈现的呈现来覆盖视口的装置。作为选择的结果,客户端装置可以请求所选择的呈现的(子)分段。

根据一个实施例,使用子图片序列以多种分辨率和/或比特率对相同内容进行编码。例如,360度内容的不同部分可以被投影到不同表面,并且被投影的面可以被下采样到不同分辨率。例如,不在当前视口中的人脸可以被下采样以降低分辨率。每张脸都可以编码为子图片。

根据一个实施例,相同内容使用子图片序列以不同随机访问间隔被编码。

根据一个实施例,查看取向的变化引起要请求的呈现的选择与之前的选择部分地不同。可以请求要请求的新呈现,或者可以从呈现中携带的子图片序列内的下一随机访问位置开始它们的解码。当子图片序列在若干随机访问间隔可用时,可以请求具有更频繁的随机访问位置的呈现作为对查看取向变化的响应,直到具有随机访问位置和相似质量的下一(子)分段可以从具有较不频繁的随机访问位置的相应呈现中获取。不需要作为对查看取向变化的响应而改变的呈现不需要具有随机访问位置。如前所述,可以允许子图片具有不同子图片类型或NAL单元类型。例如,特定访问单元或时刻的子图片可以是随机访问类型,而同一特定访问单元或时刻的另一子图片可以是非随机访问类型。因此,可以组合具有不同随机访问间隔的比特流的子图片。

根据一个实施例,共享编码子图片在子图片序列中被编码。共享编码子图片在不同比特率的相应子图片序列中都是相同的,无论是它们的编码形式(例如,VCL NAL单元是相同的)还是它们的重构形式(重构子图片是相同的)。

根据一个实施例,共享编码子图片在它们自己的子图片序列中被编码。

在一个实施例中,共享编码子图片在比特流中或沿比特流(例如,由编码器)被指示为不需要由解码器输出,和/或从比特流中或沿比特流解码而不需要由解码器输出。

共享编码子图片可以用作(多个)单独呈现,或者可以被包括在“普通”(normal)呈现中。当共享编码子图片可用作(多个)单独呈现时,客户端装置可以不断地请求和接收这些(多个)呈现。

当使用共享编码子图片时,取决于查看取向的(多个)上述选择过程适用,差别在于附加在随机访问位置的(多个)呈现之间切换的能力,共享编码子图片还提供这种能力。

图12示出了使用共享编码子图片进行多分辨率视口相关360度视频流传输的示例。

立方图内容在编码为三种分辨率(A、B、C)之前被重采样。需要理解,立方图投影表示作为可以实现该实施例的一种可能选择,但通常同样可以使用其他投影格式。在该示例中,每个分辨率的内容被拆分为相等尺寸的子图片,尽管通常同样可以使用不同尺寸。

在该示例中,共享编码子图片(用包含S字符的矩形指示)被周期性地编码,但是需要理解,可以另外地或替代地使用编码共享编码子图片的不同策略。例如,可以检测场景剪辑,可以为检测到的场景剪辑对IRAP图片等进行编码,并且可以在IRAP图片等处重置用于对共享编码子图片进行编码的周期。

在该示例中,共享编码子图片与同一子图片序列中的“普通”子图片(在图中用条纹矩形指示)一起编码。共享编码子图片和相应“普通”子图片表示比特流中概念上不同(例如具有不同解码时间、具有不同图片顺序计数、和/或属于不同访问单元)的单元。在另一实施例中,共享编码子图片序列可以形成其自己的子图片序列,从该子图片序列可以预测相应“普通”子图片序列。如果从一个子图片序列(本示例中的共享编码子图片序列)到另一子图片序列的预测被启用,则共享编码子图片和来自同一输入图片的相应“普通”子图片可以属于该时刻(例如,是同一访问单元的一部分)。

在该示例中,共享编码子图片与相应“普通”子图片具有相同尺寸。在另一实施例中,共享编码子图片可以具有不同尺寸。例如,共享编码子图片可以覆盖整个立方体面或立方图的所有立方体面,并且空间关系信息可以用于指示“普通”子图片如何在空间上与共享编码子图片相关。与“普通”子图片相比,这种方法的一个优点是能够跨共享编码子图片内以及共享编码子图片之间的更大区域进行预测。

客户端装置可以选择、请求、接收和解码:

-所有期望分辨率的共享编码子图片A00、……、A95、B00、……、B23和C0、……、C5

-任何所选择的比特率的其他编码图片的任何子图片子集(基于子图片)

根据一个实施例,表示360度视频的子图片序列以“基本”(base)保真度或质量被编码,因此子图片序列可以称为基础子图片序列(base sub-layer sequence)。这个子图片序列可以被认为携带共享编码子图片。此外,表示360度视频的时空子集的一个或多个子图片序列以高于基本保真度或质量的保真度或质量被编码。例如,投影图片区域或打包图像区域可以分区为矩形,并且每个矩形序列可以被编码为“感兴趣区域”(region-of-interest)子图片序列。可以从基础子图片序列和同一ROI子图片序列的参考子图片中预测ROI子图片序列。空间关系信息用于指示ROI子图片序列相对于基础子图片序列的空间对应关系。可以对相同空间位置的若干ROI子图片序列进行编码,例如用于不同比特率或分辨率。

在一个实施例中,基础子图片序列具有与ROI子图片序列相同的图片速率,因此ROI子图片序列可以被选择以覆盖360度视频的子集,例如具有用于查看取向变化的所选择的余量(margin)的视口。在另一实施例中,基础子图片序列具有比ROI子图片序列低的图片速率,因此ROI子图片序列可以被选择以覆盖整个360度视频。具有用于查看取向变化的所选择的余量的视口可以被选择以便以比覆盖球体覆盖范围的其余部分的ROI子图片序列更高的质量从ROI子图片序列被请求、传输、接收和/或解码。

在一些解决方案中,基础子图片序列总是被接收和解码。此外,基于当前查看取向而选择的ROI子图片序列被接收和解码。

用于ROI子图片序列的随机访问子图片可以从基础子图片序列进行预测。由于基础子图片序列被一致地接收和解码,针对基础子图片序列的随机访问子图片间隔(即,SAP间隔)可以长于ROI子图片序列。该编码方法促进在该ROI子图片序列的SAP位置处切换到请求和/或接收和/或解码另一ROI子图片序列。不需要在该ROI子图片序列处的帧内编码子图片开始对该ROI子图片序列的解码,因此与传统方法相比提高了压缩效率。

在视口相关360度流传输中使用本发明的优点包括:

-在视口相关流传输中合并MCTS不需要(多个)提取器轨道或(多个)图块基础轨道等,因为无论接收或向解码传递哪组子图片序列,子图片序列都可以在不修改的情况下解码。这减少了内容创作负担并且简化了客户端操作。

-在基于后期绑定的视口相关流传输中不需要改变VCL NAL单元,因为无论接收或向解码传递哪组子图片序列,子图片序列都可以在不修改的情况下解码。这降低了客户端实现的复杂性。

-以像素为单位的图片大小不必是恒定的。当使用共享编码子图片时,该优势变得明显,其中在包括共享编码子图片的时刻中比其他时刻可以解码更多数目的像素。

-根据视口大小和头部运动余量灵活选择子图片数目。在一些现有技术方法中,当创建用于将子图片轨道的内容合并到单个比特流的提取器轨道时,子图片轨道的数目是预定义的。

-根据解码能力和/或接收数据的可用性灵活选择子图片的数目。解码子图片的数目可以根据可用解码容量来动态选择,例如在具有资源共享的多进程或多任务系统上。即使某些请求的子图片尚未收到,特定时刻的编码数据也可以传递给解码。因此,仅涉及子图片序列的子集的传递延迟不会拖延其他子图片序列的解码和回放。

-比特率与所接收的子图片之间的切换可以在任何共享编码子图片和/或随机访问子图片处进行。可以以共享编码子图片和/或随机访问子图片的不同间隔对内容的若干版本进行编码。在解码比特流中,共享编码子图片和/或随机访问子图片不需要在所有子图片序列中对准,因此当切换和/或随机访问属性仅在需要其的这些子图片序列中时,可以实现更好的速率失真效率。

如上所述,根据用例,术语“子图片”(sub-picture)可以是指各种用例和/或投影类型。接下来将讨论与少数这些用例的上下文中的子图片编码相关的示例。

使用重叠的多面内容的编码

根据一个实施例,360度内容的不同部分可以被投影到不同表面,并且被投影的面可以具有重叠内容。在另一实施例中,内容可以被划分为具有重叠内容的若干区域(例如,图块)。每个面或区域可以编码为子图片。每个子图片可以使用其他子图片的一部分作为参考帧,如图13和14所示的两个示例,其中非重叠内容在白色框中示出,重叠区域以灰色示出,子图片中的对应部分用虚线矩形指示。空间关系信息可以用于指示子图片如何在空间上与其他子图片相关。

点云内容的编码

根据一个实施例,点云内容的每个部分被投影到表面以生成斑块。每个斑块可以被编码为子图片。不同斑块可能有冗余数据。每个子图片可以使用其他子图片来补偿这种冗余。在图15的示例中,点云的不同部分已经被投影到表面1和表面2以分别生成斑块1和斑块2。每个斑块被编码为子图片。在这个示例中,由c、d、e指示的点云内容的一部分被冗余投影到两个表面上,因此斑块1和斑块2中的对应内容冗余。在图15中,可以从子图片1预测的子图片2的该部分用虚线框指示。重构子图片的集合可以形成输出图片。替代地,重构子图片可以布置成2D输出图片。

根据编码实施例,第二PCC层的斑块被编码为第二子图片并且被预测为第一PCC层的相应斑块的重构子图片。类似地,根据解码实施例,对第二子图片进行解码,其中第二子图片表示第二PCC层的斑块,并且其中解码包括从表示第一PCC层的相应斑块的重构子图片进行预测。

根据一个实施例,子图片序列以不同图片速率和/或不同子层数目被有意地编码、请求、传输、接收和/或解码。该实施例适用于例如当在特定时间只需要内容的部分进行渲染时。例如,在360度视频中,仅视口需要在特定时间进行渲染,而在点云编码和体积视频中,需要用于渲染的部分可以取决于查看位置和查看取向。需要用于渲染的子图片序列的图片速率和/或子层数目(在编码、请求、传输、接收和/或解码中)可以被选择为高于不需要用于渲染和/或不太可能很快需要用于渲染(例如,用于响应于查看取向变化)的子图片序列。通过所描述的布置,可以减少所需要的解码容量和功耗。替代地,例如可以实现传送和/或解码加速,例如,比实时回放更快。当需要在更多子层对子图片序列进行解码时(例如,为了响应于查看取向变化),子层访问图片(诸如HEVC的TSA和/或STSA图片)可以用于重新开始编码、请求、传输、接收和/或解码子层。

根据一个实施例,TSA子图片等可以被编码到子图片序列的最低子层中,而不是从其他子图片序列进行预测。这个TSA子图片指示可以从这个TSA图片开始预测这个子图片序列的所有子层。根据一个实施例,TSA子图片等是从子图片序列的最低子层解码的,而不是从其他子图片序列预测的。在一个实施例中,推断出,最低子层之上的任何子层的请求、传输、接收和/或解码可以从该TSA子图片开始,因此这种请求、传输、接收和/或解码发生。

除了上面已经讨论的那些优点,本实施例还提供了其他优点。例如,跨子图片边界的环路滤波被禁用。因此,通过立即处理由解码过程输出的解码子图片(例如,通过从YUV到RGB的色彩空间转换等),可以实现非常低的延迟操作。这启用了播放中涉及的过程的流水线(pipeline)(例如,接收VCL NAL单元,解码VCL NAL单元,后处理解码子图片)。在编码端也可以获得类似优点。对不连续图像内容的边界进行滤波(诸如对不相交的投影表面进行滤波)可能会导致可见伪影(artefact)。通过禁用环路滤波器,可以减少子图片边界处的可见伪影并且提高主观质量。

作为另外的优势,当子图片序列彼此独立时,子图片可以以任何顺序被解码,并且不同图片的子图片可以被并行解码。这为处理内核(processing core)之间的负载平衡提供了更大的灵活性。

作为另外的优势,可以通过将点云或体积视频的斑块序列指示为在同一子图片序列下方来将其指示为具有相同或相似源(例如,相同投影表面)。因此,同一源的斑块可以相互预测。通常,点云或体积视频的斑块已经被打包到2D图片上,并且相同或相似源的斑块应当在空间上定位到2D图片上的相同位置。然而,由于斑块的数目和大小可能会有所不同,因此对应斑块的这种时间对准可能并不简单。

作为另外的优势,仅需要重写高级语法结构(诸如图片合成数据),以提取比特流的子图片的子集或合并不同比特流的子图片。子图片的编码数据不需要改变。这使得视口相关360度流传输应用更容易实现。同样,对于查看位置和取向相关体积视频流传输应用也是如此。

此外,每个图片的子图片的数目或像素数不保持恒定。这使得基于“后期绑定”和基于查看取向和/查看位置的适配的360度和6DoF流传输应用更容易实现。可以基于视口大小和/或解码容量来选择所接收的子图片的数目。如果没有及时接收到子图片,则可以在没有它的情况下对图片进行解码。

通过允许运动矢量参考子图片边界之外的数据,与运动受限图块集相比,可以提高压缩效率。

通过允许从一个子图片序列到另一子图片序列的预测,可以提高压缩效率,例如以用于:

-视图间预测,当第一子图片序列表示第一视图并且第二子图片序列表示第二视图时。

-可以为自适应360和6DoF流传输启用来自“共享子图片序列”的预测。

由于可以允许图片宽度和高度不与CTU边界(等)对准,并且由于子图片解码作为常规图片解码操作,因此实现了定义子图片大小的灵活性。例如,用于360度视频的子图片尺寸不需要是CTU宽度和高度的倍数。可以更灵活地利用这种以像素/秒为单位的解码能力。

在如CMP等其中面边界存在不连续性的多面投影中,子图片编码可以通过不使用相邻面像素进行预测来改善面边界中的帧内编码。

在下文中,将根据实施例更详细地描述参考子图片操纵过程。

编码器选择可以用作被操纵的参考子图片的源的子图片。编码器使用所标识的参考子图片操纵过程从解码子图片集合中生成被操纵的参考子图片集合;并且在用于预测的参考图片列表中包括被操纵的参考子图片中的至少一个。

编码器在比特流中或沿比特流包括参考子图片操纵过程的标识,并且还可以在比特流中包括指示或推断要操纵的一组解码子图片和/或要生成的一组被操纵的参考子图片的信息。

解码器从比特流中或沿比特流解码参考子图片操纵过程的标识。解码器还从比特流中解码指示或推断要操纵的一组解码子图片和/或要生成的一组被操纵的参考子图片的信息。

解码器还可以使用所标识的参考子图片操纵过程从一组解码子图片生成被操纵的参考子图片的集合;并且在用于预测的参考图片列表中包括被操纵的参考子图片中的至少一个。

在一个实施例中,编码器在比特流中或沿比特流指示和/或解码器从比特流中或沿比特流解码和/或由编码器和/或解码器推断参考子图片操纵操作将在参考子图片操纵中用作输入的(多个)参考子图片变为可用时执行。

在一个实施例中,如果参考子图片在变得可用(例如,在它被解码之后)时将被提供用于参考子图片操纵,则编码器将控制信号编码到比特流中或沿比特流编码和/或解码器从比特流中或沿比特流解码控制信号。控制信号可以被包括在例如序列参数集、图片参数集、标头参数集、图片标头、子图片定界符或标头、和/或图像分段标头(例如,图块组标头)中。当被包括在参数集中时,控制信号可以应用于参考参数集的每个子图片。控制信号可以特定于子图片序列(并且可以伴随有子图片序列标识符),或者可以应用于所有被解码的子图片序列。当被包括在标头中时,控制信号可以应用于其中应用有标头的时空单元。在一些情况下,控制信号适用于第一标头并且可以在应用于同一时空单元的后续标头中重复。例如,控制信号可以被包括在子图片的图像分段标头(例如,图块组标头)中,以指示经解码的子图片被提供给参考子图片操纵。

在一个实施例中,编码器在比特流中或沿比特流指示和/或解码器从比特流中或沿比特流解码和/或由编码器和/或解码器推断:参考子图片操纵操作将在被操纵的参考子图片在编码和/或解码中被参考或将要在编码和/或解码中被参考时被执行。例如,当被操纵的参考子图片被包括在可以用作当前子图片中的预测的参考的“活跃”参考子图片中的参考图片列表中时,参考子图片操纵过程可以被执行。

如前所述,在一些实施例中:

-解码图片缓冲是在图片的基础上而不是在子图片的基础上执行的。

-编码器和/或解码器使用图片合成数据从同一访问单元或时刻的解码子图片生成参考图片。

-参考图片的生成与在其他实施例中描述的用于生成输出图片的内容相同或类似地执行。

其中基于图片执行解码图片缓冲的实施例包括以下各项:通过从解码图片缓冲器中的参考图片中提取区域来生成要用作参考子图片操纵过程的输入的参考子图片。提取可以作为解码图片缓冲过程的一部分或参考子图片操纵过程的一部分来进行,或者在操作上连接到解码图片缓冲过程和/或参考子图片操纵过程。在一个实施例中,该区域为与正在编码或解码的当前子图片并置(collocate)的区域。在另一实施例中,该区域通过空间关系信息来提供。因此,参考子图片操纵过程与其他实施例类似地从解码图片缓冲过程中获取(多个)参考子图片,并且参考子图片操纵过程可以与其他实施例类似地操作。

参考子图片操纵过程的标识和发信号通知的伴随信息

上述子图片打包可能涉及指示可以用作子图片打包的源的子图片序列、子图片或子图片内的区域的打包信息。在一个实施例中,打包信息与图片合成数据类似但与其分开地指示。在一个实施例中,编码器在比特流中或沿比特流指示图片合成数据被重新用作打包信息,和/或同样,解码器从比特流中或沿比特流解码图片合成数据被重新用作打包信息。在一个实施例中,打包信息与OMAF的按区域打包SEI消息或按区域打包元数据类似地被指示。

应当注意,可以为一组重构子图片(例如,要用于输出图片合成的所有子图片)指示打包信息,但是可以从在创建被操纵的参考子图片时可用的那些重构子图片生成被操纵的参考子图片。例如,用作第一时刻的第三子图片的参考的被操纵的参考子图片可以从按解码顺序在第三子图片之前的(也是第一时刻的)第一重构子图片和第二重构子图片生成,而用于生成被操纵的参考子图片的打包信息可以包括用于第一子图片、第二子图片和第三子图片的信息。

作为生成被操纵的参考子图片的一部分的融合(blending)可以被执行以使得样本位置的每个值样本被计算为定位到该样本位置上的参考子图片的所有样本的平均值,或者使得每个样本可以相对于可用和不可用样本的位置根据样本的位置使用加权平均值来计算。

自适应分辨率改变

自适应分辨率改变(ARC)是指动态地改变视频比特流或视频会话中的分辨率,例如在视频会议用例中。可以使用自适应分辨率改变例如以实现更好的网络适配(networkadaptation)和针对传输错误或丢失的错误恢复能力。为了更好地适应不同内容的不断变化的网络需求,除了质量,可能还希望能够改变时间/空间分辨率。ARC还可以启用会话的快速启动或在寻找新的时间位置之后,其中可以通过首先发送低分辨率帧然后增加分辨率来减少会话的启动时间。ARC还可以用于组成会议。例如,当一个人开始说话时,可以提高他/她的对应分辨率。

ARC可以常规地通过编码分辨率改变发生的位置处的随机访问图片(例如,HEVCIRAP图片)来执行。然而,由于应用于随机访问图片的帧内编码使得它们在速率失真性能方面比帧间编码图片效率低下。因此,一种可能性是以相对较低的质量对随机访问图片进行编码,以保持比特计数接近于帧间编码图片的比特计数,从而不会显著增加延迟。然而,低质量的图片在主观上可能会引起注意,并且也会对由此预测的图片的速率失真性能产生负面影响。另一种可能性是以相对较高的质量对随机访问图片进行编码,但是相对较高的比特计数可能会导致更高的延迟。在低延迟会话应用中,可能无法通过初始缓冲来补偿高延迟,初始缓冲可能会导致明显的图片速率波动或运动不连续。

参考子图片操纵过程可以用于自适应分辨率改变。

帧间预测可以用于参考子图片操纵过程。按解码顺序的相同子图片序列的任何在前参考子图片可以用作预测的参考。此外,被操纵的参考子图片可以用作预测的参考。

在该示例中,特定分辨率的最后的重构子图片被重采样以生成用于新分辨率的被操纵的参考子图片。这种布置可以适合低延迟应用,其中(子)图片的解码和输出顺序相同。需要理解,这不是唯一可能的布置,任何(多个)重构子图片都可以被重采样以生成(多个)被操纵的参考子图片用作新分辨率的子图片的预测的参考。此外,可能有一个以上的被操纵的参考子图片被用作新分辨率的子图片的预测的参考。

可以形成子图片序列,使得相同分辨率的子图片在同一子图片序列中。因此,在这个示例中有两个子图片序列。用于形成子图片序列的另一种选择是使得从分辨率切换点开始的相同分辨率的子图片在同一子图片序列中。因此,在这个示例中有三个子图片序列。

以上示例示出了适合例如网络吞吐量和/或解码能力用于实时编码的可能操作。替代地或另外地,以上示例还可以说明解码操作,其中解码子图片是可用于解码的子图片的子集,例如在容器文件中或作为接收流的一部分。

可以在流传输中促进自适应分辨率改变(对于多个播放器),例如如以下段落所述。

可以针对相对不频繁的随机访问间隔对所选择的的子图片序列进行编码。在该示例中,为每三个(子)分段的随机访问周期生成低分辨率子图片序列和高分辨率子图片序列。例如,在稳定接收条件下,当对于子图片序列的码率而言接收缓冲器占用率足够高并且网络吞吐量足够且稳定时,可以接收这些子图片序列。

所选择的子图片序列被编码用于使用通过重采样而创建的被操纵的参考子图片在分辨率之间切换。在这个示例中,一个子图片序列被编码用于在任何(子)分段边界处从低分辨率到高分辨率的分辨率变化。该子图片序列中的每个(子)分段的子图片以它们仅相互依赖彼此或依赖于低分辨率子图片序列的方式被编码。

子图片序列可以单独用于流传输。例如,它们可以在DASH MPD中作为单独的呈现被通知(announce)。

客户端基于(子)分段来选择被接收的子图片序列。客户端首先接收(不频繁的随机访问间隔的)低分辨率子图片序列的一个(子)分段。然后,客户端决定切换到更高分辨率并且接收子图片序列的两个(子)分段,该子图片序列使用从低分辨率子图片生成的被操纵的参考子图片作为预测参考。然而,由于在后的被操纵的参考子图片需要第二低分辨率(子)分段被解码,所以低分辨率子图片序列的第二(子)分段也被接收。客户端然后切换到不频繁随机访问间隔的高分辨率子图片序列。

在一个实施例中,被操纵的参考子图片仅从特定时间子层(例如最低时间子层,例如在HEVC中TemporalId等于0)生成。可以使这些特定时间子层与同一子图片序列的其他时间子层分开地用于流传输。例如,这些特定时间子层可以被宣布为第一呈现,并且同一子图片序列的其他子层可以作为第二呈现可用。继续上面说明的示例客户端操作,仅需要从低分辨率子图片序列的第二(子)分段接收特定子层。特定子层可以作为单独的呈现或子呈现(Sub-Representation)可用,因此能够与其他子层分开请求并接收它们。

在开放GOP随机访问图片处的流切换

为了支持客户端在DASH呈现的流传输会话期间在不同质量和分辨率之间切换,可以在分段边界处对随机访问点图片进行编码。通常,在DASH呈现的分段边界处使用开始所谓的封闭图片组(GOP)预测结构的随机访问图片。已经发现,与封闭GOP随机访问图片相比,开放GOP随机访问图片提高了速率失真性能。此外,已经发现,与封闭GOP随机访问图片相比,开放GOP随机访问图片减少了可观察到的图片质量波动。当解码从开放GOP随机访问图片(例如,HEVC的CRA图片)开始时,按解码顺序在随机访问图片之后但按输出顺序在随机访问图片之前的一些图片可能无法解码。这些图片可以称为随机访问跳过前导(RASL)图片。因此,如果在DASH中的分段边界处使用开放GOP,则呈现切换将导致无法解码RASL图片,从而导致回放中的图片速率故障(picture rate glitch)。

当呈现使用开放GOP结构并且共享相同分辨率和其他特性时,即,当源呈现的解码图片可以用作诸如用于预测目标呈现的图片的参考图片时,可以启用无缝呈现切换。然而,呈现可能不共享相同特性,例如,它们可能具有不同空间分辨率,其中无缝呈现切换可能需要一些进一步的考虑。

根据一个实施例,编码器在比特流中或沿比特流指示参考子图片操纵被应用于前导子图片或按解码顺序在与前导子图片相关联的开放GOP随机访问子图片之前的子图片的那些参考子图片。根据一个实施例,解码器从比特流中或沿比特流解码或推断参考子图片操纵被应用于前导子图片或按解码顺序在与前导子图片相关联的开放GOP随机访问子图片之前的子图片的那些参考子图片。解码器可以推断参考子图片操纵,例如,当开放GOP随机访问子图片的分辨率不同于同一子图片序列的按解码顺序的较早子图片时,以及当开放GOP随机访问子图片的一个或多个在前(按解码顺序)参考子图片将保持被标记为“用于参考”时。参考子图片操纵可以(由编码器)指示、(由解码器)解码或(由编码器和/或解码器)推断为需要进行重采样以将参考子图片的分辨率与使用参考子图片作为预测的参考的前导子图片的分辨率匹配。

用于响应于按区域混合分辨率(RWMR)360°视频流传输的视口变化的自适应分辨率变化

当基于HEVC的视口相关360°流传输发生查看取向变化时,子图片呈现(Sub-picture Representation)的新选择可以在下一IRAP对准(子)分段边界生效。子图片呈现被合并到编码图片以进行解码,因此VCL NAL单元类型在所有选择的子图片呈现中被对准。

为了在对查看取向变化做出反应的响应时间与查看取向稳定时的速率失真性能之间进行权衡,可以以不同随机访问图片间隔(或SAP间隔)对内容的多个版本进行编码。

由于查看取向可能经常逐渐移动,因此分辨率仅在RWMR视口相关流传输中的子图片位置的子集中发生变化。然而,如上所述,需要针对所有子图片位置接收以随机访问图片开始的(子)分段。就流传输速率失真性能而言,用以随机访问图片开始的(子)分段更新所有子图片位置是低效的。

此外,使用具有RWMR 360°流传输的子图片呈现的开放GOP预测结构的能力对于提高速率失真性能和避免由封闭GOP预测结构引起的可见图片质量泵浦(pumping)是可取的。

当每个访问单元有多个子图片时,也可以使用自适应分辨率改变。例如,可以使用立方图投影,并且每个立方体面可以被编码为一个或多个子图片。可以以比其他子图片更高的分辨率来流传输并解码覆盖视口的子图片(可能具有用于覆盖查看取向变化的余量)。当查看取向改变使得新的子图片需要以较高分辨率被流传输而它们在先前以较低分辨率被流传输时,或者反之亦然,可以如上所述执行从一种分辨率到另一种分辨率的切换。

当每个访问单元有多个子图片时,也可以使用根据上述实施例的在开放GOP随机访问图片处的自适应分辨率改变和/或流切换。

根据一个实施例,已经针对每个子图片位置对子图片序列的多个版本进行了编码。例如,针对每个子图片位置对两个分辨率和两个随机访问间隔(这里称为“短”和“长”)之间的每个组合,单独版本被编码。至少在子图片序列中使用开放GOP预测结构。子图片序列已经被封装到子图片轨道中,并且作为DASH中的子图片呈现可用。从编码子图片序列形成的(子)分段中的至少一些以开放GOP预测结构开始。客户端为第一范围的(子)分段选择将要以第一分辨率接收的第一组子图片位置和将要以第二分辨率接收的第二组子图片位置。查看取向变化由客户端通过为第二范围的(子)分段选择将要以第一分辨率接收的第三组子图片位置和将要以第二分辨率接收的第四组子图片位置来处理。第一组和第三组不相同,并且第一组和第三组的交集非空。同样,第二组和第四组不相同,并且第二组和第四组的交集非空。如果(子)分段的第二范围在长随机访问版本中不以随机访问位置开始,则客户端请求需要改变分辨率的子图片位置的短随机访问子图片呈现的(子)分段(即,在第三组内但在第一组和第三组的交集之外,或在第四组内但在第二组和第四组的交集之外)。如在其他实施例中描述的,通过参考子图片操纵来处理用于已改变分辨率的(子)分段的(多个)RASL子图片且以开放GOP随机访问图片开始的(多个)参考子图片。例如,(多个)参考子图片可以被重采样到(多个)RASL子图片的分辨率。

例如,可以使用立方图投影,并且每个立方体面可以被编码为一个或多个子图片。可以以比其他子图片更高的分辨率流传输并解码覆盖视口的子图片(可能具有用于覆盖查看取向变化的余量)。当查看取向改变使得新的子图片需要以较高分辨率被流传输而它们在先前以较低分辨率被流传输时,或者反之亦然,可以如上所述执行从一种分辨率到另一种分辨率的切换。

原地参考子图片操纵

在一些实施例中,参考子图片操纵原地发生。换言之,修改后的子序列修改、覆盖或替换参考子图片。除了指示参考子图片操纵,可能不需要其他编解码器或比特流改变。编码器和/或解码器可以通过但不限于以下方式中的一种或多种来推断进行原地操纵:

-原地操纵可以例如在编码标准中预定义为总是在生成被操纵的参考子图片时应用。

-原地操纵可以例如在编码标准中被指定为应用于预定义操作过程子集。

-编码器在比特流中或沿比特流指示(例如,在序列参数集中)和/或解码器从比特流中或沿比特流解码原地操纵发生。

如果被操纵的参考子图片的尺寸(即,宽度和/或高度)和/或影响存储器分配(例如,位深度)的其他属性与用作操纵过程的输入的(多个)子图片的不同,则原地操纵可以理解为包括以下各项:

-在与用作操纵过程的(多个)源的(多个)子图片分开的图片缓冲器中创建被操纵的参考子图片。

-将用作操作过程的(多个)源的(多个)子图片标记为“不用于参考”,并且可能将它们从解码图片缓冲器中移除。

隐式重采样

在一个实施例中,参考子图片操纵过程的标识对重采样进行标识。例如,该标识可以是可能需要重采样参考子图片的序列级指示。在另一示例中,标识是轮廓指示符等,由此包括参考子图片的重采样的特征。要操纵的解码子图片集可以推断如下:如果参考子图片具有与当前子图片不同的分辨率,则将其重采样到当前子图片的分辨率。在一个实施例中,仅当参考子图片在任何参考图片列表中的活跃图片之中时才发生重采样。

在一个实施例中,每个时刻或访问单元恰好有一个编码子图片。因此,除了上述隐式重采样,可以使用传统编码(解码)操作和比特流语法。这种解码操作适用于例如如上所述的自适应分辨率变化。

在一个实施例中,如上所述,重采样可以伴随有或被替换为用于生成被操纵的参考子图片的任何其他操作。参考子图片操纵过程的标识对当参考子图片具有与当前子图片不同的分辨率或格式(例如,色度格式或位深度)时将执行的操作进行标识。

被操纵的参考子图片的显式管理

在一个实施例中,编码器在比特流中编码和/或解码器从比特流中解码用于生成被操纵的参考子图片的控制操作。在一个实施例中,控制操作被包括在被用作生成被操纵的参考子图片的源的子图片的编码视频数据中。在另一实施例中,控制操作被包括在使用被操纵的参考子图片作为预测的参考的子图片的编码视频数据中。在又一实施例中,控制操作被包括在用作生成被操纵的参考子图片的源的子图片处或之后(按解码顺序)的任何子图片的编码视频数据中。

在一个实施例中,被操纵的参考子图片在其作为“用于参考”或“不用于参考”(例如,在参考图片集中)的标记中与对应“源”参考子图片配对。也就是说,当“源”参考子图片被标记为“不用于参考”时,对应的被操纵的参考子图片也被标记为“不用于参考”。

在一个实施例中,编码器在比特流中编码和/或解码器从比特流解码用于将被操纵的参考子图片标记为“用于参考”或“不用于参考”的控制操作。例如,控制操作可以是仅用于被操纵的参考子图片的特定参考图片集。

在一个实施例中,参考图片列表被初始化以包含被标记为“用于参考”的被操纵的参考子图片。在一个实施例中,参考图片列表被初始化以包含被指示为针对当前子图片的活跃参考的被操纵的参考子图片。

外部参考子图片

在一个实施例中,解码过程提供用于输入“外部参考子图片”的接口。参考子图片操纵过程可以通过接口将被操纵的参考子图片提供给解码过程。

在解码过程中,外部参考子图片可以具有预定义属性和/或可以被推断,和/或属性可以通过接口被提供。这些属性可能包括但不限于以下中的一项或多项:

-图片顺序计数(POC)或POC的某些比特,例如POC最低有效位(LSB)和/或POC最高有效位(MSB)。

-标记为“用于短期参考”或“用于长期参考”。

例如,可以预先定义外部参考子图片被处理为长期参考图片和/或具有等于0的图片顺序计数。

在一个实施例中,如果要获取外部参考子图片用于进行解码,则编码器将控制信号编码到比特流中或沿比特流编码,和/或解码器从比特流中或沿比特流解码控制信号。控制信号可以被包括在例如序列参数集、图片参数集、标头参数集、图片标头、子图片定界符或标头、和/或图像分段标头(例如,图块组标头)中。当被包括在参数集中时,当参数集被激活时,控制信号可以引起解码过程获取外部参考子图片。控制信号可以特定于子图片序列(并且可以伴随有子图片序列标识符)或者可以应用于所有被解码的子图片序列。当被包括在标头中时,控制信号可以引起解码过程以获取外部参考子图片,例如,当标头被解码时或在开始解码其中应用有标头的时空单元时。例如,如果控制信号被包括在图像分段标头(例如,图块组标头)中,则可以仅对子图片的第一图像分段标头执行外部参考子图片的提取。

在一个实施例中,可以仅针对独立于其他编码子图片序列的编码子图片序列的第一子图片给出外部参考子图片。例如,在自适应分辨率改变的示例实施例中,每个被操纵的参考子图片可以开始编码子图片序列。如果每个编码图片、访问单元或时刻仅使用一个子图片,则被操纵的参考子图片可以开始编码视频序列。

在一个实施例中,推断外部参考子图片具有与用作生成外部参考子图片的源的子图片中相同的属性。

在一些实施例中,与用作参考子图片操纵的输入的(多个)子图片同步地控制外部参考子图片(用于或不用于参考)的标记。

在一个实施例中,外部参考子图像其他参考子图片一样被包括在初始参考图片列表中。

外部参考子图片可以伴随有通过接口传递或推断的标识符(例如,ExtRefId)。外部参考子图片的存储器管理(例如,保存在解码图片缓冲器中的ExtRefId索引)可以在比特流中编码或从比特流中解码,或者可以通过接口进行控制。

序列开始和/或序列结束指示

根据一个实施例,编码器向比特流中编码和/或解码器从比特流中解码序列结束(EOS)语法结构和/或序列开始(SOS)语法结构,包括但不限于以下中的一项或多项:

-EOS和/或SOS语法结构所涉及的子图片序列的标识符。

-由SOS语法结构激活的(多个)参数集的标识符。

-控制信号,用于指定EOS和/或SOS语法结构的解码是否会导致参考子图片操纵操作(例如,通过隐式重采样)和/或获取外部参考子图片。例如,SOS语法结构(当存在时)可以表示外部

在一个实施例中,序列结束(EOS)语法结构和/或序列开始(SOS)语法结构分别被包括在NAL单元中,该NAL单元的NAL单元类型指示序列结束和/或序列开始。

比特流、序列和子图片序列指示的开始

根据一个实施例,编码器向比特流中编码和/或解码器从比特流中解码比特流开始指示、编码视频序列开始指示和/或子图片序列开始指示。(多个)指示可以被包括在例如参数集语法结构、图片标头和/或子图片定界符中和/或从例如参数集语法结构、图片标头和/或子图片定界符进行解码。当存在于参数集中时,(多个)指示可以应用于激活参数集的图片或子图片。当存在于图片标头、子图片定界符或类似语法结构中时,(多个)指示可以应用于比特流顺序,即,指示语法结构或访问单元或包含语法结构的编码图片开始比特流、编码视频序列或子图片序列。

属性指示

在一个实施例中,比特流或CVS属性在两个级别(即,针对不包括被操纵的参考子图片的生成的每个子图片序列,以及针对包括被操纵的参考子图片的生成的每个子图片序列)被指示。属性可以包括但不限于编码简档、级别、HRD参数(例如,CPB和/或DPB大小)、已经在编码中应用的约束。可以在适用于核心解码过程的语法结构(诸如序列参数集)中指示不包括被操纵的参考子图片的生成的每个子图片序列的属性。代替或除了核心解码过程,可以在应用于被操纵的参考子图片的生成的语法结构中指示包括被操纵的参考子图片的生成的每个子图片序列的属性。

参考子图片操纵可能发生在核心解码规范之外,并且可以例如在应用特定标准或附件中指定。

可以生成视频编解码器简档指示的第二外壳,例如:H.266第一外壳简档=Main10,第二外壳简档=子图片打包、或360度几何填充、或点云、或隐式自适应分辨率变化。

在一个实施例中,编码器指示和/或解码器解码包括第一外壳简档指示符和第二外壳简档指示符的比特流属性数据结构,其中第一外壳简档指示符指示不包括参考子图片操纵的属性并且第二外壳简档指示符指示包括参考子图片操纵的属性。

在一个实施例中,比特流或CVS属性被共同指示给所有子图片序列(即,所有编码视频数据)。属性可以包括但不限于编码简档、级别、HRD参数(例如,CPB和/或DPB大小)、已经在编码中应用的约束。与子图片序列特定属性指示一样,可以为以下各项指示和/或解码单独的一组属性:不包括被操纵的参考子图片的生成的子图片序列;以及包括被操纵的参考子图片的生成的子图片序列。

通过展开投影表面来生成一组被操纵的参考子图片

在一个实施例中,通过将整个或部分投影表面展开到2D平面上来生成被操纵的参考子图片。在一些实施例中,展开通过关于投影表面的几何关系的知识和关于如何将投影表面映射到子图片上的知识来执行。在其他实施例中,子图片打包用于实现展开操作。

关于立方图投影描述了一个示例实施例,但需要理解,对于其他投影格式可以类似地实现实施例。在示例实施例中,与“主”立方体面(被预测)相邻的立方体面被展开到“主”立方体面旁边的2D平面上。假定“主”立方体面被编码或解码为当前访问单元内的子图片。图片合成数据可以由编码器创作和/或由解码器解码以从与立方体面相对应的重构子图片生成输出。注意,观察立方体的视点可以在立方体的中间,因此立方图可以表示立方体的内表面。

用作预测参考的访问单元的重构子图片用于通过展开立方体的立方体面来生成当前访问单元的待预测立方体面的被操纵的参考子图片,并且描述如下:展开的立方体面与待预测立方体面相邻,即,与待预测立方体面共享公共边。在展开之后,被操纵的参考子图片的图片区域可以被裁剪。在一个实施例中,编码器指示在比特流中或沿比特流指示裁剪区域的信息,并且解码器从比特流中或沿比特流解码指示裁剪区域的信息。在另一实施例中,编码器和/或解码器将裁剪区域推断为例如与用于帧间预测的预测单元的最大大小成比例,该预测单元的最大大小可以附加地与在非整数样本位置处对样本进行插值所需要的最大样本数成比例地附加。

在裁剪之后或之前,可以处理展开区域的角,例如以下列方式之一:角可能未占用或角可能被填充,例如与被预测立方体面的相邻角样本。

角可以从展开立方体面(unfolded cube face)插值。例如,可以进行插值,但不限于以下任一种:

-来自相邻展开立方体面的样本行和样本列可以重新缩放以覆盖角区域并且融合(blend)(例如,求平均)。

-沿连接样本行的边界样本和样本列的边界样本的每条线段从与角样本具有相同距离的相邻展开立方体面进行插值。插值可以作为与到边界样本的距离的倒数成比例的加权平均值来进行。

-从相邻展开立方体面的样本行或样本列的最近边界样本进行填充。

空间关系信息可以用于指示当前访问单元中的被预测立方体面对应于被操纵的参考子图片的中心区域。这种布置的一个优点是,允许运动矢量参考被操纵的参考子图片的中心区域之外的样本,并且图片内容在这些区域中是近似正确的。

通过展开投影表面和按样本行重采样来生成一组被操纵的参考子图片

在一个实施例中,分两个步骤生成被操纵的参考子图片。首先,如前面的实施例中所述,将整个或部分投影表面展开到2D平面上。其次,由于展开可能会导致被操纵的参考子图片中的样本位置未占用,因此展开投影表面的样本行或列(诸如整个地或部分地展开的立方体面)可以通过重采样进行扩展以覆盖高达45度的角。

360°视频的旋转补偿

在360°视频编码中,可以在导出2D图片之前旋转投影结构,诸如球体。这种旋转的一个原因可以是调节内容的2D版本以更好地适应编码工具,从而提高速率失真性能。例如,可能只有某些帧内预测方向可用,因此可以应用旋转来将内容的2D版本与帧内预测方向匹配。这可以例如通过计算局部梯度并且通过旋转投影结构在统计上改进梯度和帧内预测方向之间的匹配来完成。然而,使用不同旋转生成的内容的2D图片之间会存在时间不一致,因此这样的2D图片之间的常规帧间预测不太可能成功,从而导致速率失真性能的损失。

在一个实施例中,参考子图片与第一旋转相关联并且当前子图片与第二旋转相关联。生成被操纵的参考子图片,其中基本上使用第二旋转。参考子图片操纵例如可以包括以下步骤:首先,可以使用第一旋转将参考子图片投影到诸如球体等投影结构上。可以使用第二旋转将投影结构上的图像数据投影到被操纵的参考子图片上。例如,可以应用第二旋转来旋转球体图像,然后可以将球体图像投影到投影结构(例如,立方体或圆柱体)上,然后将投影结构展开以形成2D子图片。

点云视频的非对准投影表面的补偿

如上所述,当点云被投影到一个或多个投影表面上时,点云序列可以被编码为视频。编码器可以以随时间变化的方式使投影表面的属性适应内容。投影表面的属性可以包括但不限于以下中的一项或多项:3D位置、3D取向、形状、尺寸、投影格式(例如,正投影或具有投影中心的几何投影)和采样分辨率。因此,如果投影表面的任何属性在参考图片和正在编码或解码的当前图片之间不同,则斑块之间的常规帧间预测可能不会成功。因此,适应投影表面的属性可能会导致编码点云序列的速率失真性能损失,即使它提高了单个时刻的速率失真性能。

在一个实施例中,参考子图片操纵包括帧间投影预测。来自一个投影(纹理和几何图像)的一个或多个子图片的一个或多个斑块可以用作用于生成包括一个或多个参考斑块的被操纵的参考子图片的源。被操纵的参考子图片本质上可以表示正在编码或解码的当前子图片的(多个)投影表面的属性。在参考子图片操纵过程中,可以使用应用于重构纹理和几何子图片的(多个)投影表面的属性从重构纹理和几何子图片生成点云。点云可以被投影到第二组(多个)投影表面上,该第二组投影表面可以具有与应用于被编码或解码的当前纹理子图片和/或当前几何子图片的投影表面相同或相似的属性,并且相应纹理和几何预测图片由该投影被形成。

概括

在一个实施例中,参考子图片操纵被视为解码图片缓冲的一部分,而不是与解码图片缓冲分离的过程。

在一个实施例中,参考子图片操纵访问来自第一比特流和第二比特流的子图片以生成(多个)被操纵的参考子图片。例如,第一比特流可以表示第一视点的纹理视频,第二比特流可以表示第一视点的深度或几何视频,并且被操纵的参考子图片可以表示第二视点的纹理视频。

以上已经参考术语子图片(sub-picture)描述了实施例。需要理解,在某些情况下,每个时刻或访问单元只有一个子图片,因此同样可以参考术语图片(picture)而不是术语子图片来描述实施例。

上述实施例提供了一种机制和架构以便以通用方式使用核心视频编码(解码)过程和比特流格式用于很多基于视频的目的,包括基于视频的点云编码、基于块的体积视频编码、以及具有多个投影表面的360度视频编码。与普通2D视频编码相比,通过启用复杂的应用定制预测,可以提高压缩效率。

上述实施例适用于将单层2D视频编解码器与附加功能接口。

根据示例的一种方法包括获取子图片的编码数据,子图片属于图片,并且子图片属于子图片序列。然后确定是否要使用子图片作为被操纵的参考子图片的源。如果该确定指示子图片将被用作被操纵的参考子图片的源,则该子图片用作被操纵的参考子图片的基础。换言之,从子图片生成被操纵的参考子图片以用作子图片序列的后续子图片的参考。

操纵可以包括例如旋转子图片、镜像子图片、重采样子图片、在被操纵的参考子图片的区域内定位、覆盖或混合已经存在于被操纵的参考子图片的指示区域内的样本、或某种其他形式的操纵。还可以使用以上提到的和/或其他操纵原理中的一种以上来生成被操纵的参考子图片。

根据一个实施例的一种装置包括至少一个处理器和包含计算机程序代码的至少一个存储器,存储器和计算机程序代码被配置为与至少一个处理器一起引起该装置至少执行以下操作:

-获取子图片的编码数据,子图片属于图片,并且子图片属于子图

片序列;

-确定是否要使用子图片作为被操纵的参考子图片的源;

-如果该确定揭示子图片将被用作被操纵的参考子图片的源,则从子图片生成被操纵的参考子图片以用作子图片序列的后续子图片的参考。

图16是示出根据一个实施例的方法的流程图。一种方法包括对第一子图片的编码数据进行解码1610,第一子图片属于第一图片,并且第一子图片属于第一子图片序列;对第二子图片的编码数据进行解码1620,第二子图片属于第一图片,并且第二子图片属于第二子图片序列,该解码独立于第一子图片的编码数据的解码;对第三子图片的编码数据进行解码1630,第三子图片属于第二图片,第三子图片属于第一子图片序列,该解码使用第一子图片作为预测的参考。

图17是示出根据另一实施例的方法的流程图。一种方法包括对第一子图片的数据进行编码1710,第一子图片属于第一图片,并且第一子图片属于第一子图片序列;对第二子图片的数据进行编码1720,第二子图片属于第一图片,并且第二子图片属于第二子图片序列,该编码独立于第一子图片的编码数据的编码;对第三子图片的数据进行编码1730,第三子图片属于第二图片,第三子图片属于第一子图片序列,该编码使用第一子图片作为预测的参考。

根据一个实施例的一种装置包括用于对第一子图片的编码数据进行解码的模块,第一子图片属于第一图片,并且第一子图片属于第一子图片序列;用于对第二子图片的编码数据进行解码的模块,第二子图片属于第一图片,并且第二子图片属于第二子图片序列,该解码独立于第一子图片的编码数据的解码;用于对第三子图片的编码数据进行解码的模块,第三子图片属于第二图片,第三子图片属于第一子图片序列,该编码使用第一子图片作为预测的参考。该模块包括至少一个处理器和包含计算机程序代码的存储器,其中该处理器还可以包括处理器电路系统。根据各种实施例,存储器和计算机程序代码被配置为与至少一个处理器一起引起该装置执行图16的方法。

根据另一实施例的一种装置包括用于对第一子图片的数据进行编码的模块,第一子图片属于第一图片,并且第一子图片属于第一子图片序列;用于对第二子图片的数据进行编码的模块,第二子图片属于第一图片,并且第二子图片属于第二子图片序列,该编码独立于第一子图片的编码数据的编码;以及用于对第三子图片的数据进行编码的模块,第三子图片属于第二图片,第三子图片属于第一子图片序列,该解码使用第一子图片作为预测的参考。该模块包括至少一个处理器和包含计算机程序代码的存储器,其中该处理器还可以包括处理器电路系统。根据各种实施例,存储器和计算机程序代码被配置为与至少一个处理器一起引起该装置执行图17的方法。

图18中示出了一种装置的一个示例,例如用于编码和/或解码的装置。该装置的一般结构将根据系统的功能块来解释。若干功能可以使用单个物理设备执行,例如如果需要,所有计算过程都可以在单个处理器中执行。根据图18的示例的装置的数据处理系统包括主处理单元100、存储器102、存储设备104、输入设备106、输出设备108和图形子系统110,它们全部经由数据总线112彼此连接。

主处理单元100可以是被布置成处理数据处理系统内的数据的常规处理单元。主处理单元100可以包括或被实现为一个或多个处理器或处理器电路系统。存储器102、存储设备104、输入设备106和输出设备108可以包括本领域技术人员认识(recognize)到的常规组件。存储器102和存储设备104在数据处理系统100中存储数据。计算机程序代码驻留在存储器102中以用于实现例如根据一个实施例的方法。输入设备106将数据输入到系统中,而输出设备108从数据处理系统接收数据并且将数据转发到例如显示器。数据总线112是传统的数据总线,虽然示出为单个线,但它可以是以下各项的任何组合:处理器总线、PCI总线、图形总线、ISA总线。因此,本领域技术人员容易认识到,该装置可以是任何数据处理设备,诸如计算机设备、个人计算机、服务器计算机、移动电话、智能电话或互联网访问设备,例如互联网平板计算机。

各种实施例可以在驻留在存储器中并且使相关装置执行该方法的计算机程序代码的帮助下实现。例如,设备可以包括用于处理、接收和传输数据的电路系统和电子设备、存储器中的计算机程序代码、以及在运行计算机程序代码时引起该设备执行实施例的特征的处理器。此外,如服务器等网络设备可以包括用于处理、接收和传输数据的电路系统和电子设备、存储器中的计算机程序代码、以及在运行计算机程序代码时引起网络设备执行实施例的特征的处理器。计算机程序代码包括一个或多个操作特性。该操作特性由该计算机基于该处理器的类型通过配置来定义,其中系统可以通过总线连接到该处理器,其中该系统的可编程操作特性包括获取子图片的编码数据,子图片属于图片,并且子图片属于子图片序列;确定是否要使用子图片作为被操纵的参考子图片的源;如果该确定揭示子图片将被用作被操纵的参考子图片的源,该方法还包括从子图片生成被操纵的参考子图片以用作子图片序列的后续子图片的参考。

如果需要,本文中讨论的不同功能可以以不同的顺序和/或以其他顺序同时执行。此外,如果需要,上述功能和实施例中的一个或多个可以是可选的或者可以组合。

尽管在独立权利要求中阐述了实施例的各个方面,但其他方面包括来自所描述的实施例和/或从属权利要求的特征与独立权利要求的特征的其他组合,而不仅仅是在权利要求中明确陈述的组合。

83页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于小子块仿射帧间预测的方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类