用于编码图片的通用空间划分的编码器和解码器、编码方法和解码方法与流程

文档序号:24641794发布日期:2021-04-13 11:24阅读:247来源:国知局
用于编码图片的通用空间划分的编码器和解码器、编码方法和解码方法与流程

1.本发明涉及视频编码和视频解码,并且具体地涉及用于编码图片的通用空间划分的编码器和解码器、编码方法和解码方法。


背景技术:

2.h.265/hevc是视频编解码器,它已经提供了用于提升或甚至实现编码器和/或解码器处的并行处理的工具。例如,hevc支持将图片细分为彼此独立地进行编码的图块阵列。hevc支持的另一概念涉及wpp,根据wpp,可以从左到右并行地(例如,按条)处理图片的ctu排或ctu行,前提是在连续ctu线(ctu=编码树单元)的处理中遵守某一最小ctu偏移。但是,有利的是具有一种如下视频编解码器:它可以更有效地支持视频编码器和/或视频解码器的并行处理能力。
3.在下面的章节“根据现有技术的vcl划分”中,描述了对根据现有技术的vcl划分的介绍(vcl=视频编码层)。
4.通常,在视频编码中,图片样本的编码过程需要较小的分区,其中样本被分为一些矩形区域以用于联合处理,例如预测或变换编码。因此,将图片划分为具有特定大小的块,该特定大小在视频序列的编码期间是恒定的。在h.264/avc标准中,使用16x16个样本的固定大小的块,即所谓的宏块。在最新的hevc标准(参见[1])中,存在最大大小为64x64个样本的编码树块(ctb)或编码树单元(ctu)。在对hevc的进一步描述中,对于这种类型的块,使用更通用的术语“ctu”。
[0005]
ctu是按光栅扫描顺序处理的,从左上角的ctu开始,逐个图片行处理ctu,直到右下角的ctu。
[0006]
编码ctu数据被组织成一种称为条带的容器。最初,条带是指包括图片的一个或多个连续的ctu的分段。
[0007]
在下面的章节“利用条带的图片划分”中,说明了如何采用条带来进行编码数据的分段。从另一个角度来看,整个图片也可以定义为一个大的分段,因此,从历史上看,术语“条带”仍然适用。除了编码图片样本外,条带还包括与条带本身的编码过程相关的附加信息,这些信息被置于所谓的条带头部中。
[0008]
根据现有技术,vcl(视频编码层)还包括用于片段和空间划分的技术。这样的划分可以例如出于各种原因而被应用于视频编码中,这些原因包括并行化中的处理负载平衡、网络传输中的ctu大小匹配、错误减轻等,如下面更详细地描述的。
[0009]
在下面的章节“利用条带的图片划分”中,描述利用条带的图片划分。
[0010]
从h.263标准开始,以特定扫描顺序表示连续块的数据的序列可以被组织为称为条带的组。通常,例如在预测和熵编码方面,图片的不同条带的ctu之间的依赖性是被禁止的,因此可以独立地重构图片内的各个条带。
[0011]
图2示出按光栅扫描顺序通过条带进行的图片分割。条带的大小由ctu(编码树单
元)的数量和属于条带的每个编码ctu的大小来确定,如图2所示。图2包括50个ctu,例如ctu 21、ctu 24和ctu 51。
[0012]
在下面的章节“利用图块的图片划分”中,参照图3描述利用图块的图片划分。图3包括50个ctu,例如ctu 23、ctu 27和ctu 41。
[0013]
图块是hevc中引入的一个概念,尽管该概念与h.264/avc中添加的灵活宏块排序(fmo)非常相似。图块的概念允许将图片分为若干个矩形区域。
[0014]
因此,图块是将原始图片分成给定数量的行和列的结果,该行和列分别具有指定的高度和宽度,如图3所示。结果,要求hevc比特流内的图块具有形成规则网格的公共边界。
[0015]
在下面的小节“划分用例和现有技术的不足”中,将参照图4和图5描述划分用例和现有技术的不足。
[0016]
图4示出具有不相等的分辨率的基于图块的360
°
视频流传输。在360
°
视频流传输中,一种视口自适应流传输技术正得到关注,称为基于图块的360
°
视频流传输。主要思想是提供包括不同分辨率下的若干个图块的360
°
视频。因此,取决于当前视口,客户端以高分辨率下载与视口匹配的一些图块,而以较低分辨率下载位于视口之外的其他图块,如图4所示。
[0017]
在客户端处,接收机将这些不同分辨率下的下载的图块组合到单个hevc比特流中,对于该单个hevc比特流,下载的图块无法被描述为hevc语法中的图块。原因是这些下载的图块在整个图片上不共享相同的边界,并且原始流的图块化粒度是不同的。例如,参见图4中的针对低分辨率部分的顶部和底部虚线,其只能表示为hevc语法中的条带边界,因为在左侧的高分辨率部分中没有对应的边界。
[0018]
更灵活的图片划分将是有益的另一种场景是低延迟对话应用。图片划分还用于解码/编码并行化。在某些情况下,这种并行化是实现实时解码/编码的唯一方式。可以想象视频会议场景,其中有2个人出现在图片中。
[0019]
图5示出灵活的编码区域划分。
[0020]
可能地,可以用来实现(按编码复杂度的方式)公平的负载平衡的良好图片划分可以是图5所示的图片划分。但是,在这种场景中,由于需要矩形的图块化网格,因此图块化缺乏期望的灵活性。
[0021]
分割(利用条带)的另一个主要目的是错误鲁棒性。如果丢失了图片的某些条带,则将不会阻碍对成功接收的条带的重构,并且因此部分重构的图片可以被输出,并可以在针对后续图片的时间预测过程中被用作参考图片。该特征在错误率较高的传输系统中或在每个图片的内容都极为重要的情况下是非常重要的。另一方面,也存在如mpeg dash中的传输方案,例如经由http的动态自适应流传输,其以传输层(tcp/ip)上的错误检测和减轻技术为特征,并且针对该传输方案,在成功重传之前进行缓存停滞是对传输错误的解决方案。在这种场景中,可以允许引入附加的依赖性,但这将损害抗误码能力。现有技术的条带和图块划分在这方面也缺乏灵活性。
[0022]
本发明的目的是提供针对视频编码和视频解码的改进概念。


技术实现要素:

[0023]
通过根据权利要求1所述的视频编码器、根据权利要求57所述的视频解码器、根据
权利要求113所述的系统、根据权利要求114所述的视频编码方法、根据权利要求115所述的视频解码方法、根据权利要求116所述的计算机程序和根据权利要求117所述的编码视频信号来实现本发明的目的。
[0024]
提供了一种用于通过生成编码视频信号来对图片进行编码的视频编码器。该视频编码器包括数据编码器,该数据编码器被配置用于将视频的图片编码为编码图片数据,其中,该数据编码器还被配置为生成指示数据。此外,视频编码器包括信号生成器,该信号生成器被配置为生成包括编码图片数据和指示数据的编码视频信号。图片被划分为多个编码区域,其中,多个编码区域中的每个编码区域位于图片内,其中,多个编码区域中的每个编码区域包括位于所述图片内的多个编码树单元中的一个或多个编码树单元,其中,数据编码器被配置为根据多个编码区域对图片进行编码,并且其中,数据编码器被配置为生成指示数据,使得指示数据包括与多个编码区域有关的信息。多个编码区域中的一个或多个编码区域包括多个编码树单元中的两个或更多个编码树单元,其中,包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域展示针对所述编码区域的两个或更多个编码树单元的编码顺序,其中,数据编码器被配置为根据包括两个或多个编码树单元的一个或多个编码区域的编码顺序对图片进行编码,并且其中,数据编码器被配置为生成所述指示数据,使得所述指示数据包括与包括两个或更多个编码树单元的一个或多个编码区域的编码顺序有关的信息。
[0025]
此外,提供了一种视频解码器,用于对编码视频信号进行解码,以重构视频的图片,所述编码视频信号包括视频的图片的编码图片数据和指示数据。视频解码器包括:接口,被配置用于接收编码视频信号;以及数据解码器,被配置用于通过使用指示数据对编码图片数据进行解码来重构视频的图片。图片被划分为多个编码区域,其中,多个编码区域中的每个编码区域位于图片内,其中,多个编码区域中的每个编码区域包括位于图片内的多个编码树单元中的一个或多个编码树单元,其中,使用所述指示数据,数据解码器被配置为根据多个编码区域来对编码图片数据进行解码,其中,指示数据包括与多个编码区域有关的信息。多个编码区域中的一个或多个编码区域包括多个编码树单元中的两个或更多个编码树单元,其中,包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域展示针对所述编码区域的两个或更多个编码树单元的编码顺序,其中,数据编码器被配置为根据包括两个或更多个编码树单元的一个或多个编码区域的编码顺序对编码图片数据进行解码,其中,指示数据包括与包括两个或更多个编码树单元的一个或多个编码区域的编码顺序有关的信息。
[0026]
此外,提供了一种用于通过生成编码视频信号来对图片进行编码的方法。该方法包括:
[0027]

将视频的图片编码为编码图片数据。
[0028]

生成指示数据。以及:
[0029]

生成包括编码图片数据和指示数据的编码视频信号。
[0030]
图片被划分为多个编码区域,其中,多个编码区域中的每个编码区域位于图片内,其中,多个编码区域中的每个编码区域包括位于图片内的多个编码树单元中的一个或多个编码树单元,其中,根据多个编码区域对图片进行编码,并且其中,生成指示数据以使得指示数据包括与多个编码区域有关的信息。多个编码区域中的一个或多个编码区域包括多个
编码树单元中的两个或更多个编码树单元,其中,包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域展示针对所述编码区域的两个或更多个编码树单元的编码顺序,其中,根据包括两个或更多个编码树单元的一个或多个编码区域的编码顺序进行对图片的编码,并且其中,生成指示数据以使得指示数据包括与包括两个或更多个编码树单元的一个或多个编码区域的编码顺序有关的信息。
[0031]
此外,提供了一种用于对编码视频信号进行解码以重构视频的图片的方法,所述编码视频信号包括视频的图片的编码图片数据和指示数据。该方法包括:
[0032]

接收编码视频信号。以及:
[0033]

通过使用指示数据对编码图片数据进行解码来重构视频的图片。
[0034]
图片被划分为多个编码区域,其中,多个编码区域中的每个编码区域位于图片内,其中,多个编码区域中的每个编码区域包括位于图片内的多个编码树单元中的一个或多个编码树单元,其中,使用指示数据,其中,根据多个编码区域来对编码图片数据进行解码,其中,指示数据包括与多个编码区域有关的信息。多个编码区域中的一个或多个编码区域包括多个编码树单元中的两个或更多个编码树单元,其中,包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域展示针对所述编码区域的两个或更多个编码树单元的编码顺序,其中,使用指示数据,根据包括两个或更多个编码树单元的一个或多个编码区域的编码顺序对编码图片数据进行解码,其中,指示数据包括与包括两个或更多个编码树单元的一个或多个编码区域的编码顺序有关的信息。
[0035]
此外,提供了一种计算机程序,当在计算机或信号处理器上执行时实现上述方法之一。
[0036]
此外,提供了一种对图片进行编码的编码视频信号,其中,编码视频信号包括编码图片数据和指示数据,其中,图片被划分为多个编码区域,其中,多个编码区域中的每个编码区域位于图片内,其中,多个编码区域中的每个编码区域包括位于图片内的多个编码树单元中的一个或多个编码树单元,其中,根据多个编码区域对图片进行编码,并且其中,指示数据包括与多个编码区域有关的信息,其中,多个编码区域中的一个或多个编码区域包括多个编码树单元中的两个或更多个编码树单元,其中,包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域展示针对所述编码区域的两个或更多个编码树单元的编码顺序,其中,根据包括两个或更多个编码树单元的一个或多个编码区域的编码顺序来对图片进行编码,并且其中,指示数据包括与包括两个或更多个编码树单元的一个或多个编码区域的编码顺序有关的信息。
附图说明
[0037]
在下文中,将参考附图更详细地描述本发明的实施例,在附图中:
[0038]
图1a示出根据实施例的用于通过生成编码视频信号来对图片进行编码的视频编码器。
[0039]
图1b示出根据实施例的用于对编码视频信号进行解码以重构视频的图片的视频解码器,该编码视频信号包括视频的图片的编码图片数据和指示数据。
[0040]
图1c示出根据实施例的系统。
[0041]
图2示出按光栅扫描顺序的利用条带的图片分割。
[0042]
图3示出利用图块的图片划分。
[0043]
图4示出具有不相等的分辨率的基于图块的360
°
视频流传输。
[0044]
图5示出灵活的编码区域划分。
[0045]
图6示出根据实施例的包括具有一个隐式编码区域的单个图片的比特流。
[0046]
图7示出根据另一实施例的包括具有四个编码区域的单个图片的比特流。
[0047]
图8示出根据实施例的在顶部具有单个ca并且在底部具有三个ca的图片的空间细分。
[0048]
图9示出根据另一实施例的具有五个编码区域的图片的空间细分。
[0049]
图10示出根据实施例的两个编码区域,其中包括图片边界ctu的一个编码区域由非连续的ctu组成。
[0050]
图11示出根据实施例的在子区域(ctu)级别上的编码区域信令。
[0051]
图12示出根据实施例的针对ctu_dependency_offset_id=1的ctu扫描顺序和空间参考。
[0052]
图13示出根据另一实施例的针对ctu_dependency_offset_id=2的另一ctu扫描顺序和空间参考。
[0053]
图14示出根据实施例的具有z扫描ctu顺序的编码区域。
[0054]
图15示出根据另一实施例的隐式ctu扫描方向导出。
[0055]
图16示出根据实施例的具有不同ctu扫描方向的编码区域。
[0056]
图17示出根据实施例的具有区域间预测选项的依赖型编码区域。
[0057]
图18示出根据实施例的依赖型编码区域的并行处理((a)ctu光栅扫描;(b)ctu对角线扫描)。
[0058]
图19示出根据实施例的执行顺序和ca间依赖性((a)依赖性驱动;(b)锁步)。
[0059]
图20示出根据实施例的相对于ca顺序在ca边界上的去块滤波过程。
[0060]
图21示出根据实施例的采用具有阴影线滤波器区的ca间滤波的去块滤波器。
[0061]
图22示出包括具有一个编码区域的单个图片的比特流,而ca被分为多个传输单元。
[0062]
图23示出包括具有多个编码区域的单个图片的比特流,而每个ca具有自己的传输单元。
[0063]
图24示出包括具有多个编码区域的单个图片的比特流,而每个ca被分为多个传输单元。
[0064]
图25示出根据实施例的被区包围的块的一般表示。
[0065]
图26示出根据实施例的被划分为图块、砖块和矩形条带的图片的示例,其中,图片被分为4个图块、11个砖块和4个矩形条带。
[0066]
图27示出根据实施例的图片,该图片被分层级地分割,在第一步骤中在水平和竖直方向上分割以获得图片的第一划分并且在第二步骤中仅在水平方向上分割以获得图片的第二划分。
[0067]
图28示出根据另一实施例的图片,该图片被分层级地分割,在第一步骤中在水平和竖直方向上分割以获得图片的第一划分并且在第二步骤中仅在竖直方向上分割以获得图片的第二划分。
[0068]
图29示出根据另外的实施例的图片,该图片被分层级地在第一步骤中仅在水平方向上分割以获得图片的第一划分并且在第二步骤中仅在竖直方向上分割以获得图片的第二划分。
[0069]
图30示出根据又一实施例的图片,该图片被分层级地分割,在第一步骤中仅在竖直方向上分割以获得图片的第一划分并且在第二步骤中仅在水平方向上分割以获得图片的第二划分。
具体实施方式
[0070]
图1a示出根据实施例的用于通过生成编码视频信号来对图片进行编码的视频编码器101。
[0071]
视频编码器101包括数据编码器110,该数据编码器110被配置为将视频的图片编码为编码图片数据。此外,数据编码器110被配置为生成指示数据。
[0072]
此外,视频编码器101包括信号生成器120,该信号生成器120被配置为生成包括编码图片数据和指示数据的编码视频信号。
[0073]
图片被划分为多个编码区域,其中,多个编码区域中的每个编码区域位于图片内,其中,多个编码区域中的每个编码区域包括位于图片内的多个编码树单元中的一个或多个编码树单元。数据编码器110被配置为根据多个编码区域对图片进行编码,并且其中,数据编码器110被配置为生成指示数据,使得指示数据包括与多个编码区域有关的信息。
[0074]
多个编码区域中的一个或多个编码区域包括多个编码树单元中的两个或更多个编码树单元,其中,包括两个或多个编码树单元的一个或多个编码区域中的每个编码区域展示针对所述编码区域的两个或更多个编码树单元的编码顺序。数据编码器110被配置为根据包括两个或更多个编码树单元的一个或多个编码区域的编码顺序来对图片进行编码。此外,数据编码器110被配置为生成指示数据,使得指示数据包括与包括两个或更多个编码树单元的一个或多个编码区域的编码顺序有关的信息。
[0075]
图1b示出根据实施例的用于对编码视频信号进行解码以重构视频的图片的视频解码器151,该编码视频信号包括视频的图片的编码图片数据和指示数据。
[0076]
视频解码器151包括被配置用于接收编码视频信号的接口160。
[0077]
此外,视频解码器151包括数据解码器170,该数据解码器170被配置为通过使用指示数据对编码图片数据进行解码来重构视频的图片。
[0078]
图片被划分为多个编码区域,其中,多个编码区域中的每个编码区域位于图片内,其中,多个编码区域中的每个编码区域包括位于图片内的多个编码树单元中的一个或多个编码树单元。使用指示数据,数据解码器170被配置为根据多个编码区域对编码图片数据进行解码,其中,指示数据包括与多个编码区域有关的信息。
[0079]
多个编码区域中的一个或多个编码区域包括多个编码树单元中的两个或更多个编码树单元,其中,包括两个或多个编码树单元的一个或多个编码区域中的每个编码区域展示针对所述编码区域的两个或更多个编码树单元的编码顺序。使用指示数据,数据解码器170被配置为根据包括两个或更多个编码树单元的一个或多个编码区域的编码顺序来对编码图片数据进行解码,其中,指示数据包括与包括两个或更多个编码树单元的一个或多个编码区域的编码顺序有关的信息。
[0080]
根据实施例,图1b的视频解码器151可以例如被配置为在输出设备上(例如,在例如电视、计算机、移动电话等的显示器上)输出视频的图片。
[0081]
图1c示出根据实施例的系统。该系统包括根据图1a的视频编码器101。此外,该系统包括根据图1b的视频解码器151。
[0082]
图1a的视频编码器101被配置为生成编码视频信号,并且
[0083]
图1b的视频解码器151被配置为对编码视频信号进行解码以重构视频的图片。
[0084]
在下面的章节“利用编码区域的通用图片划分”中,将描述利用编码区域的通用图片划分。
[0085]
在下面的章节“编码区域”中,描述了编码区域。
[0086]
除了当前现有技术的划分方案(例如图块)之外,实施例还提供更灵活的空间区定义概念,其可以例如被称为编码区域(ca)。对于将图片空间细分为矩形区域,这是有利的概念。利用编码区域,划分更加灵活,并且各个区都可以具有自己的、区域特定的编码特性。
[0087]
编码区域由特定区的尺寸和位置(宽度、高度、位置)以及如何处理该区的数据来定义。可以按照下层编码过程规范或按照上层参数(例如,扫描顺序、扫描方向、扫描开始等)来实现信令。
[0088]
图6示出根据实施例的包括具有一个隐式编码区域的单个图片的比特流。(nal=网络抽象层;naluh=网络抽象层单元头部;sh=条带头部)
[0089]
图7示出根据另一实施例的包括具有四个编码区域的单个图片的比特流。
[0090]
如果未应用划分,则图片隐式地包括一个编码区域(ca),参见图6。这可以是具有预定义功能的默认编码区域。图7示出将图片细分为多个ca。
[0091]
在实施例中,图1a的数据编码器110可以例如被配置为将图片划分为多个编码区域。
[0092]
图8示出根据实施例的在顶部具有单个编码区域(ca)并且在底部具有三个ca的图片的空间细分。图8和图9中的每个正方形都表示编码树单元(ctu)。尽管图8和图9示出具有正方形形状的ctu,但是在其他示例中,ctu可以例如具有矩形形状或任何其他形状。
[0093]
从图8和图9可以看出,图8和图9中的每个编码区域在图片内呈矩形延伸。此外,在图8和图9中,每个ctu在图片内呈矩形延伸。
[0094]
因此,根据实施例,多个编码区域中的每个编码区域可以例如在图片内呈矩形延伸。多个编码区域中的每个编码区域的一个或多个编码树单元中的每个编码树单元可以例如在图片内呈矩形延伸。
[0095]
图9示出根据另一实施例的具有五个编码区域的图片的空间细分。
[0096]
ca划分的一项重要优势在下面得到了展示。在图8和图9中,提供了新划分概念的两个示例。
[0097]
对于某些用例,可以利用ca来实现无法利用图块实现的划分,其中ca划分产生减少的分区。从图3中的基于图块的划分可以看出,在图片的底部创建三个单独的区(图块4、图块5、图块6)需要在图片的顶部对三个附加区(图块1、图块2、图块3)进行编码。使用编码区域,可以将顶部的区编码为一个编码区域ca1,如图8所示。图9所示的划分也无法通过图块来实现,因为ca1、ca2和ca3的高度不同。
[0098]
根据实施例,多个编码树单元中的每个编码树单元可以例如具有图片内的水平位
置和图片内的竖直位置。图8和图9示出ctu的从1到10的水平位置和从1到5的竖直位置。当然,在这样的实施例中,位置不必从1开始并且从一个水平或竖直位置到下一个水平或竖直位置的步长不必是1。相反,从ctu到ctu的其他起始位置和其他步长也是可能的。对于竖直位置从一个ctu到下一个ctu的步长大小可以与对于水平位置从一个ctu到下一个ctu的步长大小不同。
[0099]
图9的新划分例如可以具有如下特征。
[0100]
在这样的实施例中(备选方案1:),多个编码区域中的第一编码区域可以例如包括第一编码树单元,第一编码树单元的第一竖直位置与多个编码区域中的不同第二编码区域的不同第二编码树单元的第二竖直位置相同,并且第一编码区域的第三编码树单元的第三竖直位置与第二编码区域的任何其他编码树单元的竖直位置不同,并且第二编码区域的第四编码树单元的第四竖直位置与第一编码区域的任何其他编码树单元的竖直位置不同。
[0101]
或者(备选方案2:),多个编码区域中的第一编码区域可以例如包括第一编码树单元,第一编码树单元的第一水平位置与多个编码区域中的不同第二编码区域的不同第二编码树单元的第二水平位置相同,并且第一编码区域的第三编码树单元的第三水平位置与第二编码区域的任何其他编码树单元的水平位置不同,并且第二编码区域的第四编码树单元的第四水平位置与第一编码区域的任何其他编码树单元的水平位置不同。
[0102]
图9满足备选方案1:
[0103]
ca2包括ctu 91。ctu 91具有竖直位置3。ca4的ctu 96也具有竖直位置3。ca2的ctu 92具有竖直位置2。ca4的所有ctu都不具有竖直位置2(因为ca4的竖直位置在3到5的范围内)。此外,ca4的ctu 97具有竖直位置4。ca2的所有ctu都不具有竖直位置4(因为ca2的竖直位置在1到3的范围内)。
[0104]
相反,图8不满足备选方案1,并且不满足备选方案2:
[0105]
备选方案1:
[0106]
只有ca2、ca3和ca4具有相同的竖直位置(范围为3到5)。ca1没有与其他任何编码区域相同的竖直位置。然而,ca2不具有与编码区域ca3或ca4中的任何其他竖直位置不同的竖直位置。ca3和ca4分别相对于ca2、ca4和ca2、ca3的情况也是如此。
[0107]
备选方案2:
[0108]
ca2、ca3和ca4没有具有相同水平位置的ctu。
[0109]
相反,ca1的ctu 81具有与ca2的ctu 86相同的水平位置(3)。此外,ca2的所有ctu都没有ca1的ctu 82的水平位置6,因为ca2的水平位置在1到4的范围内。但是,ca2中没有ctu与ca1的任何其他ctu的水平位置不同,因为ca2的ctu的水平位置在1到4的范围内,并且ca1的ctu的水平位置为在1到10的范围内。
[0110]
出于类似的原因,ca3和ca4相对于ca1的情况也是如此。
[0111]
因此,图8的划分不满足备选方案1并且不满足备选方案2。
[0112]
在小节“编码区域的一般属性”中呈现了与分段和扫描顺序有关的许多ca参数的信号机制。
[0113]
在空间上,编码区域覆盖特定数量的ctu。ca的灵活布置是一些实施例的特征之一。为此,我们提出了几种变体:显式信令以及分层级方法,二者均在vcl之外使用。同样,如果不采用比特流分段,则可以使用vcl内的信令。在小节“编码区域的大小和布置”中提供了
ca布置的详细描述。
[0114]
除了段的布置之外,实施例还提供了编码区域内的新的灵活处理或ctu的扫描顺序。该技术的详细信息在小节“ctu扫描顺序”中呈现。
[0115]
如在小节“依赖型编码区域”中所解释的,其他发明特征之一在于,在单个图片内,一个ca在某一方面可以独立于和/或依赖于其他编码区域。
[0116]
使用新提出的方法的组合在高级别并行性方面带来新机会。如在小节“编码区域的并行处理”中详细描述,可以以更有效的方式来进行空间图片区域的并行处理。
[0117]
在小节“抗误码能力方面”中描述了抗误码能力的各个方面。
[0118]
概述以上概念:
[0119]
根据一个实施例,多个编码区域中的每个编码区域可以例如展示包括所述编码区域的位置、宽度和高度的空间特性,其中,编码区域的宽度和高度取决于该编码区域的矩形延伸,并且其中,编码区域的位置取决于该编码区域在图片内的位置。
[0120]
在一个实施例中,多个编码区域中的第一编码区域的第一高度可以例如不同于所述多个编码区域中的第二编码区域的第二高度。或者,多个编码区域中的第一编码区域的第一宽度不同于所述多个编码区域中的第二编码区域的第二宽度。
[0121]
根据一个实施例,数据编码器110可以例如被配置为生成指示数据,使得与多个编码区域有关的信息包括与多个编码区域中的每个编码区域的空间特性有关的信息。
[0122]
在一个实施例中,数据编码器110可以例如被配置为生成指示数据,使得与多个编码区域有关的信息包括多个编码区域中的每个编码区域的位置、宽度和高度。
[0123]
根据实施例,数据编码器110可以例如被配置为独立于对多个编码区域中的任何其他编码区域的图片部分的图像数据的编码,来对多个编码区域中的每个编码区域的图片部分的图像数据进行编码,以获得编码图片数据。
[0124]
在一个实施例中,数据编码器110可以例如被配置为通过对多个编码区域的每个编码区域内的图片部分的图像数据进行编码,来对图片进行编码,以获得编码图片数据。数据编码器110可以例如被配置为对多个编码区域中的至少一个编码区域的图片部分的图像数据进行编码,使得对多个编码区域中的至少一个编码区域的图像数据的编码依赖于对多个编码区域中的至少另一个编码区域的图像数据的编码。
[0125]
在一个实施例中,数据编码器110可以例如确定针对包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域的编码顺序。
[0126]
根据一实施例,数据编码器110可以例如被配置为通过从针对一个或多个编码区域中的每个编码区域的两个或更多个扫描顺序中选择扫描顺序,来确定一个或多个编码区域中的每个编码区域的编码顺序。
[0127]
在一个实施例中,信号生成器120可以例如被配置为生成编码视频信号,使得编码视频信号包括比特流,其中,比特流包括编码图片数据和指示数据。
[0128]
同样地,根据一个实施例,多个编码区域中的每个编码区域可以例如展示包括所述编码区域的位置、宽度和高度的空间特性,其中,编码区域的宽度和高度取决于该编码区域的矩形延伸,并且其中,编码区域的位置取决于该编码区域在图片内的位置。数据解码器170可以例如被配置为根据多个编码区域的空间特性来对编码图片数据进行解码。
[0129]
在一个实施例中,多个编码区域中的第一编码区域的第一高度可以例如不同于所
[0142][0143][0144]
coding_area_explicit_positioning_flag如果为真,则在比特流中存在encoding_area_top_left_ctu_address,否则使用默认的隐式ca定位
[0145]
num_coding_areas_minus1比特流中用信号通知的编码区域的数量
[0146]
dependent_coding_areas_enabled_flag如果为真,则指示在比特流中跟随的ca按照在比特流中出现的顺序相互依赖,否则将ca视为独立的区。
[0147]
coding_areas_ctu_wise_dependent_flag如果为真,则指示邻接ca之间的ctu的依赖性以按ctu处理的交织ca处理的方式来处理,否则,以固定顺序来单独处理ca。
[0148]
coding_area_no_slices_flag如果为真,则指示每个ca一个条带。这意味着在比特流中不存在eos_flag和ctu_start_address。ca由ca_idx寻址,而ca_idx是根据ceil(log2(num_coding_areas_minus1+1))导出的固定长度码。否则,在比特流中存在默认条带语法。
[0149]
coding_area_ctu_scan_flag如果为真,则指示在比特流中存在ctu扫描参数。在小节“ctu扫描顺序”中描述了灵活的ctu扫描技术。
[0150]
coding_area_ctu_scan_type_idx映射到扫描类型表(光栅扫描、对角线扫描)中。
[0151]
coding_area_ctu_scan_start_left_flag[i]如果第i个ca在每个ctu行上包括多
于一个ctu则存在,如果为真,则指示在ca内的最左侧的ctu处开始ctu扫描。否则,第i个ca的ctu扫描从最右侧的ctu开始。
[0152]
coding_area_ctu_scan_start_top_flag[i]如果第i个ca在每个ctu列中包括多于一个ctu则存在,如果为真,则指示在该ca内的顶部ctu行中开始ctu扫描。否则,第i个ca的ctu扫描在ca的ctu底部行中开始。
[0153]
coding_area_ctu_scan_direction_flag[i]如果第i个ca包含至少两个ctu行和两个ctu列则存在,指示ctu扫描的起始扫描方向。如果为真,则第i个ca的扫描方向在水平方向上开始,否则扫描为竖直扫描。
[0154]
概述以上概念:
[0155]
在实施例中,数据编码器110可以例如被配置为生成指示数据,使得指示数据可以例如包括针对每个编码区域的与是否指定了左上编码树单元的地址有关的信息。特定示例例如可以是coding_area_explicit_positioning_flag。如果为真,则在比特流中存在encoding_area_top_left_ctu_address,否则使用默认的隐式ca定位。
[0156]
根据实施例,数据编码器110可以例如被配置为生成指示数据,使得指示数据可以例如包括与多个编码区域的数量或多个编码区域的数量减1或多个编码区域的数量减2有关的信息。特定示例可以例如是上述num_coding_areas_minus1字段。
[0157]
在实施例中,数据编码器110可以例如配置为生成指示数据,使得指示数据针对多个编码区域中的继多个编码区域中的另一个编码区域之后的一个编码区域,指示多个编码区域中的所述一个编码区域是否依赖于多个编码区域中的所述另一个编码区域。特定示例可以是例如dependent_coding_areas_enabled_flag,其如果为真,则可以例如指示比特流中跟随的ca按照在比特流中出现的顺序相互依赖,否则将ca视为独立的区。
[0158]
根据实施例,数据编码器110可以例如被配置为生成指示数据,使得指示数据指示是否将多个条带中的恰好一个条带分配给多个编码区域中的恰好一个编码区域。特定示例可以例如是上述coding_area_no_slices_flag。
[0159]
在实施例中,数据编码器110可以例如被配置为生成指示数据,使得指示数据指示数据是否例如可以包括与如何在多个编码区域的一个或多个编码树单元中的每个编码树单元内进行扫描有关的信息。特定示例可以例如是上述coding_area_ctu_scan_flag。
[0160]
根据实施例,数据编码器110可以例如被配置为生成指示数据,使得指示数据指示如何在多个编码区域的一个或多个编码树单元中的每个编码树单元内进行扫描。特定示例可以是例如映射到扫描类型表的coding_area_ctu_scan_type_idx。扫描类型可以例如是光栅扫描和/或例如是对角线扫描等。
[0161]
在一个实施例中,数据编码器110可以例如被配置为生成指示数据,使得指示数据针对多个编码区域中的每个指示该编码区域是否包括多于一个编码树单元。
[0162]
根据一个实施例,数据编码器110可以例如被配置为生成指示数据,使得指示数据针对多个编码区域中的一个编码区域指示是以最左侧的编码树单元开始编码树单元扫描还是以最右侧的编码树单元开始编码树单元扫描。特定示例可以例如是上述coding_area_ctu_scan_start_left_flag[i]。
[0163]
在一个实施例中,数据编码器110可以例如被配置为生成指示数据,使得指示数据针对多个编码区域中的一个编码区域指示是以该编码区域的顶部编码树单元行开始编码
树单元扫描还是以该编码区域的底部编码树单元行开始编码树单元扫描。特定示例可以例如是上述coding_area_ctu_scan_start_top_flag[i]。
[0164]
在实施例中,数据编码器110可以例如被配置为生成指示数据,使得指示数据针对多个编码区域中的一个编码区域指示是在水平方向上开始编码树单元扫描还是在竖直方向上开始编码树单元扫描。特定示例可以是例如coding_area_ctu_scan_direction_flag[i],如果第i个ca包含至少两个ctu行和两个ctu列,则其可以存在,以指示ctu扫描的起始扫描方向。如果为真,则第i个ca的扫描方向例如可以在水平方向上开始,否则该扫描可以例如为竖直扫描。
[0165]
类似地,根据实施例,数据解码器170可以例如使用针对每个编码区域的与是否指定了左上编码树单元的地址有关的信息来对编码图片数据进行解码,其中,指示数据可以例如包括所述信息。
[0166]
在实施例中,数据解码器170可以例如被配置为使用与多个编码区域的数量或与多个编码区域的数量减1或与多个编码区域的数量减2有关的信息,来对编码图片数据进行解码,其中,指示数据可以例如包括所述信息。
[0167]
根据实施例,数据解码器170可以例如被配置为使用以下信息来对编码图片数据进行解码:所述信息针对多个编码区域中的继多个编码区域中的另一个编码区域之后的一个编码区域,指示多个编码区域中的所述一个编码区域是否依赖于多个编码区域中的所述另一个编码区域,其中,指示数据可以例如包括所述信息。
[0168]
在实施例中,数据解码器170可以例如被配置为使用指示是否将多个条带中的恰好一个条带分配给多个编码区域中的恰好一个编码区域的信息,来对编码图片数据进行解码,其中,指示数据可以例如包括所述信息。
[0169]
根据实施例,数据解码器170可以例如被配置为使用与如下内容有关的信息来对编码图片数据进行解码:指示数据是否可以例如包括与如何在多个编码区域的一个或多个编码树单元中的每个编码树单元内进行扫描有关的信息,其中,指示数据可以例如包括所述信息。
[0170]
在实施例中,数据解码器170可以例如被配置为使用与如何在多个编码区域的一个或多个编码树单元中的每个编码树单元内进行扫描有关的信息,来对编码图片数据进行解码,其中,指示数据可以例如包括所述信息。
[0171]
根据实施例,数据解码器170可以例如被配置为使用针对多个编码区域中的每个指示该编码区域是否包括多于一个编码树单元的信息,来对编码图片数据进行解码,其中,指示数据可以例如包括所述信息。
[0172]
在实施例中,数据解码器170可以例如被配置为使用以下信息来对编码图片数据进行解码:针对多个编码区域中的一个编码区域,信息指示是以最左侧的编码树单元开始编码树单元扫描还是以最右侧的编码树单元开始编码树单元扫描,其中,指示数据可以例如包括所述信息。
[0173]
根据实施例,数据解码器170可以例如被配置为使用以下信息来对编码图片数据进行解码:所述信息针对多个编码区域中的一个编码区域,指示是以编码区域的顶部编码树单元行开始编码树单元扫描还是以编码区域的底部编码树单元行开始编码树单元扫描,其中,指示数据可以例如包括所述信息。
[0174]
根据实施例,数据解码器170可以例如被配置为使用以下信息来对编码图片数据进行解码:所述信息针对多个编码区域中的一个编码区域,指示是在水平方向上开始编码树单元扫描还是在竖直方向上开始编码树单元扫描,其中,指示数据可以例如包括所述信息。
[0175]
在下面的小节“编码区域的大小和布置”中,描述了编码区域的大小和布置。
[0176]
重要的是用信号通知如何在图片内布置编码区域。根据应用,追求可能影响图片划分的期望灵活性(例如ca大小和位置)的不同目标。也可以在比特流的“高级别”部分中发送布局,以便使用时间上固定的ca布局或根据内容随时间调整布局。
[0177]
例如,在章节“利用图块的图片划分”中提供的针对360
°
视频流传输的示例中,ca对于整个cvs(编码视频序列)通常是恒定的,并且它们的大小仅需要容纳根据相同内容的不同分辨率生成的分区,例如,如图4所示。对于这种情况,ca布置信令的最合适位置是高级别语法结构(例如,参见hevc的vps、sps、pps),如后面在子小节“实施例a”和子小节“实施例b”中所述。
[0178]
然而,在其他示例中,如在用于负载平衡(例如,视频会议场景)的章节“利用图块的图片划分”中,可能希望动态的每图片划分。另外,可能发现为ca选择的初始配置不是最佳的,因此可能需要对划分进行图片内修改(在编码时)。对于这种情况,在ca布置不是先验已知的情况下,如在子小节“实施例c”中所述,相对于高级别信令(在参数集内),优选vcl(视频编码层,在条带有效载荷内)内信令。
[0179]
在以下子小节“实施例a”中,描述了按样本或按单元的位置和大小信令。
[0180]
使用ctu起始地址进行显式ca定位以选择相应的区域:
[0181]
表2
‑2[0182][0183]
图10示出根据实施例的两个编码区域,其中包括图片边界ctu的一个编码区域由非连续的ctu组成。
[0184]
原则上,上面的语法num_coding_areas_minus2可以定义除1个以外的所有ca,并且具有最后一个ca作为未被先前的ca覆盖的剩余部分。但是,这将使得ca不具有连续的ctu,如图10所示,这可能为编码/解码过程增加一些复杂性。
[0185]
因此,应添加约束以禁止这种情况,并要求语法满足一些约束:例如,给定与在ca的左上角、右上角、左下角、右下角处的ctu相对应的四个ctu(ctu
a
,ctu
b
,ctu
c
,ctu
d
),其中对于所有ctu,ctu
b
_addr

ctu
a
_addr=cawidthinnumctus_minus1并且ctu
c
_addr

ctu
a
_addr=caheightinnumctus_minus1,并且仅具有以下ctu_address的ctu应该属于剩余的ca:ctu
x
_addr=ctu
a
_addr+j+k*(cawidthinnumctus_minus1+1),其中j=0...cawidthinnumctus_minus1并且k=0...caheightinnumctus_minus1。
[0186]
备选地,可以添加可以指示/约束ca满足这样的条件的语法元素(例如“non_contiguous_remaining_coding_unit_enabled_flag”)。因此,某些配置文件可能要求不启用该标志,以防止由非连续的ca添加的复杂性。
[0187]
根据实施例,数据编码器110可以例如被配置为生成指示数据,使得指示数据包括非连续信息,所述非连续信息指示多个编码区域中的至少一个编码区域围绕多个编码区域中的另一个编码区域,还是多个编码区域中没有一个编码区域围绕另一个编码区域。图10是特定示例,其中示出两个编码区域ca1、ca2。外部编码区域ca1围绕内部编码区域ca2。
[0188]
在图10中,ca1围绕ca2。non_contiguous_remaining_coding_unit_enabled_flag可以用于提供相应的指示。
[0189]
同样地,在一个实施例中,数据解码器170可以例如被配置为使用指示以下内容的非连续信息来对编码图片数据进行解码:多个编码区域中的至少一个编码区域围绕多个编码区域中的另一个编码区域,还是多个编码区域中没有一个编码区域围绕另一个编码区域,其中,指示数据包括所述信息。
[0190]
上表中的语法在ca不是最大编码单元(例如128x128)的倍数的情况下允许灵活的信令,这对于某些应用是有益的。但是,使用样本单元发信号通知ca可能导致使用很多比特。备选地,可以在ctu中进行这种发信号通知以节省比特。问题在于,不能用信号通知不是ctu的倍数的大小。在下面提出的语法中,利用一些附加信息,可以解决该问题。
[0191]
表2
‑3[0192][0193][0194]
提议的信令指示ca的最后一个ctu行和列是否包括具有所指示的最大大小的ctu,或者指示最后一个ctu是否较小。如果较小,则指示ca的最后一个ctu行和列的大小。
[0195]
但是,如果ca的大小不是最大ctu大小的倍数(即,行或列中的最后一个ctu较小),则这可能导致每行或列具有不同数量的ctu的图片,因为ca可能具有比其他ca小的某些ctu。这种不对齐可能是不希望的,因为用于图片内预测的变量的存储通常利用ctu地址来寻址,并且每行或每列的不同数量的ctu可能会使ctu寻址不可行或过于复杂。因此,应添加如下约束:每当ca在整个ctu(或具有最大ctu大小的ctu)之前结束时,其他相邻ca应在不包括整个ctu的尺寸(水平或/和垂直的)内对齐。
[0196]
隐式定位在尚未被编码区域覆盖的最高的ctu行中的最左侧的位置处递归地开始。换句话说,例如,如果如表2

4中所示的encoding_area_explicit_positioning_flag被
设置为0,则不指示ca的起始地址,而仅指示宽度和高度,并且解码器将必须通过查找尚未被第1个...第(i

1)个ca覆盖的最小的ctu地址来导出第i个ca的起始地址。
[0197]
在一个实施例中,数据编码器110可以例如被配置为生成指示数据,使得指示数据针对编码区域指示是指示了起始地址还是没有指示所述起始地址,所述起始地址指示编码区域的一个或多个编码树单元中的一个编码树单元。特定示例可以例如是上述coding_area_ctu_start_address。
[0198]
同样地,根据实施例,数据解码器170可以例如被配置为使用以下指示来对编码图片数据进行解码:针对编码区域,是指示了起始地址还是没有指示起始地址,所述起始地址指示编码区域的一个或多个编码树单元中的一个编码树单元。如果没有指示指示所述编码区域的一个或多个编码树单元中的所述一个编码树单元的起始地址,则数据解码器170可以例如被配置为根据所述编码区域的编码区域宽度和编码区域高度,并根据所述编码区域的编码区域扫描方向,来确定指示所述编码区域的一个或多个编码树单元中的所述一个编码树单元的起始地址。
[0199]
上述两个表中的语法都包括encoding_area_start_address[i],它在原则上简化了解析器的操作,但是在某种程度上是可以简单地从信号通知的大小中导出的“冗余”信息。因此,两个表都可以与提供的表相同,但没有该语法元素,其中地址被导出为“尚未被编码区域覆盖的最高的ctu行中的最左侧的位置”。
[0200]
对于更高的图片分辨率,附加的步长可能有助于缩放ca划分的宽度和高度,以及可用的位置代码。
[0201]
表2
‑4[0202][0203]
将如下导出最终ca位置和大小:
[0204]
coding_area_width_in_ctu=coding_area_width_in_units*
[0205]
(coding_area_unit_scaling_factor_minus1+1)
[0206]
coding_area_height_in_ctu=coding_area_height_in_units*
[0207]
(coding_area_unit_scaling_factor_minus1+1)
[0208]
pic_width_in_units=
[0209]
(pic_width_in_ctu+coding_area_unit_scaling_factor_minus1)
[0210]
/(coding_area_unit_scaling_factor_minus1+1)
[0211]
coding_area_ctu_start_address=
[0212]
(coding_area_unit_scaling_factor_minus1+1)
[0213]
*((coding_area_start_address_in_units%pic_width_in_units)+
[0214]
(coding_area_ctu_start_address_unit/pic_width_in_units)*
[0215]
picture_width_in_ctu))
[0216]
表2
‑5[0217][0218]
coding_area_scaling_factor_minus1用于对ca位置和大小参数进行缩放的缩放因子
[0219]
coding_area_top_left_ctu_address_in_units[i]ctu在ca的左上边界处的地址。地址按单位给出,并且必须根据coding_area_scaling_factor_minus1+1进行缩放以获得ctu地址
[0220]
coding_area_width_in_units[i]按单位的ca的宽度,其必须根据coding_area_scaling_factor_minus1+1缩放,以获取ctu中的ca宽度。
[0221]
coding_area_height_in_units[i]按单位的ca的高度,其必须根据coding_area_scaling_factor_minus1+1进行缩放,以获取ctu中的ca宽度。
[0222]
概述以上概念:
[0223]
在实施例中,数据编码器110可以例如被配置为生成指示数据,使得指示数据针对多个编码区域中的一个编码区域以编码树单元来指示编码区域宽度,编码区域宽度指定其中一个编码区域内的在水平方向上布置的编码树单元的数量。特定示例可以例如是上述coding_area_width_in_ctu。
[0224]
根据实施例,数据编码器110可以例如被配置为生成指示数据,使得指示数据针对多个编码区域中的一个编码区域以编码树单元来指示编码区域高度,编码区域高度指定其中一个编码区域内的在竖直方向上布置的编码树单元的数量。特定示例可以例如是上述coding_area_height_in_ctu。
[0225]
在实施例中,数据编码器110可以例如被配置为生成指示数据,使得指示数据针对多个编码区域中的编码区域指示该编码区域内的水平方向上的最后一个编码树单元是否小于该编码区域的在水平方向上位于该编码树单元之前的另一个编码树单元。
[0226]
在特定实施例中,所述编码区域可以例如包括水平方向上的多个最后编码树单元,水平方向上的所述最后一个编码树单元是水平方向上的所述多个最后编码树单元中的一个编码树单元。如果该编码区域内的水平方向上的最后一个编码树单元小于该编码区域的在水平方向上位于该最后一个编码树单元之前的另一个编码树单元,则多个最后编码树单元中的每个最后编码树单元在水平方向上可以例如具有相同的宽度。
[0239][0240]
表2
‑7[0241][0242]
分层级ca划分的第二个变体是以大体统一的单位来发送编码区域分割位置值。单
位尺寸可以通过将已解析的原始图片大小用特定因子进行缩放来导出,该因子也在参数集中用信号通知。在此,划分的粒度是变化的,并且取决于在编码器侧选择的单位大小。
[0243]
表2_8
[0244][0245]
表2
‑9[0246]
[0247]
将如下导出最终ca位置和大小:
[0248]
unitwidth=pic_width_in_luma_samples/picwidthinunits;
[0249]
unitheight=pic_height_in_luma_samples/picheightinunits;
[0250]
codingareawidth[areaidx]=codingareawidthinunits[areaidx]*
[0251]
unitwidth
[0252]
codingareaheight[areaidx]=codingareaheightinunits[areaidx]*
[0253]
unitheight
[0254]
codingareaposx[areaidx]=codingareaposunitx[areaidx]*
[0255]
unitwidth
[0256]
codingareaposy[areaidx]=codingareaposunity[areaidx]*
[0257]
unitheight
[0258]
coding_area_start_address[areaidx]=codingareaposy[areaidx]*
[0259]
picwidthinctbsy+codingareaposx[areaidx]
[0260]
分层级ca划分的优势在于,对于某些划分场景,该方法可能需要较少的比特来进行信号通知。此外,这增强了共享一些边界的ca或一组ca之间的某种类型的对齐,这对于一些实施方式可能是有益的。
[0261]
发送信号可以被约束为仅针对rap是可能的,并且从那里继承以用于后续图片。
[0262]
比特流中的指示布局的附加标志被重传。否则,使用先前的ca布局,可以通过比特流发送的索引从一组先前发送的ca布局中选择该先前的ca布局。
[0263]
概述以上内容:
[0264]
根据实施例,数据编码器110可以例如被配置为生成指示数据,使得与多个编码区域有关的信息包括与如何将图片分割一次或多次以通过将图片分割一次或多次来获得多个编码区域有关的信息。
[0265]
根据实施例,数据编码器110可以例如被配置为生成指示数据,使得指示数据指示多个编码区域分割位置。
[0266]
根据实施例,数据编码器110可以例如被配置为生成指示数据,使得指示数据将多个编码区域分割位置指示为有序序列。
[0267]
根据实施例,数据编码器110可以例如被配置为生成指示数据,使得指示数据将多个编码区域分割位置指示为多个编码区域分割位置值,其中,多个编码区域分割位置值中的每个都取决于图片的宽度或取决于图片的高度。
[0268]
根据实施例,数据编码器110可以例如被配置为生成指示数据,使得与多个编码区域有关的信息包括与如何将图片分层级地分割一次或多次以通过将图片分层级地分割一次或多次来获得多个编码区域有关的信息。
[0269]
根据实施例,数据解码器170可以例如被配置为使用与如何将图片分割一次或多次以通过将图片分割一次或多次来获得多个编码区域有关的信息,来对编码图片数据进行解码,其中,指示数据可以例如包括所述信息。
[0270]
根据实施例,数据解码器170可以例如被配置为使用指示多个编码区域分割位置的信息来对编码图片数据进行解码,其中,指示数据可以例如包括所述信息。
[0271]
根据实施例,数据解码器170可以例如被配置为使用将多个编码区域分割位置指
示为有序序列的信息,来对编码图片数据进行解码,其中,指示数据可以例如包括所述信息。
[0272]
根据实施例,数据解码器170可以例如被配置为使用将多个编码区域分割位置指示为多个编码区域分割位置值的信息,来对编码图片数据进行解码,其中,多个编码区域分割位置值中的每个都取决于图片的宽度或取决于图片的高度,其中,指示数据可以例如包括所述信息。
[0273]
根据实施例,数据解码器170可以例如被配置为使用与多个编码区域有关的、包括与如何将图片分层级地分割一次或多次以通过将图片分层级地分割一次或多次来获得多个编码区域有关的信息的信息,来对编码图片数据进行解码,其中,指示数据可以例如包括所述信息。
[0274]
现在将提供另外的示例,该另外的示例与以下内容有关:数据编码器110可以例如如何被配置为生成指示数据,使得与多个编码区域有关的信息包括与如何将图片分割一次或多次以通过将图片分割一次或多次来获得多个编码区域有关的信息。
[0275]
具体地,提供另外的示例,该另外的示例与以下内容有关:数据编码器110可以例如如何被配置为生成指示数据,使得与多个编码区域有关的信息包括与如何将图片分层级地分割一次或多次以通过将图片分层级地分割一次或多次来获得多个编码区域有关的信息。
[0276]
此外,提供另外的示例,该另外的示例与以下内容有关:数据解码器170可以例如如何被配置为使用与如何将图片分割一次或多次以通过将图片分割一次或多次来获得多个编码区域有关的信息,来对编码图片数据进行解码,其中,指示数据包括所述信息。
[0277]
具体地,提供另外的示例,该另外的示例与以下内容有关:数据解码器170可以例如如何被配置为使用与多个编码区域有关的、包括与如何将图片分层级地分割一次或多次以通过将图片分层级地分割一次或多次来获得多个编码区域有关的信息的信息,来对编码图片数据进行解码,其中,指示数据可以例如包括所述信息。
[0278]
此外,提供另外的示例,该另外的示例与以下内容有关:编码视频信号的指示数据可以例如如何指示如何将图片分割一次或多次,以通过将图片分割所述一次或多次来获得多个编码区域。
[0279]
此外,具体地,提供另外的示例,该另外的示例与以下内容有关:如何将图片分层级地分割一次或多次,以通过将图片分层级地分割一次或多次来获得多个编码区域。
[0280]
在一些实施例中,数据编码器110和/或数据解码器170可以例如在第一步骤中被配置为
[0281]

在水平和竖直方向上分割图片以获得图片的第一划分,以及
[0282]

在第二步骤中被配置为(仅)在水平方向上分割图片的第一划分以获得图片的第二划分。
[0283]
在图27中,在第一步骤中,在水平和竖直方向上分层级地分割图片以获得图片的第一划分(例如,图块分割)(图27,步骤1),并且在第二步骤中,仅在水平方向上分层级地分割图片,以获得图片的第二划分(例如,砖块分割)(图27,步骤2)。
[0284]
在一些实施例中,数据编码器110和/或数据解码器170可以例如在第一步骤中被配置为
[0285]

在水平和竖直方向上分割图片以获得图片的第一划分,以及
[0286]

在第二步骤中被配置为(仅)在竖直方向上分割图片的第一划分以获得图片的第二划分。
[0287]
在图28中,在第一步骤中,在水平和竖直方向上分层级地分割图片以获得图片的第一划分(例如,图块分割)(图28,步骤1),并且在第二步骤中,仅在竖直方向上分层级地分割图片,以获得图片的第二划分(例如,砖块分割)(图28,步骤2)。
[0288]
在一些其他实施例中,数据编码器110和/或数据解码器170可以例如在第一步骤中被配置为
[0289]

(仅)在水平方向上分割图片以获得图片的第一划分,以及
[0290]

在第二步骤中被配置为(仅)在竖直方向上分割图片的第一划分以获得图片的第二划分。
[0291]
在图29中,在第一步骤中,仅在水平方向上分层级地分割图片以获得图片的第一划分(例如,图块分割)(图29,步骤1),并且在第二步骤中,仅在竖直方向上分层级地分割图片,以获得图片的第二划分(例如,砖块分割)(图29,步骤2)。
[0292]
在又一些其他实施例中,数据编码器110和/或数据解码器170可以例如在第一步骤中被配置为
[0293]

(仅)在竖直方向上分割图片以获得图片的第一划分,以及
[0294]

在第二步骤中被配置为(仅)在水平方向上分割图片的第一划分以获得图片的第二划分。
[0295]
在图30中,在第一步骤中,仅在竖直方向上分层级地分割图片以获得图片的第一划分(例如,图块分割)(图30,步骤1),并且在第二步骤中,仅在水平方向上分层级地分割图片,以获得图片的第二划分(例如,砖块分割)(图30,步骤2)。
[0296]
在实施例中,在以下用于图片参数集rbsp语法的代码中,brick_split_flag[i]和num_brick_rows_minus1[i]参数实现了如何将图片分层级地分割一次或多次以获得多个编码区域的示例性方式。
[0297]
例如,图片可以划分为个图片、条带、图块、砖块和ctu。
[0298]
图片可以例如被分为一个或多个条带行和一个或多个图块列。图块是覆盖图片的矩形区的一系列ctu。
[0299]
图块被分为一个或多个砖块,每个砖块由该图块内的多个ctu组成。
[0300]
没有被划分为多个砖块的图块也称为砖块。然而,是图块的真子集的砖块不被称为图块。
[0301]
条带包含图片的多个图块,或包含图块的多个砖块。
[0302]
支持条带的两种模式,即光栅扫描条带模式和矩形条带模式。在光栅扫描条带模式中,条带以图片的图块光栅扫描包含一系列图块。在矩形条带模式中,条带包含图片的多个砖块,这些砖块共同形成图片的矩形区。矩形条带中的砖块按照条带的砖块光栅扫描的顺序。
[0303]
图26示出图片被划分为图块、砖块和矩形条带的示例,其中该图片分为4个图块(2个图块列和2个图块行),11个砖块(左上角的图块包含1个砖块,右上角的图块包含5个砖块,左下角的图块包含2个砖块,并且右下角的图块包含3个砖块)和4个矩形条带。
[0304]
在下文,brick_split_flag[i]等于1指定第i个图块被分为两个或多个砖块。brick_split_flag[i]等于0指定第i个图块未被分为两个或更多个砖块。当不存在时,将brick_split_flag[i]的值推断为等于0。
[0305]
此外,在下文中,当uniform_brick_spacing_flag[i]等于0时,num_brick_rows_minus1[i]加1指定划分第i个图块的砖块的数量。当存在时,num_brick_rows_minus1[i]的值应在1到rowheight[i]

1(包括1和rowheight[i]

1)的范围内。如果brick_split_flag[i]等于0,则将num_brick_rows_minus1[i]的值推断为等于0。否则,当uniform_brick_spacing_flag[i]等于1时,推断num_brick_rows_minus1[i]的值(例如,如下面有关ctb光栅扫描、图块扫描和砖块扫描过程所指定的那样)。
[0306]
因此,利用brick_split_flag[i]和num_brick_rows_minus1[i]并实现一种关于如何将图片分层级地分割一次或多次以获得多个编码区域的示例性方式。图块可以例如被分成两个或更多个砖块,其可以例如由多个ctu行组成。
[0307]
更详细地,ctb光栅扫描、图块扫描和砖块扫描过程可以例如如下进行:
[0308]
导出以ctb为单位指定第i个图块列的列表colwidth[i](i的范围从0到num_tile_columns_minus1,包括0和num_tile_columns_minus1),并且当uniform_tile_spacing_flag等于1时,如下推断num_tile_columns_minus1的值:
[0309][0310]
导出以ctb为单位指定第j个图块行的高度的列表rowheight[j](j的范围从0到num_tile_rows_minus1,包括0和num_tile_rows_minus1),并且当uniform_tile_spacing_
flag等于1时,如下推断num_tile_rows_minus1的值:
[0311][0312]
如下导出以ctb为单位指定第i个图块列边界的位置的列表tilecolbd[i](i的范围从0到num_tile_columns_minus1+1,包括0和num_tile_columns_minus1+1):
[0313]
for(tilecolbd[0]=0,i=0;i<=num_tile_columns_minus1;i++)
[0314]
tilecolbd[i+1]=tilecolbd[i]+colwidth[i]
ꢀꢀꢀ
(6

3)
[0315]
如下导出以ctb为单位指定第j个图块行边界的位置的列表tilerowbd[j](j的范围从0到num_tile_rows_minus1+1,包括0和num_tile_rows_minus1+1):
[0316]
for(tilerowbd[0]=0,j=0;j<=num_tile_rows_minus1;j++)
[0317]
tilerowbd[j+1]=tilerowbd[j]+rowheight[j]
ꢀꢀꢀꢀ
(6

4)
[0318]
导出以下项:变量numbricksinpic,其指定引用pps的图片中的砖块的数量,以ctb为单位指定竖直砖块边界的位置、以ctb为单位指定水平砖块边界的位置、以ctb为单位指定砖块的宽度以及以ctb为单位指定砖块的高度的列表brickcolbd[brickidx]、brickrowbd[brickidx]、brickwidth[brickidx]和brickheight[brickidx],brickidx的范围从0到numbricksinpic(包括0和numbricksinpic),并且对于范围从0到numtilesinpic

1(包含0和numtilesinpic

1)的每个i,当uniform_brick_spacing_flag[i]等于1时,如下推断num_brick_rows_minus1[i]的值:
[0319]
[0320][0321]
如下导出指定从处于图片的ctb光栅扫描的ctb地址到处于砖块扫描的ctb地址的转换的列表ctbaddrrstobs[ctbaddrrs](ctbaddrrs的范围从0到picsizeinctbsy

1,包括0和picsizeinctbsy

1):
[0322]
[0323][0324]
如下导出指定从处于砖块扫描的ctb地址到处于图片的ctb光栅扫描的ctb地址的转换的列表ctbaddrbstors[ctbaddrbs](ctbaddrbs的范围从0到picsizeinctbsy_1,包括0和picsizeinctbsy

1):
[0325]
for(ctbaddrrs=0;ctbaddrrs<picsizeinctbsy;ctbaddrrs++)
ꢀꢀꢀꢀꢀ
(6

7)
[0326]
ctbaddrbstors[ctbaddrrstobs[ctbaddrrs]]=ctbaddrrs
[0327]
如下导出指定从处于砖块扫描的ctb地址到砖块id的转换的列表brickid[ctbaddrbs](ctbaddrbs的范围从0到picsizeinctbsy

1,包括0和picsizeinctbsy

1):
[0328][0329]
如下导出指定从砖块索引到砖块中ctu数量的转换的列表numctusinbrick[brickidx](brickidx的范围从0到numbricksinpic

1,包括0和numbricksinpic

1):
[0330]
for(i=0;i<numbricksinpic;i++)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6

9)
[0331]
numctusinbrick[i]=brickwidth[i]*brickheight[i]
[0332]
如下导出指定从砖块id到处于砖块中第一ctb的砖块扫描的ctb地址的转换的列表firstctbaddrbs[brickidx](brickidx的范围从0到numbricksinpic

1,包括0和numbricksinpic

1):
[0333][0334]
图片参数集rbsp语法
[0335]
[0336]
[0337][0338]
在上面的代码中,图片参数集rbsp语义可以例如定义如下:
[0339]
pps_pic_parameter_set_id标识供其他语法元素参考的pps。pps_pic_parameter_set_id的值应在0到63的范围内(包括0和63)。
[0340]
pps_seq_parameter_set_id指定针对有效sps的sps_seq_parameter_set_id的值。pps_seq_parameter_set_id的值应在0到15的范围内(包括0和15)。
[0341]
output_flag_present_flag等于1指示pic_output_flag语法元素存在于引用pps的条带头部中。output_flag_present_flag等于0指示在引用pps的条带头部中没有pic_output_flag语法元素。
[0342]
single_tile_in_pic_flag等于1指定每张图片中只有一个图块引用了pps。single_tile_in_pic_flag等于0指定每张图片中引用pps的图块不止一个。
[0343]
注意

在图块内没有另外的砖块分割时,整个图块被称为砖块。当图片仅包含单个图块而没有进一步的砖块分割时,其称为单个砖块。
[0344]
对于在cvs中激活的所有pps,single_tile_in_pic_flag的值应相同。
[0345]
uniform_tile_spacing_flag等于1指定图块列边界以及同样地图块行边界在图片中均匀分布,并使用语法元素tile_cols_width_ninus1和tile_rows_height_minus1来发信号通知。uniform_tile_spacing_flag等于0指定图块列边界以及同样地图块行边界可以在图片中均匀分布,也可以在图片中不均匀分布,并使用语法元素num_tile_columns_minus1和num_tile_rows_minus1以及语法元素对tile_column_width_minus1[i]和tile_row_height_minus1[i]的列表来发信号通知。
[0346]
如果不存在,则将uniform_tile_spacing_flag的值推断为等于1。
[0347]
当uniform_tile_spacing_flag等于1时,tile_cols_width_minus1加1指定以ctb为单位的除图片的最右侧的图块列以外的图块列的宽度。tile_cols_width_minus1的值应在0到picwidthinctbsy

1的范围内,包含0和picwidthinctbsy

1。如果不存在,则推断tile_cols_width_minus1的值等于picwidthinctbsy

1。
[0348]
当uniform_tile_spacing_flag等于1时,tile_rows_height_minus1加1指定以ctb为单位的除图片的底部图块行以外的图块行的高度。tile_rows_height_minus1的值应在0到picheightinctbsy

1的范围内,包含0和picheightinctbsy

1。如果不存在,则推断tile_rows_height_minus1的值等于picheightinctbsy

1。
[0349]
当uniform_tile_spacing_flag等于0时,num_tile_columns_minus1加1指定对图片进行划分的图块列的数量。num_tile_columns_minus1的值应在0到picwidthinctbsy

1的范围内,包含0和picwidthinctbsy

1。如果single_tile_in_pic_flag等于1,则推断num_tile_columns_minus1的值等于0。否则,当uniform_tile_spacing_flag等于1时,推断num_tile_columns_minus1的值(例如,如以上关于ctb光栅扫描、图块扫描和砖块扫描过程所指定的那样)。
[0350]
当uniform_tile_spacing_flag等于0时,num_tile_rows_minus1加1指定对图片进行划分的图块行的数量。num_tile_rows_minus1的值应在0到picheightinctbsy

1的范围内,包含0和picheightinctbsy

1。如果single_tile_in_pic_flag等于1,则推断num_tile_rows_minus1的值等于0。否则,当uniform_tile_spacing_flag等于1时,推断num_tile_rows_minus1的值(例如,如下面关于ctb光栅扫描、图块扫描和砖块扫描过程所指定的那样)。
[0351]
变量numtilesinpic被设置为等于(num_tile_columns_minus1+1)*(num_tile_rows_minus1+1)。
[0352]
当single_tile_in_pic_flag等于0时,numtilesinpic应大于1。
[0353]
tile_column_width_minus1[i]加1指定以ctb为单位的第i个图块列的宽度。
[0354]
tile_row_height_minus1[i]加1指定以ctb为单位的第i个图块行的高度。
[0355]
brick_splitting_present_flag等于1指定可以将引用pps的图片的一个或多个图块分为两个或多个砖块。brick_splitting_present_flag等于0指定没有将引用pps的图
片的图块分为两个或更多个砖块。
[0356]
brick_split_flag[i]等于1指定将第i个图块分为两个或更多个砖块。brick_split_flag[i]等于0表示没有将第i个图块分为两个或更多个砖块。当不存在时,将brick_split_flag[i]的值推断为等于0。
[0357]
uniform_brick_spacing_flag[i]等于1指定水平砖块边界在第i个图块上均匀分布,并使用语法元素brick_height_minus1[i]来发信号通知。uniform_brick_spacing_flag[i]等于0指定水平砖块边界可以在第i个图块上均匀分布也可以在第i个图块上不均匀分布,并使用语法元素num_brick_rows_minus1[i]和语法元素列表brick_row_height_minus1[i][j]来发信号通知。如果不存在,则将uniform_brick_spacing_flag[i]的值推断为等于1。
[0358]
当uniform_brick_spacing_flag[i]等于1时,brick_height_minus1[i]加1指定以ctb为单位的除第i个图块中的底部砖块以外的砖块行的高度。当存在时,brick_height_minus1的值应在0到rowheight[i]

2的范围内,包括0和rowheight[i]

2。如果不存在,则将brick_height_minus1[i]的值推断为等于rowheight[i]
‑1[0359]
当uniform_brick_spacing_flag[i]等于0时,num_brick_rows_minus1[i]加1指定划分第i个图块的砖块的数量。当存在时,num_brick_rows_minus1[i]的值应在1到rowheight[i]

1(包括1和rowheight[i]

1)的范围内。如果brick_split_flag[i]等于0,则将num_brick_rows_minus1[i]的值推断为等于0。否则,当uniform_brick_spacing_flag[i]等于1时,推断num_brick_rows_minus1[i]的值(例如,如以上关于ctb光栅扫描、图块扫描和砖块扫描过程所指定的那样)。
[0360]
当uniform_tile_spacing_flag等于0时,brick_row_height_minus1[i][j]加1指定以ctb为单位的第i个图块中的第j个砖块的高度。
[0361]
推导以下变量,并且当uniform_tile_spacing_flag等于1时,推断num_tile_columns_minus1和num_tile_rows_minus1的值,并且对于范围从0到numtilesinpic

1(包括0和numtilesinpic

1)的每个i,当uniform_brick_spacing_flag[i]等于1时,通过调用ctb光栅和砖块扫描转换过程(例如,如上面关于ctb光栅扫描、图块扫描和砖块扫描过程所指定的那样)来推断num_brick_rows_minus1[i]的值。
[0362]

以ctb为单位指定第j个图块行的高度的列表rowheight[j],j的范围从0到num_tile_rows_minus1,包含0到numtilesinpic

1,
[0363]

指定从处于图片的ctb光栅扫描的ctb地址到处于砖块扫描的ctb地址的转换的列表ctbaddrrstobs[ctbaddrrs],ctbaddrrs的范围从0到picsizeinctbsy

1,包括0和picsizeinctbsy

1,
[0364]

指定从处于砖块扫描的ctb地址到处于图片的ctb光栅扫描的ctb地址的转换的列表ctbaddrbstors[ctbaddrbs],ctbaddrbs的范围从0到picsizeinctbsy

1,包括0和picsizeinctbsy

1,
[0365]

指定从处于砖块扫描的ctb地址到砖块id的转换的列表brickid[ctbaddrbs],ctbaddrbs的范围从0到picsizeinctbsy

1,包括0和picsizeinctbsy

1,
[0366]

指定从砖块索引到砖块中ctu数量的转换的列表numctusinbrick[brickidx],brickidx的范围从0到numbricksinpic

1,包括0和numbricksinpic

1,
[0367]

指定从砖块id到处于砖块中第一ctb的砖块扫描的ctb地址的转换的列表firstctbaddrbs[brickidx],brickidx的范围从0到numbricksinpic

1,包括0和numbricksinpic

1。
[0368]
single_brick_per_slice_flag等于1指定引用此pps的每个条带都包括一个砖块。single_brick_per_slice_flag等于0指定引用此pps的条带可以包括不止一个砖块。如果不存在,则将single_brick_per_slice_flag的值推断为等于1。
[0369]
rect_slice_flag等于0指定每个条带中的砖块均处于光栅扫描顺序,并且未在pps中发信号通知条带信息。rect_slice_flag等于1指定每个条带中的砖块覆盖图片的矩形区,并且在pps中发信号通知条带信息。如果不存在,则将rect_slice_flag推断为等于1。
[0370]
num_slices_in_pic_minus1加1指定引用pps的每张图片中的条带的数量。num_slices_in_pic_minus1的值应在0到numbricksinpic

1的范围内,包括0和numbricksinpic

1。如果不存在并且single_brick_per_slice_flag等于1,则推断num_slices_in_pic_minus1的值等于numbricksinpic

1。
[0371]
top_left_brick_idx[i]指定位于第i个条带的左上角的砖块的砖块索引。对于任何不等于j的i,top_left_brick_idx[i]的值不应等于top_left_brick_idx[j]的值。如果不存在,则推断top_left_brick_idx[i]的值等于i。top_left_brick_idx[i]语法元素的长度为ceil(log2(numbricksinpic)个比特。
[0372]
bottom_right_brick_idx_delta[i]指定位于第i个条带的右下角的砖块的砖块索引与top_left_brick_idx[i]之间的差。当single_brick_per_slice_flag等于1时,将bottom_right_brick_idx_delta[i]的值推断为等于0。bottom_right_brick_idx_delta[i]语法元素的长度为ceil(log2(numbricksinpic

top_left_brick_idx[i]))个比特。
[0373]
条带应包括多个完整的图块,或仅包括一个图块的完整砖块的连续序列。
[0374]
如下导出指定第i个条带中砖块的数量以及砖块到条带的映射的变量numbricksinslice[i]和brickstoslicemap[j]:
[0375][0376]
loop_filter_across_bricks_enabled_flag等于1指定可以在引用pps的图片中
跨砖块边界执行环路滤波操作。loop_filter_across_bricks_enabled_flag等于0指定在引用pps的图片中不跨砖块边界执行环路滤波操作。环路滤波操作包括去块滤波器、样本自适应偏移滤波器和自适应环路滤波器操作。如果不存在,则将loop_filter_across_bricks_enabled_flag的值推断为等于1。
[0377]
loop_filter_across_slice_enabled_flag等于1指定可以在引用pps的图片中跨条带边界执行环路滤波操作。loop_filter_across_slice_enabled_flag等于0指示在引用pps的图片中不跨条带边界执行环路滤波操作。环路滤波操作包括去块滤波器、样本自适应偏移滤波器和自适应环路滤波器操作。如果不存在,则将loop_filter_across_slices_enabled_flag的值推断为等于0。
[0378]
signalled_slice_id_flag等于1指定发信号通知每个条带的条带id。signalled_slice_id_flag等于0指定不发信号通知条带id。当rect_slice_flag等于0时,则将signalled_slice_id_flag的值推断为等于0。
[0379]
signalled_slice_id_length_minus1加1指定用于表示语法元素slice_id[i](如果存在)以及条带头部中的语法元素slice_address的比特的数量。signalled_slice_id_length_minus1的值应在0到15的范围内,包含0和15。如果不存在,则将signalled_slice_id_length_minus1的值推断为等于ceil(log2(num_slices_in_pic_minus1+1))

1。
[0380]
slice_id[i]指定第i个条带的条带id。slice_id[i]语法元素的长度是signalled_slice_id_length_minus1+1个比特。如果不存在,则对于范围在0到num_slices_in_pic_minus1(包含0和num_slices_in_pic_minus1)的每个i,将slice_id[i]的值推断为等于i。
[0381]
entropy_coding_sync_enabled_flag等于1指定在对包括引用pps的每个图片中的每个砖块中的一行ctb中的第一个ctb的ctu进行解码之前,调用针对上下文变量的特定同步过程,并且在对包括引用pps的每个图片中的每个砖块中的一行ctb中的第一个ctb的ctu进行解码之后,调用针对上下文变量的特定存储过程。entropy_coding_sync_enabled_flag等于0指定在对包括引用pps的每个图片中的每个砖块中的一行ctb中的第一个ctb的ctu进行解码之前,可以例如不需要调用针对上下文变量的特定同步过程,并且在对包括引用pps的每个图片中的每个砖块中的一行ctb中的第一个ctb的ctu进行解码之后,可以例如不需要调用针对上下文变量的特定存储过程。
[0382]
针对在cvs中激活的所有pps,entropy_coding_sync_enabled_flag的值应相同。
[0383]
cabac_init_present_flag等于1指定在引用pps的条带头部中存在cabac_init_flag。cabac_init_present_flag等于0指定在引用pps的条带头部中不存在cabac_init_flag。
[0384]
num_ref_idx_default_active_minus1[i]加1当i等于0时指定在num_ref_idx_active_override_flag等于0的情况下针对p或b条带的变量numrefidxactive[0]的推断值,当i等于1时指定在num_ref_idx_active_override_flag等于0的情况下针对b条带的numrefidxactive[1]的推断值。num_ref_idx_default_active_minus1[i]的值应当在0到14的范围内,包括0和14。
[0385]
rpl1_idx_present_flag等于0指定在条带头部中不存在ref_pic_list_sps_flag[1]和ref_pic_list_idx[1]。rpl1_idx_present_flag等于1指定在条带头部中可能存在
ref_pic_list_sps_flag[1]和ref_pic_list_idx[1]。
[0386]
init_qp_minus26加26指定针对引用pps的每个条带的sliceqp
y
的初始值。当解码出slice_qp_delta的非零值时,sliceqp
y
的初始值将在条带层进行修改。init_qp_minus26的值应当在

(26+qpbdoffset
y
)到+37的范围内,包括

(26+qpbdoffset
y
)和+37。
[0387]
transform_skip_enabled_flag等于1指定在变换单元语法中可以存在transform_skip_flag。transform_skip_enabled_flag等于0指定在变换单元语法中不存在transform_skip_flag。
[0388]
log2_transform_skip_max_size_minus2指定用于变换跳过的最大块大小,并且应在0到3的范围内。
[0389]
如果不存在,则将log2_transform_skip_max_size_minus2的值推断为等于0。
[0390]
变量maxtssize被设置为等于1<<(log2_transform_skip_max_size_minus2+2)。
[0391]
cu_qp_delta_enabled_flag等于1指定在pps中存在cu_qp_delta_subdiv语法元素,并且可能在变换单元语法中存在cu_qp_delta_abs。cu_qp_delta_enabled_flag等于0指定在pps中不存在cu_qp_delta_subdiv语法元素,并且在变换单元语法中不存在cu_qp_delta_abs
[0392]
cu_qp_delta_subdiv指定传送cu_qp_delta_abs和cu_qp_delta_sign_flag的编码单元的最大cbsubdiv值。如下指定cu_qp_delta_subdiv的值范围:
[0393]

如果slice_type等于i,则cu_qp_delta_subdiv的值应在0到2*(log2_ctu_size_minus2

log2_min_qt_size_intra_slice_minus2+maxmttdepthy)的范围内,包括0和
[0394]
2*(log2_ctu_size_minus2

log2_min_qt_size_intra_slice_minus2+maxmttdepthy)。
[0395]

否则(slice_type不等于i),cu_qp_delta_subdiv的值应在0到2*(log2_ctu_size_minus2

log2_min_qt_size_inter_slice_minus2+maxmttdepthy)的范围内,包括2和
[0396]
2*(log2_ctu_size_minus2

log2_min_qt_size_inter_slice_minus2+maxmttdepthy)。
[0397]
如果不存在,则推断cu_qp_delta_subdiv的值等于0。
[0398]
[版本(bb):这里的问题是maxmttdepthy是在条带级别上导出的。在partition_constraints_override_enabled_flag等于1的情况下,需要解析条带头部以便知道maxmttdepthy的值。
[0399]
pps_cb_qp_offsethe和pps_cr_qp_offset指定与分别用于导出qp

cb
和qp

cr
的亮度量化参数qp

y
的偏移。pps_cb_qp_offset和pps_cr_qp_offset的值应在

12至+12的范围内,包括

12和+12。当chromaarraytype等于0时,在解码过程中不使用pps_cb_qp_offset和pps_cr_qp_offset,并且解码器应忽略其值。
[0400]
pps_slice_chroma_qp_offsets_present_flag等于1指示在相关联的条带头部中存在slice_cb_qp_offset和slice_cr_qp_offset语法元素。pps_slice_chroma_qp_offsets_present_flag等于0指示在相关联的条带头部中不存在这些语法元素。当chromaarraytype等于0时,pps_slice_chroma_qp_offsets_present_flag应等于0。
[0401]
weighted_pred_flag等于0指定不将加权预测应用于p条带。weighted_pred_flag
等于1指定将加权预测应用于p条带。
[0402]
weighted_bipred_flag等于0指定将默认的加权预测应用于b条带。weighted_bipred_flag等于1指定将加权预测应用于b条带。
[0403]
deblocking_filter_control_present_flag等于1指定在pps中存在去块滤波器控制语法元素。deblocking_filter_control_present_flag等于0指定在pps中不存在去块滤波器控制语法元素。
[0404]
deblocking_filter_override_enabled_flag等于1指定在引用pps的图片的条带头部中存在deblocking_filter_override_flag。deblocking_filter_override_enabled_flag等于0指定在引用pps的图片的条带头部中不存在deblocking_filter_override_flag。如果不存在,则将deblocking_filter_override_enabled_flag的值推断为等于0。
[0405]
pps_deblocking_filter_disabled_flag等于1指定针对引用其中不存在slice_deblocking_filter_disabled_flag的pps的条带,不应用去块滤波器的操作。pps_deblocking_filter_disabled_flag等于0指定针对引用其中不存在slice_deblocking_filter_disabled_flag的pps的条带,应用去块滤波器的操作。如果不存在,则将pps_deblocking_filter_disabled_flag的值推断为等于0。
[0406]
pps_beta_offset_div2和pps_tc_offset_div2指定应用于引用pps的条带的β和tc(除以2)的默认去块参数偏移,除非通过存在于引用pps的条带的条带头部中的去块参数偏移来覆盖(override)该默认去块参数偏移。pps_beta_offset_div2和pps_tc_offset_div2的值应当在

6到6的范围内,包括

6和6。如果不存在,则将pps_beta_offset_div2和pps_tc_offset_div2的值推断为等于0。
[0407]
pps_beta_offset_div2和pps_tc_offset_div2等于1指定在引用pps的图片中的虚拟边界上禁用环路滤波操作。pps_loop_filter_across_virtual_boundaries_disabled_flag等于0指定在引用pps的图片中不禁用环路滤波操作。环路滤波操作包括去块滤波器、样本自适应偏移滤波器和自适应环路滤波器操作。如果不存在,则将pps_loop_filter_across_virtual_boundaries_disabled_flag的值推断为等于0。
[0408]
pps_num_ver_virtual_boundaries指定pps中存在的pps_virtual_boundaries_pos_x[i]语法元素的数量。当不存在pps_num_ver_virtual_boundaries时,将其推断为等于0。
[0409]
pps_virtual_boundaries_pos_x[i]用于计算ppsvirtualboundariesposx[i]的值,其指定以亮度样本为单位的第i个竖直虚拟边界的位置。用于表示pps_virtual_boundaries_pos_x[i]的比特的数量是ceil(log2(pic_width_in_luma_samples)

3)。pps_virtual_boundaries_pos_x[i]应当在1到ceil(pic_width_in_luma_sample
÷
8)

1的范围内,包括1和ceil(pic_width_in_luma_samples
÷
8)

1。
[0410]
如下导出竖直虚拟边界的位置ppsvirtualboundariesposx[i]:ppsvirtualboundariesposx[i]=pps_virtual_boundaries_pos_x[i]*8(7

36)
[0411]
任何两个竖直虚拟边界之间的距离应大于或等于ctbsizey个亮度样本。
[0412]
pps_num_hor_virtual_boundaries指定pps中存在的pps_virtual_boundaries_pos_y[i]语法元素的数量。如果不存在pps_num_hor_virtual_boundaries,则将其推断为等于0。
[0413]
pps_virtual_boundaries_pos_y[i]用于计算ppsvirtualboundariesposy[i]的值,其指定以亮度样本为单位的第i个水平虚拟边界的位置。用于表示pps_virtual_boundaries_pos_y[i]的比特的数量是ceil(log2(pic_height_in_luma_samples)

3)。pps_virtual_boundaries_pos_y[i]应当在1到ceil(pic_height_in_luma_samples
÷
8)

1的范围内,包括1和ceil(pic_height_in_luma_samples
÷
8)

1。
[0414]
如下导出水平虚拟边界的位置ppsvirtualboundariesposy[i]:ppsvirtualboundariesposy[i]=pps_virtual_boundaries_pos_y[i]*8
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7

37)
[0415]
任意两个水平虚拟边界之间的距离应大于或等于ctbsizey个亮度样本。
[0416]
pps_extension_flag等于0指定在pps rbsp语法结构中不存在pps_extension_data_flag语法元素。pps_extension_flag等于1指定在pps rbsp语法结构中存在pps_extension_data_flag语法元素。
[0417]
pps_extension_data_flag可以具有任何值。它的存在和值不会影响解码器与在该说明书的该版本中指定的配置文件的符合性。符合该说明书的该版本的解码器应忽略所有pps_extension_data_flag语法元素。
[0418]
在下面的子小节“实施例c”中,描述了底层语法的信令。
[0419]
如前所述,指示ca的布局的另一选项是以更灵活的方式使用vcl内语法。
[0420]
编码区域布局是通过评估两个新的语法元素area_line_stop_flag和area_column_stop_flag来确定的,而end_of_slice_flag可能未使用。
[0421]
如果按对角线扫描顺序的下一个ctu位于当前条带的没有在比特流中发送先前的area_line_stop_flag的ctu行中,则在ctu编码过程结束时,在比特流中将存在area_line_stop_flag,并且其至少部分位于图片内。如果area_line_stop_flag为假,则利用具有当前使用的ctu列的数量的新的ctu行来扩展当前的条带矩形。如果area_line_stop_flag为真,则条带高度固定为当前条带中的当前使用的ctu行的数量。
[0422]
类似地,如果按对角线扫描顺序的下一个ctu位于当前条带的没有在比特流中发送先前的area_column_stop_flag的ctu列中,则在ctu编码过程结束时,在比特流中将存在area_column_stop_flag,并且其至少部分位于图片内。如果area_column_stop_flag为假,则利用具有当前使用的ctu行的数量的新的ctu列来扩展条带矩形。如果area_column_stop_flag为真,则条带宽度固定为当前条带中的当前使用的ctu列的数量。
[0423]
图11示出根据实施例的在子区域(ctu)级别上的编码区域信令。
[0424]
在确定条带的矩形时,将按特定的扫描顺序来处理ctu,直到已处理了由条带矩形覆盖的所有ctu。由于在图像边界处分别缺少显式的area_line_stop_flag或area_column_stop_flag,因此将毗邻图片边界的跨越的编码区限制为不超过该图片边界。这在图11中可以看出,其中在图片边界附近不存在area_line_stop_flag=1和area_column_stop_flag=1。
[0425]
使用ca的大小和位置以及图片边界的先前知识来隐式导出area_line_stop_flag=1和area_column_stop_flag=1允许节省一些信令开销,但阻止某些比特流操作,例如“编码区域比特流提取”和“编码区域比特流聚合”,或者在这些情况下,至少会产生熵编码数据的附加处理开销。当前,对于hevc,定义了运动受限图块集(mcts),其在无需对熵编码
数据进一步处理的情况下允许这两个过程。但是,通过这样的过程,mcts(相应地ca)边界变成图片边界,或者图片边界变成mcts边界(相应地ca)而不是图片边界。因此,应该不允许隐式导出area_line_stop_flag=1和area_column_stop_flag=1,以通过以下操作来实现这种功能:无论其是否是图片边界以及是否已经描述了其他ca,都要求同时存在这两个语法元素。这可以通过在例如称为“implicit_area_line_or_column_enabled_flag”的参数集处存在语法元素或使其取决于mcts或“运动约束编码区域”的存在来实现。
[0426]
概述以上内容,根据实施例,数据编码器110可以例如被配置为生成指示数据,使得与多个编码区域有关的信息包括针对一个或多个编码区域中的编码区域的一个或多个区域列停止标志,其中,如果一个或多个编码区域中的编码区域的区域列停止标志被设置为停止值,则区域列停止标志可以例如指示编码区域的宽度。或者,数据编码器110可以例如被配置为生成指示数据,使得与多个编码区域有关的信息包括针对一个或多个编码区域中的编码区域的一个或多个区域行停止标志,其中,如果一个或多个编码区域中的编码区域的区域行停止标志被设置为停止值,则区域行停止标志可以例如指示编码区域的高度。
[0427]
根据实施例,数据编码器110可以例如被配置为生成指示数据,使得指示数据指示显式信令模式是有效的或者显式信令模式是无效的。如果显式信令模式是有效的,并且如果编码区域的一个或多个编码树单元中的编码树单元位于图片的图片边界处,则数据编码器110可以例如被配置为生成指示数据,使得指示数据包括针对编码树单元的区域列停止标志和区域行停止标志中的至少一个。如果显式信令模式是无效的,并且如果编码区域的一个或多个编码树单元中的编码树单元位于图片的所述图片边界处,则数据编码器110可以例如被配置为生成指示数据,使得指示数据不包括针对编码树单元的区域列停止标志和/或不包括针对编码树单元的区域行停止标志。
[0428]
同样地,在实施例中,数据解码器170可以例如被配置为使用与多个编码区域有关的信息来对编码图片数据进行解码,所述信息包括针对一个或多个编码区域中的编码区域的一个或多个区域列停止标志,其中,如果一个或多个编码区域中的编码区域的区域列停止标志被设置为停止值,则区域列停止标志可以例如指示编码区域的宽度。或者,数据解码器170可以例如被配置为使用与多个编码区域有关的信息来对编码图片数据进行解码,所述信息包括针对一个或多个编码区域中的编码区域的一个或多个区域行停止标志,其中,如果一个或多个编码区域中的编码区域的区域行停止标志被设置为停止值,则区域行停止标志可以例如指示编码区域的高度。
[0429]
根据一个实施例,数据解码器170可以例如被配置为使用指示数据内的指示显式信令模式是有效的或者显式信令模式是无效的指示,来对编码图片数据进行解码。如果显式信令模式是无效的,并且如果编码区域的一个或多个编码树单元中的编码树单元位于图片的所述图片边界处,则数据解码器170可以例如被配置为根据图片的图片边界来对编码图片数据进行解码。
[0430]
在下面的小节“ctu扫描顺序”中,对ctu扫描顺序进行了描述。
[0431]
在下面的子小节“光栅扫描”中,对光栅扫描进行了描述。
[0432]
当将图片细分为多个ca时,可以将常规的光栅扫描方法应用于ctu处理方案。通过这种方法,并且通过编码区域了解整个图片划分方案,可以逐ctu行处理整个图片。已经可以针对hevc中的图块进行这种处理。因此,在这种情况下,保持了ctu处理方案的灵活性。
[0433]
因此,根据实施例,包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域的编码顺序可以例如取决于光栅扫描,并且数据编码器110可以例如被配置为生成指示数据,使得指示数据指示已经采用光栅扫描对包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域进行编码。
[0434]
同样地,根据实施例,包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域的编码顺序可以例如取决于光栅扫描,并且数据解码器170可以例如被配置为根据光栅扫描来解码编码图片数据,其中数据解码器170可以例如被配置为接收信息,该信息指示已经采用光栅扫描对包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域进行编码,其中指示数据可以例如包括所述信息。
[0435]
在下面的子小节“对角线扫描”中,对对角线扫描进行了描述。
[0436]
但是,常规的光栅扫描顺序对空间参考的可用性施加了限制。为了改善这一点,在实施例中,对角线扫描被用作附加的ctu处理方案。
[0437]
为了导出对角线扫描,我们根据[2]使用对上部ctu行的依赖性的广义处理:ctu_dependency_offset_id([2])。
[0438]
当参考不受限制(例如,位于不同的条带、图块或图片外部)并且以下条件为真时,当可用于当前的预测时,与相对应的块可用于参考:
[0439]

在wpp情况下:
[0440]
(y
ref
=y
cur and x
ref
≤x
cur
)或者
[0441]
(y
ref
≠y
cur and x
ref

[0442]
((y
curr

y
ref
)*(ctu_dependency_offset_id

1)+xcur)),
[0443]

在顺序处理顺序的情况下:
[0444]
(y
ref
=y
cur and x
ref
≤x
cur
)或者
[0445]
(y
ref
<y
cur and x
ref

[0446]
((y
curr

y
ref
)*(ctu_dependency_offset_id

1)+x
cur
+1))
[0447]
或者
[0448]
(y
ref
>y
cur and x
ref

[0449]
((y
curr

y
ref
)*(ctu_dependency_offset_id

1)+x
cur
)),
[0450]
其中x
ref
、y
ref
、x
cur
、y
cur
是ctu的位置坐标。
[0451]
如上所述,上部邻居块偏移限制可以用于导出ctu处理顺序。产生的各种ctu扫描是具有特定斜率或角度的对角线扫描的变体,其中斜率由固定值给定,或者由比特流中发送的语法元素控制,或者从已经存在于比特流中的语法元素来导出。
[0452]
图12示出根据实施例的针对ctu_dependency_offset_id=1的ctu扫描顺序和空间参考。
[0453]
图13示出根据另一实施例的针对ctu_dependency_offset_id=2的另一ctu扫描顺序和空间参考。
[0454]
如下面的图12和图13所示,可以生成不同类型的ctu扫描。默认扫描方向从左到右以对角线向下运行,并且可以通过以下算法来生成:
[0455]
[0456]
[0457][0458]
下面示出针对某些ctu_dependency_offset_id值的示例性扫描和空间参考的可用性。
[0459]
概述以上内容:
[0460]
根据实施例,包括两个或多个编码树单元的一个或多个编码区域中的编码区域的编码顺序可以例如取决于扫描顺序,所述扫描顺序取决于指示角度的斜率。在对编码区域的两个或更多个编码树单元中的第一编码树单元进行编码之后,数据编码器110可以例如被配置为根据编码区域的编码树单元中的第一编码树单元的位置、根据编码区域的尚未被编码的其他编码树单元、以及根据斜率,来确定编码区域内的两个或更多个编码树单元中的第二编码树单元。数据编码器110可以例如被配置为对两个或更多个编码树单元中的第二编码树单元进行编码。
[0461]
在实施例中,数据编码器110可以例如被配置为确定编码区域内的两个或更多个编码树单元中的第二编码树单元,使得由起始点和斜率定义的箭头指向两个或更多个编码树单元中的第二编码树单元的位置,其中,起始点可以例如是编码区域内的编码树单元中的第一编码树单元的位置。
[0462]
根据实施例,数据编码器110可以例如被配置为生成指示数据,使得指示数据指示已经采用对角线扫描对包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域进行编码。
[0463]
同样,根据实施例,包括两个或多个编码树单元的一个或多个编码区域中的编码区域的编码顺序可以例如取决于扫描顺序,所述扫描顺序取决于指示角度的斜率。指示数据可以例如包括与编码区域有关的所述信息,其中,在对编码区域的两个或更多个编码树单元中的第一编码树单元进行解码之后,数据解码器170可以例如被配置为根据编码区域的编码树单元中的第一编码树单元的位置、根据编码区域的尚未被解码的其他编码树单元、以及根据斜率,来确定编码区域内的两个或更多个编码树单元中的第二编码树单元。数据解码器170可以例如被配置为对两个或更多个编码树单元中的第二编码树单元进行解码。
[0464]
根据实施例,数据解码器170可以例如被配置为确定编码区域内的两个或更多个编码树单元中的第二编码数单元,使得箭头由起始点和斜率定义。起始点可以例如是编码区域内的编码树单元中的第一编码树单元的位置,指向两个或更多个编码树单元中的第二编码树单元的位置。
[0465]
在实施例中,数据解码器170可以例如被配置为接收指示已经采用对角线扫描对包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域进行编码的信息,
其中,指示数据可以例如包括所述信息。
[0466]
在下面的子小节“z扫描”中,对z扫描进行了描述。
[0467]
图14示出根据实施例的具有z扫描ctu顺序的编码区域。
[0468]
在这样的实施例中,z扫描可以用于ctu扫描顺序而不是建议的对角线扫描。在hevc中定义了z扫描。
[0469]
根据实施例,包括五个或更多个编码树单元的编码区域的编码顺序可以例如取决于扫描顺序,所述扫描顺序取决于为0
°
的第一角度、取决于为135
°
的第二角度、并且取决于为45
°
的第三角度。
[0470]
在对编码区域的第一编码树单元进行编码之后,数据编码器110可以例如被配置为确定所述编码树区域的第二编码树单元,使得具有位于所述编码区域内的第一编码树单元的位置处的第一起始点的第一箭头相对于预定方向围绕为0
°
的第一角度,并且使得第一箭头指向编码区域内的所述第二编码树单元,并且数据编码器110被配置为对所述编码区域的所述第二编码树单元进行编码。
[0471]
在对所述编码区域的第二编码树单元进行编码之后,数据编码器110可以例如被配置为确定所述编码树区域的第三编码树单元,使得具有位于所述编码区域内的第二编码树单元的位置处的第二起始点的第二箭头相对于所述预定方向围绕为135
°
的第二角度,并且使得第二箭头指向编码区域内的所述第三编码树单元,并且数据编码器110被配置为对所述编码区域的所述第三编码树单元进行编码。
[0472]
在对所述编码区域的第三编码树单元进行编码之后,数据编码器110可以例如被配置为确定所述编码树区域的第四编码树单元,使得具有位于所述编码区域内的第三编码树单元的位置处的第三起始点的第三箭头相对于所述预定方向围绕为0
°
的第一角度,并且使得第三箭头指向编码区域内的所述第四编码树单元,并且数据编码器110被配置为对所述编码区域的所述第四编码树单元进行编码。
[0473]
在特定实施例中,在对所述编码区域的第四编码树单元进行编码之后,数据编码器110可以例如被配置为确定所述编码树区域的第五编码树单元,使得具有位于所述编码区域内的第四编码树单元的位置处的第四起始点的第四箭头相对于所述预定方向围绕为45
°
的第三角度,并且使得第四箭头指向编码区域内的所述第五编码树单元,并且数据编码器110被配置为对所述编码区域的所述第五编码树单元进行编码。
[0474]
在实施例中,数据编码器110可以例如被配置为生成指示数据,使得指示数据指示已经采用z扫描对一个或多个编码区域中的包括五个或更多个编码树单元的每个所述区域进行编码。
[0475]
同样地,根据实施例,包括五个或更多个编码树单元的编码区域的编码顺序可以例如取决于扫描顺序,所述扫描顺序取决于为0
°
的第一角度、取决于为135
°
的第二角度、并且取决于为45
°
的第三角度。
[0476]
在对所述编码区域的第一编码树单元进行解码之后,数据解码器170可以例如被配置为确定所述编码树区域的第二编码树单元,使得具有位于所述编码区域内的第一编码树单元的位置处的第一起始点的第一箭头相对于预定方向围绕为0
°
的第一角度,并且使得第一箭头指向编码区域内的所述第二编码树单元,并且数据解码器170被配置为对所述编码区域的所述第二编码树单元进行解码。
[0477]
在对所述编码区域的第二编码树单元进行解码之后,数据解码器170可以例如被配置为确定所述编码树区域的第三编码树单元,使得具有位于所述编码区域内的第二编码树单元的位置处的第二起始点的第二箭头相对于所述预定方向围绕为135
°
的第二角度,并且使得第二箭头指向编码区域内的所述第三编码树单元,并且数据解码器170被配置为对所述编码区域的所述第三编码树单元进行解码。
[0478]
在对所述编码区域的第三编码树单元进行解码之后,数据解码器170可以例如被配置为确定所述编码树区域的第四编码树单元,使得具有位于所述编码区域内的第三编码树单元的位置处的第三起始点的第三箭头相对于所述预定方向围绕为0
°
的第一角度,并且使得第三箭头指向编码区域内的所述第四编码树单元,并且数据解码器170被配置为对所述编码区域的所述第四编码树单元进行解码。
[0479]
在特定实施例中,在对所述编码区域的第四编码树单元进行解码之后,数据解码器170可以例如被配置为确定所述编码树区域的第五编码树单元,使得具有位于所述编码区域内的第四编码树单元的位置处的第四起始点的第四箭头相对于所述预定方向围绕为45
°
的第三角度,并且使得第四箭头指向编码区域内的所述第五编码树单元,并且数据解码器170被配置为对所述编码区域的所述第五编码树单元进行解码。
[0480]
根据实施例,数据解码器170可以例如被配置为接收指示已经采用z扫描对一个或多个编码区域中的包括五个或更多个编码树单元的每个所述区域进行编码的信息,其中,指示数据可以例如包括所述信息。
[0481]
在下面的子小节“扫描方向”中,对扫描方向进行了描述。
[0482]
在另一实施例中,扫描的方向可以是灵活的,例如,范围分别为从右到左以对角线向下;从左到右以对角线向上;或从左到右以对角线向上。可以使用新的语法元素ctu_scan_direction在比特流中发送扫描方向,或者可以从已经存在于比特流中的语法元素来导出扫描方向。
[0483]
在另一实施例中,通过在严格的条带顺序的约束下评估由coding_area_start_address寻址的第一条带ctu的邻接邻域来导出扫描方向。
[0484]
如果第一条带ctu具有与其底部边界邻接的ctu邻居,或者第一条带ctu位于图片的底部ctu行中,并且在右侧没有邻接邻居并且不位于最右侧的ctu列中,则ctu扫描是向右向上扫描。
[0485]
如果第一条带ctu具有与其底部边界邻接的ctu邻居,或者第一条带ctu位于图片的底部ctu行中,并且在右侧有邻接的邻居,或者位于图片的最右侧的列中,则ctu扫描是向左向上扫描。
[0486]
否则,如果在第一条带ctu右侧的ctu邻居可用,或者如果第一条带ctu位于图片的最右侧的列中,则扫描是向左向下。在所有其他情况下,ctu扫描是向右向下。
[0487]
图15示出根据另一实施例的隐式ctu扫描方向导出。
[0488]
在这样的另一实施例中,通过沿着潜在的编码区域边界评估可用ctu邻居的数量,来进一步完善上述发明导出方案。例如,第一条带ctu位于具有左侧和上方ctu邻居的位置,扫描可以是向右向下扫描或向下向右扫描,因此可以分别累计沿着竖直和水平方向上的编码区域边界的潜在可用的ctu邻居的数量(如果ca的尺寸未知)。如果竖直邻居的总和超过水平ctu邻居的数量,则使用向下向右扫描,否则该扫描是向右向下扫描。在图15中使用光
栅扫描示例性地示出该导出方案。
[0489]
在另一实施例中,上述发明导出方案和改进用于形成可能的扫描的有序列表,其中在条带级别上发送选择ctu扫描的索引。另外,如果在图片内使用不同的对角线扫描,则必须在条带头部中对ctu_dependency_offset_id进行编码。
[0490]
图16示出根据实施例的具有不同ctu扫描方向的编码区域。
[0491]
特别地,图16示出了用于在图片内使用各种扫描方向的示例。
[0492]
概述以上内容:
[0493]
根据实施例,包括两个或更多个编码树单元的一个或多个编码区域中的编码区域的编码顺序可以例如取决于包括一个或多个扫描方向的扫描顺序。在对所述编码区域的第一编码树单元进行编码之后,数据编码器110可以例如被配置为根据第一编码树单元的位置并且根据一个或多个扫描方向中的第一扫描方向,来确定所述编码树区域的第二编码树单元,并且数据编码器110被配置为对所述编码区域的所述第二编码树单元进行编码。
[0494]
在实施例中,数据编码器110可以例如被配置为生成指示数据,使得指示数据指示包括一个或多个扫描方向的所述扫描顺序。
[0495]
根据实施例,数据编码器110可以例如被配置为通过评估所述编码区域的第一编码树单元的邻接邻域来导出一个或多个扫描方向中的扫描方向。如果第一编码树单元在两个或更多个编码树单元中具有与第一编码树单元的底部边界邻接的编码树单元邻居,或者,如果第一编码树单元位于图片的底部编码树单元行中,并且在右侧没有邻接邻居并且不位于最右侧的编码树单元列中,则扫描方向可以例如为向右向上扫描。如果第一编码树单元在两个或更多个编码树单元中具有与第一编码树单元的底部边界邻接的编码树单元邻居,或者,如果第一编码树单元位于图片的底部编码树单元行中,并且在右侧具有邻接邻居或位于图片的最右侧的列中,则扫描方向为向左向上扫描。如果两个或更多个编码树单元中的在第一编码树单元右侧的编码树单元邻居可用,或者如果第一编码树单元位于图片的最右侧的列中,则扫描方向可以例如为向左向下扫描。否则,扫描方向可以例如为向右向下。
[0496]
在实施例中,数据编码器110可以例如被配置为生成指示数据,使得指示数据指示索引,所述索引指示一个或多个扫描方向中所选择的扫描方向。
[0497]
同样,根据实施例,包括两个或更多个编码树单元的一个或多个编码区域中的编码区域的编码顺序可以例如取决于包括一个或多个扫描方向的扫描顺序。在对所述编码区域的第一编码树单元进行解码之后,数据解码器170可以例如被配置为根据第一编码树单元的位置并且根据一个或多个扫描方向中的第一扫描方向,来确定所述编码树区域的第二编码树单元,并且数据解码器170可以例如被配置为对所述编码区域的所述第二编码树单元进行解码。
[0498]
在实施例中,数据解码器170可以例如被配置为接收指示所述扫描顺序的信息,所述扫描顺序包括一个或多个扫描方向,其中,指示数据可以例如包括所述信息。
[0499]
根据实施例,数据解码器170可以例如被配置为通过评估所述编码区域的第一编码树单元的邻接邻域来导出一个或多个扫描方向中的扫描方向。如果第一编码树单元在两个或更多个编码树单元中具有与第一编码树单元的底部边界邻接的编码树单元邻居,或者,如果第一编码树单元位于图片的底部编码树单元行中,并且在右侧没有邻接邻居并且
不位于最右侧的编码树单元列中,则扫描方向可以例如为向右向上扫描。如果第一编码树单元在两个或更多个编码树单元中具有与第一编码树单元的底部边界邻接的编码树单元邻居,或者,如果第一编码树单元位于图片的底部编码树单元行中,并且在右侧具有邻接邻居或位于图片的最右侧的列中,则扫描方向为向左向上扫描。如果两个或更多个编码树单元中的在第一编码树单元右侧的编码树单元邻居可用,或者如果第一编码树单元位于图片的最右侧的列中,则扫描方向可以例如为向左向下扫描。否则,扫描方向可以例如为向右向下。
[0500]
在一实施例中,数据解码器170可以例如被配置为接收指示索引的信息,所述索引指示一个或多个扫描方向中所选择的扫描方向,其中,指示数据可以例如包括所述信息。
[0501]
在下面的小节“依赖型编码区域”中,描述了依赖型编码区域。
[0502]
图17示出根据实施例的具有区间预测选项的依赖型编码区域。
[0503]
在这样的实施例中,在图片内,为了利用空间预测能力,一个编码区域可以对另一个编码区域具有依赖性。在这种情况下,例如可能需要区域的特定处理顺序以促进确定性行为。例如,可以通过针对明确确定依赖性顺序的每个ca使用新的语法元素area_order_idx发信号通知区域顺序来实现此操作。或者,可以直接从在coding_area_arrangement()语法中发信号通知的ca的顺序中导出依赖性顺序,参见小节“编码区域的大小和布置”。
[0504]
area_order_idx的值可以解释如下:具有较高的area_order_idx值的区域依赖于具有较低area_order_idx值的区域,反之亦然。
[0505]
概述以上内容:
[0506]
在实施例中,数据编码器110可以例如被配置为通过对多个编码区域的每个编码区域内的图片的图像数据进行编码,来对图片进行编码,以获得编码图片数据。数据编码器110可以例如被配置为对多个编码区域中的至少一个编码区域的图片的图像数据进行编码,使得对多个编码区域中的所述至少一个编码区域的图像数据的编码依赖于对多个编码区域中的至少另一个编码区域的图像数据的编码。
[0507]
同样地,在实施例中,数据解码器170可以例如被配置为对多个编码区域中的至少一个编码区域的编码图片数据进行解码,使得对多个编码区域中的所述至少一个编码区域的编码图片数据的解码依赖于对多个编码区域中的至少另一个编码区域的编码图片数据的解码。
[0508]
在下面的小节“编码区域的并行处理”中,对编码区域的并行处理进行了描述。
[0509]
编码区域还能够支持并行处理。并行化的明显用例是使用多个非依赖型的编码区域。在这种情况下,禁止对一个ca的包括的ctu的解析或重构的对任何其他ca的依赖性,将分配给不同ca的邻接cu视为不可用于参考。在这种情况下,根据filter_over_ca_boundaries_flag,可以将后处理滤波器单独或按图片应用于ca。该语法元素的工作方式与hevc中使用的loop_filter_across_tiles_enabled_flag相同。
[0510]
图18示出根据实施例的依赖型编码区域的并行处理((a)ctu光栅扫描;(b)ctu对角线扫描)。
[0511]
在依赖型编码区域的情况下,如图18所示的处理方案可以用于利用图片中的空间依赖性并减少跨区域边界上的可能的伪像。为了使用ca间依赖性,例如可能需要ctu处理的明确顺序,从而导致来自邻接ca的ctu的可靠的可用性。
[0512]
处理ca的顺序可以由比特流中发送的ca的顺序隐式地给出。此外,也可以通过在比特流中发送的符号来显式地说明ca的顺序。
[0513]
图19示出两个主要的ctu执行概念。
[0514]
图19示出根据实施例的执行顺序和ca间依赖性((a)依赖性驱动;(b)锁步)。
[0515]
在下文中,描述了锁步管线。
[0516]
管线概念假定在锁步执行方案之后的解析和重建和/或后滤波。全局事件用于针对每个线程开始ctu的执行步骤,其中在每个步骤中,在每个ca中都处理单个ctu。该方案以图19(b)中所示的不可用ctu参考为代价,确保最大吞吐量,其中第一个和第二个ca中的紧邻ctu被同时处理,因此无法在任一方向上用于参考。
[0517]
但是,如果强制执行严格的锁步执行,则如浅蓝色箭头所示,附加的ca间依赖性将变为可用。
[0518]
在下文中,描述了依赖性驱动的概念。
[0519]
此概念依赖于ca间ctu邻居的本地可用性。如果邻接邻居ca中的参考ctu不可用,尽管其应当可用于参考,则对该特定ca的执行将暂停,直到参考ctu分别通过完全解析和重构变得可用为止。这从图19(a)中看出,其中例如针对第5个执行步骤暂停对第2个ca的处理,因为第一个ca的参考ctu在第5个执行步骤中处理,并且最早在第6个执行步骤中可用。
[0520]
此外,可以使用依赖型ca处理方案将并行处理扩展到对后处理滤波器的操作。对于ctu内部边界(cu边界),可以应用默认滤波过程。相反,当按处理顺序对第2个ctu滤波时,将对ctu边界滤波,因此可以确定边界处的滤波强度,并且用于滤波的样本可用。在启用ca跨边界滤波的情况下或在依赖型ca的情况下,该规则也适用于ca跨边界滤波。以通过考虑邻接ca中参考ctu的可用性进行解析和重构类似的方式处理到达ctu边界上的去块滤波器。如果邻接ca中的ctu可用,则区域中未被提前滤波的部分在当前滤波过程中被滤波。
[0521]
图20示出根据实施例的相对于ca顺序在ca边界上的去块滤波过程。
[0522]
图21示出根据实施例的采用具有阴影线滤波器区的ca间滤波的去块滤波器。
[0523]
如图21所示,在第一个处理步骤中,仅可以对第一个ca中的ctu(1)进行滤波。由于没有可用的ctu邻居,因此该ctu的滤波仅限于内部边界。在第2个执行步骤中,第一个ca中的第二个ctu对其内部边界以及对与第1个ca中的第一个ctu的ctu边界进行滤波。此外,第2个ca的左下角的ctu正在对其内部边界以及与第1个ca中的第一个ctu的ctu边界重叠的ca进行滤波。这种并行处理的一个效果是使去块滤波器的低延迟操作成为可能。可以在对整个ca进行解码之前开始进行跨ca边界滤波去块,从而可以减少图片区可用作另外的图片的参考图片之前的总体处理时间。
[0524]
在下面的小节“抗误码能力方面”中,描述抗误码能力方面。
[0525]
如在章节“根据现有技术的vcl划分”中所提及的,当应用中的存储或传输机制不可靠时,抗误码能力是视频编码中的期望功能。然而,当今存在许多应用,例如http流传输,其中例如在具有分组丢失的rtp/udp流传输或具有比特或突发错误的典型广播信道中可能需要较少的抗误码能力。对于http流传输,编码视频通常按n*gop方式进行划分,丢失的部分在接收机侧触发缓冲区停顿,直到成功重传各个部分为止。在后一种情况下,期望在编码数据内部引入另外的依赖性,以便提高编码效率,同时丧失一些抗误码能力。例如,如在子小节“扫描方向”中所述的,基于相邻ca的扫描顺序导出方面可能需要例如在当前ca可以被
正确解码之前在接收机侧的相邻ca的可用性。因此,仅在可容忍有限的抗误码能力的情况下才应使用此类技术。同样,如在小节“依赖型编码区域”中的有关依赖型编码区域的方面介绍了影响抗误码能力的依赖性,以及在小节“编码区域的并行处理”中描述的并行化方面和处理顺序。这方面的其他现有技术必须处理相同的权衡,例如,图片内翻译补偿预测(例如hevc scc中的ibc)或其他有助于图片内的距离当前块更远因此处于常规帧内预测的样本的其他帧内预测技术。同样在序列级别上,存在已知的其他技术以例如以抗误码能力影响为代价来提高编码效率,例如在图片上共享诸如cabac上下文模型之类的熵编码实体的状态,等等。
[0526]
在结合了编码视频的传输的系统中,可以以各种方式来利用与编码视频流提供的抗误码能力的程度有关的信息,例如了解媒体的中间盒可以触发早期重传,或者终端设备可以在错误缓解策略之间进行选择,例如通过帧分段复制的基于帧级条带的错误隐藏,或者进行缓冲直到成功重传,或者跳过比特流的部分(各个au、与pps关联的au,或者否则,与sps相关联或形成cvs的au)的解码为止。因此,期望向中间盒或客户端设备指示编码视频流提供的抗误码能力的程度。编码视频序列中的错误隐藏程度的另一种用途是使服务运营商确定某个编码流是否适合于设想的传输系统,例如,当通过易出现突发错误的卫星广播信道进行发送时,针对http流传输编码的流的性能可能非常差。
[0527]
当前,由于大量的参数确定抗误码能力(例如,上述示例的非穷举列表),因此无法使用现有技术编解码器在编码流中轻松访问该信息。一些单独的参数可以从参数集中导出,其他一些例如可能需要基于图片来解析高级别语法,而其他一些例如可能甚至需要低级别语法解析。而且,大多数调查的参数没有利用与编码视频序列的剩余部分的编码器决策有关的信息来发信号通知,但是具有有限的范围。例如,划分决策可能在图片之间改变。损坏的流甚至可能不再承载必要的信息。
[0528]
实施例提供了对编码视频序列的抗误码能力的程度的易于访问的指示。一些实施例在影响抗误码能力和错误减轻策略的相关工具上为编码视频提供编码约束。中间盒或客户端设备可以将该指示解释为保证视频编码器从其决策空间中排除将以其他方式影响抗误码能力的某些选项。服务提供商可以关于编码流适合于哪个传输系统来解释这种信息。
[0529]
在实施例中,例如,如下提供在编码视频的易于访问的高级别语法中的单个标志。
[0530][0531]
sps_error_resiliency_enabled_flag指示编码视频序列的抗误码状态。sps_error_resiliency_flag等于1指示cvs中没有活动的sps激活[codingtoolsetc]的使用,并且cvs中没有活动的pps或au激活[codingtoolsetb]的使用。sps_error_resiliency_flag等于0则不会给出此类指示。
[0532]
可替代地,实施例如下提供了在编码视频的易于访问的高级别语法中的抗误码能力状态的预定义列表的索引。
[0533][0534]
sps_error_resiliency_enabled_idx根据下表指示编码视频序列的抗误码能力状态。
[0535][0536]
au=访问单元;pps=图片参数集;sps=序列参数集,cvs编码的视频序列
[0537]
其中,将列表[codingtoolseta]、[codingtoolsetb]和[codingtoolssetc]定义如下。
[0538]
codingtoolseta包括在图片级别上损害抗误码能力的工具,即,它们在图片内引入依赖性,在图片的部分(例如依赖型ca或其他ca)丢失的情况下,这种依赖性阻止进行成功的解码。
[0539]
codingtoolsetb包括在多图片级别上(即,pps的范围)损害抗误码能力的工具,即,它们引入了引用pps的图片之间的依赖性,使得它们阻止在错误的图片之后使用该工具对引用pps的任何图片进行成功解码,例如多个图片(例如,属于gop的最高时间层的图片或其他图片)的联合熵编码。
[0540]
codingtoolssetc包括在序列级别上(即,sps的范围)损害抗误码能力的工具,即,它们在随机访问时段内的所有图片之间引入依赖性关系,使得它们阻止在错误的图片之后使用该工具对引用sps的任何图片进行成功解码,直到开始新的cvs的随机访问点(例如,量化器缩放矩阵、熵编码初始化或其他)为止。
[0541]
在本发明的另一实施例中,指示的不同模式没有链接到激活工具集的语法结构。
[0542][0543]
另外,通过指示从第一图片开始的遵循编码顺序的图片数量的范围的另外的信令来指示codingtoolsetb的范围。因此,该实施例中的codingtoolsetb包括在多图片级别上损害抗误码能力的工具(其中,各个图片由范围指示来指示),即,它们引入了所指示的图片之间的依赖性,使得它们阻止在错误的图片之后使用工具集对任何图片进行成功解码,例如多个图片(例如,属于gop的最高时间层的图片或其他图片)的联合熵编码。
[0544]
概述以上内容:根据实施例,数据编码器110可以例如被配置为生成指示数据,使得指示数据可以例如包括与编码视频序列的抗误码能力有关的信息。
[0545]
在实施例中,与抗误码能力有关的信息可以例如指示与编码视频序列的抗误码能力有关的三个或更多个不同状态中的一个。
[0546]
同样,根据实施例,数据解码器170可以例如被配置为接收指示编码视频序列的抗误码能力的信息。数据解码器170可以例如被配置为根据指示编码视频序列的抗误码能力的信息来对编码图片数据进行解码。
[0547]
在实施例中,与抗误码能力有关的信息可以例如指示与编码视频序列的抗误码能力有关的三个或更多个不同状态中的一个。
[0548]
在特定实施例中,三个或更多个不同状态中的第一状态可以例如指示访问单元没有抗误码能力。三个或更多个不同状态中的第二状态可以例如指示图片参数集的第一多个访问单元没有抗误码能力。三个或更多个不同状态中的第三状态可以例如指示序列参数集的第二多个访问单元没有抗误码能力。
[0549]
在另一特定实施例中,与抗误码能力有关的信息可以例如指示与编码视频序列的抗误码能力有关的四个或更多个不同状态中的一个。四个或更多个不同状态中的第一状态可以例如指示抗误码能力在图片级别上受到损害,在多图片级别上受到损害,并且在序列级别上受到损害。四个或更多个不同状态中的第二状态可以例如指示抗误码能力在图片级别上受到损害并且在多图片级别上受到损害,但在序列级别上没有受到损害。四个或更多个不同状态中的第三状态可以例如指示抗误码能力在图片级别上受到损害,但是抗误码能力在多图片级别上没有受到损害,并且在序列级别上没有受到损害。并且,四个或更多个不同状态中的第四状态可以例如指示抗误码能力在图片级别上没有受到损害,在多图片级别上没有受到损害,并且在序列级别上没有受到损害。
[0550]
在下面的章节“编码区域数据分段”中,描述了编码区域数据分段。
[0551]
像图块一样,ca也可以针对传输层被分段。在这种情况下没有限制。可能的用例在图22、图23和图24中示出。
[0552]
图22示出包括具有一个编码区域的单个图片的比特流,而ca被分段为多个传输单元。
[0553]
图23示出包括具有多个编码区域的单个图片的比特流,而每个ca具有自己的传输单元。
[0554]
图24示出包括具有多个编码区域的单个图片的比特流,而每个ca被分段成多个传输单元。
[0555]
在下面的章节“编码子区域空间预测器管理”中,描述了编码子区域空间预测器管理。
[0556]
图25示出根据实施例的被区包围的块的一般表示。
[0557]
在通用方法中,编码块可以被八个主要空间区包围,见图25。
[0558]
在下面的小节“一般预测器管理”中,描述了一般预测器管理。
[0559]
来自所有八个相邻区的候选可以被合并到预测候选列表中。可以以直接的方式(相应地,它们的可用性)来选择它们(相应地,它们的可用性)。在ctu的情况下,其可以例如包括进一步划分成具有特定子块处理顺序的子块,并且由于特定的可用性场景,可以对齐子块的顺序。例如,如果仅邻居ad、d、dc和c可用,则应当首先处理与这些邻居邻接的子块。
[0560]
概括地说,根据一个实施例,数据编码器110可以例如被配置为根据位于图片内的多个编码树单元中的八个相邻编码树单元中的一个或多个编码树单元,来对位于图片内的多个编码树单元中的编码树单元进行编码,其中,八个相邻编码树单元与所述编码树单元相邻。
[0561]
同样地,在一个实施例中,数据解码器170可以例如被配置为根据位于图片内的多个编码树单元中的八个相邻编码树单元中的一个或多个编码树单元,来对位于图片内的多个编码树单元中的编码树单元进行解码,其中,八个相邻编码树单元与所述编码树单元相邻。
[0562]
在下面的小节“邻居的空间调整”中,描述了邻居的空间调整。
[0563]
一些特定的邻域场景将通过对对应的邻域或预测器的某种调整来允许常规子块处理顺序。在实施例中,调整可以例如包括对应的邻域的旋转以及如果需要的话对编码块的旋转,以90
°
步长逐步旋转。例如,在图中,如果只有邻居ad、d、dc、c和bc可用,则可以将这些邻居旋转180
°
,并且如果需要则将编码块旋转180
°
。这可以是逻辑旋转,也可能是存储器操作,如将样本或语法元素之类的缓冲数据转换为新的缓冲状态。
[0564]
坐标变换还可以包括水平或竖直翻转,其产生不同的预测候选顺序
……
[0565]
概括地讲,在实施例中,数据编码器110可以例如被配置为通过将八个相邻编码树单元中的编码树单元移位到八个相邻编码树单元中的另一个编码树单元,来对位于图片内的多个编码树单元中的编码树单元进行编码。
[0566]
同样地,根据实施例,数据解码器170可以例如被配置为通过将八个相邻编码树单元中的编码树单元移位到八个相邻编码树单元中的另一个编码树单元,来对位于图片内的多个编码树单元中的编码树单元进行解码。
[0567]
在下面的小节“不可用邻居的替换概念”中,描述了不可用邻居的替换概念。
[0568]
在某些情况下,空间邻居不可用于预测。在那些情况下,或者导出算法使用可用于预测的不同邻居,或者该算法使用某种回退,以通过使用在比特流中显式发送的或者从先前编码的符号或重构值中导出的值来导出值。
[0569]
在特定实施例中,不可用于预测的空间邻居可以例如被来自当前块下方的空间邻域的邻居(如果可用)替换。
[0570]
否则,如果当前块下方没有空间预测器可用。使用默认的回退。
[0571]
在下文中,将该上下文中的术语“左下延伸”定义为根据定义0的块直接位于当前块的左下角;除了当前块的左下样本位于当前ctu的底部样本行中的特殊情况之外。在这种特殊情况下,当前块的左下延伸邻居是下一个ctu行的ctu的右上角的块,其可用于根据建议的块依赖性偏移来进行预测。
[0572]
例如,当前的现有技术标准0中的qp预测方案使用以下具有给定fallbackqp的导出方案。
[0573]
a=(isleftcuavailble?culeftqp:fallbackqp)
[0574]
b=(isabovecuavailble?cuaboveqp:fallbackqp)
[0575]
predictedqp=(a+b+1)>>1
[0576]
在特定实施例中,如果左侧cu、上方cu分别不可用于预测,但左下延伸的cu可用于预测,则将预测方案扩展为使用左下扩展cu的qp。如果常规的邻居cu和左下延伸cu都不可用于预测,则替代地使用fallbackqp来分别导出a和b的值。
[0577]
a=(isleftcuavailble?culeftqp:(isextendedbelowleftcuavailble?cuextendedbelowleftqp:fallbackqp))
[0578]
b=(isabovecuavailble?cuaboveqp:(isextendedbelowleftcuavailble?cuextendedbelowleftqp:fallbackqp))
[0579]
predictedqp=(a+b+1)>>1
[0580]
但是,这种预测方案是通用的,并且适用于使用来自左邻居和上邻居的预测数据的任何预测方案。
[0581]
尤其是,
[0582]
cabac ctx cu split_flag的导出
[0583]
cabac ctx affine_flag的导出
[0584]
cabac ctx skip_flag的导出
[0585]
cabac ctx imv_flag的导出
[0586]
cabac ctx bt_split_flag的导出
[0587]
cabac ctx intra_nn_flag的导出
[0588]
此外,本发明的预测方案也可以在规范解码过程中用于导出特定的预测器,例如,运动矢量分量和参考索引的导出过程,或亮度帧内预测模式的导出过程。
[0589]
概括起来,根据实施例,所述八个相邻的编码树单元是第一邻域,并且数据编码器110可以例如被配置为:如果第一邻域的八个相邻编码树单元中的第二编码树单元不可用,则通过将第二邻域的另外八个相邻编码树单元中的第三编码树单元移位到第一邻域的八个相邻编码树单元中的所述第二编码树单元,来对多个编码树单元中的所述编码树单元进行编码,第二邻域的所述另外八个相邻编码树单元与所述第二编码树单元相邻。
[0590]
同样地,在一个实施例中,八个相邻编码树单元可以例如是第一邻域,并且数据解码器170可以例如被配置为:如果第一邻域的八个相邻编码树单元中的第二编码树单元不可用,则通过将第二邻域的另外八个相邻编码树单元中的第三编码树单元移位到第一邻域的八个相邻编码树单元中的所述第二编码树单元,来对位于图片内的多个编码树单元中的编码树单元进行解码,第二邻域的所述另外八个相邻编码树单元与所述第二编码树单元相邻。
[0591]
此外,提供了一种对图片进行编码的编码视频信号,其中,编码视频信号包括编码图片数据和指示数据,其中,图片被划分为多个编码区域,其中,多个编码区域中的每个编码区域位于图片内,其中,多个编码区域中的每个编码区域包括位于图片内的多个编码树单元中的一个或多个编码树单元,其中,根据多个编码区域对图片进行编码,并且其中,指示数据包括与多个编码区域有关的信息,其中,多个编码区域中的一个或多个编码区域包括多个编码树单元中的两个或更多个编码树单元,其中,包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域展示针对所述编码区域的两个或更多个编码树单元的编码顺序,其中,根据包括两个或更多个编码树单元的一个或多个编码区域的编码顺序来对图片进行编码,并且其中,指示数据包括与包括两个或更多个编码树单元的一个或多个编码区域的编码顺序有关的信息。
[0592]
根据实施例,多个编码区域中的每个编码区域在图片内呈矩形延伸,并且其中多个编码区域中的每个编码区域的一个或多个编码树单元中的每个编码树单元在图片内呈矩形延伸。
[0593]
在实施例中,多个编码树单元中的每个编码树单元具有在所述图片内的水平位置和在所述图片内的竖直位置,其中,多个编码区域中的第一编码区域包括第一编码树单元,第一编码树单元的第一竖直位置与多个编码区域中的不同第二编码区域的不同第二编码树单元的第二竖直位置相同,并且第一编码区域的第三编码树单元的第三竖直位置与第二编码区域的任何其他编码树单元的竖直位置不同,并且第二编码区域的第四编码树单元的第四竖直位置与第一编码区域的任何其他编码树单元的竖直位置不同,或者其中,多个编码区域中的第一编码区域包括第一编码树单元,第一编码树单元的第一水平位置与多个编码区域中的不同第二编码区域的不同第二编码树单元的第二水平位置相同,并且第一编码区域的第三编码树单元的第三水平位置与第二编码区域的任何其他编码树单元的水平位置不同,并且第二编码区域的第四编码树单元的第四水平位置与第一编码区域的任何其他编码树单元的水平位置不同。
[0594]
根据实施例,多个编码区域中的每个编码区域可以例如展示包括所述编码区域的位置、宽度和高度的空间特性,其中,所述编码区域的宽度和高度取决于所述编码区域的矩形延伸,并且其中,所述编码区域的位置取决于所述编码区域在图片内的位置。
[0595]
在实施例中,多个编码区域中的第一编码区域的第一高度可以例如不同于多个编码区域中的第二编码区域的第二高度,或者其中,多个编码区域中的第一编码区域的第一宽度不同于多个编码区域中的第二编码区域的第二宽度。
[0596]
根据实施例,该指示可以例如包括与多个编码区域中的每个编码区域的空间特性有关的信息。
[0597]
在实施例中,指示数据可以例如包括多个编码区域中的每个编码区域的位置、宽
度和高度。
[0598]
根据实施例,可以例如独立于对多个编码区域中的任何其他编码区域的图片部分的图像数据的编码,来对多个编码区域中的每个编码区域的图片部分的图像数据进行编码,以获得编码视频信号内的编码图片数据。
[0599]
在实施例中,可以例如通过对多个编码区域的每个编码区域内的图片部分的图像数据进行编码,来对图片部分进行编码,以获得编码图片数据,其中,多个编码区域中的至少一个的图片部分的图像数据被编码在编码视频信号内,使得对多个编码区域中的所述至少一个编码区域的图像数据的编码依赖于对多个编码区域中的至少另一个编码区域的图像数据的编码。
[0600]
根据实施例,编码视频信号可以例如包括比特流,其中,比特流包括编码图片数据和指示数据。
[0601]
在实施例中,指示数据可以例如包括针对每个编码区域的与是否指定了左上编码树单元的地址有关的信息。
[0602]
根据实施例,指示数据可以例如包括与多个编码区域的数量或多个编码区域的数量减1或多个编码区域的数量减2有关的信息。
[0603]
在实施例中,指示数据可以例如针对多个编码区域中的继多个编码区域中的另一个编码区域之后的一个编码区域,指示多个编码区域中的所述一个编码区域是否依赖于多个编码区域中的所述另一个编码区域。
[0604]
根据实施例,指示数据可以例如指示是否将多个条带中的恰好一个条带分配给所述多个编码区域中的恰好一个编码区域。
[0605]
在实施例中,指示数据可以例如指示指示数据是否包括与如伺在多个编码区域的一个或多个编码树单元中的每个编码树单元内进行扫描有关的信息。
[0606]
根据实施例,指示数据可以例如指示如何在所述多个编码区域的一个或多个编码树单元中的每个编码树单元内进行扫描。
[0607]
在实施例中,指示数据可以例如针对多个编码区域中的每个编码区域指示该编码区域是否包括多于一个编码树单元。
[0608]
根据一个实施例,指示数据可以例如针对多个编码区域中的一个编码区域指示是以最左侧的编码树单元开始编码树单元扫描还是以最右侧的编码树单元开始编码树单元扫描。
[0609]
在实施例中,指示数据可以例如针对多个编码区域中的一个编码区域指示是以编码区域的顶部编码树单元行开始编码树单元扫描还是以编码区域的底部编码树单元行开始编码树单元扫描。
[0610]
在实施例中,指示数据可以例如针对多个编码区域中的一个编码区域指示是在水平方向上开始编码树单元扫描还是在竖直方向上开始编码树单元扫描。
[0611]
根据实施例,指示数据可以例如指示非连续信息,所述非连续信息指示多个编码区域中的至少一个编码区域围绕多个编码区域中的另一个编码区域,还是多个编码区域中没有一个编码区域围绕另一个编码区域。
[0612]
根据实施例,指示数据可以例如针对多个编码区域中的一个编码区域以编码树单元来指示编码区域宽度,编码区域宽度指定其中一个编码区域内的在水平方向上布置的编
码树单元的数量。
[0613]
在实施例中,指示数据可以例如针对多个编码区域中的一个编码区域以编码树单元来指示编码区域高度,编码区域高度指定其中一个编码区域内的在竖直方向上布置的编码树单元的数量。
[0614]
根据一个实施例,指示数据可以例如针对多个编码区域中的编码区域指示所述编码区域内的水平方向上的最后一个编码树单元是否小于所述编码区域的在水平方向上位于所述编码树单元之前的另一个编码树单元。
[0615]
在特定实施例中,所述编码区域可以例如包括水平方向上的多个最后编码树单元,水平方向上的所述最后一个编码树单元是水平方向上的多个最后编码树单元中的一个编码树单元。如果所述编码区域内的水平方向上的所述最后一个编码树单元小于所述编码区域的在水平方向上位于所述最后一个编码树单元之前的另一个编码树单元,则多个最后编码树单元中的每个最后编码树单元在水平方向上可以例如具有相同的宽度。
[0616]
在实施例中,指示数据可以例如针对多个编码区域中的编码区域指示所述编码区域内的竖直方向上的最后一个编码树单元是否小于所述编码区域的在竖直方向上位于所述编码树单元之前的另一个编码树单元。
[0617]
在特定实施例中,所述编码区域可以例如包括竖直方向上的多个最后编码树单元,竖直方向上的所述最后一个编码树单元是竖直方向上的所述多个最后编码树单元中的一个编码树单元。如果所述编码区域内的竖直方向上的所述最后一个编码树单元小于所述编码区域的在竖直方向上位于所述最后一个编码树单元之前的另一个编码树单元,则多个最后编码树单元中的每个最后编码树单元在竖直方向上可以例如具有相同的高度。
[0618]
在实施例中,指示数据可以例如针对编码区域指示是指示了起始地址还是没有指示起始地址,所述起始地址指示所述编码区域的所述一个或多个编码树单元中的一个编码树单元。
[0619]
根据实施例,指示数据可以例如指示如何将图片分割一次或多次,以通过将所述图片分割一次或多次来获得多个编码区域。
[0620]
在实施例中,指示数据可以例如指示多个编码区域分割位置。
[0621]
根据实施例,指示数据可以例如将多个编码区域分割位置指示为有序序列。
[0622]
在实施例中,指示数据可以例如将多个编码区域分割位置指示为多个编码区域分割位置值,其中,多个编码区域分割位置值中的每个取决于图片的宽度或取决于图片的高度。
[0623]
根据实施例,指示数据可以例如指示如何将图片分层级地分割一次或多次,以通过将图片分层级地分割一次或多次来获得多个编码区域。
[0624]
在实施例中,指示数据可以例如包括针对一个或多个编码区域中的编码区域的一个或多个区域列停止标志,其中,如果一个或多个编码区域中的编码区域的区域列停止标志被设置为停止值,则所述区域列停止标志可以例如指示所述编码区域的宽度。或者,指示数据可以例如包括针对一个或多个编码区域中的编码区域的一个或多个区域行停止标志,其中,如果一个或多个编码区域中的编码区域的区域行停止标志被设置为停止值,则所述区域行停止标志可以例如指示所述编码区域的高度。
[0625]
根据实施例,指示数据可以例如指示显式信令模式是有效的或者显式信令模式是
无效的。如果显式信令模式是有效的,并且如果编码区域的一个或多个编码树单元中的编码树单元位于图片的图片边界处,则指示数据可以例如包括针对所述编码树单元的区域列停止标志和区域行停止标志中的至少一个。如果显式信令模式是无效的,并且如果编码区域的一个或多个编码树单元中的所述编码树单元位于图片的所述图片边界处,则指示数据不包括针对所述编码树单元的区域列停止标志和/或不包括针对所述编码树单元的区域行停止标志。
[0626]
根据实施例,包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域的编码顺序取决于光栅扫描,其中,指示数据包括可以例如指示已经采用光栅扫描对包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域进行编码。
[0627]
在实施例中,指示数据包括可以例如指示已经采用对角线扫描对包括两个或更多个编码树单元的一个或多个编码区域中的每个编码区域进行编码的信息。
[0628]
根据一个实施例,指示数据可以例如指示已经采用z扫描对一个或多个编码区域中的包括五个或更多个编码树单元的每个所述区域进行编码。
[0629]
在实施例中,指示数据可以例如指示包括一个或多个扫描方向的扫描顺序。
[0630]
根据实施例,指示数据可以例如指示索引,该索引可以例如指示一个或多个扫描方向中所选择的扫描方向。
[0631]
在实施例中,指示数据包括与编码视频序列的抗误码能力有关的信息。
[0632]
根据实施例,与抗误码能力有关的信息可以例如指示与编码视频序列的抗误码能力有关的三个或更多个不同状态中的一个。
[0633]
在实施例中,三个或更多个不同状态中的第一状态可以例如指示访问单元没有抗误码能力。三个或更多个不同状态中的第二状态可以例如指示图片参数集的第一多个访问单元没有抗误码能力。三个或更多个不同状态中的第三状态可以例如指示序列参数集的第二多个访问单元没有抗误码能力。
[0634]
在另一实施例中,与抗误码能力有关的信息可以例如指示与编码视频序列的抗误码能力有关的四个或更多个不同状态中的一个。四个或更多个不同状态中的第一状态可以例如指示抗误码能力在图片级别上受到损害,在多图片级别上受到损害,并且在序列级别上受到损害。四个或更多个不同状态中的第二状态可以例如指示抗误码能力在图片级别上受到损害并且在多图片级别上受到损害,但在序列级别上没有受到损害。四个或更多个不同状态中的第三状态可以例如指示抗误码能力在图片级别上受到损害,但是抗误码能力在多图片级别上没有受到损害,并且在序列级别上没有受到损害。并且,四个或更多个不同状态中的第四状态可以例如指示抗误码能力在图片级别上没有受到损害,在多图片级别上没有受到损害,并且在序列级别上没有受到损害。
[0635]
尽管已经在装置的上下文中描述了一些方面,但是将清楚的是,这些方面还表示对对应方法的描述,其中,块或设备对应于方法步骤或方法步骤的特征。类似地,在方法步骤上下文中描述的方面也表示对相应块或项或者相应装置的特征的描述。可以由(或使用)硬件设备(诸如,微处理器、可编程计算机或电子电路)来执行一些或全部方法步骤。在一些实施例中,可以由这种装置来执行最重要方法步骤中的一个或多个方法步骤。
[0636]
根据某些实现要求,本发明的实施例可以用硬件或软件实现,或者至少部分用硬件实现,或至少部分用软件实现。可以使用其上存储有电子可读控制信号的数字存储介质
h.265|iso/iec 23008 10(hevc),2013年第1版;2014年第2版。
[0652]
[2]欧洲专利申请,申请号:ep 18165249.6;2018年3月29日提交。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1