掌桥专利:专业的专利平台
掌桥专利
首页

有效子图片提取

文献发布时间:2023-06-19 19:28:50


有效子图片提取

技术领域

本申请涉及用于有效子图片提取的概念。

背景技术

子图片提取是一种具有已经编码到其中的视频图片的数据流在不需要重新编码的情况下被调整以适合子图片区域的过程。例如,HEVC DAM3 MCTS提取允许从原始全图片数据流提取子图片特定数据流,而不需要任何重新编码,例如,就运动补偿预测和残差编码而言,通过将图片不断地细分为彼此独立编码的图块,并且将图块分组为图块集,关于图块集,甚至运动补偿预测被限制为不跨越图块集边界。然而,此MCTS提取需要调整每个携带切片数据的NAL单元,以调整携带的切片头的切片段地址。

因此,子图片提取过程是已知的,但是具有即将到来的降低所涉及的任务的复杂度的概念将是有利的。

发明内容

本发明的目的是根据使子图片提取不太复杂的概念提供数据流、解码器和/或编码器。

此目的通过本申请的独立权利要求的主题实现。

根据本申请的第一方面,通过向每个切片提供开始位置信息使得子图片提取不太复杂,开始位置信息指示相对于起始位置的开始位置,图片从开始位置向前沿着编码路径被编码到相应切片中,编码路径在起始位置处开始遍历开始位置位于的段。图片被细分为由编码路径顺序地、逐段地遍历的段,其中每个切片具有编码到其中的段的一部分或者完整的一个或多个段,其中图片被编码到段中而不具有编码相互依赖性。图片以图片被划分为的切片为单位沿着编码路径被编码到数据流中。另外,每个切片包括指示开始位置位于的段的段信息。因此,开始位置信息和段信息一起使得能够确定相应切片的开始位置位于哪个段内,以及在此段中的何处。由于段在不具有编码相互依赖性的情况下被编码,因此去除与一个段有关的一个或多个切片而不影响另一段的可解码性是可能的。而且,即使通过混洗或重新排列图片的段和/或丢弃图片的段中的一些而使用图片的段来编译新的子图片,通过丢弃没有编码在其中的形成子图片的段的切片,并且采用仍然参考正确段并且由于相对位置指示而指示在相应段内的相应切片的开始位置的正确位置的尚未丢弃的切片,基于原始数据流形成相应子图片特定数据流是可能的。因此,根据本申请的第一方面,尽管在子图片数据流中重新排列图片的段和/或省略一些段,数据流使得能够容易地提取子图片,而不需要修改开始位置信息和段信息。换句话说,通过有机会仅仅省去或丢弃不属于包括在要提取的子图片中的任何段的切片,并且采用剩余的切片而不必修改开始位置信息,使得子图片提取过程更容易。

根据实施例,开始位置信息包括可变长度编码的开始地址语法元素。在子图片提取期间可以没有任何损失地使用可变长度编码,因为在子图片提取期间无论如何不需要反转开始位置信息。

根据更进一步的实施例,数据流通过开始位置编码模式标记在开始位置信息之间可切换,开始位置信息指示相对于段的起始位置的相应切片的开始位置,或者绝对地相对于图片起始位置的相应切片的开始位置,编码路径在图片起始位置处开始遍历图片。根据此选项,可以扩展目前为止使用绝对开始位置指示的现有编解码器,以利用本文讨论的相对位置指示。解码器可能能够理解通过开始位置信息提供的两种类型的开始位置指示,或者仅仅理解它们中的一个。

根据更进一步的实施例,数据流还包括基地址数据字段,基地址数据字段针对每个段限定相应段的起始位置的基地址,基地址相对于图片起始位置沿着编码路径寻址起始位置。这些基地址的传送重新使用用于基于将图片自身细分为段来计算基地址的计算开销。

根据实施例,段信息包括段语法元素,段语法元素具有编码到其中的段索引,段索引对开始位置位于的段进行索引。语法元素可以使用固定长度编码被编码。数据流可包括限定段索引值与每个段的关联的索引数据字段。换句话说,索引数据字段可以明确地将标签,即段索引值,与段相关联,并且将切片的段信息设置为与相应切片的开始位置位于的段相关联的标签或段索引值。在子图片提取期间,可以容易地修改此标记。

本申请的可以与第一方面组合的另一个方面是通过处理类似于从多层数据流中选择一个层的子图片提取过程以使得子图片提取过程更容易。即,根据第二方面,可提取数据流包括参数集,参数集不仅指示数据流的图片的大小和从数据流解码图片所需的第一解码器能力水平的指示,而且还指示至少一个子图片解码选项以及针对至少一个子图片解码选项的减小的图片大小和从数据流的提取版本解码子图片所需的第二解码器能力水平。此子图片解码选项被当作相对于与完整图片对应的较高层的子层:通过从数据流剥离或丢弃具有编码到其中的与组成子图片的段簇在空间上偏移的段的切片,从数据流得到数据流的提取版本。切片可包括或不包括如上文关于第一方面所讨论的开始位置信息和段信息。然而,如果每个切片包括指示相应切片覆盖的段的段信息,则可能就足够了。因此,根据第二方面,子图片提取的过程类似于在多层数据流的若干层之间的转换,并且确实仅仅需要省略不属于预期层的切片,即,在这里,不覆盖包括在待提取的子图片中的任何段的切片。不需要“转化”或“修改”待被采纳到提取的数据流中的数据流的切片。

有利的方面是从属权利要求的主题。

附图说明

下面参照附图描述本申请的优选实施例,其中:

图1示出说明使用用于切片的相对开始位置指示用于减轻子图片提取过程的可提取数据流的概念的示意图,其中图1示出尚未提取的数据流以及提取过程和提取的数据流以及包括编码器、解码器和可选的网络设备的参与实体;

图2示出说明图片和数据流的一部分的示意图,以说明数据流在相对切片开始位置指示和绝对切片开始位置指示之间可切换的实施例;

图3示出说明作为HEVC数据流的变体的、如关于图1所呈现的数据流的实施方式的示意图;

图4示出用于说明在参数集,这里示例性地是图片参数集,内传送的内容的伪码,如其可以在图3的实施方式中使用的那样;

图5示出图片及其分段为段的示意图,以及在关于图3提供的实施方式示例呈现的伪码中使用的参数;

图6示出根据图3的实施方式示例的指示在切片头中传送的可能的内容的伪码;

图7示出指示可以用于实现图3的编解码器示例的分块语法(tiling syntax)的伪码;

图8示出说明参数集的可能的内容的伪码,本文中示例性地是使用图7的分块语法的序列参数集;

图9示出用于说明参数集的可能的内容的伪码,本文中示例性地是使用图7的分块语法的图片参数集;

图10示出说明用于实现图3的示例的切片头的内容的可能的内容的伪码,与图6的不同之处在于段可以是一个或多个图块的组成;

图11示出说明图片参数集的可能的内容的伪码,本文中示例性地是序列参数集,用于说明参数集传送用于多于完整图片解码选项、但是额外地至少一个子图片解码选项的信息的可能性。

具体实施方式

参考图1描述本申请的第一实施例。图1示出数据流10和通过子图片提取14从数据流10得出的子图片特定数据流12。数据流10可以已经由编码器16生成。特别地,编码器16已经将图片18编码到数据流10中。图1将图片18示出为视频20的一个图片,但是应当注意的是,本申请的实施例不限于视频数据流。相反,本文所述的实施例可以容易地被转移到图片编解码器上。然而,以下描述说明与视频编码有关的实施例。

在将图片18编码到数据流10中时,编码器16遵从或使用编码路径22,编码路径22从如图1所示的可以位于图片18的左上角的图片起始位置24向例如相对的图片角,诸如右下角,遍历图片18,以继续遍历例如视频20的另一图片。例如,编码路径22的遵从或使用确定图片18的空间相邻部分的可用性,诸如由编码器18从其得出的用于编码图片18的当前部分的样本或参数,诸如语法元素。例如,编码器16可使用预测性编码。为此,编码器16可基于图片18的空间相邻部分预测当前部分,诸如其样本内容或描述其的语法元素,前提是这些相邻部分沿着编码路径22先于当前部分。额外地或可替换地,编码器16可针对当前部分使用其它空间编码依赖性,诸如基于图片18的相邻部分得出用于编码描述图片18的当前部分的语法元素的熵上下文。另外,编码器16使用编码路径以划分或封包图片18被编码到其中的数据。为此,编码器16将编码的数据沿着编码路径22细分为切片。因此,数据流10中的包括图片18的数据的每个切片26覆盖对应的部分或编码到其中已经将对应的部分,即图片18的切片28,其中图片18的切片28由编码路径22顺序地遍历而不使切片28交错。换句话说,编码路径22遍历图片18被细分为的切片28中的每个仅一次。

同样如图1所示,在将图片18编码到数据流10中时,编码器16也遵从将图片18细分为段30。图1示例性地示出将图片18细分为示例性地以2×2阵列布置的四个段30。然而,段的数量不是关键的,并且可以不同。然而,将图片18细分为段30可以使得段30被布置为行和列。将图片18细分为段30可以使得段30完全无缝地覆盖图片18,其中一个段行内的段具有相同的高度,并且一个段列内的段具有相同的宽度。然而,这样矩形的段30的大小可以变化,因为段列和/或段行可以分别在宽度和高度上不同。将图片18细分为段30的遵从性可与编码相互依赖性相关:编码器16以编码相互依赖性不跨越段边界的方式将图片18编码到数据流10中。为此,在图片18的段30内没有部分取决于在此段外部的图片18的部分而被编码。换句话说,编码器16彼此独立地对段30进行编码。至于一方面切片28和另一方面段30之间的关系,切片28或者完全覆盖一个或多个段30,或者仅仅在一个段30内。仅为了说明的目的,图1示出每个段30由两个切片28组成。这又意味着编码路径22顺序地遍历段30,即,在编码路径30按编码顺序遍历下一段30之前,每个段30由编码路径22完全遍历。

因此,编码器16以切片28为单位将图片18编码到数据流10中。因此,数据流10中的每个切片26具有编码到其中的对应的图片切片28。每个切片26包括有效载荷数据32,有效载荷数据32以例如一个或多个预测参数的形式对图片18的对应的切片部分28的内容进行编码,预测参数诸如区分例如帧内或帧间编码模式的预测模式、用于帧内预测块的运动参数、用于帧内预测块的帧内预测子模式、用于将图片18细分为块的细分信息、以及诸如表示预测残差的变换系数的残差数据。

在继续分别描述切片26的切片头34及其组件或语法元素之前,将简要继续描述编码器16如何将图片18编码到数据流10中。如前所述,段30是彼此独立编码的段。然而,到目前为止,描述仅集中于图片18的编码。然而,在图片18是视频20的图片的情况下,编码器16可以采用将图片细分为用于视频20的图片序列的段30,即,以相同的方式细分图片序列的图片,即,使得其它图片被分段为相同数量的段30和相同大小的段30,其中段边界在图片之间在空间上重合。这是图1中描绘的情况,例如,其中相对于图片18的在先和在后图片被示出为以与图片18相同的方式被细分,即被细分为四个段30。除了一个图片内的编码段30的相互独立性之外,编码器16可以以使得图片18的这样的相应段30的编码不取决于被称为参考图片的另一图片的部分的方式来编码图片18的每个段,另一图片的部分在与图片18的相应段并置的段的外部或在空间上与其偏移。换句话说,视频20的图片序列内的图片的并置的段30可以形成视频20内的时空区域,在时空区域内编码器16执行独立于由这些图片的另一段形成的时空区域的编码。因此,将以如下方式限制前述帧间预测,即,运动补偿预测:使得使用帧间预测编码的图片18的段30中的一个内的块将不通过运动矢量的方式参考位于参考图片的段的外部的参考图片的部分,参考图片的段与当前块位于的段并置。相反,编码器16将替代地,例如,选择用于块的帧内预测。

甚至还应注意的是,除了下面更详细描述的切片26的切片头34之外,数据流10包括包含更高等级编码参数的另外的信息,更高等级编码参数在下文中被称为参数集。此参数集36可以分布在数据流10上,并且可以根据范围分层地被限定。换句话说,参数集36的不同部分可具有不同的范围。为此,一些编码参数可仅对于一个图片有效,诸如图片18,以及其它编码参数可表示对于包括例如图片18的图片序列有效的编码参数,并且甚至其它编码参数可以对于整个视频20成立。以下还将论述参数集36中限定的编码参数,使得简要论述可以暂时就够了:包括在参数集36中的编码参数可以例如指示视频20的图片的图片大小、图片被细分为段30、分别从数据流10解码图片18和视频20所需的解码器能力水平的指示和/或解码时间戳、用于解码数据流10的编码图片缓冲器检索时间和/或缓冲器大小。

除了到目前为止描述的细节之外,应当注意的是,编码器16可以以如下方式形成数据流10,即,使得数据流10中包括的与诸如图片18的一个图片有关的切片26不与数据流10中的与视频20的另一图片有关的其他切片26交错。相反,它们形成数据流10的连续部分,即所谓的存取单元36。因此,存取单元36总结了与诸如图片18的一个图片有关的切片26。在一个存取单元36内,除了切片26之外,还可包括其他数据诸如,例如参数集36的一部分。一个存取单元36内的数据可以遵守某种预定的顺序或用于排序的规定,使得基于对数据流10内的数据的顺序的监视,诸如解码器38的数据流10的接收者可以识别流10中的下一存取单元的开始。甚至一个存取单元36内的切片26可以根据编码路径22遍历图片18内的对应的切片28的顺序而相互排序。

在描述了用于数据流10的编码的一般框架之后,描述继续进行切片头34及其内容的描述。特别地,编码器16为每个切片头34提供开始位置信息,开始位置信息指示开始位置40,从开始位置40向前,图片18沿着编码路径22编码到包括相应切片头34的相应切片26中。关于开始位置40的知识使得,即使就沿着编码路径22在先的切片部分28而言,关于图片18的任何在先切片缺失,解码器38能够正确地定位编码到相应切片26中的图片内容,即,关于图片18的对应的切片部分28的图片内容。

然而,有利地,开始位置信息42以相对于起始位置44的方式指示切片26的开始位置40,开始位置信息42包括在切片26的切片头34内,编码路径22在起始位置44处开始遍历开始位置40位于的段30,如图1中的箭头46示例性地所指示的。开始位置40的相对指示减轻子图片提取14的负担,如下面进一步解释的。

为了补偿由开始位置信息42对开始位置40的相对指示及其相关联的模糊性,切片头34额外地包括指示切片26的开始位置40位于的段30的段信息48,段信息48属于段30。例如,在图1的示例中,开始位置40由箭头46指向的切片28位于由图1中的大写字母“B”索引的段30内,并且因此,切片的段信息48将指示此切片26属于段B。因此,开始位置信息42和段信息48一起足以确定图片18内的开始位置40的绝对位置,即,相对于原点(即,图片起始位置24)的相对位置或开始位置40。

接收数据流10的解码器38能够解码来自数据流10的相应切片26的开始位置信息42,并能够使用开始位置信息42来相对于开始位置40位于的段的起始位置44定位相应切片的开始位置40。另外,解码器38从数据流10解码相应切片26的对应的段信息48,使得解码器38知道起始位置44属于的段30,开始位置信息42相对于起始位置44而指示开始位置40。因此,解码器38能够基于指示将图片18细分为段30的参数集36来定位起始位置44,以及相应地,将相对于起始位置44指示的开始位置40的相对位置指示与图片18内的起始位置44的位置相组合,组合产生开始位置40在图片18内的相对于图片起始位置24的绝对位置。为了减轻解码器38的计算开销,下面进一步描述的更详细的实施例指示这样的可能性:数据流10中的参数集36或一些其他部分,诸如辅助增强信息,可以明确地指示每个段的起始位置44使得解码器可以使用这种指示而不是计算段30自身的起始位置。

上面已经概述了开始位置40相对于对应的段30的起始位置44的相对指示是有利的情况。现在将更详细地讨论这一点。特别地,当检查子图片提取过程14时,有利的环境变得清楚。子图片提取过程可以由处理数据流10的任何实体执行。例如,提取过程可以由连接到编码器16和接收提取的数据流12的解码器52之间的传输路径中的网络设备50执行。解码器52可以与解码器38相同,即,也可以是一个能够解码完整或原始数据流10的解码器,或者可以是能够解码提取的数据流12但由于例如解码器能力水平低于解码器38的解码器能力水平而不能解码完整数据流10的解码器。然而,提取过程50也可以在解码器52/38自身内执行。

提取过程14旨在形成有图片54编码在其中的数据流12,与图片18相比,图片54仅由图片18的段30的适当子集组成和/或段30分别在图片18和54的图片区域内的相互定位不同。图1示出数据流12的图片54仅由原始数据流10的图片18的四个段30中的一个,即段B,组成的情况,但是这仅是一个示例,并且只要产生图片54的矩形图片区域,图片54可以可替换地由图片18的多于一个的段30组成。

值得注意的是,相对于数据流10中包括的切片26,提取过程14仅涉及丢弃或省略与图片18的未包括在图片54中的段30有关的切片26,而与对图片44的组成有贡献的任何段30有关的切片26在提取的数据流12中被采用或保留而没有任何修改,尤其没有开始位置信息42和段信息48的任何修改。特别地,由于开始位置信息42相对于段的起始位置指示切片26的开始位置40,开始位置落入对图片54有贡献的段30中,因此此相对指示在减小的数据流12中仍然是正确的。另外,段信息48针对提取的数据流12中采用的所有切片26指示对应的切片26属于哪个段,即,它的开始位置位于哪个段内。此段信息48也已经在提取过程14中使用,以识别要省略或丢弃的那些切片26。

在提取的数据流12中存在的、还没有关于原始数据流10讨论的唯一信息是与基于段30的选择的集提取的数据流12的图片54的修改的组成相关联的那些编码参数。关于此主题有若干可能性。根据第一可替换方案,提取过程14可以涉及前述参数集36的修改,使得提取的数据流12中的对应的参数集36’被修改以反映提取的视频56的图片54的修改的图片大小、图片54到段的细分、可以低于从数据流10解码完整视频20或图片18所需的解码器能力水平的用于解码提取的数据流12所需的解码器能力水平、和/或用于解码提取的数据流12的修改的解码时间戳、编码图片缓冲器检索时间和/或缓冲器大小。然而,根据可替换的实施例,使用开始位置信息42内的相对开始位置指示的方面与本申请的甚至提取的数据流12的参数集36’可以保持不变的方面组合,即,通过向原始数据流10的参数集36提供两个信息项:根据此可替换方案,参数集36将指示用于从数据流10解码整个图片18的所有编码参数,并且同时指示从数据流10或12解码图片54的所有编码参数。由参数集36指示的关于提取的数据流12及其图片54的编码参数可以以相对于或不同于参数集36指示的用于从数据流10解码图片18的编码参数的方式至少部分地在参数集36中指示。例如,如下面更详细地概述的,参数集36可以指示图片18到段30的细分,使得段30的大小从参数集36的此部分是清楚的。与图片54有关的参数集36的编码参数可以依赖于此知识,并且可以简单地指示哪些段对图片54有贡献,以及这些有贡献的段在图片54内应用了哪种相互布置。甚至对于图片18内的起始位置44的前述基地址指示也可以在数据流36中相对于提取的数据流12的图片54被重复。如下面进一步解释的,参数集36可以以这种方式不仅指示用于数据流10的一个提取选项或子图片解码选项,而且可以是基于图片18的段30的在图片54的组成上不同的若干个选项。因此,在参数集36’相对于原始数据流10中的参数集36保持不变的可替换方案情况下,解码器52将接收例如指示是否要对数据流12执行图片解码(即图片18的解码)或是否要对数据流12执行子图片解码(即图片54的解码)的解码选项指示58。在未使用的切片26已经被剥离为先前执行的提取过程14的部分的情况下,此解码选项指示必须不指示图片解码,因为切片丢失。然而,要记住的是,提取过程14可以由解码器52本身执行,解码器52又可以等于解码器38。为此,解码器52可以接收完整的原始数据流10,然后基于解码选项指示58决定按照剥离未使用的切片26本身执行提取过程14,即丢弃未使用的切片26。例如,解码选项指示可以是由应用或用户提供的外部信号作用。可替换地,解码选项指示可以是解码器52的解码器能力水平的固有指示,其进而无论如何排除数据流10的解码选项中的一些可被解码器52解码。如果要执行关于完整图片18的图片解码,则如关于解码器38所讨论的那样进行解码。如果要应用子图片解码选项,即解码器52要从数据流12解码图片54,则解码过程基本上相同,差别如下:解码器52将使用特定于此子图片解码(即,特定于图片54)的参数集36’的编码参数。另外,如果计算将由解码器52本身执行,则解码器52将针对图片54内的段30的起始位置44计算不同的基地址。不同的计算结果是段30在图片54内的不同布置的结果。指示切片的开始位置40的相对位置的开始位置信息42与由开始位置信息42相对于段的起始位置44所指示的相同。然而,如果在参数集36’中指示用于段在图片54内的布置的段的起始位置44,则解码器52可以使用特定于子图片解码的这些基地址以获得图片54,而不是自己的计算。

关于解码器38/52如何操作以解码入站数据流(可以是数据流10或数据流12)的更多细节在关于图11的描述的结尾阐述。

在以下描述中,描述了用于实现上述实施例的具体示例。在这样做时,假设数据流在参数集36内包括开始位置编码模式标记60,开始位置编码模式标记60在一方面如关于图1描述的切片的开始位置40相对于段起始位置44的相对开始位置指示46与切片的开始位置40相对于图片起始位置24的绝对开始位置指示62之间切换。换句话说,标记60发信号通知数据流10的切片26中的开始位置指示42是以关于图1概述的方式(即关于段的起始位置44的相对术语)还是绝对地关于图片起始位置24的方式指示开始位置40。然后,标记16还可以被使用以开启段指示48的存在,如下面进一步讨论的。仅在相对开始位置指示46的情况下,段指示48可存在于切片26中。

从随后解释的实施例中将变得清楚的另外的细节是,实际上可以通过标记和有条件地发信号通知的切片地址的组合来发信号通知切片位置指示42的事实:在相对指示选项46的情况下,由开始位置信息42包括的标记将指示对应的切片是否是段中的第一个,即,它的开始位置40与对应的段的起始位置44重合。如果是这种情况,则开始位置信息42不包括任何开始地址语法元素。然而,如果不是,则地址语法元素从对应段的起始位置44指向切片的开始位置40。在绝对指示选项62的情况下,开始位置信息42的标记指示对应的切片是否在图片起始位置24处开始,即,是否是图片的第一切片,并且如果是,则切片位置信息不包括任何地址语法元素。然而,如果不是,地址语法元素指示相对于图片起始位置24的相应切片的开始位置40。在绝对指示模式的情况下,解码器38/52可以使用由开始位置信息42包括的刚刚提到的标记用于存取单元边界检测,即,新的存取单元36的检测。为了补偿在相对指示模式中不能使用此可检测性,编码器16可以使用可替换的存取单元边界机制,诸如在连续存取单元之间的边界处放置存取单元定界符,即特定分组。然后,在相对指示模式的情况下,解码器可以使用这些定界符。

并且作为在开始实施例的随后更详细的解释之前的进一步注意,注意的是,存在用于通过开始位置信息42指示开始位置40的不同的可能性。例如,图片18可以规则地细分为如在图1中的图片18的左上角处示出的块的阵列。编码路径22可以顺序地而不交错地遍历这些编码块64,即,在继续到图片18的下一编码块64之前完全遍历一个编码块64。开始位置信息42可以指示以遍历的编码块64为单位直到沿着编码路径22的开始位置40测量的位置42。如果相对地指示46,则开始位置信息42将指示沿着编码路径22将起始位置44和切片开始位置40分离的编码块64的数量。在绝对指示选项62的情况下,开始位置信息42指示从图片起始位置24开始时,以沿着编码路径22遍历的编码块64为单位的开始位置40。因此,在这种情况下,开始位置指示42将使用线性一维寻址域,并且上面提到的段的起始位置44的基地址也可以以从图片起始位置24开始到相应段起始位置44所遍历的编码块64的数量被测量。基地址44和切片开始位置40的和将产生从开始位置24向前测量的绝对地址。然而,通过开始位置信息42发信号通知开始位置40的可替换的方式也是可行的。例如,开始位置40相对于对应的段起始位置44的相对位置可以被指示为从起始位置44指向切片开始位置40的向量的x和y坐标,其中分量x和y分别以编码块64的单位或样本被测量。另外,可以按照对前述编码块64进行严格的按行的线性寻址而执行寻址,即,以这样的方式执行寻址:在图片18的一个完整行中的编码块的地址在地址随着图片内的下一行的第一编码块而增加之前彼此跟随,而不管到段30的分段。在内部,解码器38和52可以根据需要在不同的地址系统或域之间切换。

从以下描述中将变得清楚的另一种可能性如下:迄今为止,已经将段30描述为时空区域的可能的空间横截面,其中编码相互依赖性不与这些时空区域的边界交叉。例如,这些段30可被限定为一个或多个图块的集,图片18可细分为图块,并且就一个图片18的编码而言,图块彼此独立地被编码。因此,在一个段30由一个图块组成的情况下,段30可以是图块,并且在随后解释的变体A中,情况就是这样,而变体B假设段30可以由一个或多个图块组成。另外,根据随后的解释,前述编码块64是CTU(编码树单元),这意味着这些块64是通过多树细分而进一步分级细分为编码块、预测块和/或变换块的树根块,编码器16以编码块、预测块和/或变换块为单位选择要使用的编码模式,即,对应的编码块的帧间或帧内编码,以编码块、预测块和/或变换块为单位设置对应的选择的编码模式的预测参数,即,针对可能是编码块的离开节点的每个预测块,以及以编码块、预测块和/或变换块为单位发生预测残差的变换,即,以可能也是编码块的离开块的变换块为单位。CTU 64到编码单元、预测块和变换块的细分可以作为对应的切片有效载荷32的部分被发信号通知。

因此,在下文中,关于图1描述的实施例的实现被图示为HEVC框架的可能修改。如本申请说明书的介绍部分所述,在HEVC DAM3 MCTS提取中,对每个切片头的切片段地址的调整是必要的,由于切片地址的可变长度编码,这又可能影响甚至每个切片头的字节对齐。特别地,如果使用HEVC DAM3 MCTS,则在MCTS提取的数据流中采用的切片的切片地址由于它们的绝对指示选项而必须被修改,即,它们必须被修改以参考图片54的新的图片起始位置,并且由于可变长度编码,这可能导致切片地址的不同长度,并且因此导致不同的字节对齐。随后解释的HEVC框架的修改将克服这一点。特别地,通过发信号通知切片段地址的部分以暗示或明示切片与图块/段的关联,产生了相对较简单的MCTS子流提取。

在下文中,描述了HEVC框架的修改的第一变体,变体A。如上文关于图1所概述,根据此变体,相对于相应图块或图块的组合物(即,当前段30)的第一CTU发信号通知切片段地址,这与相对于图片的第一CTU发信号通知切片段地址相反。“第一”表示当使用HEVC编码顺序时,最左和最顶部CTU。

两个参考(即,当前段30的第一CTU或图片的第一CTU)之间的差异可以由解码器,即解码器38或52,通过分别组合图片和来自参数集36和36’的图块指令信息而得出,图块指令信息为切片28/26与此段30(可以是图块或图块集)的关联,其中关联可以如下面所概述的那样明确地在数据流中发送。

可以在解码器侧确定具有关于CTB中的段大小和每段30的切片段地址偏移的信息的阵列。在相对指示选项46的情况下,可以通过使用数据流10中的存取单元定界符NAL单元来完成分别由解码器38或52执行的存取单元36开始检测,即,使用将数据流10中的连续存取单元分离的特殊封包发信号通知连续存取单元之间的连接;在绝对指示选项62的情况下,可以基于开始位置信息中包含的标记来执行存取单元36开始检测,因为该标记分别指示存取单元36和图片18的第一切片。如上所述,first_slice_in_pic_flag可由开始位置信息42包括并且可转变为指示段30的开始的标记,段又可为图块或图块的组合。

图3提供使用HEVC命名得到的实施例的俯视图。如所指示,参数集36分布于范围不同的图片参数集70、序列参数集72及视频参数集74上。图3仅示出数据流10的部分,即两个VCL NAL单元76和78,每个VCL NAL单元包括指示其包括段信息的NALU头80,随后是由切片头34和切片有效载荷32组成的对应的切片26。切片头34参考由箭头80指示的对应的图片参数集70,以及图片参数集70又指向由82指示的对应的序列参数集,以及序列参数集72又指向由84指示的对应的有效视频参数集。例如,参数集36建议图片参数集70或序列参数集72包括分块语法86,即限定图片14到图块88的细分的语法,根据一个可替换的方案,图块形成上文图1中讨论的段30。因此,基于分块语法86,例如,解码器计算由箭头90指示的基切片段地址是可能的。作为开始位置信息42和切片头34的部分传送的偏移切片段地址96和基切片段地址94的总和92产生对应的切片26的对应的切片段地址98,即相对于图片起始位置24绝对测量的切片段地址。图3将图3中描绘的两个切片26示出为属于图块88的一个图块,即图块号2,这实际上对于解码器是基于也由切片头34包括的段信息48可得出的,如从以下描述中将变得清楚。

特别地,根据图4所示的实施例,可以在图片参数集70中包括分块结构或分块语法86。注意,例如,分块语法86存在于序列参数集72中而不是图片参数集中的可替换的实施例也是可行的。

特别地,如图4中所描绘的,参数集70的部分100指示图片18到段30(这里是图块)的细分。段列的数量在102处指示,段行的数量在104处指示,并且标记106可选地提供在数据流中发信号通知段列的宽度和段行的高度被均匀地设置的机会。如果不存在,或如果标记106未设定,那么段列的宽度单独地指示于108处,并且段行的高度单独地指示于110处。

另外,如果设置了标记slice_segment_base_addr_per_tile_enable_flag 112,即通过在114处明确地发信号通知图片18的每个段i 30的段索引值tile_id_in_pps[i],则提供段的明确标记。通过使用段30的规则阵列中的默认顺序,诸如图1中的虚线箭头116所示的逐行方式,在数据流中,即在参数集70中传送段索引。

图4中的语法元素的语义在下面详细地概述:

slice_segment_base_addr_per_tile_enable_flag等于0指定:从slice_segment_address唯一地得出切片段的变量CtbAddrInRs。slice_segment_base_addr_per_tile_enable_flag等于1指定:CtbAddrInRs的得出基于slice_segment_address和图块相依基地址。当slice_segment_base_addr_per_tile_enable_flag不存在时,推断其等于0。

tile_id_in_pps[i]指定位流顺序中的图块的id。tile_id_in_pps[i]的值应在0到255的范围内,并且对于i不等于j,tile_id_in_pps[i]不应具有与tile_id_in_pps[j]相同的值。当tile_id_in_pps不存在时,推断其等于0。

这可能是位流一致性的约束:当slice_segment_base_addr_per_tile_enable_flag等于1时,存取单元定界符NAL单元存在于位流中,以及tiles_fixed_structure_flag等于1。

下面的伪码表示如解码器38或52的解码器如何,例如基于数据流中的可用信息计算段30的特定尺寸和段30的基地址。

下面描述编码树块栅格和图块扫描转换过程。

如下(伪码1)得出对于i的列表colWidth[i],i的范围从0到num_tile_columns_minus1(包括端值),colWidth[i]以编码树块(CTB)为单位指定第i个图块列的宽度:

colWidth[i]是以编码树块CTB 64测量的列0…num_tile_columns_minus1中的第i个段列的宽度。

num_tile_columns_minus1是段列数减1。

如下(伪码2)得出对于j的列表rowHeight[j],j的范围从0到num_tile_rows_minus1(包括端值),rowHeight[j]以CTB为单位指定第j个图块行的高度:

rowHeight[i]是以编码树块CTB 64测量的行0…num_tile_rows_minusl中的第i个段行的高度。

num_tile_rows_minus1是段行数减1。

如下(伪码3)得出对于ctbAddrTs的列表TileId[ctbAddrTs],ctbAddrTs的范围从0到PicSizeInCtbsY-1(包括端值),TileId[ctbAddrTs]指定从图块扫描中的CTB地址到图块ID的转换:

tileIdxTileIdMap[]被解释为将包括在矢量tile_id_in_pps[]中的N个段索引值映射到该段的tileIdx。

tile_id_in_pps[]是包括条目0…N-1的向量,其中N为段30的数量,其中第i个条目指示与栅格扫描段顺序116中的第i个段相关联的段索引值。

tileIdx以栅格扫描段顺序116索引段30。

TileId[i]被解释为将以编码顺序或沿着编码路径22测量的CTB地址i,即块64的地址,映射到此CTB位于的段39的tileIdx。

CtbAddrRsToTs[i]是将块64(其是以领导逐行通过图片18的块的图片栅格扫描顺序的图片18的第i个块64)的秩i映射到以编码顺序22测量的其地址的函数。

colBd[i]是包括条目0…N的向量,其中N是段列数减1,其中第i个条目(i<N)指示从左到右第i个以块测量的段列的左手侧的位置,以及第N个条目指示以块的数量计的图片宽度。

请注意,到目前为止在伪码中使用的所有参数,尽管它们已经被描述为在全图片解码(即,关于图片18)的情况下被用于确定基地址,但是它们也可以被用于确定子图片54中的段的起始位置的基地址。在本文中,参数N、colWidth[i]、num_tile_columns_minus1、rowHeight[i]、num_tile_rows_minus1、tileIdxTileIdMap[]、tile_id_in_pps[]、CtbAddrRsToTs[i]、colBd[i]分别特定于此子图片54和其由段30的组成以及其细分为对应的块64。类似地,对编码路径22和栅格扫描段顺序116的所有参考被应用到相应的子图片上。tileIdxTileIdMap[]保证维持一方面段索引值tile_id_in_sh和另一方面子图片54的段及其在栅格扫描段顺序116中的索引,即tileIdx之间的关联,段索引值tile_id_in_sh假设tile_id_in_pps[]中的任一个。顺便提一句,应当注意的是,在这里已经选择了语法元素后缀“_pps”以反映在PPS中携带段索引值到段关联性的示例,但是如上文已经概述的,这仅仅是示例并且信号通知也可以在别处实现,诸如在SPS或VPS中。与后一陈述一致,可替换地,使用后缀“_ps”,并且对应的替换自然也适用于本实施例。类似地,以下示例将揭示,可以放弃图块与段之间的1∶1对应。这也已经参考图1进行了概述。因此,对应的后续实施例使用名称组件“area”或“area_”或“_area”来代替,这将从下面的描述中变得清楚。另外,如在图1的描述中还提到的,在可替换的实施例中,可以保留标签或段索引值到段的明确分配,其中诸如通过替代地使用例如索引域tileIdx来隐式地得出段信息48中的段索引值与子图片54中的段之间的映射,在这种情况下,可以停止在图片18的参数集36中传输这种关联。然而,段索引值到图片18的段30的明确分配减轻了两个分离的数据流的图块的混合。

如下(伪码4)得出对于k的列表TileSizeInCtbsY[k],k的范围从0到((num_tile_rows_minus1+1)*(num_tile_columns_minus1+1)-1)(包括端值),TileSizeInCtbsY[k]以CTB为单位指定图片内的第k个图块的大小:

for(j=0,k=0;j<=num_tile_rows_minus1;j++)

for(i=0;i<=num_tile_columns_minus1;i++,k++)

TileSizeInCtbsY[k]=colWidth[i]*rowHeight[j]

TileSizeInCtbsY[i]是包括条目0…N-1的向量,其中N是段30的数量,第i个条目指示栅格扫描段顺序116中的第i个段中包括的块64的数量。

如下(伪码5)得出对于k的列表TileSliceSegBaseAddr[k],k的范围从0到((num_tile_rows_minus1+1)*(num_tile_columns_minus1+1)-1)(包括端值),TileSliceSegBaseAddr[k]以CTB为单位指定按位流顺序的图片内第k个图块的第一切片段的图块扫描中的切片段地址偏移:

TileSliceSegBaseAddr[i]是含有条目0…N-1的向量,其中N为段30的数量,第i个条目指示栅格扫描段顺序116中的第i个段的起始位置44的地址,其被测量为沿着编码路径从图片起始位置24到段起始位置44的块64的数量。

在本文中,“图块扫描”表示如图1中所描绘的扫描22.。TileSliceSegBaseAddr表示段的起始位置44的前述基地址,根据本示例,段等于图块。上面表示的计算可以分别由解码器38和52使用,以计算基地址。如果应用子图片解码,则要修改段的数量及其布置。

图6示出切片段头,即前述切片头34,看起来如何。特别地,在本文中,切片头34包括标记120,即first_slice_segment_in_area_flag,其与语法元素slice_segment_address122一起形成开始位置信息42。仅如果标记120未被设置,slice_segment_address存在并且指示切片开始位置40从对应的段/图块30的起始位置44的偏移。后者由段信息48指示,段信息仅包括一个语法元素124,即tile_id_in_sh,其采用在图4的参数集70中(即,,通过语法元素114)限定的值的域之外的值。

具体地,语义可以如下所示:

first_slice_segment_in_area_flag等于1指定,当slice_segment_base_addr_per_tile_enable_flag等于0时,切片段是解码顺序中的图片的第一切片段。否则,当slice_segment_base_addr_per_tile_enable_flag等于1时,first_slice_segment_in_area_flag等于1指定切片段是解码顺序中的图片的图块的第一切片段。first_slice_segment_in_pic_flag等于0指定切片段分别不是解码顺序中的图片的第一切片段或者解码顺序中的图块的第一切片段。因此,slice_segment_base_addr_per_tile_enable_flag充当关于图2所讨论的标记60的示例。

注意1-此语法元素可用于检测在解码顺序中连续的编码的图片之间的边界。然而,当IDR图片在解码顺序中连续且具有相同NAL单元类型时,IDR图片的第一切片的丢失可导致编码的图片之间的边界的检测的问题。这可以例如发生在易错环境中的全部帧内编码视频的传输中。通过交替地使用两个不同的IDR NAL单元类型(IDR_W_RADL和IDR_N_LP)用于任何两个连续的IDR图片,可以减轻此问题。时间子层零索引SEI消息的使用也可以是有帮助的,因为SEI消息包括语法元素irap_pic_id,它的值对于在解码顺序中连续的IRAP图片是不同的。一些系统环境具有其他的规定,也可以有助于图片边界检测,诸如使用Rec.ITU-T H.222.0|ISO/IEC 13818-1系统中的呈现时间戳、、以ISO/IEC14496-12ISO基媒体文件格式为框架的存取单元、或者IETF RFC3550实时传输协议头中的标志位。

dependent_slice_segment_flag等于1指定不存在的每个切片段头语法元素的值被推断为等于切片头中的对应的切片段头语法元素的值。当不存在时,dependent_slice_segment_flag的值被推断为等于0。

变量SliceAddrRs如下得出:

-如果dependent_slice_segment_flag等于0,则设置SliceAddrRs等于CtbAddrInRs。

-否则,SliceAddrRs被设置为等于包括编码树块地址是CtbAddrTsToRs[CtbAddrRsToTs[CtbAddrInRs]-1]的编码树块的先前切片段的SliceAddrRs,其中变量CtbAddrInRs在slice_segment_address的语义中指定。

tile_id_in_sh指定切片段所属的图块的索引。area_id_in_sh的值应该在0到255的范围内。当不存在area_id_in_sh时,推断其等于0。图片内的不超过一个图块将具有tile_id_in_sh的相同值。

slice_segment_address指定图片的编码树块栅格扫描(当slice_segment_base_addr_per_tile_enable_flag等于1时)和图片的图块扫描中的切片段中的第一编码树块的地址,否则如下:

变量maxNumCtbY被限定为(slice_segment_base_addr_per_tile_enable_flag?TileSizeInCtbsY[tileIdxTileIdMap[tile_id_in_sh]]:PicSizeInCtbsY);在本文中,tileIdxTileIdMap[tile_id_in_sh]将由其段信息48包括的当前解码/编码的切片的tile_id_in_sh映射到正确的tileIdx上,即,参考图片18或54中的正确段,并且tileSizeInCtbsY为此段产生相对切片地址的最大值,即maxNumCtbsY-1,以通过其开始位置信息42的slice_segment_address表示/可表示。解码器和编码器可以使用伪码1-4来计算此信息。

slice_segment_address语法元素的长度则是ceil(Log2(maxNumCtbsY))比特。slice_segment_address的值应当在0到maxNumCtbsY-1的范围内,包括端值。当slice_segment_base_addr_per_tile_enable_flag等于0时,slice_segment_address的值不应等于相同的编码图片的任何其它编码切片段NAL单元的slice_segment_address的值。当slice_segment_base_addr_per_tile_enable_flag等于1时,slice_segment_address的值不应等于属于相同的编码图片内的相同图块的任何其它编码切片段NAL单元的slice_segment_address的值。当slice_segment_address不存在时,推断其等于0。

指定图片的编码树块栅格扫描中的编码树块地址的变量CtbAddrInRs被设置为等于CtbAddrTsToRs[slice_segment_address+(slice_segment_base_addr_per_tile_enable_flag?TileSliceSegBaseAddr[tileidxTileidMap[tile_id_in_sh]]:0)]。指定图块扫描中的编码树块地址的变量CtbAddrInTs设定为等于CtbAddrRsToTs[CtbAddrInRs]。指定包括cu_qp_delta_abs的编码单元的亮度量化参数与其预测之间的差的变量CuQpDeltaVal被设置为等于0。指定当确定包括cu_chroma_qp_offset_flag的编码单元的Qp’Cb和Qp’Cr量化参数的相应值时要使用的值的变量CuQpOffsetCb和CuQpOffsetCr都被设置为等于0。因此,在相对指示模式46的情况下,tileIdxTileIdMap[tile_id_in_sh]将由其段信息48包括的当前解码/编码的切片的tile_id_in_sh映射到正确的tileIdx上,即,参考图片18或54中的正确段,并且TileSliceSegBaseAddr为此段产生基地址,然后,基地址将被添加到其开始位置信息42的相对切片地址,slice_segment_address,以产生此切片的地址。CtbAddrTsToRs仅将沿编码路径22测量的地址转化为沿着块64之间的栅格扫描块顺序测量的地址,解码器和编码器可以使用伪码5来计算段起始位置44的基地址,或者,在以下示例的明确信息的情况下,仅编码器使用伪码5来计算段起始位置44的基地址。

关于VCL NAL单元的顺序以及它们与编码图片的关联,可以说如下内容。

特别地,下面指定VCL NAL单元的顺序以及它们与编码图片的关联。

每个VCL NAL单元是编码图片的部分。

编码图片中VCL NAL单元的顺序如下约束:

-编码图片的第一VCL NAL单元的first_slice_segment_in_pic_flag应当等于1。

-令sliceSegAddrA和sliceSegAddrB为相同的编码图片内的任何两个编码切片段NAL单元A和B的CtbAddrTsToRs[slice_segment_address(slice_segment_base_addr_per_tile_enable_flag?TileSliceSegBaseAddr[tileidxTileidMap[tile_id_in_sh]:0)]]的值。当以下条件中的任一个是真的时,编码切片段NAL单元A应当在编码切片段NAL单元B之前:

-TileId[CtbAddrRsToTs[SliceSegAddrA]]小于TileId[CtbAddrRsToTs[SliceSegAddrB]]。

-TileId[CtbAddrRsToTs[SliceSegAddrA]]等于TileId[CtbAddrRsToTs[SliceSegAddrB]]并且CtbAddrRsToTs[SliceSegAddrA]小于CtbAddrRsToTs[SliceSegAddrB]。

解码器38和52可以监视这些条件,以确定入站数据流10或12中的新存取单元36何时开始,或者确定任一NAL单元丢失。

例如,到目前为止所描述的变体A可以在不同的方面进行改变,以允许更容易的实施方式和处理。

例如,在变体A中,如上文已经关于图1描述的,段30不需要正好为图块。为此,切片段基地址计算不需要专门在图块粒度上发生,而是多个图块可被结合到区域中,然后根据以上所提出的描述形成段30,然后对于段30,可共同地限定切片段基地址,即,相对于属于形成段30的多个图块的给定区域的位流顺序中的第一CTU给出切片头中的切片地址。

另外,额外地或可替换地,根据下面描述的变体B,变得清楚的是,代替使客户端侧或解码器负担对于每个段30的切片段基地址的计算,可以在数据流中提供切片段基地址的显式信令。

甚至额外地或可替换地,通过允许分块语法在SPS或PPS中被携带,可以减少在视频位流的每个PPS内重复图块结构信令同时保证,例如当slice_segment_base_address_per_tile_enable_flag等于1时tile_fixed_structure等于1的负担,其中分块语法的PPS实例可以推翻SPS内携带的分块语法设置。

下面的附图通过突出显示相对于上述变体A的变化来示出。例如,图7示出可以在PPS或SPS中使用的分块语法部分,其中当在PPS中传送图7的分块语法时,它否决由相应SPS提供的平铺语法,即,它具有较高的先例。图7示出图1的参数集36通过基地址数据字段130携带段起始位置44的基地址的可能性。

语义可以如下。

slice_segment_base_addr_per_area_enable_flag等于0指定从slice_segment_address唯一地得出切片段的变量CtbAddrInRs。slice_segment_base_addr_per_area_enable_flag等于1指定CtbAddrInRs的得出基于slice_segment_address和图块相依偏移。当slice_segment_base_addr_per_area_enable_flag不存在时,推断其等于0。

area_id_in_ps[i]指定位流顺序中的图块的ID。area_id_in_ps[i]的值应该在0到255的范围内,并且对于i不等于j,area_id_in_ps[i]应该不具有与area_id_in_ps[j]相同的值。当area_id_in_sh不存在,推断其等于0。

slice_segment_base_address[i]指定属于具有area_id_in_ps[i]的相同值的区域的所有切片段的图块扫描顺序中的基片段地址。当不存在时,slice_segment_base_address[i]的值被推断为等于0。

位流符合性的要求是当area_id_enable_flag等于1时,存取单元定界符NAL单元存在于位流中。

位流符合性的要求是,对于i的任何两个值,其中area_id_in_ps[i]具有相等的值,slice_segment_base_address[i-1]的值不相等。

图8和9提供SPS和PPS语法的示例,具有用于分块语法信令的单独的使能标记。在本文中,使用以下语义。

tiles_enabled_in_sps_flag等于1指定SPS携带描述CVS的默认结构的默认分块语法。

tiles_enabled_in_pps_flag等于1指定PPS携带描述CVS的参考PPS的图片的实际分块结构的分块语法并且重写所参考的SPS内的分块语法。

编码树块栅格和分块扫描转换过程将如下。

如下(伪码1’)得出对于i的列表colWidth[i],i的范围从0到num_tile_columns_minus1(包括端值),colWidth[i]以编码树块(CTB)为单位指定第i个图块列的宽度:

如下(伪码2’)得出对于j的列表rowHeight[j],j的范围从0到num_tile_rows_minus1(包括端值),rowHeight[j]以CTB为单位指定第j个图块行的高度:

/>

如下(伪码3’)得出对于ctbAddrTs的列表TileId[ctbAddrTs],ctbAddrTs的范围从0到PicSizeInCtbsY-1(包括端值),TileId[ctbAddrTs]指定从图块扫描中的CTB地址到图块ID的转换:

TileId[CtbAddrRsToTs[y*PicWidthInCtbsY+x]]=tileIdx

变量保持其如上所述的含义,然而,N表示由于将块收集到段30而可能大于段30的数量M的图块的数量。

如下(伪码4’)得出用于k的列表TileSizeInCtbsY[k],k的范围为从0到((num_tile_rows_minus1+1)*(num_tile_columns_minus1+1)-1)(包括端值),TileSizeInCtbsY[k]以CTB为单位指定图片内的第k个图块的大小:

area_id_in_ps[]是包括条目0…N-1的向量,其中N为图块的数量,第i个条目指示与图块栅格扫描段顺序中的第i个图块位于的段相关联的段索引值;在条目中输入的值采用0…256之间的值,或者,换句话说,在段信息48中的段索引的可能值的域中;记住对图片解码选项/目标的依赖性,即是否要计算图片18或子图片54内的段的基地址,使得N分别是图片18或子图片54中的图块的数量。

AreaSizeInCtbsY[]被解释为变成包括用于段信息48中的段索引的可能值的域的每个元素的条目的向量,其中对于在图片18或子图片54中出现的每个段索引值指示由此覆盖的块64的数量,而不管当前解码目标/选项是什么。

如下得出从AreaId到AreaIdx的映射:

NumTilesInArea[]被解释为变成包括用于段信息48中的段索引的可能值的域的每个元素的条目的向量,其中对于在图片18或子图片54中出现的每个段索引值指示由具有此段索引值的相应段覆盖的图块的数量,而不管当前解码目标/选项是什么。

AreaIdToAreaIdx[]被解释为变成包括用于段信息48中的段索引的可能值的域的每个元素的条目的向量,其中对于在图片18或子图片54中出现的每个段索引值指示当沿着从左上到右下逐段行地引导的栅格扫描段顺序分配或测量时它的秩或索引,而不管当前解码目标/选项是什么。

如下(伪码5’)得出用于k的列表AreaSliceSegBaseAddr[k],k的范围从0到(NumAreas-1),包括端值,AreaSliceSegBaseAddr[k]以CTB为单位按位流顺序指定图片内第k个区域的第一切片段的切片段地址偏移:

AreaSliceSegBaseAddr[i]被解释为变成包括条目0…M-1的向量,其中M是段30的数量,等于NumAreas,并且在第i个条目处指示用于前述栅格扫描段顺序中的第i个段的基地址,即段起始位置44,即,使用AreaIdx,AreaIdx可以通过解码器和编码器使用AreaIdToAreaIdx与切片的段信息48的area_id_in_sh相关联。

因此,注意的是,由语法元素slice_segment_base_address限定的基地址数据字段130针对每个段30限定相对于图片起始位置24寻址起始位置44的相应段的起始位置44的基地址,尽管在将显式传输应用于(一个或多个)子图片解码选项的情况下也省略了在栅格扫描段顺序中的图片18或子图片54的第一段30的基地址的显式传输,因为无论如何基地址也是零。通过基地址数据字段的方式,此基地址为零的限定是明确基地址传输以栅格扫描段顺序从第二段开始的常规的结果。当然,可以评估可替换的实施例,其中替代地,显式基地址传输用于所有段。

在不使用显式基地址信号通知而是使用基地址的隐式推导的情况下,解码器或编码器可以如下执行基地址的推导。下面的计算被编码器用于即使在显式基地址信号通知的情况下也计算基地址。

如下(伪码5”)得出用于k的列表TileSliceSegBaseAddr[k],k的范围从0到((num_tile_rows_minus1+1)*(num_tile_columns_minus1+1)-1),包括端值,TileSliceSegBaseAddr[k]以CTB为单位指定按位流顺序图片内第k个图块的第一切片段的切片段地址偏移,以及得出用于k的列表AreaSliceSegBaseAddr[k],k的范围从0到(NumAreas-1),包括端值,AreaSliceSegBaseAddr[k]以CTB为单位指定按位流顺序图片内第k个区域的第一切片段的切片段地址偏移:

另外,图10示出根据变体B的切片头看起来如何,其中以下示出可能的语义。

first_slice_segment_in_area_flag等于1指定当tiles_enabled_flag等于0时,切片段是解码顺序中的图片的第一切片段。否则,当tiles_enabled_flag等于1时,first_slice_segment_in_pic_flag等于1指定切片段为解码顺序中的图片的图块的第一切片段。first_slice_segment_in_pic_flag等于0指定切片段不是解码顺序中的图片的第一切片段。

注意1-此语法元素可用于检测在解码顺序中连续的编码图片之间的边界。然而,当IDR图片在解码顺序中连续并且具有相同NAL单元类型时,IDR图片的第一切片的丢失可导致编码图片之间的边界的检测的问题。这可能例如发生在易错环境中的全部帧内编码视频的传输中。通过交替地使用两个不同的IDR NAL单元类型(IDR_W_RADL和IDR_N_LP)用于任何两个连续的IDR图片,可以减轻这个问题。时间子层零索引SEI消息的使用也可以是有帮助的,因为SEI消息包括语法元素irap_pic_id,它的值对于在解码顺序中连续的IRAP图片是不同的。一些系统环境具有其他的规定,也可以有助于图片边界检测,诸如使用Rec.ITU-TH.222.0|ISO/IEC13818-1系统中的呈现时间戳、以ISO/IEC 14496-12ISO基媒体文件格式为框架的存取单元、或者IETF RFC 3550实时传输协议头中的标记比特。

dependent_slice_segment_flag等于1指定不存在的每个切片段头语法元素的值被推断为等于切片头中的对应的切片段头语法元素的值。当不存在时,dependent_slice_segment_flag的值被推断为等于0。

变量SliceAddrRs如下得出:

-如果dependent_slice_segment_flag等于0,则设置SliceAddrRs等于CtbAddrInRs。

-否则,SliceAddrRs被设置为等于包括编码树块地址是CtbAddrTsToRs[CtbAddrRsToTs[CtbAddrInRs]-1]的编码树块的先前切片段的SliceAddrRs,其中变量CtbAddrInRs在slice_segment_address的语义中指定。

area_id_in_sh指定切片段所属的图块的索引。area_id_in_sh的值应该在0到255的范围内。当不存在area_id_in_sh时,推断其等于0。

slice_segment_address在图片的编码树块栅格扫描(当slice_segment_base_addr_per_tile_enable_flag等于1时)和图片的图块扫描中指定切片段中的第一编码树块的地址,否则如下:

变量maxNumCtbY被限定为(slice_segment_addr_offset_per_tile_enable_flag?AreaSizeInCtbsY[area_id_in_sh]:PicSizeInCtbsY)。

slice_segment_address语法元素的长度是ceil(Log2(maxNumCtbsY))比特。slice_segment_address的值应当在0到maxNumCtbsY-1的范围内,包括端值。当slice_segment_addr_offset_per_tile_enable_flag等于0时,slice_segment_address的值不应等于相同的编码图片的任何其它编码切片段NAL单元的slice_segment_address的值。当slice_segment_addr_offset_per_tile_enable_flag等于1时,slice_segment_address的值不应等于相同的编码图片内相同区域的任何其它编码切片段NAL单元的slice_segment_address的值。当slice_segment_address不存在时,推断其等于0。

指定图片的编码树块栅格扫描中的编码树块地址的变量CtbAddrInRs被设置为等于CtbAddrTsToRs[slice_segment_address+(slice_segAddr_addr_offset_per_tile_enable_flag?TileSliceSegBaseAddr[AreaIdToAreaIdx[area_id_in_sh]]:0)]。将在图块扫描中指定编码树块地址的变量CtbAddrInTs设定为等于CtbAddrRsToTs[CtbAddrInRs]。指定包括cu_qp_delta_abs的编码单位的亮度量化参数与其预测之间的差的变量CuQpDeltaVal被设置为等于0。指定当确定包括cu_chroma_qp_offset_flag的编码单位的Qp’Cb和Qp’Cr量化参数的相应值时要使用的值的变量CuQpOffsetCb和CuQpOffsetCr都被设置为等于0。

至于VCL NAL单元的顺序以及它们与编码图片和存取单元36的关联,可以说如下:

每个VCL NAL单元是编码图片的部分。

编码图片中VCL NAL单元的顺序如下约束:

-编码图片的第一VCL NAL单元的first_slice_segment_in_pic_flag应当等于1。

-令sliceSegAddrA和sliceSegAddrB为相同的编码图片内的任何两个经编码切片段NAL单元A和B的CtbAddrTsToRs[slice_segment_address+CtbAddrRsToTs[(slice_segment_base_addr_per_tile_enable_flag?AreaSliceSegBaseAddr[AreaIdToAreaIdx[area_id_in_sh]]:0)]]的值。当以下条件的任一个是真的时,编码切片段NAL单元A应当在编码切片段NAL单元B之前:

-TileId[CtbAddrRsToTs[SliceSegAddrA]]小于TileId[CtbAddrRsToTs[SliceSegAddrB]]。

-TileId[CtbAddrRsToTs[SliceSegAddrA]]等于TileId[CtbAddrRsToTs[SliceSegAddrB]]并且CtbAddrRsToTs[SliceSegAddrA]小于CtbAddrRsToTs[SliceSegAddrB]。

上面提出的针对有效子图片提取的可能的HEVC编解码器扩展的描述相对于已经关于图1宣布的方面被初步扩展,根据这方面,子图片提取过程不仅由于相对于当前段的起始位置的切片的开始位置的有利相对指示而被减轻,而且额外地通过在数据流中提供参数集而被减轻,参数集不仅提供关于整个图片/视频的解码的信息,而且还提供关于子图片解码选项的解码的信息,或者可替换地,提供关于若干子图片解码选项的信息,使得提取过程实际上可以仅仅被限制于关于根据感兴趣的子图片解码选项而不需要的切片的省略或丢弃的动作。甚至换句话说,根据上述HEVC修改的这种扩展,对仅对子图片进行解码的兴趣,即对子图片解码选项的选择,被处理为类似于省略多层数据流的层,而选择与原始数据流的完整图片区域的解码对应的所有对应的层。稍后,将注意到的是,后一方面也可独立于上面讨论的相对切片开始点指示来使用。

因此,现在描述的扩展允许更容易的提取过程而无需参数集重写。与分层的位流的提取过程中一样,去除携带切片数据和参数集的NAL单元足以创建符合的位流,并且接收位流的解码器可以容易地确定在提取的位流中表示的实际操作点。在使用图块作为段的情况下,此上下文中的操作点存在于至少由段网格或图块网格的子集利用的空间内,并且可选地,存在于诸如空间分辨率、时间分辨率、SNR可缩放性等的其它可缩放性维度内。

根据当前实施例,诸如VPS或SPS的参数集限定分块环境下的若干操作点,分块环境在下文中被称为输出图块集(OTS),针对输出图块集描述若干特性。图11中描绘了具体实施例,本文中示例性地假设关于OTS的参数被包括在SPS中。

如图11所示,参数集(这里示例性地为SPS)指示如何解码完整的图片18(与图1相比),分块语法140,其示例已经示例性地在图7中呈现,并且其指示图片18到段的细分,以及可选地,段索引值到这些段的关联,以及可选地,这些段的起始位置的基地址,以及图片18的大小,即例如对于i=0,142处的水平大小和144处的垂直大小,以及146处的用于解码图片18的解码器能力水平。当在148处发送的语法元素num_output_tile_format大于1时,图11的参数集额外地还发信号通知指示其它图片大小和图片54的相关联的解码器能力水平的信息142至146,用于进一步的子图片解码选项。根据图11的示例,也分离地发信号通知用于输出格式的、导致如142和144所指示的对应的图片大小的段30(本文中示例性地为图块)的各种组成。Num_output_tile_set在150处发送的语法元素中,并且指示搜索组合的数量。每个组合通过索引152与输出图块格式中的一个相关联。在154处发送组成相应图片18或图片54的图块的数量,并且在156处发送用于各个图块组成的段索引。最后,对于由150指示的数目的每个图块组成,参数集在158处指示用于解码的额外的信息,即与解码时间戳和/或具有用于解码来自数据流的相应段组成(或图块组成)所需的行进时间和/或缓冲器大小的编码图片缓冲器相关的参数。

当使用图11的实施例时,在解码器38或52中发生的解码过程采用可以称为目标输出图块集的额外的输入参数,指示选择哪个限定的OTS用于解码,其中此输入参数表示以上关于图1讨论的信号58。

参数TargetOutputTileSet可通过各种方式确定:

·外部方式,诸如通过系统层以文件格式、传输流、SDP或其它而发信号通知的指示。

·位流中SEI消息的存在指示位流中存在哪些图块或OTS,即,对位流进行的先前提取过程的描述。因此,提取信息可包括在指示一个或多个可解码OTS的数据流中。

·解析存取单元内NAL单元的切片头中的语法元素tile_id_sh的值以确定限定的OTS中的哪个OTS可以使用位流的内容来解码。

可以将优先级分配给限定的OTS,以帮助确定要解码的OTS,例如通过:

·在num_output_tile_set循环或SEI消息中显式地发信号通知向OTS分配优先级。

·在num_output_tile_set循环中每个顺序。

·位流中的存在的图块/被移除的图块的SEI消息,具有所有包括的OTS的指示。

因此,对于148所发信号通知的每个解码选项,以及对于解码选项由150和158限定的每个段集合,参数集36可包括优先级指示,优先级指示对分别由解码器38和52为解码目标选择此段集合的优先级进行指示,此段集合限定特定的字图片组成。优先级指示可以指示所有段集合选项之间的优先级,段集合选项的数量是由150全局地发信号通知的,或者仅仅是在属于一个公共子图片选项(即,相同的子图片大小和对应的解码器能力水平)的组之间单独地发信号通知。

需要如下相对于变体A调整TileSliceSegBaseAddr推导(以青绿色突出显示):

如下得出对于ctbAddrTs的列表TileId[ctbAddrTs],ctbAddrTs的范围从0到PicSizeInCtbsY-1,包括端值,TileId[ctbAddrTs]指定从图块扫描中的CTB地址到图块ID的转换:

如下得出对于k的列表TileSizeInCtbsY[k],k的范围为从0到((num_tile_rows_minus1+1)*(num_tile_columns_minus1+1)-1),包括端值,TileSizeInCtbsY[k]以CTB为单位指定图片内的第k个图块的大小:

for(j=0,k=0;j<=num_tile_rows_minus1;j++)

for(i=0;i<=num_tile_columns_minus1;i++,k++)

TileSizeInCtbsY[k]=colWidth[i]*rowHeight[j]

对于第i个目标OTS,如下得出对于k的列表TileSliceSegBaseAddr[k],k的范围从0到((num_tile_rows_minus1+1)*(num_tile_columns_minus1+1)-1),包括端值,TileSliceSegBaseAddr[k]以CTB为单位指定按位流顺序图片内的第k个图块的第一切片段的图块扫描中的切片段地址偏移:

其中TileIdxInTargetOTS对于属于TargetOutputTileSet的所有块都为真,否则为假。注意的是,通过上述内容,TargetOutputTileSet的解码图片内的图块布置保持与原始位流中的图块布置相似。仅考虑TargetOutputTileSet内的图块进行栅格到图块扫描转换,反之亦然。

如上所述,例如,关于图11刚刚描述的扩展可以用在其中不存在前述的切片的开始位置信息42的框架中,扩展涉及参数集36及其不仅对于原始图片18而且对于子图片54的图片大小和相应解码器能力水平的信令。例如,按照惯例,切片可以被限制为不在段30内开始,而是仅在段开始位置处开始。然后,例如,段信息48可能就足够了。其它示例也是可能的。在任一情况下,接收流10或12(具有或不具有开始位置信息42)的解码器38或52如下使用等于36’的参数集36中的信息。特别地,它从可能是10或12的入站数据流中解码参数集36,并且得出解码选项指示58,即要对入站数据流执行图片解码还是子图片解码。图片解码表示从数据流10解码图片18的目标,即,从所有段30合成图片10。因此,所有切片26需要在数据流10中以实现此目的。子图片解码目的是从数据流12解码图片54的目标。“图片54”表示可以在参数集36中发信号通知多于一个的子图片解码选项,每个子图片解码选项的图片大小和形状以及解码器能力水平不同。例如,在图1的示例中,不同的子图片解码选项可以由形成从并排的两个段30组成子图片54、从一个在另一个之上的两个段30组成子图片54或者仅从一个段30组成子图片54而产生,其中这些示例可以通过例如从三个段30组成子图片来扩展。

如果要对数据流执行图片解码,则解码器从参数集36得出图片18的大小,诸如经由对于i=0的142和144,以及得出从数据流解码图片18所需的解码器能力水平的指示,诸如经由对于i=0的146,并且其从参数集36,诸如从分块语法140,得出关于将图片18细分为段30的第一集,即所有段的信息,所有段被编码到数据流中而不具有编码相互依赖性。另外,解码器以图片18沿着编码路径22被划分为的切片26为单位从数据流解码图片18。关于在包括开始位置信息的情况下各个切片26的解码图片内容的布置,参见上面的描述。解码器可检查解码器38是否满足解码器能力水平。

然而,在解码选项指示58建议要对入站数据流执行子图片解码的情况下,解码器从参数集36得出子图片54的另外的图片大小以及从数据流解码子图片54所需的解码器能力水平的指示,诸如对于i≠0,经由142、144和146,从参数集36得出关于将子图片54细分为段的第二集的信息,段被编码到数据流中而不具有编码相互依赖性,并且第二集是图片18的段的集的子集,并且解码器以子图片54被编码到的那些切片26为单位从数据流解码子图片54。即使在此,解码器也使用或遵从编码路径22’。这次它遍历其他的目标目的,即子图片54。如同编码路径22遍历图片18,编码路径22’顺序地、逐段地遍历子图片54,并且属于子图片54的任何部分的那些切片中的每个切片26具有编码到其中的段的第二集中的段的一部分,或者完整的一个或多个段,段的第二集形成子图片54的组成。注意,编码路径或顺序22’可以以与原始图片18内的编码路径22遍历的顺序不同的顺序遍历参与组成子图片54的段30的子集。然而,这并不影响解码结果,因为段编码独立性无论如何都禁止了跨段边界的编码相互依赖性。然而,在每个段30内,路径22和22’重合,并且这对于保持解码同步性以及甚至当使用开始位置信息42时切片的内容的放置不受影响是重要的。同样,解码器可检查解码器38/52是否满足用于子图片解码选项的解码器能力水平。

如上所述,解码器可以通过不同的方式得出解码选项指示58。例如,解码器52可以分析由存在于入站数据流(即10或12)中的切片覆盖的段,以确定是否例如通过网络设备50的省略而移除了切片和对应的段,并且如果是,已经去除了哪些片和对应的段。另外,额外地或可替换地,如图1中的58所示的外部信号通知可以由解码器38或52使用,以确定要使用的解码选项或目标。外部信号通知可以已经唯一地识别了要使用的编码选项,或者可以仅仅排除了一些不被使用或者由于例如中间提取过程14而不可用的编码选项,在这种情况下,此外部信号通知可能源于网络设备50,或者可以肯定地识别编码选项的集合,解码器将基于另外的信息从编码选项的集合中选择一个。另外,额外地或可替换地,入站数据流中的边信息,诸如关于仍可解码的选项的显式信息,可以由解码器38或52使用,以确定要使用的解码选项或目标。与外部信息一样,边信息可能已经被提取实体,即设备50包括。另外,解码器可以检查与参数集54中存在的解码选项相关联的解码器能力水平,以在可能的解码选项候选与解码器的能力冲突时排除可能的解码选项候选的列表中的一些解码选项候选。这些提示中的一些或全部的组合也可形成解码选项指示。在任何剩余的模糊性的情况下,解码器可以使用上述优先级来确定剩余的可能解码选项候选中具有最高优先级的一个。

尽管在装置的上下文中描述了一些方面,但是清楚的是,这些方面还表示对对应的方法的描述,其中块或设备对应于方法步骤或方法步骤的特征。类似地,在方法步骤的上下文中描述的方面还表示对对应装置的对应块或项目或特征的描述。方法步骤中的一些或全部可以由(或使用)硬件装置来执行,例如微处理器、可编程计算机或电子电路。在一些实施例中,最重要的方法步骤中的一个或多个可以由这样的装置执行。

本发明的数据流可以存储在数字存储介质上,或者可以在诸如无线传输介质或诸如因特网的有线传输介质的传输介质上传输。

取决于特定的实现要求,本发明的实施例可以以硬件或软件实现。可以使用其上存储有电子可读控制信号的例如软盘、DVD、CD、ROM、PROM、EPROM、EEPROM或闪存的数字存储介质执行该实现,这些电子可读控制信号与可编程计算机系统协作(或能够协作),从而执行相应的方法。因此,数字存储介质可以是计算机可读的。

根据本发明的一些实施例包括具有电子可读控制信号的数据载体,电子可读控制信号能够与可编程计算机系统协作,从而执行本文所述的方法中的一个。

通常,本发明的实施例可以被实现为具有程序代码的计算机程序产品,当计算机程序产品在计算机上运行时,该程序代码可操作用于执行所述方法中的一个。程序代码例如可以存储在机器可读载体上。

其它实施例包括存储在机器可读载体或非暂时存储介质上的用于执行本文所述的方法中的一个的计算机程序。

因此,换句话说,本发明方法的实施例因此是具有程序代码的计算机程序,当计算机程序在计算机上运行时,程序代码用于执行本文所述的方法中的一个。

因此,本发明方法的另外的实施例是数据载体(或数字存储介质,或计算机可读介质),包括记录在其上的用于执行本文所述的方法中的一个的计算机程序。数据载体、数字存储介质或记录介质通常是有形的和/或非过渡性的。

因此,本发明方法的另外的实施例是表示用于执行本文所述的方法中的一个的计算机程序的数据流或信号序列。数据流或信号序列例如可以被配置为经由数据通信连接(例如经由因特网)传送。

另外的实施例包括处理装置,例如计算机或可编程逻辑设备,其被配置为或适于执行本文所述的方法中的一个。

另外的实施例包括计算机,其上安装有用于执行本文所述的方法中的一个的计算机程序。

根据本发明的另外的实施例包括一种装置或系统,被配置为将用于执行本文所述方法中的一个的计算机程序传送(例如,电子地或光学地)到接收器。例如,接收器可以是计算机、移动设备、存储器设备等。例如,所述装置或系统可包括用于将计算机程序传送到接收器的文件服务器。

在一些实施例中,可编程逻辑设备(例如现场可编程门阵列)可以用于执行本文所述的方法的一些或全部功能。在一些实施例中,现场可编程门阵列可以与微处理器协作,以便执行本文所述的方法中的一个。通常,优选地,通过任何硬件装置执行所述方法。

本文所述的装置可以使用硬件装置、或使用计算机、或使用硬件装置和计算机的组合来实现。

本文所述的装置或本文所述的装置的任何组件可以至少部分地以硬件和/或软件来实现。

本文所述的方法可以使用硬件装置、或使用计算机、或使用硬件装置和计算机的组合来执行。

本文所述的方法或本文所述的装置的任何组件可以至少部分地由硬件和/或软件来执行。

上述实施例仅是对本发明原理的说明。应当理解,对本文所述的布置和细节的修改和变化对于本领域的其他技术人员来说是显而易见的。因此,意图仅由即将到来的专利权利要求的范围来限制,而不是由通过这里的实施例的描述和解释而呈现的具体细节来限制。

相关技术
  • 有效子图片提取
  • 有效子图片提取
技术分类

06120115925094