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

文档序号:28488291发布日期:2022-01-15 01:53阅读:221来源:国知局
用于视频编码和解码的装置、方法和计算机程序与流程

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


背景技术:

2.视频编码标准和规范通常允许编码器将编码图片划分或分区为子集。在视频编码中,分区可以被定义为将图片或图片的子区域划分为子集(块),使得图片或图片的子区域的每个元素恰好位于子集(块)中的一个子集中。例如,h.265/hevc引入了默认大小为64
×
64个像素的编码树单元(ctu)的概念。基于四叉树结构,ctu能够包含单个编码单元(cu),或者递归地被拆分为多个较小的cu,至少为8x8个像素。h.265/hevc还确认图块(它们是矩形的并且包含整数数目的ctu)和切片(基于切片分段定义的,该切片分段包含整数数目的编码树单元,在图块扫描中连续排序并且包含在单个nal单元中)。
3.通用视频编码(vvc)(mpeg-i第3部分)(又名itu-t h.266)是由作为hevc/h.265的继任者的国际电信联盟(itu)的移动图片专家组(mpeg)和视频编码专家组(vceg)的联合视频专家队(jvet)开发的视频压缩标准(正式的iso/iec jtc1 sc29 wg11)。vvc分区方案不仅包括图块,还包括砖块,它可以在图块内包括一个或多个ctu行。砖块的引入也会影响切片的定义。
4.因此,一个相当复杂的句法结构已经被创建,用于发信号通知用于图块和砖块分区的各种选项,这在许多方面中都是次优的,尤其是关于所述信令所需的比特率。


技术实现要素:

5.现在,为了至少缓和以上问题,在本文中介绍了增强型编码方法。
6.本发明的各种实施例所寻求的保护范围由独立权利要求陈述。本说明书中描述的不落入独立权利要求的范围的实施例和特征(如果有的话)将被解释为对理解本发明的各种实施例有用的示例。
7.根据第一方面的方法包括:确定要被指配给分区并且被初始化为未指配的单元的数目;指示或者推断要被指配的明确大小的分区的数目;指示明确大小的分区的大小,并且相应地将未指配单元标记为以预定义扫描顺序被指配给分区;指示单元的计数;将单元的计数重复地指配给分区,并且相应地将未指配单元标记为以预定义扫描顺序被指配,直到未指配单元的数目小于单元的计数为止;以及如果未指配单元的数目大于0,则将未指配单元指配给最后一个分区。
8.根据实施例,分区是以下一项或多项:图块列、图块行、一个或多个图块列的砖块行、图块的砖块行、用于指示子图分区的网格的网格列、用于指示子图分区的网格的网格行。
9.根据实施例,单元是以下一项或多项:图片的样本的矩形块、用于指示子图分区的网格的网格单元。
10.根据第二方面的装置包括:用于确定要被指配给分区并且被初始化为未指配的单
元的数目的部件;用于指示或者推断要被指配的明确大小的分区的数目的部件;用于指示明确大小的分区的大小的部件,以及用于相应地将未指配单元标记为以预定义扫描顺序被指配给分区的部件;用于指示单元的计数的部件;用于将单元的计数重复地指配给分区的部件,以及用于相应地将未指配单元标记为以预定义扫描顺序被指配直到未指配单元数目小于单元的计数为止的部件;以及用于在未指配单元数目大于0的情况下将未指配单元指配给最后的分区的部件。
11.根据第三方面的方法包括:确定要被指配给分区的单元的数目;确定要被指配的明确大小的分区的数目;确定明确大小的分区的大小,并且相应地将未指配单元标记为以预定义扫描顺序被指配给分区;确定单元的计数;将单元的计数重复地指配给分区,并且相应地将未指配单元标记为以预定义扫描顺序被指配,直到未指配单元的数目小于单元的计数为止;以及如果未指配单元的数目大于0,则将未指配单元指配给最后一个分区。
12.根据实施例,确定要被指配的明确大小的分区的数目包括从句法结构解码要被指配的明确大小的分区的数目;确定针对明确大小的分区的大小包括从句法结构解码明确大小的分区的大小;并且确定单元的计数包括从句法结构解码单元的计数。
13.根据第四方面的装置包括:用于确定要被指配给分区的单元的数目的部件;确定要被指配的明确大小的分区的数目;用于确定针对明确大小的分区的大小的部件,以及用于相应地将未指配单元标记为以预定义扫描顺序被指配给分区的部件;用于确定单元的计数的部件;用于将单元的计数重复地指配给分区的部件,以及用于相应地将未指配单元标记为以预定义扫描顺序被指配直到未指配单元数目小于单元的计数为止的部件;以及用于在未指配单元数目大于0的情况下将未指配单元指配给最后一个分区的部件。
14.其他方面涉及装置,包括:至少一个处理器和至少一个存储器,所述至少一个存储器在其上存储有代码,该代码在由所述至少一个处理器执行时使装置至少执行以上方法和与其相关的实施例的一个或多个实施例。
附图说明
15.为了更好地理解本发明,现在将通过示例的方式参照附图,其中:
16.图1示意性地示出了采用本发明的实施例的电子设备;
17.图2示意性地示出了适合于采用本发明的实施例的用户设备;
18.图3还示意性地示出了采用本发明的实施例的电子设备,本发明使用无线和有线网络连接进行连接;
19.图4示意性地示出了适合于实现本发明的实施例的编码器;
20.图5a、图5b、图5c示出了将图片分区为编码树单元(ctu)、图块、砖块和切片的一些示例;
21.图6示出了根据h.266/vvc草案5的切片、图片和砖块分区的信令的句法结构;
22.图7示出了根据本发明的一个方面的编码方法的流程图;
23.图8示出了根据本发明的另一方面的编码方法的流程图;
24.图9示出了根据本发明的实施例的编码方法的流程图;
25.图10a、图10b、图10c示出了图块和砖块分区的一些示例;
26.图11示出了适合于实现本发明的实施例的解码器的示意图;
27.图12示出了根据本发明的实施例的解码方法的流程图;
28.图13示出了根据本发明的另一实施例的解码方法的流程图;
29.图14a和图14b示出了根据本发明的又一实施例的编码和解码方法的流程图;以及
30.图15示出了各种实施例可以被实现的示例多媒体通信系统的示意图。
具体实施方式
31.以下进一步详细描述了用于发起视点切换的适当装置和可能机制。在这方面,首先参照图1和图2,其中图1示出了根据示例实施例的视频编码系统的框图作为示例性装置或电子设备50的示意性框图,该示例性装置或电子设备50可以包含根据本发明的实施例的编解码器。图2示出了根据示例实施例的装置的布局。图1和图2的元件接下来将被解释。
32.电子设备50可以例如是无线通信系统的移动终端或用户设备。然而,要了解的是,本发明的实施例可以在可能需要编码和解码或者编码或解码视频图像的任何电子设备或装置内实施。
33.装置50可以包括用于包含和保护设备的壳体30。装置50还可以包括液晶显示器形式的显示器32。在本发明的其他实施例中,显示器可以是适合于显示图像或视频的任何适当的显示技术。装置50还可以包括小键盘34。在本发明的其他实施例中,任何适当的数据或用户界面机制可以被采用。例如,用户界面可以被实现为虚拟键盘或数据键入系统,作为触敏显示器的一部分。
34.该装置可以包括麦克风36或者可以是数字或模拟信号输入的任何适当的音频输入。装置50还可以包括音频输出设备,其在本发明的实施例中可以是听筒38、扬声器或者模拟音频或数字音频输出连接中的任何一个。装置50还可以包括电池(或者在本发明的其他实施例中,该设备可以由诸如太阳能电池、燃料电池或发条发电机等任何适当的移动能源设备供电)。该装置还可以包括能够记录或捕获图像和/或视频的相机。装置50还可以包括用于与其他设备的短距离视线通信的红外端口。在其他实施例中,装置50还可以包括任何适当的短距离通信解决方案,诸如例如蓝牙无线连接或usb/火线有线连接。
35.装置50可以包括用于控制装置50的控制器56、处理器或处理器电路系统。控制器56可以被连接至存储器58,在本发明的实施例中,该存储器58可以以图像和音频数据的形式存储数据和/或还可以存储用于在控制器56上实施的指令。控制器56还可以被连接至编解码器电路系统54,该编解码器电路系统54适合于执行音频和/或视频数据的编码和解码或者辅助由控制器执行的编码和解码。
36.装置50还可以包括读卡器48和智能卡46,例如uicc和uicc读取器,以提供用户信息并且适合于提供用于在网络处对用户进行认证和授权的认证信息。
37.装置50可以包括无线电接口电路系统52,该无线电接口电路系统52被连接至控制器并且适合于生成例如与蜂窝通信网络、无线通信系统或无线局域网通信的无线通信信号。装置50还可以包括天线44,该天线44被连接至无线电接口电路系统52,以将在无线电接口电路系统52处生成的射频信号发送给(多个)其他装置,并且从(多个)其他装置接收射频信号。
38.装置50可以包括能够记录或检测各个帧的相机,然后这些帧被传递给编解码器54或控制器以进行处理。该装置可以在传输和/或存储之前从另一设备接收视频图像数据以
进行处理。装置50还可以无线地或通过有线连接接收图像用于编码解码。上述装置50的结构元件表示用于执行对应功能的部件的示例。
39.相对于图3,本发明的实施例能够被使用的系统的示例被示出。系统10包括能够通过一个或多个网络进行通信的多个通信设备。系统10可以包括有线或无线网络的任何组合,包括但不限于无线蜂窝电话网络(诸如gsm、umts、cdma网络等)、诸如由任何ieee802.x标准定义的无线局域网(wlan)、蓝牙个域网、以太网局域网、令牌环局域网、广域网和互联网。
40.系统10可以包括适合于实现本发明的实施例的有线和无线通信设备和/或装置50。
41.例如,图3所示的系统示出了移动电话网络11和互联网28的表示。与互联网28的连接性可以包括但不限于长距离无线连接、短距离无线连接和各种有线连接,包括但不限于电话线、电缆线、电源线和类似的通信路径。
42.系统10所示的示例通信设备可以包括但不限于电子设备或装置50、个人数字助理(pda)和移动电话14的组合、pda 16、集成消息收发设备(imd)18、台式计算机20、笔记本计算机22。当由移动的个体携带时,装置50可以是静止的或移动的。装置50也可以以运输模式定位,包括但不限于汽车、卡车、出租车、公共汽车、火车、轮船、飞机、自行车、摩托车或任何类似的合适运输模式。
43.实施例也可以被实现在机顶盒(即,可能/可能不具有显示器或无线能力的数字tv接收器)中,被实现在平板计算机或(膝上型)个人计算机(pc)(具有硬件或软件或者编码器/解码器实施方式的组合)中,被实现在各种操作系统中,并且被实现在芯片组、处理器、dsp和/或提供基于硬件/软件的编码的嵌入式系统中。
44.一些或其他装置可以发送和接收呼叫和消息,并且通过与基站24的无线连接25与服务提供方通信。基站24可以被连接至允许在移动电话网络11与互联网28之间通信的网络服务器26。该系统可以包括附加的通信设备和各种类型的通信设备。
45.通信设备可以使用各种传输技术进行通信,包括但不限于码分多址(cdma)、全球移动通信系统(gsm)、通用移动电信系统(umts)、时分多址(tdma)、频分多址(fdma)、传输控制协议-互联网协议(tcp-ip)、短消息收发服务(sms)、多媒体消息收发服务(mms)、电子邮件、即时消息收发服务(ims)、蓝牙、ieee 802.11和任何类似的无线通信技术。实现本发明的各种实施例涉及的通信设备可以使用各种介质进行通信,介质包括但不限于无线电、红外、激光、电缆连接以及任何适当的连接。
46.在电信和数据网络中,信道可以指物理信道或逻辑信道。物理信道可以指代诸如电线等物理传输介质,而逻辑信道可以指代能够传达多个逻辑信道的复用介质上的逻辑连接。信道可以被用于将信息信号(例如比特流)从一个或多个发送器(或发射器(transmitter))传达给一个或多个接收器。
47.在iso/iec 13818-1中或在itu-t建议书h.222.0中等效地指定的mpeg-2传送流(ts)是用于在复用流中携带音频、视频和其他介质以及程序元数据或其他元数据的格式。分组标识符(pid)被用于标识ts内的基本流(又名分组化基本流)。因此,mpeg-2 ts内的逻辑信道可以被认为与特定的pid值相对应。
48.可用的媒体文件格式标准包括iso基媒体文件格式(iso/iec 14496-12,可以被缩
写为isobmff)和nal单元结构化视频的文件格式(iso/iec 14496-15),该文件格式源自isobmff。
49.视频编解码器由将输入视频变换为适合于存储/传输的压缩表示的编码器和能够将压缩视频表示解压缩回可视形式的解码器组成。视频编码器和/或视频解码器也可以彼此分离,即,不需要形成编解码器。通常,编码器会丢弃原始视频序列中的一些信息,以便以更紧凑的形式(即,较低的比特率)表示视频。
50.典型的混合视频编码器(例如itu-t h.263和h.264的许多编码器实现)在两个阶段中对视频信息进行编码。首先,例如通过运动补偿方式(找到并且指示在先前编码的视频帧中的一个视频帧中与被编码的块紧密对应的区域)或通过空间方式(使用要以指定方式编码的块周围的像素值),某个图片区域(或“块”)中的像素值被预测。其次,预测误差(即,预测像素块与原始像素块之间的差异)被编码。这通常通过使用指定的变换(例如离散余弦变换(dct)或其变型)来变换像素值的差异,量化系数并且对量化的系数进行熵编码来完成。通过改变量化过程的保真度,编码器能够控制像素表示的准确性(图片质量)与所得编码视频表示的大小(文件大小或传输比特率)之间的平衡。
51.在时间预测中,预测源是先前解码的图片(又名参考图片)。在块内复制(ibc;又名块内复制预测)中,预测与时间预测类似地应用,但是参考图片是当前图片,并且仅先前解码的样本能够在预测过程中引用。层间或视图间预测可以被类似地应用于时间预测,但是参考图片分别是来自另一可伸缩层或来自另一视图的解码图片。在一些情况下,帧间预测可以仅指时间预测,而在其他情况下,帧间预测可以共同指时间预测以及块内复制、层间预测和视图间预测中的任何一个,前提是它们以与时间预测相同或类似的过程执行。帧间预测或时间预测有时可以被称为运动补偿或运动补偿预测。
52.帧间预测(也可以被称为时间预测、运动补偿或运动补偿预测)减少了时间冗余性。在帧间预测中,预测源是先前解码的图片。帧内预测利用了同一图片内的相邻像素很可能相关的事实。帧内预测能够在空间或变换域中执行,即,样本值或变换系数能够被预测。帧内预测通常在帧间预测未被应用的帧内编码中利用。
53.编码过程的一个结果是编码参数集,诸如运动向量和量化的变换系数。如果许多参数首先从空间或时间上邻近的参数预测,则许多参数能够被更有效地熵编码。例如,运动向量可以从空间上相邻的运动向量来预测,并且仅相对于运动向量预测器的差异可以被编码。编码参数的预测和帧内预测可以被统称为图片内预测。
54.图4示出了适合于采用本发明的实施例的视频编码器的框图。图4提出了用于两层的编码器,但是要了解的是,所提出的编码器能够被类似地扩展以对多于两个层进行编码。图4图示了视频编码器的实施例,其包括用于基础层的第一编码器区段500和用于增强层的第二编码器区段502。第一编码器区段500和第二编码器区段502中的每个编码器区段可以包括用于对传入图片进行编码的类似元件。编码器区段500、502可以包括像素预测器302、402、预测误差编码器303、403和预测误差解码器304、404。图4还示出了像素预测器302、402的实施例,其包括帧间预测器306、406、帧内预测器308、408、模式选择器310、410、滤波器316、416和参考帧存储器318、418。第一编码器区段500的像素预测器302接收视频流的300个基础层图像,以在帧间预测器306(确定图像与运动补偿参考帧318之间的差异)和帧内预测器308(仅基于当前帧或图片的已处理部分确定图像块的预测)处进行编码。帧间预测器
和帧内预测器两者的输出都被传递给模式选择器310。帧内预测器308可以具有多于一种帧内预测模式。因此,每种模式可以执行帧内预测,并且将预测的信号提供给模式选择器310。模式选择器310还接收基础层图片300的副本。对应地,第二编码器区段502的像素预测器402接收视频流的400个增强层图像,以在帧间预测器406(确定图像与运动补偿参考帧418之间的差异)和帧内预测器408(仅基于当前帧或图片的已处理部分确定图像块的预测)两者处进行编码。帧间预测器和帧内预测器两者的输出都被传递给模式选择器410。帧内预测器408可以具有多于一种帧内预测模式。因此,每种模式可以执行帧内预测,并且将预测的信号提供给模式选择器410。模式选择器410还接收增强层图片400的副本。
55.取决于哪种编码模式被选择以对当前块进行编码,帧间预测器306、406的输出或者可选帧内预测器模式中的一种模式的输出或者模式选择器内的表面编码器的输出被传递给模式选择器310、410的输出。模式选择器的输出被传递给第一求和设备321、421。第一求和设备可以从基础层图片300/增强层图片400减去像素预测器302、402的输出,以产生被输入给预测误差编码器303、403的第一预测误差信号320、420。
56.像素预测器302、402还从初步重构器339、439接收图像块312、412的预测表示与预测误差解码器304、404的输出338、438的组合。初步重构图像314、414可以被传递给帧内预测器308、408和滤波器316、416。接收初步表示的滤波器316、416可以滤波初步表示,并且输出可以被保存在参考帧存储器318、418中的最终重构图像340、440。参考帧存储器318可以被连接至帧间预测器306,以被用作在帧间预测操作中与将来的基础层图片300进行比较的参考图像。根据一些实施例,在基础层被选择并且被指示为用于增强层的层间样本预测和/或层间运动信息预测的源的情况下,参考帧存储器318也可以被连接至帧间预测器406,以被用作在帧间预测操作中与将来的增强层图片400进行比较的参考图像。而且,参考帧存储器418可以被连接至帧间预测器406,以被用作在帧间预测操作中与将来的增强层图片400进行比较的参考图像。
57.根据一些实施例,在基础层被选择并且被指示为用于预测增强层的滤波参数的源的情况下,来自第一编码器区段500的滤波器316的滤波参数可以被提供给第二编码器区段502。
58.预测误差编码器303、403包括变换单元342、442和量化器344、444。变换单元342、442将第一预测误差信号320、420变换为变换域。该变换是例如dct变换。量化器344、444对变换域信号(例如dct系数)进行量化,以形成量化系数。
59.预测误差解码器304、404接收来自预测误差编码器303、403的输出,并且执行预测误差编码器303、403的相反过程,以产生解码后的预测误差信号338、438,当预测误差信号与第二求和设备339、439处的图像块312、412的预测表示组合时,其产生初步重构图像314、414。预测误差解码器可以被认为包括对量化系数值(例如dct系数)进行去量化以重构变换信号的去量化器361、461以及对重构的变换信号执行逆变换的逆变换单元363、463,其中逆变换单元363、463的输出包含(多个)重构块。预测误差解码器还可以包括块滤波器,该块滤波器可以根据进一步解码的信息和滤波器参数来对(多个)重构块进行滤波。
60.熵编码器330、430接收预测误差编码器303、403的输出,并且可以对信号执行适当的熵编码/可变长度编码,以提供误差检测和校正能力。熵编码器330、430的输出可以例如通过复用器508被插入到比特流中。
61.熵编码/解码可以以许多方式执行。例如,基于上下文的编码/解码可以被应用,其中编码器和解码器两者都基于先前编码/解码的编码参数来修改编码参数的上下文状态。基于上下文的编码可以例如是上下文自适应二进制算术编码(cabac)或基于上下文的可变长度编码(cavlc)或任何类似的熵编码。熵编码/解码可以备选地或附加地使用可变长度编码方案而被执行,诸如哈夫曼编码/解码或exp-golomb编码/解码等。来自熵编码的比特流或码字的编码参数的解码可以被称为解析。
62.h.264/avc标准是由国际电信联盟电信标准化部门(itu-t)的视频编码专家组(vceg)和国际标准化组织(iso)/国际电工委员会(iec)的移动图片专家组(mpeg)的联合视频队(jvt)开发的。h.264/avc标准是由两个父级标准化组织发布的,并且被称为itu-t建议书h.264和iso/iec国际标准14496-10,也称为mpeg-4第10部分高级视频编码(avc)。存在h.264/avc标准的多个版本,在规范中集成了新的扩展或特征。这些扩展包括可伸缩视频编码(svc)和多视图视频编码(mvc)。
63.高效视频编码(h.265/hevc,又名hevc)标准的版本1是由vceg和mpeg的联合协作队-视频编码(jct-vc)开发的。该标准是由两个父级标准化组织发布的,并且它被称为itu-t建议书h.265和iso/iec国际标准23008-2,也称为mpeg-h第2部分高效视频编码(hevc)。h.265/hevc的后期版本包括可伸缩、多视图、保真度范围、三维和屏幕内容编码扩展,可以分别被缩写为shvc、mv-hevc、rext、3d-hevc和scc。
64.shvc、mv-hevc和3d-hevc使用在hevc标准的版本2的附件f中指定的公共基础规范。该公共基础包括例如指定比特流各层的一些特点的例如高级句法和语义(诸如层间相关性)以及解码过程,诸如参考图片列表构造,包括层间参考图片和多层比特流的图片顺序计数推导。附件f也可以被用于hevc的潜在后续多层扩展中。要理解的是,即使视频编码器、视频解码器、编码方法、解码方法、比特流结构和/或实施例在下面可以参照诸如shvc和/或mv-hevc等具体扩展来描述,但是它们通常适用于hevc的任何多层扩展,甚至更一般地适用于任何多层视频编码方案。
65.通用视频编码(vvc)(mpeg-i第3部分)(又名itu h.266)是视频压缩标准,由mpeg联盟和作为hevc/h.265的继任者的itu的联合视频探索队(jvet)开发。
66.h.264/avc、hevc和vvc的一些关键定义、比特流和编码结构以及概念及其一些扩展作为视频编码器、解码器、编码方法、解码方法和比特流结构的示例在本章节中被描述,,其中实施例可以被实现。本发明的各个方面不被限于h.264/avc或hevc或vcc或其扩展,相反描述针对一种可能的基础给出,本实施例可以在此基础上部分或完全地实现。每当vvc或其任何草案版本在下面引用时,都需要理解的是,该描述与vvc草案规范相匹配,后期草案版本和vvc的(多个)最终版本可能改变,并且描述和实施例可以被调整以匹配vvc的(多个)最终版本。
67.视频编码标准可以指定比特流句法和语义以及无误差比特流的解码过程,而编码过程可能未被指定,但编码器可能只需要生成符合要求的比特流。比特流和解码器符合性可以利用假设参考解码器(hrd)而被验证。这些标准可以包含有助于处理传输误差和丢失的编码工具,但是在编码中使用该工具可以是可选的,并且错误比特流的解码过程可能尚未被指定。
68.句法元素可以被定义为比特流中表示的数据元素。句法结构可以被定义为以指定
顺序一起出现在比特流中的零个或多个句法元素。
69.每个句法元素可以通过其名称和一个描述符来描述,用于其编码表示方法。句法元素名称包括带下划线字符的所有小写字母的约定可以被使用。视频解码器的解码过程可以根据句法元素的值和先前解码的句法元素的值来表现。
70.当描述h.264/avc、hevc、vcc和示例实施例时,以下描述符和/或描述可以被用于指定每个句法元素的解析过程。
[0071]-u(n):使用n比特的无符号整数。当n在句法表中为“v”时,比特数以取决于其他句法元素的值的方式变化。该描述符的配对过程由来自比特流的n个下一比特指定,解释为无符号整数的二进制表示,其中最高有效比特被首先写入。
[0072]-ue(v):无符号整数指数哥伦布编码(又名exp哥伦布编码)句法元素,其中左位在前。
[0073]
指数哥伦布比特串可以被转换为代码编号(codenum),例如使用下表:
[0074]
比特串codenum100 1 010 1 120 0 1 0 030 0 1 0 140 0 1 1 050 0 1 1 160 0 0 1 0 0 070 0 0 1 0 0 180 0 0 1 0 1 09
……
[0075]
在一些情况下,句法表可以使用从句法元素值导出的其他变量的值。变量命名约定可以被使用,其中小写和大写字母混合并且没有任何下划线字符。以大写字母开始的变量可以被导出,以用于对当前句法结构和所有相关句法结构进行解码。以大写字母开始的变量可以在解码过程中用于后期的句法结构,而无需提及变量的原始句法结构。以小写字母开始的变量只可以在它们被导出的上下文内使用的约定可以被使用。
[0076]
在一些情况下,句法元素值或变量值的“助记符”名称与其数值可以被互换使用。有时“助记符”名称被使用而没有任何关联的数值。
[0077]
标志可以被定义为变量或者能够采用以下两个可能值中的一个可能值的单个比特句法元素:0和1。
[0078]
数组可以是句法元素或变量。方括号可以被用于数组的索引。一维数组可以被称为列表。二维数组可以被称为矩阵。
[0079]
函数可以通过其名称来描述。约定可以被使用,其中函数名称以大写字母开始,包含没有任何下划线字符的小写和大写字母的混合,并且以左括号和右括号结束,包括通过逗号分离(如果有多于一个变量)的零个或多个变量名称(用于定义)或值(用于使用)。
[0080]
函数ceil(x)可以被定义为返回大于或等于x的最小整数。函数log2(x)可以被定
义为返回x的以2为底的对数。
[0081]
用于描述句法元素的解码的过程可以被指定。过程可以具有分离的规范和调用。可以指定属于当前句法结构和相关句法结构的所有句法元素和大写变量在过程规范和调用中可用,并且也可以指定过程规范也可以具有明确指定为输入的小写变量。每个过程规范可以明确指定一个或多个输出,每个输出可以是一个变量,该变量能够是大写变量或小写变量。
[0082]
句法、语义和过程可以利用算术、逻辑、关系、逐位和指配运算符来描述,这些运算符类似于c编程语言中使用的运算符。具体地,运算符/被用于指示整数除法(具有截断),并且运算符%被用于指示模数(即,除法的余数)。
[0083]
编号和计数约定可以从0开始,例如“第一个”相当于第0个,“第二个”相当于第1个等。
[0084]
分别用于编码器输入和解码器输出的基本单元通常是图片。作为输入被赋予编码器的图片也可以被称为源图片,并且通过解码而解码的图片可以被称为解码图片或重构图片。
[0085]
源图片和解码图片分别由一个或多个样本数组组成,诸如以下样本数组集中的一个数组集:
[0086]-仅亮度(y)(单色)。
[0087]-亮度和两个色度(ycbcr或ycgco)。
[0088]-绿色、蓝色和红色(gbr,也称为rgb)。
[0089]-表示其他未指定的单色或三刺激颜色采样的数组(例如yzx,也称为xyz)。
[0090]
在下文中,这些数组可以被称为亮度(或l或y)和色度,其中两个色度数组可以被称为cb和cr;不管使用哪种实际颜色表示方法。使用的实际颜色表示方法能够例如使用hevc等的视频可用性信息(vui)句法例如在编码比特流中指示。分量可以被定义为来自三个样本数组(亮度和两个色度)中的一个数组的数组或单个样本或者构成单色格式图片的数组或数组的单个样本。
[0091]
图片可以被定义为帧或字段。帧包括亮度样本以及可能的对应色度样本的矩阵。字段是帧的交替样本行集合,并且当源信号被交错时,可以被用作编码器输入。当与亮度样本数组相比时,色度样本数组可以不存在(并且因此可以使用单色采样),或者色度样本数组可能会被二次采样。
[0092]
一些色度格式可以被概括如下:
[0093]-在单色采样中,只有一个样本数组,名义上可以被认为是亮度数组。
[0094]-在4:2:0采样中,两个色度数组中的每个色度数组都具有亮度数组的一半高度和一半宽度。
[0095]-在4:2:2采样中,两个色度数组中的每个色度数组都具有亮度数组的相同高度和一半宽度。
[0096]-在没有使用分离颜色平面的4:4:4采样中,两个色度数组中的每个色度数组都具有与亮度数组相同的高度和宽度。
[0097]
编码格式或标准可以允许将样本数组作为分离颜色平面编码到比特流中,并且分别对来自比特流的分离编码的颜色平面进行解码。当使用分离颜色平面时,它们中的每一
个颜色平面利用单色采样作为图片(通过编码器和/或解码器)分离地处理。
[0098]
分区可以被定义为将集合划分为子集,使得集合的每个元素恰好在子集中的一个子集中。在视频编码中,分区可以被定义为将图片或图片的子区域划分为子集,使得图片或图片的子区域的每个元素恰好位于子集中的一个子集中。例如,在与hevc编码和/或解码和/或与vvc编码和/或解码相关的分区中,以下术语可以被使用。编码块可以被定义为针对n的一些值的nxn个样本块,使得将编码树块划分为编码块是分区。编码树块(ctb)可以被定义为针对n的一些值的nxn个样本块,使得将分量划分为编码树块是分区。编码树单元(ctu)可以被定义为亮度样本的编码树块、具有三个样本数组的图片的色度样本的两个对应的编码树块或者单色图片或使用三个分离颜色平面和句法结构(被用于对样本进行编码)进行编码的图片的样本的编码树块。编码单元(cu)可以被定义为亮度样本的编码块、具有三个样本数组的图片的色度样本的两个对应的编码块或者单色图片或使用三个分离颜色平面和句法结构(被用于对样本进行编码)进行编码的图片的样本的编码块。具有最大允许大小的cu可以被命名为lcu(最大编码单元)或编码树单元(ctu),并且视频图片被划分为非重叠的lcu。
[0099]
在hevc中,cu由定义cu内的样本的预测过程的一个或多个预测单元(pu)和定义所述cu中的样本的预测误差编码过程的一个或多个变换单元(tu)组成。通常,cu由正方形样本块组成,其大小可从可能的cu大小的预定义集合中选择。每个pu和tu还能够被拆分为较小的pu和tu,以便分别增加预测和预测误差编码过程的粒度。每个pu具有与其相关联的预测信息,该预测信息定义哪种预测将被应用于该pu内的像素(例如用于帧间预测的pu的运动向量信息和用于帧内预测的pu的帧内预测方向性信息)。
[0100]
每个tu能够与描述所述tu内的样本的预测误差解码过程的信息(包括例如dct系数信息)相关联。通常在cu级别发信号通知预测误差编码是否被应用于每个cu。在没有与cu相关联的预测误差残差的情况下,能够认为没有针对所述cu的tu。将图像划分为cu以及将cu划分为pu和tu通常在比特流中发信号通知,从而允许解码器再现这些单元的预期结构。
[0101]
在h.266/vvc的草案版本中,以下分区适用。要注意的是,在该标准被最终确定之前,此处描述的内容可能仍会在h.266/vvc的后期草案版本中演变。尽管最大ctu大小已被增大到128x128,但与hevc类似,图片被分区为ctu。编码树单元(ctu)首先由四元树(又名四叉树)结构进行分区。然后四元树的叶节点能够通过多类型树结构进一步分区。多类型树结构中有四种拆分类型,即,垂直二元拆分、水平二元拆分、垂直三元拆分和水平三元拆分。多类型树的叶节点被称为编码单元(cu)。cu、pu和tu具有相同的块大小,除非cu对于最大变换长度而言太大。ctu的分段结构是具有嵌套多类型树的四叉树,其使用二元和三元拆分,即,没有使用分离的cu、pu和tu概念,除了需要大小对于最大变换长度而言太大的cu之外。cu能够具有正方形或矩形形状。
[0102]
一些编码格式(诸如vvc,v)的编码器输出和一些编码格式(诸如vvc)的解码器的输入的基本单元是网络抽象层(nal)单元。为了在面向分组的网络上传送或存储到结构化文件中,nal单元可以被封装到分组或类似结构中。
[0103]
字节流格式可以针对nal单元流指定,用于不提供帧结构的传输或存储环境。字节流格式通过在每个nal单元的前面附加起始代码来将nal单元彼此分离。为了避免错误检测nal单元边界,编码器运行面向字节的起始代码仿真预防算法,如果起始代码会以其他方式
出现,则该算法会将仿真预防字节添加到nal单元有效载荷。为了使面向分组和面向流的系统之间能够直接进行网关操作,无论字节流格式是否在使用中,起始代码仿真预防始终可以被执行。
[0104]
nal单元可以被定义为句法结构,其包含要遵循的数据类型的指示以及包含该数据的字节,该字节以rbsp的形式在必要时散布有仿真预防字节。原始字节序列有效载荷(rbsp)可以被定义为包含整数数目的字节的句法结构,这些字节被封装在nal单元中。rbsp为空或具有包含句法元素的数据比特字符串的形式,其后是rbsp停止比特,然后是等于0的零个或多个后续比特。
[0105]
nal单元由报头和有效载荷组成。nal单元报头指示nal单元的类型等。
[0106]
nal单元能够被分类为视频编码层(vcl)nal单元和非vcl nal单元。vcl nal单元通常是编码的切片nal单元。
[0107]
非vcl nal单元可以是例如以下类型中的一种类型:序列参数集、图片参数集、补充增强信息(sei)nal单元、访问单元定界符、序列nal单元的末尾、比特流nal单元的末尾或填充数据nal单元。重构解码图片可能需要参数集,而重构解码样本值不需要许多其他非vcl nal单元。
[0108]
一些编码格式指定参数集,这些参数集可以携带解码或重构解码图片所需的参数值。参数可以被定义为参数集的句法元素。参数集可以被定义为句法结构,该句法结构包含参数并且可以例如使用标识符从另一句法结构引用或者由其激活。
[0109]
一些类型的参数集在下文中简要描述,但需要理解的是,可以存在其他类型的参数集,并且实施例可以被应用但不被限于所描述的参数集类型。通过编码视频序列保持不变的参数可以被包括在序列参数集(sps)中。除了解码过程可能需要的参数之外,序列参数集还可以可选地包含视频可用性信息(vui),该信息包括对于缓冲、图片输出定时、渲染和资源保留可能很重要的参数。图片参数集(pps)包含在多个编码图片中可能不变的这种参数。图片参数集可以包括能够由一个或多个编码图片的编码图像分段引用的参数。报头参数集(hps)已经被提出以包含可以基于图片而改变的这种参数。
[0110]
比特流可以被定义为比特序列,在一些编码格式或标准中,该比特序列可以采用nal单元流或字节流的形式,其形成编码图片和关联数据(形成一个或多个编码视频序列)的表示。在相同逻辑信道中,诸如在相同文件中或在通信协议的相同连接中,第一比特流之后可以是第二比特流。基本流(在视频编码的上下文中)可以被定义为一个或多个比特流的序列。在一些编码格式或标准中,第一比特流的末尾可以由特定nal单元指示,该nal单元可以被称为比特流(eob)nal单元的末尾并且是比特流的最后一个nal单元。
[0111]
比特流部分可以被定义为比特流的连续子集。在一些上下文中,可能需要比特流部分由一个或多个完整的句法结构组成并且没有不完整的句法结构。在其他上下文中,比特流部分可以包括比特流的任何连续区段,并且可以包含不完整的(多个)句法结构。
[0112]
沿着比特流(例如沿着比特流指示)或沿着比特流的编码单元(例如沿着编码图块指示)的短语可以在权利要求和所描述的实施例中使用,以通过“带外”数据分别与比特流或编码单元相关联但未被包括在比特流或编码单元内的方式指代传输、信令或存储。沿着比特流或沿着比特流的编码单元等的短语解码可以指对分别与比特流或编码单元相关联的参考带外数据(可以从带外传输、信令或存储中获得)进行解码。例如,当比特流被包含在
容器文件中时,沿着比特流的短语可以被使用,诸如符合iso基媒体文件格式的文件,并且某些文件元数据以将元数据关联至比特流的方式被存储在文件中,诸如包含比特流的轨道的样本条目中的框、包含比特流的轨道的样本组或者与包含比特流的轨道相关联的定时元数据轨道。
[0113]
编码视频序列(cvs)可以被定义为按解码顺序的这种编码图片序列,其可独立地解码,并且随后是另一编码视频序列或比特流的末尾。当具体nal单元(可以被称为序列末尾(eos)nal单元)出现在比特流中时,编码视频序列可以附加地或备选地被指定结束。
[0114]
图像能够被拆分为独立可编码和可解码的图像分段(例如切片和/或图块和/或图块组)。这种图像分段可以实现并行处理,本描述中的“切片”可以指由以默认编码或解码顺序处理的一定数目的基础编码单元构成的图像分段,而“图块”可以指已经沿着图块网格被定义为矩形图像区域的图像分段。图块组可以定义为一组一个或多个图块。图像分段可以被编码为比特流中的分离单元,诸如h.264/avc和hevc和vvc中的vcl nal单元。编码图像分段可以包括报头和有效载荷,其中报头包含解码有效载荷所需的参数值。切片的有效载荷可以被称为切片数据。
[0115]
在hevc中,图片能够被分区为矩形的图块,并且包含整数数目的lcu。在hevc中,对图块的分区形成规则的网格,其中图块的高度和宽度彼此之间最多相差一个lcu。在hevc中,切片被定义为一个独立切片分段中所包含的整数数目的编码树单元以及在同一接入单元内的下一独立切片分段(如果有的话)之前的所有后续从属切片分段(如果有的话)。在hevc中,切片分段被定义为在图块扫描中连续排序并且包含在单个nal单元中的整数数目的编码树单元。将每个图片划分为切片分段是分区。在hevc中,独立切片分段被定义为切片分段报头的句法元素的值未从先前切片分段的值中推断出的切片分段,并且从属切片分段被定义为切片分段报头的一些句法元素的值从按照解码顺序的先前独立切片分段的值中推断出的切片分段。在hevc中,切片报头被定义为独立切片分段的切片分段报头,该独立切片分段是当前切片分段或者是在当前从属切片分段之前的独立切片分段,并且切片分段报头被定义为包含与切片分段中表示的第一或所有编码树单元相关的数据元素的编码切片分段的一部分。如果未使用图块,则cu以图块内或图片内的lcu的光栅扫描顺序扫描。在lcu内,cu具有特定的扫描顺序。
[0116]
因此,视频编码标准和规范可以允许编码器将编码图片划分为编码切片等。图片内预测通常跨切片边界禁用。因此,切片能够被视为将编码图片拆分为可独立解码的片段的方式。在h.264/avc和hevc中,图片内预测可以跨切片边界禁用。因此,切片能够被视为将编码图片拆分为可独立解码的片段的方式,并且因此切片通常被视为用于传输的基本单元。在许多情况下,编码器可以在比特流中指示哪些类型的图片内预测跨切片边界关闭,并且例如在得出哪些预测源可用时,解码器操作会将该信息考虑在内。例如,如果邻近cu驻留在不同切片中,则来自邻近cu的样本可以被认为不可用于帧内预测。
[0117]
在vvc的草案版本(即,vvc草案5)中,将图片分区为切片、图块和砖块被定义如下。vvc的其他草案版本可能会类似地定义将图片分区为切片、图块和砖块。
[0118]
图片被划分为一个或多个图块行和一个或多个图块列。将图片分区为图块形成图块网格,其特征可能在于图块列宽列表(以ctu为单位)和图块行高列表(以ctu为单位)。
[0119]
图块是一系列编码树单元(ctu),它覆盖图块网格中的一个“单元”,即,图片的矩
形区域。图块被划分为一个或多个砖块,每个砖块由图块内的许多ctu行组成。未被分区为多个砖块的图块也被称为砖块。然而,作为图块的真子集的砖块未被称为图块。
[0120]
切片包含图片的多个图块或图块的多个砖块。切片是vcl nal单元。
[0121]
两种切片模式被支持,即,光栅扫描切片模式和矩形切片模式。在光栅扫描切片模式下,切片包含图片的图块光栅扫描中的图块序列。在矩形切片模式下,切片包含图片的共同形成图片的矩形区域的多个砖块。矩形切片内的砖块按照切片的砖块光栅扫描顺序。
[0122]
砖块扫描可以被定义为对图片进行分区的ctu的特定顺序排序,其中ctu在砖块中的ctu光栅扫描中连续排序,图块内的砖块在图块的砖块的光栅扫描中连续排序,并且图片中的图块在图片的图块的光栅扫描中连续排序。它可能例如在编码标准中是必需的,针对每个编码的切片nal单元的第一ctu,编码的切片nal单元应该按照砖块扫描顺序中的ctu地址增加的顺序,其中ctu地址可以被定义为在图片内的ctu光栅扫描中增加。光栅扫描可以被定义为将矩形二维图案映射到一维图案,使得一维图案中的第一条目来自从左到右扫描的二维图案的第一行,接着是类似地分别从左到右扫描的图案(向下)的第二行、第三行等。
[0123]
图5a示出了图片的光栅扫描切片分区的示例,其中图片被划分为12个图块和3个光栅扫描切片。图5b示出了图片的矩形切片分区的示例(具有18x12个ctu),其中图片被划分为24个图块(6个图块列和4个图块行)和9个矩形切片。图5c示出了被分区为图块、砖块和矩形切片的图片的示例,其中图片被划分为4个图块(2个图块列和2个图块行)、11个砖块(左上图块包含1个砖块,右上图块包含5个砖块,左下图块包含2个砖块,并且右下图块包含3个砖块)和4个矩形切片。
[0124]
对图块、砖块和矩形切片的分区在图片参数集(pps)中被指定。图6示出了用于指示对图块和砖块进行分区的句法,它分两个阶段执行:图块网格(即,图块列宽和图块行高)被提供作为第一阶段,并且此后所指示的图块被进一步分区为砖块。
[0125]
存在指示图块网格的两种模式:统一的(利用值等于1的句法元素uniform_tile_spacing_flag指示)和显式的。在统一图块间距中,图块具有相等的宽度(最右边的图块列可能除外)和相等的高度(最底部的图块行可能除外)。在显式图块间距中,除了最右边的列和最底部的行(分别)之外,图块列和行的宽度和高度(分别)被指示(以ctu为单位)。
[0126]
与图块网格如何被指示类似,存在两种模式用于指示图块如何被拆分为砖块,即,每个图块能够指示统一或显式砖块间距。信令类似于图块行的信令。
[0127]
当使用矩形切片时,以下内容使用包括并且遵循句法元素num_slices_in_pic_minus1的句法结构针对每个切片提供:
[0128]-左上砖块索引(除了被推断为具有索引0的第一切片之外)
[0129]-切片的右下砖块相对于左上砖块索引的差异砖块索引。
[0130]
图6的句法元素的语义已在vvc草案5中被指定如下:
[0131]
single_tile_in_pic_flag等于1指定每个图片中只存在一个图块引用pps。single_tile_in_pic_flag等于0指定每个图片中有多于一个图块引用pps。注释

如果图块内没有进一步的砖块拆分,则整个图块被称为砖块。当图片只包含单个图块而没有进一步的砖块拆分时,它被称为单个砖块。比特流符合性的要求是,single_tile_in_pic_flag的值对于在cvs内激活的所有pps而言应该相同。
[0132]
uniform_tile_spacing_flag等于1指定图块列边界和同样的图块行边界在图片
上均匀分布,并且使用句法元素tile_cols_width_minus1和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]的列表发信号通知。当不存在时,uniform_tile_spacing_flag的值被推断为等于1。
[0133]
tile_cols_width_minus1加1指定当uniform_tile_spacing_flag等于1时以ctb为单位的图块列(不包括图片的最右边图块列)的宽度。tile_cols_width_minus1的值应该在0到picwidthinctbsy-1的范围(包括性的)内。当不存在时,tile_cols_width_minus1的值被推断为等于picwidthinctbsy

1。
[0134]
tile_rows_height_minus1加1指定当uniform_tile_spacing_flag等于1时以ctb为单位的图块行的高度(不包括图片的底部图块行)。tile_rows_height_minus1的值应该在0到picheightinctbsy-1的范围(包括性的)内。当不存在时,tile_rows_height_minus1的值被推断为等于picheightinctbsy

1。
[0135]
num_tile_columns_minus1加1指定当uniform_tile_spacing_flag等于0时对图片进行分区的图块列数。num_tile_columns_minus1的值应该在0到picwidthinctbsy-1的范围(包括性的)内。如果single_tile_in_pic_flag等于1,则num_tile_columns_minus1的值被推断为等于0。否则,当uniform_tile_spacing_flag等于1时,num_tile_columns_minus1的值被推断为在ctb光栅扫描、图块扫描和砖块扫描过程中指定。
[0136]
num_tile_rows_minus1加1指定当uniform_tile_spacing_flag等于0时对图片进行分区的图块行数。num_tile_rows_minus1的值应该在0到picheightinctbsy-1的范围(包括性的)内。如果single_tile_in_pic_flag等于1,则num_tile_rows_minus1的值被推断为等于0。否则,当uniform_tile_spacing_flag等于1时,num_tile_rows_minus1的值被推断为在ctb光栅扫描、图块扫描和砖块扫描过程中指定。变量numtilesinpic被设置为等于(num_tile_columns_minus1+1)*(num_tile_rows_minus1+1)。当single_tile_in_pic_flag等于0时,numtilesinpic应该大于1。
[0137]
tile_column_width_minus1[i]加1指定以ctb为单位的第i个图块列的宽度。
[0138]
tile_row_height_minus1[i]加1指定以ctb为单位的第i个图块行的高度。
[0139]
brick_splitting_present_flag等于1指定引用pps的图片的一个或多个图块可以被划分为两个或多个砖块。brick_splitting_present_flag等于0指定没有引用pps的图片图块被划分为两个或多个砖块。
[0140]
brick_split_flag[i]等于1指定第i个图块被划分为两个或多个砖块。brick_split_flag[i]等于0指定第i个图块未被划分为两个或多个砖块。当不存在时,brick_split_flag[i]的值被推断为等于0。
[0141]
uniform_brick_spacing_flag[i]等于1指定水平砖边界被均匀分布在第i个图块上,并且使用句法元素brick_height_minus1[i]发信号通知。uniform_brick_spacing_flag[i]等于0指定水平砖块边界可以或可以不被均匀分布在第i个图块上,并且使用句法元素num_brick_rows_minus1[i]和句法元素brick_row_height_minus1[i][j]的列表发信号通知。当不存在时,uniform_brick_spacing_flag[i]的值被推断为等于1。
[0142]
brick_height_minus1[i]加1指定当uniform_brick_spacing_flag[i]等于1时以
ctb为单位的砖块行的高度(不包括第i个图块中的底部砖块)。当存在时,brick_height_minus1的值应该在0到rowheight[i]-2的范围(包括性的)内。当不存在时,brick_height_minus1[i]的值被推断为等于rowheight[i]

1。
[0143]
num_brick_rows_minus1[i]加1指定当uniform_brick_spacing_flag[i]等于0时对第i个图块进行分区的砖块数目。当存在时,num_brick_rows_minus1[i]的值应该在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光栅扫描、图块扫描、砖块扫描过程中指定。
[0144]
brick_row_height_minus1[i][j]加1指定当uniform_tile_spacing_flag等于0时以ctb为单位的第i个图块中的第j个砖块的高度。
[0145]
以下变量被导出,并且当uniform_tile_spacing_flag等于1时,num_tile_columns_minus1和num_tile_rows_minus1的值被推断,并且针对每个i范围从0到numtilesinpic-1(包括性的),当uniform_brick_spacing_flag[i]等于1时,num_brick_rows_minus1[i]的值是通过调用ctb光栅扫描、图块扫描、砖块扫描过程推断的:
[0146]-列表rowheight[j]针对j范围从0到num_tile_rows_minus1(包括性的),指定以ctb为单位的第j个图块行的高度,
[0147]-列表ctbaddrrstobs[ctbaddrrs]针对ctbaddrrs范围从0到picsizeinctbsy-1(包括性的),指定从图片的ctb光栅扫描中的ctb地址到砖块扫描中的ctb地址的转换,
[0148]-列表ctbaddrbstobs[ctbaddrbs]针对ctbaddrbs范围从0到picsizeinctbsy-1(包括性的),指定从砖块扫描中的ctb地址到图片的ctb光栅扫描中的ctb地址的转换,
[0149]-列表brickid[ctbaddrbs]针对ctbaddrbs范围从0到picsizeinctbsy-1(包括性的),指定从砖块扫描中的ctb地址到砖块id的转换,
[0150]-列表numctusinbrick[brickidx]针对brickidx范围从0到numbricksinpic-1(包括性的),指定从砖块索引到砖块中的ctu数目的转换,
[0151]-列表firstctbaddrbs[brickidx]针对brickidx范围从0到numbricksinpic-1(包括性的),指定在砖块中的第一ctb的砖块扫描中从砖块id到ctb地址的转换。
[0152]
single_brick_per_slice_flag等于1指定引用该pps的每个切片包括一个砖块。single_brick_per_slice_flag等于0指定引用该pps的切片可以包括多于一个砖块。当不存在时,single_brick_per_slice_flag的值被推断为等于1。
[0153]
rect_slice_flag等于0指定每个切片内的砖块按照光栅扫描顺序,并且切片信息不在pps中发信号通知。rect_slice_flag等于1指定每个切片内的砖块覆盖图片的矩形区域,并且切片信息在pps中发信号通知。当single_brick_per_slice_flag等于1时,rect_slice_flag被推断为等于1。
[0154]
num_slices_in_pic_minus1加1指定引用pps的每个图片中的切片数目。num_slices_in_pic_minus1的值应该在0到numbricksinpic-1的范围(包括性的)内。当不存在并且single_brick_per_slice_flag等于1时,num_slices_in_pic_minus1的值被推断为等于numbricksinpic-1。
[0155]
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)比特。
[0156]
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]))比特。
[0157]
比特流符合性的要求是,切片应该包括多个完整的图块或仅包括一个图块的完整砖块的连续序列。指定第i个切片中的砖块数目以及砖块到切片的映射的变量numbricksinslice[i]和brickstoslicemap[j]被导出如下:
[0158][0159]
因此,相当复杂的句法结构旨在发信号通知图块和砖块分区。它在许多方面都是次优的,例如在句法元素的数目、句法中的行、操作模式的数目(即,图块和砖块两者的分离统一和显式模式、以及分离指示的图块和砖块边界)和发信号通知时的比特计数方面。
[0160]
vvc草案6支持子图(又名子图片)。子图可以被定义为图片内的一个或多个切片的矩形区域,其中一个或多个切片是完整的。因此,子图由共同覆盖图片的矩形区域的一个或多个切片组成。子图的切片可能需要是矩形切片。图片到子图的分区可以在sps中指示和/或从sps解码。以下特性中的一个或多个特性可以针对子图共同地或针对每个子图单独地被指示(例如由编码器)或被解码(例如由解码器)或被推断(例如由编码器和/或解码器):i)子图在解码过程中是否被视为图片;在一些情况下,该特性不包括环路滤波操作,这些操作可能会被分离地指示/解码/推断;ii)环路滤波操作是否跨子图边界执行。
[0161]
用于发信号通知图块和砖块分区的改进方法现在被介绍。
[0162]
图7所示的根据第一方面的用于编码的方法包括:在一时间处对比特流进行编码(700),该比特流包括图块列的指示和一个或多个图块列的砖块高度的指示,或者在比特流中或沿着比特流在一时间处编码图块列的指示和一个或多个图块列的砖块高度的指示;在检测到通过图片对准的砖块行后,推断(702)潜在的图块行;推断(704)潜在图块行的边界是图块行的边界或指示潜在图块行的边界是否是图块行的边界;以及使用所指示的图块列、所指示或推断的图块行和所指示的砖块高度将一个或多个图片编码(706)到比特流中,
其中一个或多个图片沿着所指示的图块列和所指示或推断的图块行被分区为图块网格,图块网格中的图块包括整数数目的编码树单元并且被分区为一个或多个砖块,其中砖块包括图块内的整数数目的编码树单元行。
[0163]
根据第一方面的用于解码的方法包括:从比特流或沿着比特流在一时间处解码图块列的指示和一个或多个图块列的砖块高度的指示;在检测到通过图片对准的砖块行时,推断潜在的图块行;推断潜在图块行的边界是图块行的边界或解码潜在图块行的边界是否是图块行的边界;以及使用所指示的图块列、所指示或推断的图块行以及所指示的砖块高度从比特流解码一个或多个图片,其中一个或多个图片沿着所指示的图块列和所指示或推断的图块行分区为图块网格,图块网格中的图块包括整数数目的编码树单元并且被分区为一个或多个砖块,其中砖块在图块内包括整数数目的编码树单元行。
[0164]
因此,图块列和图块列方向的砖块高度由编码器指示和/或由解码器解码,不包括图块行高。潜在的图块行边界被推断为砖块边界通过图片(水平)对准的那些图块行边界。因此,针对某个潜在的图块行边界,可以推断所述潜在图块行边界是图块行边界。推断潜在的图块行边界是图块行边界可以基于对句法结构中可用的其他信息或句法结构中不存在某些信息(例如不存在特定标志)做出的结论。
[0165]
备选地,能够由编码器指示和/或由解码器解码潜在图块行边界是否是图块行边界。该指示可以基于例如句法结构中存在的一个或多个标志。
[0166]
因此,通过仅指示图块列和图块列方向的砖块高度并且推断潜在的图块行,分区能够发信号通知,而不发信号通知图块行高度。因此,编码效率被提高,并且所述信令所需的比特率被降低。
[0167]
在下文中,提供了第一方面的多个示例性实施例,即,用于指示图块列和图块列方向的砖块高度并且不包括图块行高度的句法和语义。实施例同样适用于生成符合句法和语义的比特流部分的编码以及根据句法和语义对比特流部分进行解码的解码。
[0168]
句法和语义的示例1:
[0169][0170]
uniform_tile_col_spacing_flag等于1指定图块列边界被均匀分布在图片上,并且使用句法元素tile_cols_width_minus1发信号通知。uniform_tile_spacing_flag等于0指定图块列边界可以或可以不被均匀分布在图片上,并且使用句法元素num_tile_columns_minus1和句法元素tile_column_width_minus1[i]的列表发信号通知。当不存在时,uniform_tile_col_spacing_flag的值被推断为等于1。
[0171]
tile_cols_width_minus1、num_tile_columns_minus1和tile_column_width_minus1[i]的语义与vvc草案5中具有相同名称的句法元素的语义相同地指定。
[0172]
如果uniform_tile_col_spacing_flag等于1,则numtilecolsinpic被设置为等于picwidthinctbsy/(tile_cols_width_minus1+1)+picwidthinctbsy%(tile_cols_width_minus1+1)。否则,numtilecolsinpic被设置为等于num_tile_columns_minus1+1。
[0173]
uniform_brick_spacing_flag[i]等于1指定水平砖块边界被均匀分布在第i个图块列上,并且使用句法元素brick_height_minus1[i]发信号通知。uniform_brick_spacing_flag[i]等于0指定水平砖块边界可以或可以不被均匀分布在第i个图块列上,并且使用句法元素num_brick_rows_minus1[i]和句法元素brick_row_height_minus1[i][j]的列表发信号通知。当不存在时,uniform_brick_spacing_flag[i]的值被推断为等于1。
[0174]
brick_height_minus1[i]加1指定当uniform_brick_spacing_flag[i]等于1时以ctb为单位的砖块行的高度(不包括第i个图块列中的底部砖块)。
[0175]
num_brick_rows_minus1[i]加1指定当uniform_brick_spacing_flag[i]等于0时对第i个图块列进行分区的砖块数目。
[0176]
brick_row_height_minus1[i][j]加1指定当uniform_tile_spacing_flag等于0时以ctb为单位的第i个图块列中的第j个砖块的高度。
[0177]
句法和语义的示例2
[0178]
示例2类似于示例1,但附加地由编码器指示和/或由解码器解码当前图块列到砖块的分区是否与前一图块列的分区相同。
[0179][0180]
句法元素的语义与示例1相同,但以下添加了copy_previous_col_flag[i]的语义:
[0181]
copy_previous_col_flag[i]等于1指定以下所有内容:
[0182]-uniform_brick_spacing_flag[i]被推断为等于uniform_brick_spacing_flag[i

1]。
[0183]
当brick_height_minus1[i

1]存在时,brick_height_minus1[i]被推断为等于brick_height_minus1[i

1]。
[0184]
当num_brick_rows_minus1[i

1]存在时,num_brick_rows_minus1[i]被推断为等于num_brick_rows_minus1[i

1],并且针对0到num_brick_rows_minus1[i]

1范围(包括性的)内的j的每个值,brick_row_height_minus1[i][j]被推断为等于brick_row_height_minus1[i-1][j]。
[0185]
另一方面,vvc草案5的次优句法结构问题可以通过一种方法来缓和,其中图块列宽、图块行高或砖块高度可以由编码器指示和/或由解码器以某些预定义的扫描顺序解码,直到指示或解码(分别)剩余的图块列、图块行或砖块(分别)具有相等的尺寸。
[0186]
根据该第二方面的用于编码的方法在图8中示出,其中该方法包括:步骤a)指示
(800)要被指配的分区的数目;b)确定(802)要被指配给分区的单元的数目;c)指示(804)要被指配的多个单元是否被均匀地指配给所述多个分区;并且如果不是,则d)指示(806)要被指配给下一分区的单元的数目,以及e)重复(808)步骤c)和d),直到所有单元都已被指配给分区为止。
[0187]
根据第二方面的用于解码的方法包括:步骤a)解码要被指配的分区的数目;b)确定要被指配给分区的单元的数目;c)解码要被指配的多个单元是否被均匀地指配给所述多个分区;并且如果不是,则d)解码要被指配给下一分区的单元的数目,以及e)重复步骤c)和d),直到所有单元都已被指配给分区为止。
[0188]
根据适用于编码和/或解码的实施例,要被指配给分区的单元数目是以下项中的一项:以ctu为单位的图片宽度(例如当分区是图块列时)、以ctu为单位的图片高度(例如当分区是图块行时,或者当分区是在一时间处针对一个或多个完整图块列指示的砖块行时)、图块中的ctu行数(例如当分区是图块的砖块时)。
[0189]
根据适用于编码和/或解码的实施例,分区是以下一项或多项:图块列、图块行、砖块行。
[0190]
根据适用于编码和/或解码的实施例,单元是图片的样本的矩形块。例如,图8所示的第二方面中的单元可以是编码树块。
[0191]
因此,通过以预定义的扫描顺序指示要被指配给分区的单元的数目,所需句法元素的数目和所述信令所需比特率的显著节省可以被实现,特别是如果尚未指配的多个单元应该被均匀地指配给剩余分区。
[0192]
图9示出了图8的方法可以如何根据实施例实现的示例。因此,要被指配的多个分区(诸如图块列和/或图块行)首先被指示(900),并且要被指配给分区的多个单元nu(诸如编码树块(ctb)的单元)被确定(902)。为了创建用于检查所有单元已被指配给一个分区的环路,检查(904)要被指配的分区的数目np是否大于1。如果不是,即,np=1,则推断或指示(910)尚未指配的所有剩余单元应该被指配给剩余分区。
[0193]
然而,如果np》1,则检查(906)要被指配的单元的数目nu是否可被分区的数目np整除。如果是,则确定(908)多个单元nu是否应该被均匀地指配给剩余分区。如果是,则推断或指示(910)尚未指配的所有剩余单元nu应该被均匀地指配给(多个)剩余分区。如果注意到要被指配的单元的数目nu无法被分区的数目np整除(906),或者确定(908)多个单元nu不应被均匀地指配给剩余分区,则按预定义扫描顺序指配给下一分区的单元的数目被指示(912)。要被指配的单元的数目nu减少(914)指示的要被指配给所述下一分区的单元的数目,并且要被指配的分区的数目np递减1(916)。然后如果要被指配的分区的数目np大于1,则循环回检查(904)。
[0194]
图9的方法可以被类似地实现用于根据在下文中描述的实施例的解码。首先,要被指配的多个分区(诸如图块列和/或图块行)从比特流或者沿着比特流解码,并且要被指配给分区的多个单元nu(诸如编码树块(ctb)的单元)被确定。为了创建用于检查所有单元已被指配给一个分区的环路,检查要被指配的分区的数目np是否大于1。如果不是,即,np=1,则从比特流或者沿着比特流推断或解码尚未指配的所有剩余单元应该被指配给剩余分区。
[0195]
然而,如果np》1,则检查要被指配的单元的数目nu是否可被分区的数目np整除。如果是,则从比特流或者沿着比特流解码多个单元nu是否应该被均匀地指配给剩余分区。如
果注意到要被指配的单元的数目nu无法被分区的数目np整除,或者从比特流或沿着比特流解码多个单元nu不应被均匀地指配给剩余分区,则按预定义扫描顺序指配给下一分区的单元的数目从比特流或者沿着比特流解码。要被指配的单元的数目nu减少指示的要被指配给所述下一分区的单元的数目,并且要被指配的分区的数目np递减1。然后如果要被指配的分区的数目np大于1,则循环回检查。
[0196]
在下文中,提供了第二方面的示例性实施例,即,用于显式/统一图块/砖块分区的统一信令的句法和语义。实施例同样适用于生成符合句法和语义的比特流部分的编码以及根据句法和语义对比特流部分进行解码的解码。
[0197]
在该示例中,统一信令被用于指定图块列宽和图块行高,而与vvc草案5相比,砖块的信令没有改变。
[0198][0199]
[0200]
rem_tile_col_equal_flag[i]等于0指定索引在0到i范围(包括性的)内的图块列可以或可以不具有以ctb为单位的相等宽度。rem_tile_col_equal_flag[i]等于1指定索引在0到i范围(包括性的)内的图块列具有以ctb为单位的相等宽度,并且tile_column_width_minus1[j]被推断为针对0到i范围(包括性的)内的j的每个值等于remwidthinctbsy/(i+1)。
[0201]
rem_tile_row_equal_flag[i]等于0指定索引在0到i范围(包括性的)内的图块行可以或可以不具有以ctb为单位的相等高度。rem_tile_row_equal_flag[i]等于1指定索引在0到i范围(包括性的)内的图块行具有以ctb为单位的相等高度,并且tile_row_width_minus1[j]被推断为针对0到i范围(包括性的)内的j的每个值等于remheightinctbsy/(i+1)。
[0202]
其他句法元素的语义可以与vvc草案5中相同名称的句法元素的语义相同地指定。
[0203]
在下文中,提供了又一方面的示例性实施例,即,用于包括指示图块列和图块列方向的砖块高度以及显式/统一图块/砖块分区的统一信令两者的句法和语义。实施例同样适用于生成符合句法和语义的比特流部分的编码以及根据句法和语义对比特流部分进行解码的解码。
[0204]
用于编码的示例性实施例能够被概括如下,而示例性实施例能够通过将术语指示替换为术语解码而适用于解码。
[0205]
图块列被指示如下:
[0206]-图块列数被指示(num_tile_columns_minus1)。
[0207]-以下内容在环路中指示,该环路从右到左遍历图块列,直到所有图块列已经被遍历为止或者直到剩余的图块列被指示具有相等宽度为止:
[0208]

如果剩余宽度(以ctb为单位)可被尚未指定的图块列的数目整除,则指示剩余图块列是否具有相等的宽度(rem_tile_col_equal_flag[i])。
[0209]

如果剩余的图块列的宽度不相等,则图块列宽度被指示(tile_column_width_minus1[i])。
[0210]
以下内容在环路中被指示,该环路针对矩形切片从左到右遍历图块列,并且仅包含一个环路条目,该条目指定光栅扫描切片的图块行高:
[0211]-如果图块列的砖块分区与先前图块列的砖块分区相同,则为标志。最左边的图块列(copy_previous_col_flag[i])不存在该标志。要注意的是,该标志能够在该示例性实施例中被省略,或者存在下面进一步讨论的其他备选方案,其能够被用于实现与由该标志实现的功能性类似的功能性。
[0212]-当图块列的图块砖块分区与先前图块列不同时,图块列的砖块被指示如下:
[0213]

图块列中的砖块的数目被指示(num_bricks_minus1[i])。
[0214]

以下内容在环路中被指示,该环路从右到左遍历砖块,直到图块列的所有砖块已经被遍历为止或者直到图块列的剩余砖块被指示具有相等高度为止:
[0215]

如果剩余高度(以ctb为单位)可被尚未指定的砖块的数目整除,则指示剩余砖块是否具有相等的高度(rem_brick_height_equal_flag[i][j])。
[0216]

如果剩余砖块的高度不相等,则砖块高度被指示(brick_height_minus1[i][j])。
[0217]
以下句法可以在该示例性实施例中使用:
[0218][0219][0220]
num_tile_columns_minus1加1指定当uniform_tile_spacing_flag等于0时对图片进行分区的图块列数。num_tile_columns_minus1的值应该在0到picwidthinctbsy-1的范围(包括性的)内。当single_tile_in_pic_flag等于1时,num_tile_columns_minus1的值被推断为等于0。
[0221]
rem_tile_col_equal_flag[i]等于0指定索引在0到i范围(包括性的)内的图块列可以或可以不具有以ctb为单位的相等宽度。rem_tile_col_equal_flag[i]等于1指定索引在0到i范围(包括性的)内的图块列被推断为具有以ctb为单位的相等宽度。当不存在时,rem_tile_equal_flag[i]的值被推断为等于0。
[0222]
tile_column_width_minus1[i]加1指定以ctb为单位的第i个图块列的宽度。
[0223]
copy_previous_col_flag[i]等于0指定num_bricks_minus1[i]存在。copy_previous_col_flag[i]等于1指定以下所有内容:
[0224]-num_bricks_minus1[i]被推断为等于num_bricks_minus1[i

1],
[0225]-针对在1到num_bricks_minus1[i]范围(包括性的)内的j的所有这种值,rem_
brick_height_equal_flag[i][j]被推断为等于rem_brick_height_equal_flag[i-1][j],其中rem_brick_height_equal_flag[i-1][j]的值存在或被推断。
[0226]-针对在1到num_bricks_minus1[i]范围(包括性的)内的j的所有这种值,brick_height_minus1[i][j]被推断为等于brick_height_minus1[i-1][j],其中brick_height_minus[i-1][j]的值存在。
[0227]
copy_previous_col_flag[i]等于0指定num_bricks_minus1[i]存在。copy_previous_col_flag[i]等于1指定以下所有内容:
[0228]-num_bricks_minus1[i]被推断为等于num_bricks_minus1[i

1],
[0229]-针对在1到num_bricks_minus1[i]范围(包括性的)内的j的所有这种值,rem_brick_height_equal_flag[i][j]被推断为等于rem_brick_height_equal_flag[i-1][j],其中rem_brick_height_equal_flag[i-1][j]的值存在或被推断。
[0230]-针对在1到num_bricks_minus1[i]范围(包括性的)内的j的所有这种值,brick_height_minus1[i][j]被推断为等于brick_height_minus1[i-1][j],其中brick_height_minus[i-1][j]的值存在。
[0231]
rem_brick_height_equal_flag[i][j]等于0指定第i个图块列内索引在0到j范围(包括性的)内的砖块可以或可以不具有以ctb为单位的相等高度。rem_brick_height_equal_flag[i][j]等于1指定第i个图块列内索引在0到j范围(包括性的)内的砖块被推断为具有以ctb为单位的相等高度。当不存在时,rem_brick_height_equal_flag[i][j]的值被推断为等于0。
[0232]
brick_height_minus1[i][j]加1指定以ctb为单位的第i个图块列内的第j个砖块的高度。
[0233]
其他句法元素的语义可以与vvc草案5中具有相同名称的句法元素的语义相同地指定。
[0234]
解码过程可以使用定义如下或类似于以下定义的变量:
[0235]
i范围从0到num_tile_columns_minus1(包括性的),指定以ctb为单位的第i个图块列的宽度的列表colwidth[i]被导出如下:
[0236][0237]
i范围从0到num_tile_columns_minus1(包括性的),并且j范围从0到num_bricks_
minus1[i](包括性的),指定第i个图块列内以ctb为单位的第j个砖块行的高度的列表colbrickheight[i][j]、j范围从0到numtilerows-1(包括性的),指定以ctb为单位的第j个图块行的高度的列表rowheight[j]、j范围从0到numtilerows(包括性的),指定以ctb为单位的第j个图块行边界的位置的列表tilerowbd[j]、numtilerows的值和numtilesinpic的值被导出如下:
[0238]
[0239][0240]
[0241]
当single_tile_in_pic_flag等于0时,numtilesinpic应该大于1。i范围从0到num_tile_columns_minus1+1(包括性的),指定以ctb为单位的第i个图块列边界的位置的列表tilecolbd[i]被导出如下:for(tilecolbd[0]=0,i=0;i<=num_tile_columns_minus1;i++)
[0242]
tilecolbd[i+1]=tilecolbd[i]+colwidth[i]
[0243]
指定引用pps的图片中的砖块数目的变量numbricksinpic以及brickidx范围从0到numbricksinpic-1(包括性的),指定以ctb为单位的垂直砖块边界的位置、以ctb为单位的水平砖块边界的位置、以ctb为单位的砖块列的宽度和以ctb为单位的砖块列的高度的列表brickcolbd[brickidx]、brickrowbd[brickidx]、brickwidth[brickidx]和brickheight[brickidx]被导出,并且针对从0到numtilesinpic-1(包括性的)的每个i,当uniform_brick_spacing_flag[i]等于1时,num_brick_rows_minus1[i]的值被推断如下:
[0244][0245]
根据实施例,一种用于编码的方法包括:步骤a)确定要被指配给分区的单元的数目;b)指示或推断要被指配的明确大小的分区的数目;c)指示明确大小的分区的大小或单元的数目;以及d)指示或推断要被指配的均匀大小的分区的数目。
[0246]
根据用于编码的实施例,步骤d)包括:步骤d1)指示单元的计数;d2)重复地将单元的计数指配给分区,直到未指配单元的数目小于单元的计数为止;以及d3)如果未指配单元的数目大于0,则以预定义扫描顺序将未指配单元被指配给最后一个分区。
[0247]
因此,根据以上实施例的编码方法在图14a中图示,其可以独立地或者与本文描述的一个或多个实施例组合实现。该方法包括:确定(1400)要被指配给分区并且被初始化为未指配的单元的数目;指示或者推断(1402)要被指配的明确大小的分区的数目;指示(1404)明确大小的分区的大小,并且相应地将未指配单元标记为以预定义扫描顺序被指配
给分区;指示(1406)单元的计数;将单元的计数重复地指配(1408)给分区,并且相应地将未指配单元标记为以预定义扫描顺序被指配,直到未指配单元的数目小于单元的计数为止;以及如果未指配单元的数目大于0,则将未指配的单元指配(1410)给最后的分区。
[0248]
根据实施例,一种用于解码的方法包括:步骤a)确定要被指配给分区的单元的数目;b)解码或推断要被指配的明确大小的分区的数目;c)解码明确大小的分区的大小或单元的数目;以及d)解码或推断要被指配的均匀大小的分区的的数目。
[0249]
根据用于解码的实施例,步骤d)包括:步骤d1)解码单元的计数;d2)重复地将单个单元的计数指配给分区,直到未指配单元的数目小于单元的计数为止;d3)如果未指配单元的数目大于0,则以预定义扫描顺序将未指配单元指配给最后的分区。
[0250]
因此,根据以上实施例的解码方法在图14b中图示,其可以独立地或者与本文描述的一个或多个实施例组合实施。该方法包括:确定(1450)要被指配给分区的单元的数目;确定(1452)要被指配的明确大小的分区的数目;确定(1454)明确大小的分区的大小,并且相应地将未指配单元标记为以预定义扫描顺序被指配给分区;确定(1456)单元的计数;将单元计数重复地指配(1458)给分区,并且相应地将未指配单元标记为以预定义扫描顺序被指配,直到未指配单元的数目小于单元计数为止;以及如果未指配单元的数目大于0,则将未指配单元指配(1460)给最后的分区。
[0251]
根据用于编码和/或解码的实施例,该方法还包括:
[0252]-最初将多个单元标记为未指配,或等效地最初将多个单元标记为未指配,例如作为步骤a)的一部分或与步骤a)连接;
[0253]-将未指配单元标记为根据要被指配的明确大小的分区的数目和明确大小的分区的大小指配,例如作为步骤b)和/或c)的一部分或与其连接;
[0254]-将未指配单元标记为每当指配给分区的计数单元时指配,例如作为步骤d2的一部分或与其连接。
[0255]
将单元指配给分区和/或将未指配单元标记为已指配可以根据扫描顺序进行。在实施例中,扫描顺序是例如在编码标准中预定义的。扫描顺序例如可以是从左到右(例如用于将ctu列指配给图块列),或者从上到下(例如用于将ctu行指配给图块行,或将图块内的ctu行指配给砖块)。在实施例中,编码器在预定义的扫描顺序列表中选择扫描顺序,并且在比特流中或沿着比特流指示所选的扫描顺序,例如作为预定义扫描顺序列表的索引。在实施例中,解码器从比特流或沿着比特流解码扫描顺序,例如预定义扫描顺序列表的索引。
[0256]
根据用于编码和/或解码的实施例,步骤c)还包括或之后是将大小或多个单元指配给明确大小的分区的步骤。
[0257]
明确大小的分区的大小可以被指示为要被指配的单元的数目。
[0258]
根据适用于编码和/或解码的实施例,单元是以下之一:ctb、ctu、ctu行、ctu列、网格单元(针对用于指示子图分区的网格)、网格行(针对用于指示子图分区的网格)、网格列(针对用于指示子图分区的网格)。
[0259]
在用于编码和/或解码的实施例中,关于尚未指配给分区的单元的信息可以被维持。在确定要被指配给分区的单元的数目之后,所有单元可以被立即标记为未指配的。当单元集合被指配给分区时,该单元集合可以被标记为已指配的,或者将该单元集合标记为“未指配的”可以被移除或取消。将单元标记为已指配或未指配的可以例如由数组变量等表示,
其中要被指配的每个单元由数组中的条目表示,并且数组中的条目的值指示对应单元是否已经被指配。在另一示例中,尚未指配的单元的数目(即,剩余未指配单元的数目)通过实施例的步骤维持。
[0260]
根据适用于编码和/或解码的实施例,要被指配给分区的单元的数目是以下之一:以ctu为单位的图片宽度(例如当分区是图块列时)、以ctu为单位的图片高度(例如当分区是图块行时,或者当分区是在一时间处针对一个或多个完整图块列指示的砖块行时)、图块中的ctu行数(例如当分区是图块的砖块时)、网格列中的图片宽度(针对用于指示子图分区的网格)、网格行中的图片高度(针对用于指示子图分区的网格)。
[0261]
根据适用于编码和/或解码的实施例,分区是以下一项或多项:图块列、图块行、砖块行、网格列(针对用于指示子图分区的网格)、网格行(针对用于指示子图分区的网格)。
[0262]
根据适用于编码和/或解码的实施例,其中步骤d包括上述步骤d1、d2和d3,以下句法等可以被使用:
[0263][0264][0265]
num_exp_tile_columns_minus1加1指定明确提供的图块列宽的数目。
[0266]
num_exp_tile_rows_minus1加1指定明确提供的图块行高的数目。
[0267]
tile_column_width_minus1[i]加1指定以ctb为单位的第i个图块列的宽度,i的范围为0到num_exp_tile_columns_minus1-1(包括性的)。tile_column_width_minus1[num_exp_tile_columns_minus1]被用于导出索引大于或等于num_exp_tile_columns_minus1的图块列的宽度。
[0268]
tile_row_height_minus1[i]加1指定以ctb为单位的第i个图块行的高度,i的范围为0到num_exp_tile_rows_minus1-1(包括性的)。tile_row_height_minus1[num_exp_tile_rows_minus1]被用于导出索引大于或等于num_exp_tile_rows_minus1的图块行的高度。
[0269]
brick_splitting_present_flag和brick_spit_flag[i]可以如早前描述的那样指定。
[0270]
numtilesinpic可以被推断为等于图片中的图块数目。numtilecolumns可以被推
断为等于图片中的图块列数。rowheight[tiley]可以被推断为等于第tiley个图块行中的ctu行数。
[0271]
num_exp_brick_rows_minus1[i]加1指定在第i个图块中明确提供的砖块行高度的数目。当不存在时,num_exp_brick_rows_minus[i]的值可以被推断为等于-1。
[0272]
brick_row_height_minus1[i][j]加1指定以ctb为单位的第i个图块中的第j个砖块的高度,j在0到num_exp_brick_rows_minus1[i]-1的范围(包括性的)内。brick_row_height_minus1[i][num_exp_brick_rows_minus1]被用于导出第i个图块中索引大于或等于num_exp_brick_rows_minus1[i]的砖块行的高度。
[0273]
根据使用以上句法进行编码(或分别用于解码,如下面的圆括号所指示的)的示例实施例,图块列被指定如下:
[0274]-明确提供的图块列宽的数目被指示(或解码)(num_exp_tile_columns_minus1)
[0275]-图块列宽从左到右明确提供(或解码和指配)(tile_column_width_minus1[i])。
[0276]-最后一个明确提供(或解码)的图块列宽(tile_column_width_minus1[num_exp_tile_columns_minus1])被重复,直到该宽度的其他图块列不再适合图片边界为止。
[0277]-尚未分配给任何图块列的剩余ctu(如果有)被指配给最右边的图块列。
[0278]
图块行高度和砖块行与图块行类似地指定。
[0279]
根据适用于以上句法和编码和/或解码的实施例,指定图块列数目的变量numtilecolumns以及i范围从0到numtilecolumns-1(包括性的),指定以ctb为单位的第i个图块列的宽度的列表colwidth[i]被导出如下:
[0280][0281]
根据适用于以上句法和编码和/或解码的实施例,指定图块行的数目的变量numtilerows以及j范围从0到numtilerows-1(包括性的),指定以ctb为单位的第j个图块行的高度的列表rowheight[j]被导出如下:
[0282][0283]
在一些实施例中,以下可能适用:
[0284]-变量numtilesinpic被设置为等于numtilecolumns*numtilerows。
[0285]-i范围从0到numtilecolumns(包括性的),指定以ctb为单位的第i个图块列边界的位置的列表tilecolbd[i]被导出如下:for(tilecolbd[0]=0,i=0;i<numtilecolumns;i++)
[0286]
tilecolbd[i+1]=tilecolbd[i]+colwidth[i]
[0287]-j范围从0到numtilerows(包括性的),指定以ctb为单位的第j个图块行边界的位置的列表tilerowbd[j]被导出如下:
[0288]
for(tilerowbd[0]=0,j=0;j<numtilerows;j++)
[0289]
tilerowbd[j+1]=tilerowbd[j]+rowheight[j]
[0290]
根据适用于以上句法和编码和/或解码的实施例,指定引用pps的图片中的砖块的数目的变量numbricksinpic以及brickidx范围从0到numbricksinpic-1(包括性的),指定以ctb为单位的垂直砖块边界的位置、以ctb为单位的水平砖块边界的位置、以ctb为单位的砖块宽度和以ctb为单位的砖块高度的列表brickcolbd[brickidx]、brickrowbd[brickidx]、brickwidth[brickidx]和brickheight[brickidx]被导出如下:
[0291][0292]
根据适用于编码和/或解码的实施例,步骤d包括:通过从要被指配给分区的单元的数目中递减明确大小的分区中的单元的数目,确定尚未指配给分区的单元的数目,并且该方法还包括:
[0293]-根据明确大小的分区中的单元的大小或数目并且根据预定义或指示/解码的扫描顺序,将分区指配给明确大小的分区;
[0294]-通过将尚未指配给分区的单元划分均匀大小的分区的数目并且根据预定义或指示/解码的扫描顺序,将分区指配给均匀大小的分区。
[0295]
根据适用于编码和/或解码的实施例,明确大小的分区的数目在更高级别的句法结构(例如sps)中被指示和/或解码,而明确大小的分区的大小和/或要被指配的均匀大小的分区的数目可以在较低级别的句法结构(例如pps)中被指示和/或解码。
[0296]
根据实施例,推断(例如在编码标准中预确)明确大小的分区的数目等于1。
[0297]
根据适用于编码和/或解码的实施例,步骤d包括:
[0298]-确定尚未指配的单元的数目能够被整除的分区大小集合或列表;
[0299]-如果集合或列表中的项目的数目等于1,则推断均匀大小的分区数目等于1;
[0300]-指示和/或解码与集合或列表中的项目相对应的索引(或类似的),其中索引指示要被指配的均匀大小的分区的数目。
[0301]
根据适用于编码和/或解码的实施例,尚未指配的单元的数目能够被整除的分区大小集合或列表通过不包括小于阈值的分区大小来约束,其中阈值可以例如在编码标准中被预定义或者指示/解码。例如,ctu中的最小图块列宽可以被预定义或者指示/解码。
[0302]
根据实施例,与集合或列表中的项目相对应的索引利用固定长度的码字编码,例如u(v),其中码字的长度由集合或列表中的项目的数目确定。
[0303]
指示图块行的边界是否是潜在图块行的边界
[0304]
在一些实施例中,当水平砖块边界跨图片对准时,砖块行边界被推断。本章节提出了用于发信号通知图块行边界的实施例。该实施例可以与砖块边界在句法中在图块行边界之前指示的任何实施例一起应用。
[0305]
该实施例可以包括以下步骤中的一个或多个步骤(其中一些已经在早前描述):
[0306]-潜在的图块行边界被推断为砖块边界通过图片(水平)对准的那些图块行边界。
[0307]-由编码器在比特流中或沿着比特流推断和/或由解码器从比特流中或沿着比特流解码是否所有对准的砖块边界形成图块行边界。例如,比特流句法中的标志可以被使用。
[0308]-如果所有对准的砖块边界不形成图块行边界,则由编码器在比特流中或沿着比特流指示和/或由解码器从比特流或沿着比特流解码针对每个对准的砖块边界,该边界是否是图块行边界。例如,针对每个对准的砖块边界(不包括作为图片边界的对准的砖块边界)的比特流句法中可以存在标志。
[0309]
例如,以下句法可以被使用:
[0310][0311]
在另一实施例中,numalignedbrickrows可以像numtilerows一样导出。
[0312]
所提出的句法元素的语义可以被指定如下:
[0313]
explicit_tile_rows_flag等于0指定无论何时水平砖块边界跨图片对准时图块行边界被推断。explicit_tile_rows_flag等于1指定存在tile_row_flag[i]句法元素。
[0314]
tile_row_flag[i]等于0指定水平砖块边界跨图片对准的第i个这种水平边界不是图块行边界。tile_row_flag[i]等于1指定水平砖块边界跨图片对准的第i个这种水平边界是图块行边界。水平砖块边界在图片上对准的第0个这种水平边界是图片的顶部边界。
[0315]
指示与砖块相同地分区的图块列
[0316]
在一些示例实施例中,该句法包括以下指示:与环路条目顺序中的先前图块列相同(例如从左到右扫描图块列),图块列被分区为砖块。需要理解的是,实施例类似地适用于没有指示或任何类似指示的情况。例如,图块列的扫描顺序可以是从右到左,因此可以指示当前图块列的砖块分区是从右侧的图块列复制的。在另一示例中,指示或推断宽度相等的所有图块列具有相同的砖块分区。在又一示例中,砖块分区被复制的砖块列的索引被指示。还需要理解的是,当基于早前的指示得出将图块列分区为砖块的另一方式时,实施例类似地适用。本章节提出了一些相关的实施例。
[0317]
在实施例中,编码器在比特流中或沿着比特流指示和/或解码器从比特流或沿着比特流解码具有相同宽度(例如在ctb中)的所有图块列是否具有相同的砖块分区。例如,称为same_brick_spacing_in_equally_wide_tile_cols_flag的句法元素可以被使用。
[0318]
在实施例中,编码器在比特流中或沿着比特流指示和/或解码器从比特流中或沿着比特流解码环路条目顺序中具有相同砖块分区的相邻图块列数(例如从左到右扫描图块列)。例如,可以例如被称为num_tile_cols_with_same_brick_partitioning_minus1[i]的句法元素可以是u(v)编码的,其中v由砖块分区尚未指示的剩余图块列确定。
[0319]
在实施例中,编码器可以在比特流中或沿着比特流指示和/或解码器可以从比特流中或沿着比特流解码与指示图块列被相同地分区为砖块相关的(多个)句法元素(例如copy_previous_col_flag[i])是否存在。在实施例中,该指示处于序列级句法结构中,诸如sps。在另一实施例中,该指示处于图片级句法结构中,诸如pps。在实施例中,它是例如在编码标准中预定义的,与指示图块列被相同地分区为砖块相关的(多个)句法元素的缺失导致砖块分区针对所有图块列逐一指示和/或解码。在实施例中,它是例如在编码标准中预定义的,与指示图块列被相同地分区为砖块相关的(多个)句法元素的缺失导致砖块分区针对一个图块列指示和/或解码并且针对所有图块列被推断为相同的。在实施例中,处理与指示图块列被相同地分区为砖块相关的(多个)句法元素的缺失的方法由编码器在比特流中或沿着比特流指示,例如在sps中,和/或由解码器从比特流或沿着比特流解码,例如来自sps。该方法可以在预定义的过程集合中指示和/或解码,其可以包括但可能不限于i)砖块分区要针对所有图块列逐一指示和/或解码,以及ii)砖块分区要针对一个图块列指示和/或解码,并且针对所有图块列被推断为相同的。
[0320]
在一些实施例中,要被指配给分区的单元的数目被确定或推断。单元的数目例如可以是图片中的ctu列数、图片中的ctu行数或图块中的ctu行数。在解码中,要被指配给分区的单元的数目可以从sps和/或pps解码。在一些实施例中,可能期望避免句法结构之间的解析相关性,并且足以推断单元的数目的所有句法元素被包括在相同的句法结构中,诸如pps。例如,亮度样本中的图片宽度、亮度样本中的图片高度和ctu大小可以被包括在pps中,从而能够推断出图片中的ctu列数和图片中的ctu行数。
[0321]
例如,u(2)编码的句法元素log2_pps_ctu_size_minus5可以被包括在pps中。log2_pps_ctu_size_minus5加5指定每个ctu的亮度编码树块大小。log2_pps_ctu_size_minus5等于0、1或2指定每个ctu的亮度编码树块大小分别等于32
×
32、64
×
64或128
×
128个亮度样本。可能期望log2_pps_ctu_size_minus5小于或等于2。可能要求log2_pps_ctu_size_minus5等于sps中指定的log2_ctu_size_minus5。
[0322]
指示子图分区
[0323]
要备注的是,用于指示切片、图块和/或砖块分区的许多描述实施例与子图如何被指示无关。本章节提出用于指示和/或解码图片到子图的分区的实施例。本章节中的许多实施例能够但不必独立于其他实施例使用,例如用于指示切片、图块和/或砖块分区。
[0324]
根据实施例,在信令子图分区中使用的网格在比特流中或沿着比特流(例如在sps中)指示或者从比特流或沿着比特流(例如从sps)解码。网格的单元指定子图边界被发信号通知的单元。换言之,子图边界只能够位于所指示网格的边界处。
[0325]
根据实施例,网格以ctu(或编解码器的类似基本编码块)为单位指示和/或解码。
[0326]
根据实施例,该信令包括指示网格列数、网格行数、网格列的宽度(例如ctu的计数)和网格行的高度(例如ctu的计数)的信息。例如,以下句法可以被使用:
[0327][0328]
num_id_columns_minus1指定对图片进行分区的列数减一。num_id_rows_minus1指定对图片进行分区的行数减一。id_column_width_minus1[i]加1指定以编码树块为单位的第i列的宽度。id_row_height_minus1[i]加1指定以编码树块为单位的第i行的高度。最右边的网格列可以被推断为由未被指配给其他网格列的编码树块的列组成。最底部的网格行可以被推断为由未被指配给其他网格行的编码树块组成。
[0329]
根据另一示例,以下句法可以被使用:
[0330][0331]
当使用以上信令时,所有网格列都具有相等的宽度,除了可能最右边的网格列之外,其可以被推断为由未被指配给其他网格列的编码树块的列组成。同样地,所有网格行都具有相等的高度,除了可能最底部的网格行之外,其可以被推断为由未被指配给其他网格行的编码树块组成。id_column_width_minus1加1指定以编码树块为单位的网格列的宽度。id_row_height_minus1加1指定以编码树块为单位的网格行的高度。
[0332]
根据实施例,将网格单元指配给子图在比特流中或沿着比特流(例如在sps中)指示和/或从比特流或沿着比特流(例如从sps)解码。
[0333]
在实施例中,将网格单元指配给子图由每个子图的右下网格单元索引指示和/或
解码(可能与右下网格单元可以被推断为网格的右下网格单元的最后一个子图分开)。例如,以下句法等可以被使用(并且被视为在上面提出的句法等之后附加):
[0334][0335]
num_subpics_minus2加2指定图片内的子图数目。bottom_right_grid_idx_length-minus1加1指定用于表示句法元素bottom_right_grid_idx_delta[i]的比特数。当i大于0时,bottom_right_grid_idx_delta[i]指定位于第i个子图右下角的网格单元的网格索引与第(i

1)个子图右下角的网格索引之间的差异。bottom_right_grid_idx_delta[0]指定第0个子图右下角的网格索引。最后一个子图的右下角被推断为网格的右下角单元。grid_idx_delta_sign_flag[i]等于1指示bottom_right_grid_idx_delta[i]的正号。sign_bottom_right_grid_idx_delta[i]等于0指示bottom_right_grid_idx_delta[i]的负号。变量numgridrows、numgridcols和numgridcellsinpic可以被推断为分别等于图片中的网格行、网格列和网格单元的计数。指定位于第i个子图左上角的网格单元的网格索引、位于第i个子图右下角的网格单元的网格索引、第i个子图中的网格单元数目以及网格单元到子图的映射关系的变量topleftgrididx[i]、bottomrightgrididx[i]、numgridcellsinsubpic[i]和gridcellstosubpicmap[j]被导出如下:
[0336][0337]
将图块分区指示为子图分区的拆分
[0338]
根据可以与其他实施例一起使用或独立于其他实施例使用的实施例,图片到子图的分区在比特流中或沿着比特流(例如在sps中)指示和/或从比特流或沿着比特流(例如从sps)解码,并且在子图分区的基础上,对图块列、图块行和/或砖块的分区在比特流中或沿着比特流(例如在pps中)指示和/或从比特流或沿着比特流(例如从pps)解码。
[0339]
根据实施例,编码器在比特流中或沿着比特流指示图块列边界和/或解码器如下
从比特流或沿着比特流解码图块列边界。由于矩形切片的垂直边界与图块列边界匹配,并且由于子图由一个或多个完整的矩形切片组成,因此图块列边界能够得出与子图的垂直边界重合。因此,垂直子图边界被获得(例如由编码器)或解码(例如由解码器),并且得出为图块列边界。附加地,编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器从比特流或沿着比特流(例如从pps)解码是否有附加的图块列边界(除了从垂直子图边界得出的那些边界之外)。例如,tile_col_splitting_present_flag可以在比特流中或沿着比特流指示(例如由编码器)和/或从比特流或沿着比特流解码(例如由解码器)。tile_col_splitting_present_flag等于0指定图块列边界与获得或解码的垂直子图边界相同。tile_col_splitting_present_flag等于1指定除了从垂直子图边界得出的那些列之外还有附加的图块列。
[0340]
在实施例中,当编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器从比特流或沿着比特流(例如从pps)解码存在附加的图块列边界(除了从垂直子图边界得出的那些边界之外)时,以下适用。不是图片边界的垂直子图边界可以被排序,例如从左到右,并且索引从0到numsubpiccols-2(包括性的),其中numsubpiccols是不同垂直子图边界(不是图片边界)的数目。第i个子图列可以被定义为左边在i大于0时以第(i-1)个子图列的右边界或在i等于0时以左图片边界为界,并且右边在i小于numsubpiccols-1时以第i个子图边界或者在i等于numsubpiccols-1时以右图片边界为界。编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器从比特流或沿着比特流(例如从pps)解码子图列是否被拆分为多于一个图块列。例如,针对每个子图列,tile_col_split_flag[i]可以在比特流中或沿着比特流指示(例如由编码器)和/或从比特流或沿着比特流解码(例如由解码器)。tile_col_split_flag[i]等于0指定第i个子图列恰好由一个图块列组成。tile_col_split_flag[i]等于1指定第i个子图列由多于一个图块列组成。
[0341]
在实施例中,当编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器从比特流或沿着比特流(例如从pps)解码子图列被拆分为多于一个图块列时,子图列内的图块列与vvc标准草案或任何提出的实施例类似地指示。例如,编码器可以在比特流中或沿着比特流指示和/或解码器可以从比特流或沿着比特流解码指示子图列内的图块列的数目的句法元素。例如,num_tile_cols_minus2[i]句法元素可以被使用,其中num_tile_cols_minus2[i]加2指定第i个子图列中的图块列的数目。子图列内的每个图块列的宽度在比特流中或沿着比特流指示和/或从比特流或沿着比特流解码(子图列的最后一个图块列除外,其宽度能够被推断为包含所有剩余的但尚未分配的子图区域)。例如,tile_col_width_minus1[i][j]可以被使用,其中tile_col_width_minus1[i][j]加1指定以ctu为单位的第i个子图列内的第j个图块列的宽度。
[0342]
上述实施例可以例如使用以下句法等:
[0343][0344]
根据实施例,编码器在比特流中或沿着比特流指示图块行边界和/或解码器如下从比特流或沿着比特流解码图块行边界。水平子图边界可以与图块行边界或图块内的砖块边界并置。因此,水平子图边界被获得(例如由编码器)或解码(例如由解码器),并且得出为图块行边界或砖块边界。
[0345]
在实施例中,编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器从比特流或沿着比特流(例如从pps)解码图块行边界是否与水平子图边界一对一匹配(反之亦然),或者是否存在附加的图块行边界或者一些水平子图边界是否是(多个)图块内的砖块边界。例如,tile_row_splitting_present_flag可以在比特流中或沿着比特流指示(例如由编码器)和/或从比特流或沿着比特流解码(例如由解码器)。tile_row_splitting_present_flag等于0指定图块行边界与获得或解码的水平子图边界相同。tile_col_splitting_present_flag等于1指定除了从水平子图边界得出的那些行之外还有附加的图块行,或者一些水平子图边界是(多个)图块内的砖块边界。
[0346]
在实施例中,当编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器从比特流或沿着比特流(例如从pps)解码存在附加的图块行边界(除了从水平子图边界得出的那些边界之外)时或者一些水平子图边界是(多个)图块内的砖块边界时,以下适用。不是图片边界的水平子图边界可以被排序,例如从上到下,并且索引从0到numsubpicrows-2(包括性的),其中numsubpicrows是不同水平子图边界(不是图片边界)的数目。第i个子图行可以被定义为顶部在i大于0时以第(i-1)个子图行的底部边界或在i等于0时以顶部图片边界为界,并且底部在i小于numsubpicrows-1时以第i个子图边界或者在i等于numsubpicrows-1时以底部图片边界为界。编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器从比特流或沿着比特流(例如从pps)解码子图行边界是图块行边界还是砖块边界。例如,针对每个子图行,tile_row_flag[i]可以在比特流中或沿着比特流指示(例如由编码器)和/或从比特流或沿着比特流解码(例如由解码器)。tile_row_flag[i]等于0指定第i个子图行边界是(多个)图块内的砖块边界。tile_row_flag[i]等于1指定第i个子图行边界是图块行边界。编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器从比特流或沿着比特流(例如从pps)解码子图行是否包含多于一个图块行的数据。例如,针对每个子图列,tile_row_split_flag[i]可以在比特流中或沿着比特流指示(例如由编码器)和/或从比特流或沿着比特流解码(例如由解码器)。tile_row_split_flag[i]等于0指定第i个子图行包含一个图块行的数据。tile_row_split_flag[i]等于1指定第i个子图行包含多于一个图块行的数据。
[0347]
在实施例中,当编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器
从比特流或沿着比特流(例如从pps)解码子图行包含多于一个图块行的数据时,子图行内的图块行与草案vvc标准或任何提出的实施例类似地指示。例如,编码器可以在比特流中或沿着比特流指示和/或解码器可以从比特流或沿着比特流解码指示子图行内的图块行边界的数目的句法元素。例如,num_tile_rows_minus2[i]句法元素可以被使用,其中num_tile_rows_minus2[i]加2指定第i个子图行中的图块行边界的数目。子图行内的每个图块行的高度在比特流中或沿着比特流指示和/或从比特流或沿着比特流解码(子图行的最后一个图块行除外,其高度能够被推断为包含所有剩余的但尚未分配的区域,直到(多个)下一子图行处或内的下一图块行边界为止,取决于tile_row_flag[j]的值,其中j大于i)。例如,tile_row_height_minus1[i][j]可以被使用,其中tile_row_height_minus1[i][j]加1指定以ctu为单位的第i个子图行内的第j个图块行的高度。
[0348]
上述实施例可以例如使用以下句法等:
[0349][0350]
根据用于编码和/或解码的实施例,当子图边界不与图块行边界并置时,砖块边界被推断为与子图边界并置。编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器从比特流或沿着比特流(例如从pps)解码是否存在附加的砖块(除了从子图边界得出的那些砖块之外)。例如,brick_splitting_present_flag可以在比特流中或沿着比特流指示(例如由编码器)和/或从比特流或沿着比特流解码(例如由解码器)。变量numinferredbricksinpic是根据从指示的图块网格的图块数目推断的砖块数目设置的,并且进一步沿着推断的砖块边界拆分图块。brick_splitting_present_flag等于0指定除了从子图边界推断的那些边界之外不存在砖块边界。brick_splitting_present_flag等于1指定存在砖块边界不是从子图边界推断的(即,砖块的数目大于numinferredbricksinpic)。
[0351]
在实施例中,当编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器从比特流或沿着比特流(例如从pps)解码存在有砖块边界不是从子图边界推断的时,以下适用。推断的砖块可以按预定义的扫描顺序索引。编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器从比特流或沿着比特流(例如从pps)解码推断的候选砖块是否被拆分为多于一个砖块。例如,针对每个推断的候选砖块,brick_split_flag[i]可以在比特流中或沿着比特流指示(例如由编码器)和/或从比特流或沿着比特流解码(例如由解码器)。brick_split_flag[i]等于0指定第i个推断的候选砖块由一个砖块组成。brick_split_flag[i]等于1指定第i个推断的候选砖块由多于一个砖块组成。
[0352]
上述实施例可以例如使用以下句法等:
[0353][0354]
在实施例中,当编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器从比特流或沿着比特流(例如从pps)解码推断的候选砖块被拆分为多于一个砖块时,推断的候选砖块的进一步拆分在比特流中或沿着比特流指示(例如由编码器)和/或从比特流或沿着比特流解码(例如由解码器),类似于草案vvc标准或任何提出的实施例。例如,编码器可以在比特流中或沿着比特流指示和/或解码器可以从比特流或沿着比特流解码指示推断的候选砖块内的砖块数目的句法元素。例如,num_bricks_minus2[i]句法元素可以被使用,其中num_bricks_minus2[i]加2指定第i个推断的候选砖块中的砖块数目。推断的候选砖块内的每个砖块的高度在比特流中或沿着比特流指示和/或从比特流或沿着比特流解码(推断的候选砖块的最后一个砖块除外,其宽度能够被推断为包含推断的候选砖块的所有剩余的但尚未分配的区域)。例如,brick_row_height_minus1[i][j]可以被使用,其中brick_row_height_minus1[i][j]加1指定以ctu为单位的第i个推断的候选砖块内的第j个砖块的高度。
[0355]
因此,根据实施例的用于发信号通知图块和砖块分区的句法和语义在执行信令所需的句法元素和句法行的数目上提供了显著的节省。因此,显著节省在指示图块和砖块分区所需的比特数方面实现。
[0356]
这些益处通过以下示例图示,其中图9a、图9b和图9c所示的三种不同的图块和砖块分区被用于比较根据vvc草案5的图块和砖块分区以及根据一些实施例的图块和砖块分区的性能。
[0357]
图10a和10b提出了(分别)实现6k有效等距柱状投影(erp)和立方体贴图投影(cmp)方案的图块和砖块分区,这些方案(分别)在全向媒体格式(omaf、iso/iec 23090-2)条款d.6.3和d.6.4中描述。这些方案已在vr行业论坛指南中得到推荐。图10c中提出的方案在其他方面与图10b中的方案等效,但使用不同的图片纵横比。
[0358]
以下特性源自vvc草案5以及组合指示图块列和图块列方向的砖块高度和显式/统一图块/砖块分区的统一信令两者的实施例:
[0359]-用于指示图块和砖块分区的句法元素的数目
[0360]-用于指示图块和砖块分区的句法行的数目
[0361]-表示下图中包括的方案的图块和砖块分区所需的比特数
[0362]-当与用于下图中提出的方案的vvc草案5相比时,由实施例提供的比特计数节省百分比。
[0363]
利用128
×
128亮度ctb大小导出的特性在下表中提出。
[0364][0365][0366]
因此,能够看出,句法元素的数目从13个减少到7个,并且所需的句法行的数目从26个减少到20个。与vvc草案5相比,由实施例为图10a至图10c的图块和砖块分区中的每一个提供的比特计数节省超过50%。还要备注的是,随着提议,语义和推导过程也变得更短。
[0367]
指示未编码的图块或砖块
[0368]
在一些应用中,以仅图块和/或砖块的子集被占用的方式将要被编码和/或解码的内容指配给图块和/或砖块可能是合理的。例如,在360度视频的视口相关流中,仅独立编码图片区域的子集(诸如图块)可以被接收。在另一示例中,体积或点云视频的基于补丁的编码被应用,并且补丁仅占用图片的图块和/或砖块的子集。
[0369]
根据用于编码的实施例,未编码的图块或砖块在比特流中或沿着比特流的切片数据上方的句法结构中被指示。未编码的图块或砖块的句法元素未被编码为切片数据。未编码的图块或砖块使用预定义或指示的方法(诸如在样本数组中将重构样本值设置为0)来重构(例如重构为解码参考图片)。
[0370]
根据用于解码的实施例,未编码的图块或砖块从比特流中或沿着比特流的切片数据上方的句法结构解码。未编码的图块或砖块的句法元素未从切片数据解码。未编码的图块或砖块使用预定义或指示的方法(诸如在样本数组中将重构样本值设置为0)来解码(例如解码为解码参考图片)。
[0371]
根据适用于编码和/或解码的实施例,未编码砖块的数目被指示和/或解码用于图块列,例如使用可变长度的码字,诸如ue(v)。图块列中的砖块以预定义的扫描顺序(例如从下到上)遍历。针对每个遍历的砖块,标志被指示和/或解码,以得出砖块是否未编码。如果砖块未编码,则剩下要被指配为未编码的砖块数目被递减1。该过程被继续,直到没有剩余的砖块要被指配为未编码为止。
[0372]
图11示出了适合于采用本发明的实施例的视频解码器的框图。图11描绘了两层解码器的结构,但是要了解的是,解码操作可以被类似地用于单层解码器中。
[0373]
视频解码器550包括用于基础层的第一解码器区段552和用于预测层的第二解码器区段554。框556图示了分用器,其用于将关于基础层图片的信息递送给第一解码器区段
552并且将关于预测层图片的信息递送给第二解码器区段554。附图标记p’n代表图像块的预测表示。附图标记d’n代表重构的预测误差信号。框704、804图示了初步重构的图像(i’n)。附图标记r’n代表最终的重构图像。框703、803图示了逆变换(t-1
)。框702、802图示了逆量化(q-1
)。框701、801图示了熵解码(e-1
)。框705、805图示了参考帧存储器(rfm)。框706、806图示了预测(p)(帧间预测或帧内预测)。框707、807图示了滤波(f)。框708、808可以被用于将解码的预测误差信息与预测的基础层/预测层图像组合以获得初步重构图像(i’n)。初步重构和滤波的基础层图像可以从第一解码器区段552输出709,并且初步重构和滤波的基础层图像可以从第一解码器区段554输出809。
[0374]
在本文中,解码器应该被解释为覆盖能够执行解码操作的任何操作单元,诸如播放器、接收器、网关、分用器和/或解码器。
[0375]
图12示出了根据本发明的实施例的解码器的操作的流程图。除了解码器对来自它们的指示进行解码之外,实施例的解码操作在其他方面与编码操作类似。因此,解码方法包括:在一时间处解码(1200)比特流部分,该比特流部分包括图块列的指示和一个或多个图块列的砖块高度的指示;在检测到通过图片对准的砖块行时,推断(1202)潜在的图块行;推断(1204)潜在图块行的边界是图块行的边界或解码潜在图块行的边界是否是图块行的边界的指示;以及使用所指示的图块列、所指示或推断的图块行以及所指示的砖块高度从比特流解码(1206)一个或多个图片,其中一个或多个图片沿着所指示的图块列和所指示或推断的图块行分区为图块网格,图块网格中的图块包括整数数目的编码树单元并且被分区为一个或多个砖块,其中砖块在图块内包括整数数目的编码树单元行。
[0376]
图13示出了根据本发明的另一实施例的解码器的操作的流程图。解码方法包括:步骤a)解码(1300)要被指配的分区数目的指示;b)确定(1302)要被指配给分区的单元数目;c)确定(1304)要被指配的多个单元是否被均匀地指配给所述多个分区;并且如果不是,则d)确定(1306)要被指配给下一分区的单元数目,以及e)重复(1308)步骤c)和d),直到所有单元都已被指配给分区为止。指示图片到矩形切片的分区
[0377]
用于编码和/或解码矩形切片的信令的改进方法的实施例在接下来的段落中介绍。这些实施例可以与用于图块和砖块分区的实施例一起或独立地应用。实施例基于vvc草案5中指定的图块、砖块和矩形切片的定义和特点。利用实施例,指示矩形切片(例如指示或导出矩形切片的位置、宽度和高度)所需的比特计数被减少。
[0378]
根据第一方面的编码方法包括:在比特流中或沿着比特流指示或推断矩形切片的左上砖块的位置;从该位置得出矩形切片是否包括图块的一个或多个砖块;如果矩形切片包括图块的一个或多个砖块,则在比特流中或沿着比特流指示或推断矩形切片中的砖块数目。
[0379]
根据第一方面的解码方法包括:从比特流或沿着比特流解码或推断矩形切片的左上砖块的位置;从该位置得出矩形切片是否包括图块的一个或多个砖块;如果矩形切片包括图块的一个或多个砖块,则从比特流或沿着比特流解码或推断矩形切片中的砖块数目。
[0380]
砖块的位置可以是例如图片的砖块扫描中的砖块索引。
[0381]
在适用于编码和/或解码的实施例中,当矩形切片的左上砖块的位置不是任何图块的左上砖块时,得出矩形切片包括图块的一个或多个砖块。
[0382]
在适用于编码和/或解码的实施例中,当矩形切片的左上砖块的位置是图块的左
上砖块并且该图块包括多个砖块时,得出矩形切片可以包括图块的砖块或完整的图块。在适用于编码的实施例中,如果得出矩形切片可以包括图块的砖块或完整的图块,则在比特流中或沿着比特流指示矩形切片是包括图块的砖块还是完整的图块。在适用于解码的实施例中,如果得出矩形切片可以包括图块的砖块或完整的图块,则从比特流或沿着比特流解码矩形切片是包括图块的砖块还是完整的图块。
[0383]
在适用于编码和/或解码的实施例中,如果推断或指示(作为编码的一部分)或解码矩形切片包括图块的砖块,则变量(例如称为numdeltavalues)被设置为等于矩形切片的左上砖块的位置之后和同一图块内的砖块数目。如果numdeltavalues等于1,则推断矩形切片恰好包含一个砖块。否则,变量numdeltavalues被用于导出指示矩形切片的右下砖块的第一句法元素或指示矩形切片中的砖块数目的第二句法元素或指示矩形切片的高度(以砖块为单位)的第三句法元素或任何类似句法元素的句法元素长度。例如,第一句法元素或第二句法元素或第三句法元素或任何类似的句法元素可以是u(v)编码的,并且其长度是ceil(log2(numdeltavalues))比特。
[0384]
在示例实施例中,以下句法被使用:
[0385][0386]
句法元素的语义可以如早前描述的那样指定,除了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]的值被推断为等于0。指定bottom_right_brick_idx_delta[i]可以具有的值的数目的变量numdeltavalues被导出如下:
[0387][0388]
bottom_right_brick_idx_delta[i]句法元素的长度是ceil(log2(numdeltavalues))比特。变量numbricksintile[brickidx]指定在图片的砖块扫描中包含具有索引brickidx的砖块的图块中的砖块数目。当砖块在图片的砖块扫描中由索引brickidx标识时,变量brickidxintile[brickidx]指定包含砖块的图块内的砖块的索引。
[0389]
在适用于编码和/或解码的实施例中,矩形切片的左上砖块的位置被推断。一开始,所有砖块位置都被标记为空。将砖块指配给矩形切片的环路被包括在比特流中或沿着比特流包括,或者从比特流或沿着比特流解码。针对每个环路条目,矩形切片的左上砖块被推断为预定义、指示或解码的扫描顺序中的下一空砖块位置。例如,它可以例如在图片内的砖块扫描顺序被使用的编码标准中预定义。矩形切片的右下砖块可以被推断、指示或解码,例如如上所述,并且形成由左上砖块和右下砖块围成的矩形的砖块被标记为已指配。相同或类似的过程针对每个环路条目重复。
[0390]
在适用于编码和/或解码的实施例中,当得出(作为编码或解码的一部分)或指示(作为编码的一部分)或解码(作为解码的一部分)矩形切片包括完整的图块时,指示矩形切片的右下砖块的句法元素源自以下一项或多项:
[0391]-可能的右下砖块位置的集合被导出。该集合可以仅包括那些砖块位置,这些砖块位置是砖块内的最后砖块位置,位于包含矩形切片的左上砖块的图块行处或下方,位于包含矩形切片的左上砖块的图块列处或右侧,并且封闭空砖块位置(尚未指配给任何矩形切片)的矩形集合。
[0392]-可能的右下砖块位置集合中的条目被索引或枚举。
[0393]-指示矩形切片的右下砖块的u(v)编码的句法元素的长度是从可能的右下砖块位置集合中的条目数目导出的。如果条目nument的数目等于1,则右下砖块索引不需要被指示或解码。否则,句法元素的长度等于ceil(log2(nument))比特。
[0394]-指示矩形切片的右下砖块的句法元素是可能的右下砖块位置的枚举集合的索引。
[0395]
根据第二方面的编码方法包括
[0396]-在比特流中或者沿着比特流指示或者推断矩形切片的左上砖块的位置;
[0397]-从该位置得出矩形切片是否包括图块的一个或多个砖块;
[0398]-如果矩形切片包括图块的一个或多个砖块,则推断矩形切片的宽度等于一个图块列,否则如果左上砖块在最右边的图块列上,则推断矩形切片的宽度等于一个图块列,并且否则在比特流中或者沿着比特流指示图块列中的矩形切片的宽度;
[0399]-如果矩形切片包括图块的一个或多个砖块,则在比特流中或者沿着比特流指示或者推断矩形切片中的砖块数目;否则如果左上砖块在最底部的图块行上,则推断矩形切片的高度等于一个图块行,并且否则在比特流中或者沿着比特流指示图块行中的矩形切片的高度。
[0400]
根据第二方面的解码方法包括
[0401]-从比特流或者沿着比特流解码或者推断矩形切片的左上砖块的位置;
[0402]-从该位置得出矩形切片是否包括图块的一个或多个砖块;
[0403]-如果矩形切片包括图块的一个或多个砖块,则推断矩形切片的宽度等于一个图块列,否则如果左上砖块在最右边的图块列上,则推断矩形切片的宽度等于一个图块列,并且否则从比特流或者沿着比特流解码图块列中的矩形切片的宽度;
[0404]-如果矩形切片包括图块的一个或多个砖块,则从比特流或者沿着比特流解码或者推断矩形切片中的砖块数目;否则如果左上砖块在最底部的图块行上,则推断矩形切片的高度等于一个图块行,并且否则从比特流或者沿着比特流解码图块行中的矩形切片的高
度。
[0405]
在适用于编码和/或解码并且适用于第一方面和/或第二方面的实施例中,当得出或指示或解码矩形切片包含图块的砖块并且该图块包含两个砖块并且当前砖块(即,矩形切片的左上砖块)是该图块的顶部砖块,或者当前砖块是图块的最底部的砖块时,矩形切片中的砖块数目被推断为等于1(以砖块为单位)。
[0406]
在示例实施例中,以下句法被使用:
[0407][0408]
句法元素的变量和语义可以如早前描述的那样指定,并且添加以下内容:
[0409]-tlbrickidx可以被指定为预定义扫描顺序中的下一空砖块位置,诸如图片中的砖块扫描,如早前描述的。tlbrickidx是针对i的每个值重新导出的,即,针对每个环路条目。
[0410]-numfreecolumnsontheright[brickidx]是一个变量,指示砖块右侧的图块列数,其中索引为brickidx。
[0411]-slice_width_minus1[i]加1指定图块列中的第i个矩形切片的宽度。当不存在时,slice_width_minus[i]被推断为等于0。
[0412]-full_tiles_in_slice_flag[i]等于0指定第i个矩形切片包含单个图块的一个或多个砖块。full_tiles_in_slice_flag[i]等于1指定第i个矩形切片包含一个或多个完整的切片。当brickidxintile[tlbrickidx]大于0时(即,当矩形切片的左上砖块不是任何图块的左上砖块时),full_tiles_in_slice_flag[i]被推断为等于0。当slice_width_minus1[i]大于o或当brickidxintile[tlbrickidx]等于0并且numbricksintile[tlbrickidx]等于1时,full_tiles_in_slice_flag[i]被推断为等于1。
[0413]-如果full_tiles_in_slice_flag[i]等于0,则numfreerowsbelow[brickidx]是变量,指示在同一图块中具有索引brickidx的砖块下方的图块中的砖块数目。否则,numfreerowsbelow[brickidx]是变量,指示包含砖块的图块下方的图块行数,其中索引为brickidx。
[0414]-如果full_tiles_in_slice_flag[i]等于0,则slice_height_minus1[i]加1指定砖块中的第i个矩形切片的高度。否则,slice_height_minus1[i]加1指定图块行中的第i个矩形切片的高度。当不存在时,slice_height_minus[i]被推断为等于0。
[0415]
在适用于编码和/或解码的实施例中,基于矩形切片的左上砖块位置,切片宽度句法元素的长度(例如slice_width_minus1)从多个可能值导出。使用以上变量和句法元素,slice_width_minus1的长度等于ceil(log2(numfreecolumnsontheright[tlbrickidx]+1))。
[0416]
在适用于编码和/或解码的实施例中,基于矩形切片的左上砖块位置以及矩形切片是否包括单个图块的砖块或者完整图块,切片高度句法元素的长度(例如slice_height_minus1)从多个可能值导出。使用以上变量和句法元素,slice_height_minus1的长度等于ceil(log2(numdeltavalues)),其中numdeltavalues被导出如下:
[0417][0418]
用于编码和/或解码矩形切片的信令的改进方法的实施例在接下来的段落中被介绍。这些实施例可以与用于图块和砖块分区的实施例一起或独立地应用。实施例基于vvc草案6中指定的图块、砖块、矩形切片和子图中的一项或多项的定义和特点。利用实施例,指示矩形切片(例如指示或导出矩形切片的位置、宽度和高度)所需的比特计数被减少。
[0419]
根据实施例,每个子图的一个且仅一个矩形切片被编码。编码器在比特流中或沿着比特流(例如在pps中)指示针对指示范围内的图片,每个子图的一个且仅一个矩形切片被编码。指示范围可以例如是引用pps的图片,其包含每个子图的一个且仅一个矩形切片被使用的指示。编码器省略了矩形切片边界的显式信令。编码器推断矩形切片的边界与子图边界相同。
[0420]
根据实施例,解码器从比特流或沿着比特流(例如从pps)解码每个子图包括在该指示范围内的图片中的一个且仅一个矩形切片的指示。指示范围可以例如是引用包含指示的pps的图片。解码器省略了解码矩形切片边界的显式信令。解码器推断矩形切片的边界与子图边界相同。
[0421]
以下句法等可以与上述实施例一起使用,其中single_slice_per_subpic_flag等于0指定子图可以包含任何数目的矩形切片,并且single_slice_per_subpic_flag等于1指定每个子图包含一个且仅一个矩形切片:
[0422][0423]
根据实施例,编码器在比特流中或沿着比特流(例如在pps中)指示和/或解码器从比特流或沿着比特流(例如从pps)解码子图是否由一个且仅一个矩形切片组成,或者是否包含多于一个矩形切片。例如,u(1)编码的句法元素(例如称为subpic_split_flag[i])可以指示(当等于0时)第i个子图恰好由一个矩形切片组成或(当等于1时)第i个子图由多于一个矩形切片组成。
[0424]
根据实施例,编码器指示和/或解码使用子图内的砖块索引将子图分区为矩形切片。子图内的砖块被索引,例如从0开始,并且按预定义的扫描顺序(诸如子图内的砖块扫描顺序)递增1,即,子图内的图块光栅扫描为主要顺序,并且图块内的砖块光栅扫描为次要顺序。由于子图内的砖块索引的值范围小于图片内的砖块索引的值范围,因此子图内指示砖块索引的句法元素很可能短于图片内的砖块索引的相应句法元素,并且因此信令可能会变得更加紧凑。
[0425]
根据实施例,以下句法等可以被使用。
[0426]
[0427][0428]
rect_slice_splitting_present_flag等于0指定在每个子图中恰好有一个矩形切片。rect_slice_splitting_present_flag等于1指定每个子图可以包含一个或多个矩形切片。bottom_right_brick_idx_length_minus1加1指定bottom_right_brick_idx_delta[i]句法元素的长度。numsubpics变量被导出为等于图片内的子图数目,例如基于sps中的子图信令。subpic_split_flag[i]等于0指定第i个子图恰好由一个矩形切片组成。subpic_split_flag[i]等于1指定第i个子图由多于一个矩形切片组成。num_slices_in_subpic_minus2[i]加2指定第i个子图内的矩形切片数目。第i个子图内的砖块按砖块扫描顺序索引。bottom_right_brick_idx_delta[i][j]和sign_bottom_right_brick_idx_delta[i][j]指定有符号的增量值,该增量值被用于在j大于0时相对于第i个子图的第(j-1)个矩形切片的右下砖块,或者在j等于0时相对于0(即,第i个子图的左上角),导出第i个子图内的第j个矩形切片的右下砖块的砖块索引。当sign_bottom_right_brick_idx_delta[i][j]等于1时,有符号的增量值可以被定义为等于bottom_right_brick_idx_delta[i][j],并且当sign_bottom_idx_delta[i][j]等于0但同样能够利用sign_bottom_right_brick_idx_delta[i][j]值的相反指配来定义时,被定义为等于-bottom_right_brick_idx_delta[i][j]。
[0429]
指示未编码的矩形切片
[0430]
在一些应用中,以仅矩形切片的子集被占用的方式将要被编码和/或解码的内容指配给矩形切片可能是合理的。例如,在360度视频的视口相关流中,仅矩形切片的子集可以被接收。在另一示例中,体积或点云视频的基于补丁的编码被应用,并且补丁仅占用图片的矩形切片的子集。
[0431]
根据用于编码的实施例,未编码的矩形切片在比特流或者沿着比特流(例如在pps中)指示。未编码的矩形切片未作为vcl nal单元被编码到比特流中。未编码的矩形切片使用预定义或指示的方法(诸如在样本数组中将重构样本值设置为0)来重构(例如重构为解
码参考图片)。
[0432]
根据用于解码的实施例,未编码的矩形切片从比特流或者沿着比特流(例如从pps)解码。未编码的矩形切片未从比特流从vcl nal单元解码。相反,未编码的矩形切片使用预定义或指示的方法(诸如在样本数组中将解码样本值设置为0)来解码(例如解码为解码参考图片)。
[0433]
根据适用于编码和/或解码的实施例,标志针对每个矩形切片指示和/或解码,该标志指示矩形切片是否未编码。
[0434]
根据实施例,未编码的矩形切片数目使用可变长度的码字指示和/或解码,诸如ue(v)。矩形切片以预定义的扫描顺序(以矩形切片的左上ctu的反向光栅扫描顺序)遍历。针对每个遍历的矩形切片,标志被指示和/或解码,以得出矩形切片是否未编码。如果矩形切片未编码,则剩下要被指配为未编码的矩形切片数目被递减1。该过程被继续,直到没有剩余的矩形切片要被指配为未编码为止。
[0435]
图15是各种实施例可以被实现的示例多媒体通信系统的图形表示。数据源1510以模拟、未压缩数字或压缩数字格式或这些格式的任何组合提供源信号。编码器1520可以包括预处理或与预处理连接,诸如数据格式转换和/或源信号的滤波。编码器1520将源信号编码为编码媒体比特流。应当注意的是,要被解码的比特流可以从实际上位于任何类型的网络内的远程设备直接或间接地接收。附加地,比特流可以从本地硬件或软件接收。编码器1520可能能够编码多于一种媒体类型,诸如音频和视频,或者可能需要多于一个编码器1520来编码不同媒体类型的源信号。编码器1520还可以得到合成产生的输入,诸如图形和文本,或者它可能能够产生合成媒体的编码比特流。在下文中,仅对一种媒体类型的一个编码媒体比特流的处理被考虑以简化描述。然而,应当注意的是,通常,实时广播服务包括多个流(通常至少一个音频、视频和文本字幕流)。还应该注意的是,该系统可以包括许多编码器,但是在附图中,仅一个编码器1520被表示以简化描述而不缺乏通用性。还应当理解的是,尽管本文包含的文本和示例可以具体描述编码过程,但是本领域技术人员将理解,相同的概念和原理也应用于对应的解码过程,并且反之亦然。
[0436]
编码媒体比特流可以被转移到存储装置1530。存储装置1530可以包括任何类型的海量存储器以存储编码媒体比特流。存储装置1530中的编码媒体比特流的格式可以是基本的独立比特流格式,或者一个或多个编码媒体比特流可以被封装到容器文件中,或者编码媒体比特流可以被封装为适合于dash(或类似的流式传输系统)的分段格式并存储为分段序列。如果一个或多个媒体比特流被封装在容器文件中,则文件生成器(未在附图中示出)可以被用于将一个或多个媒体比特流存储在文件中,并且创建文件格式元数据,该文件格式元数据也可以被存储在文件中。编码器1520或存储装置1530可以包括文件生成器,或者文件生成器被可操作地附接至编码器1520或存储装置1530。一些系统“实时”操作,即,省略存储装置并且将编码媒体比特流直接从编码器1520转移到发送器1540。然后,编码媒体比特流可以根据需要被转移到发送器1540(也称为服务器)。在传输中使用的格式可以是基本的独立比特流格式、分组流格式、适合于dash(或类似的流式传输系统)的分段格式,或者一个或多个编码媒体比特流可以被封装到容器文件中。编码器1520、存储装置1530和服务器1540可以驻留在相同的物理设备中,或者它们可以被包括在分离的设备中。编码器1520和服务器1540可以利用实时内容进行操作,在这种情况下,编码媒体比特流通常不永久存储,
而是在内容编码器1520和/或服务器1540中缓冲一小段时间以平滑消除处理延迟、转移延迟和编码媒体比特率的变化。
[0437]
服务器1540使用通信协议栈发送编码媒体比特流。堆栈可以包括但不限于实时传送协议(rtp)、用户数据报协议(udp)、超文本转移协议(http)、传输控制协议(tcp)和互联网协议(ip)中的一种或多种。当通信协议栈是面向分组的时,服务器1540将编码媒体比特流封装为分组。例如,当rtp被使用时,服务器1540根据rtp有效载荷格式将编码媒体比特流封装为rtp分组。通常,每种媒体类型都有专用的rtp有效载荷格式。应当再次注意,系统可以包含多于一个服务器1540,但是为了简单起见,以下描述仅考虑一个服务器1540。
[0438]
如果媒体内容被封装在用于存储装置1530或用于将数据输入给发送器1540的容器文件中,则发送器1540可以包括“发送文件解析器”或可操作地附接至“发送文件解析器”(未在附图中示出)。具体地,如果容器文件未这样传输,而所包含的编码媒体比特流中的至少一个被封装以通过通信协议进行传送,则发送文件解析器定位要通过通信协议传达的编码媒体比特流的适当部分。发送文件解析器还可以帮助创建通信协议的正确格式,诸如分组报头和有效载荷。多媒体容器文件可以包含封装指令,诸如isobmff中的提示轨道,以在通信协议上封装所包含的媒体比特流中的至少一个媒体比特流。
[0439]
服务器1540可以或可以不通过通信网络连接至网关1550,该通信网络例如可以是cdn、互联网和/或一个或多个接入网络的组合。网关也可以或备选地被称为中间框。针对dash,网关可以是(cdn的)边缘服务器或web代理。要注意的是,该系统通常可以包括任何数目的网关等,但是为了简单起见,以下描述仅考虑一个网关1550。网关1550可以执行不同类型的功能,诸如根据一个通信协议栈将分组流平移到另一通信协议栈,数据流的合并和分支以及根据下行链路和/或接收器能力操纵数据流,诸如根据主要的下行网络条件控制转发流的比特率。在各种实施例中,网关1550可以是服务器实体。
[0440]
该系统包括一个或多个接收器1560,其通常能够接收、解调和解封装所发送的信号为编码媒体比特流。编码媒体比特流可以被转移到记录存储装置1570。记录存储装置1570可以包括任何类型的海量存储器以存储编码媒体比特流。记录存储装置1570可以备选地或附加地包括计算存储器,诸如随机存取存储器。记录存储装置1570中的编码媒体比特流的格式可以是基本的独立比特流格式,或者一个或多个编码媒体比特流可以被封装到容器文件中。如果存在彼此关联的多个编码媒体比特流,诸如音频流和视频流,则通常容器文件被使用,并且接收器1560包括或被附接至容器文件生成器,该容器文件生成器从输入流产生容器文件。一些系统“实时”操作,即,省略记录存储装置1570,并且将编码媒体比特流从接收器1560直接转移到解码器1580。在一些系统中,仅记录流的最近部分(例如记录流的最近10分钟的摘录)被维持在记录存储装置1570中,而任何较早的记录数据从记录存储装置1570中丢弃。
[0441]
编码媒体比特流可以从记录存储装置1570转移到解码器1580。如果存在许多编码媒体比特流(诸如音频流和视频流)彼此关联并且被封装到容器文件中或者单个媒体比特流被封装在容器文件中,例如为了更易于访问,则文件解析器(未在附图中示出)被用于从容器文件中解封装每个编码媒体比特流。记录存储装置1570或解码器1580可以包括文件解析器,或者文件解析器被附接至记录存储装置1570或解码器1580。还应当注意,系统可以包括许多解码器,但是此处仅一个解码器1570被讨论以简化描述而不缺乏通用性。
[0442]
编码媒体比特流还可以由解码器1570处理,其输出是一个或多个未压缩的媒体流。最后,渲染器1590可以例如利用扬声器或显示器来再产生未压缩的媒体流。接收器1560、记录存储装置1570、解码器1570和渲染器1590可以驻留在同一物理设备中,或者它们可以被包括在分离设备中。
[0443]
在上文中,一些实施例已经参照和/或使用vvc/h.266的术语描述。需要理解的是,实施例可以利用任何视频编码器和/或视频解码器类似地实现。
[0444]
在上文中,一些示例实施例已经参照具体句法结构和/或句法元素描述。需要理解的是,实施例可以利用任何句法结构和/或句法元素类似地实现。例如,当实施例已经参照pps句法中的句法元素描述时,需要理解的是,实施例可以利用另一句法结构(诸如sps)中的相同或类似的句法元素来实现。
[0445]
在上文中,一些实施例已经参照术语指示描述。需要理解的是,术语指示可以被理解为在比特流中或沿着比特流编码或生成一个或多个句法结构中的一个或多个句法元素。
[0446]
在上文中,一些实施例已经参照术语解码描述。需要理解的是,术语解码可以被理解为从比特流中或沿着比特流解码或解析来自一个或多个句法结构的一个或多个句法元素。
[0447]
在上文中,在示例实施例已经参照编码器描述的情况下,需要理解的是,所得比特流和解码器可以在其中具有对应的元素。同样地,在示例实施例已经参照解码器描述的情况下,需要理解的是,编码器可以具有用于生成要由解码器解码的比特流的结构和/或计算机程序。例如,与生成预测块相关的一些实施例已经被描述作为编码的一部分。通过生成预测块作为解码的一部分,实施例能够被类似地实现,差异在于与由编码器确定的相比,诸如水平偏移和垂直偏移等编码参数从比特流中解码。
[0448]
上面描述的本发明的实施例就分离的编码器和解码器装置来描述编解码器,以便辅助理解所涉及的过程。然而,要了解的是,该装置、结构和操作可以被实现为单个编码器-解码器装置/结构/操作。此外,编码器和解码器可能可以共享一些或所有公共元素。
[0449]
尽管以上示例描述了在电子设备内的编解码器内操作的本发明的实施例,但是要了解的是,权利要求中定义的本发明可以被实现为任何视频编解码器的一部分。因此,例如本发明的实施例可以在视频编解码器中被实现,该视频编解码器可以在固定或有线通信路径上实现视频编码。
[0450]
因此,用户设备可以包括诸如上面在本发明的实施例中描述的视频编解码器。应该了解,术语用户设备旨在覆盖任何合适类型的无线用户设备,诸如移动电话、便携式数据处理设备或便携式web浏览器。
[0451]
此外,公共陆地移动网络(plmn)的元件还可以包括上述视频编解码器。
[0452]
通常,本发明的各种实施例可以在硬件或专用电路、软件、逻辑或其任何组合中实施。例如,一些方面可以被实现在硬件中,而其他方面可以被实现在可以由控制器、微处理器或其他计算设备执行的固件或软件中,尽管本发明不被限于此。尽管本发明的各个方面可以被图示和描述为框图、流程图或者使用一些其他图形表示,但是要充分理解的是,本文描述的这些框、装置、系统、技术或方法可以作为非限制性示例被实现在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备或其某种组合中。
[0453]
本发明的实施例可以通过由移动设备的数据处理器(诸如在处理器实体中)可执
行的计算机软件,或者通过硬件,或者通过软件和硬件的组合实现。进一步地,在这方面,应当注意的是,附图中的逻辑流程的任何框可以表示程序步骤或者互连的逻辑电路、框和功能或者程序步骤和逻辑电路、框和功能的组合。软件可以被存储在作为存储器芯片的这种物理介质、或者实现在处理器内的存储器块、诸如硬盘或软盘等磁性介质以及诸如例如dvd及其数据变型cd等光学介质上。
[0454]
存储器可以是适合于本地技术环境的任何类型,并且可以使用任何合适的数据存储技术实现,诸如基于半导体的存储器设备、磁性存储器设备和系统、光学存储器设备和系统、固定存储器和可移除存储器。数据处理器可以是适合于本地技术环境的任何类型,并且作为非限制性示例,可以包括通用计算机、专用计算机、微处理器、数字信号处理器(dsp)和基于多核处理器架构的处理器中的一个或多个。
[0455]
本发明的实施例可以被实践在诸如集成电路模块等各种组件中。集成电路的设计大体上是高度自动化的过程。复杂且功能强大的软件工具可用于将逻辑级别设计转换为准备在半导体衬底上蚀刻和形成的半导体电路设计。
[0456]
程序(诸如由加利福尼亚州山景城的新思科技和加利福尼亚州圣何塞的cadence design提供的程序)使用完善的设计规则以及预存储设计模块库自动对导体进行路由,并且在半导体芯片上定位组件。一旦半导体电路的设计已完成,标准化电子格式(例如opus、gdsii等)的所得设计就可以被发送给半导体制作设施或“fab”以进行制作。
[0457]
前述描述通过示例性且非限制性示例提供了对本发明的示例性实施例的完整且信息丰富的描述。然而,鉴于前述描述,在结合附图和所附权利要求阅读时,各种修改和改编对于相关领域的技术人员来说可能变得显然的。然而,本发明的教导的所有这种修改和类似的修改仍将落入本发明的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1