5.具体实施方式
在类似于VVC的视频格式的上下文中描述实施方案的以下示例。然而,这些实施方案不限于对应于VVC的视频编码/解码方法。这些实施方案特别适于使用在AVC、HEVC和VVC中使用的工具或特征中的至少一者的任何视频格式。这类格式包括例如标准EVC(基本视频编码/MPEG-5)、AV1和VP9。
图2、3和4介绍了视频格式的示例。
图2示出了原始视频20的像素图片21所经历的分区的示例。在此认为像素由三个分量组成:一个亮度分量和两个色度分量。然而,其它类型的像素可能包括更少或更多分量(例如,仅亮度分量或额外的深度分量)。
将图片划分为多个编码实体。首先,如图2中的参考标号23所表示,将图片划分为称为编码树单元(CTU)的块的网格。CTU由N×N个亮度样本块以及两个对应的色度样本块组成。N通常是二的幂,例如最大值为“128”。其次,将图片划分为一个或多个CTU组。例如,可将该图片划分为一个或多个图块行和图块列,图块是覆盖图片的矩形区域的CTU序列。在一些情况下,可将图块划分为一个或多个砖块,每个砖块由图块内的至少一个CTU行组成。特定类型的图块防止来自其他图块的样本的空间和时间预测。这些图块被称为子图片。在图块和砖块的概念之上,存在另一编码实体,称为切片,其可包含图片的至少一个图块或图块的至少一个砖块。
在图2的示例中,如参考标号22所表示,将图片21划分为光栅扫描切片模式的三个切片S1、S2和S3,每个切片包括多个图块(未示出),每个图块仅包括一个砖块。
如图1中的参考标号24所表示,CTU可以被分区成被称为编码单元(CU)的一个或多个子块的分层树的形式。CTU是分层树的根(即,父节点),并且可分区为多个CU(即,子节点)。如果每个CU未进一步分区为较小CU,则每个CU成为分层树的叶;或者如果每个CU进一步分区为较小CU(即,子节点),则每个CU成为较小CU的父节点。
在图1的示例中,首先,使用四叉树类型分区将CTU 14分区为“4”个正方形CU。左上角的CU是分层树的叶,因为其未进一步分区,即其并非任何其他CU的父节点。再次使用四叉树类型分区将右上角的CU进一步分区为“4”个较小正方形CU。使用二叉树类型分区将右下角的CU竖直地分区为“2”个矩形CU。使用三叉树类型分区将左下角的CU竖直地分区为“3”个矩形CU。可以注意到,矩形CU是在AVC和HEVC中不可用的VVC的新特征。
在图片编码期间,分区是自适应的,每个CTU均被分区以便优化CTU准则的压缩效率。
HEVC中出现了预测单元(PU)和变换单元(TU)的概念。实际上,在HEVC中,用于预测的编码实体(即PU)和用于变换的编码实体(即TU)可以是CU的子划分。例如,如图1中所表示,大小2N×2N的CU可以被划分为大小N×2N或大小2N×N的PU 2411。另外,所述CU可以被划分为大小N×N的“4”个TU 2412或大小的“16”个TU。
可以注意到,在VVC中,除某些特殊情况外,TU和PU的边界在CU的边界上对准。因此,CU一般包括一个TU和一个PU。
在本申请中,术语“块”或“图片块”可用于指CTU、CU、PU和TU中的任一者。另外,术语“块”或“图片块”可用于指H.264/AVC或其他视频编码标准中所指定的宏块、分区和子块,并且更一般地指众多大小的样本的阵列。
在本申请中,术语“重构”与“解码”可以互换使用,术语“像素”与“样本”可互换使用,术语“图像”、“图片”、“子图片”、“切片”和“帧”可以互换使用。通常,但不必然,术语“重构”在编码器侧使用,而“解码”在解码器侧使用。
图3示意性地描绘了由编码模块执行的用于对视频流进行编码的方法。设想了用于编码的此方法的变型,但为了清楚起见,下文描述了图3的用于编码的方法,而未描述所有预期变型。
在编码之前,原始视频序列的当前原始图像可经过预处理。例如,在步骤301中,对当前原始图片应用颜色变换(例如,从RGB 4:4:4到YCbCr4:2:0的转换),或者对当前原始图片分量应用重新映射,以便获得对压缩更具弹性的信号分布(例如,使用颜色分量中的一个颜色分量的直方图均衡化)。另外,预处理301可以包括重采样(下采样或上采样)。可以将重采样应用于一些图片,使得所生成的比特流可以包括处于原始分辨率的图片以及处于另一分辨率的图片(或至少处于至少两种不同分辨率的图片)。重采样通常包括下采样,并且用于降低所生成的比特流的比特率。然而,上采样也是可能的。通过预处理获得的图片在下文中被称为预处理图片。
预处理图片的编码在步骤302期间以预处理图片的分区开始,如关于图1所描述的。因此,预处理图片分区为CTU、CU、PU、TU等。对于每个块,编码模块确定在帧内预测与帧间预测之间的编码模式。
帧内预测包括在步骤303期间根据帧内预测方法从预测块中预测当前块的像素,该预测块从位于待编码的当前块的因果关系附近的重构块的像素中导出。帧内预测的结果是指示使用附近块的哪些像素的预测方向,以及通过计算当前块与预测块之间的差而得到的残差块。最近,在VVC中提出并引入了新的帧内预测模式。这些新的帧内预测模式包括
·MIP(矩阵加权帧内预测),所述MIP包括使用用于从待预测块的左侧和上方的重构相邻边界样本中生成帧内预测符的矩阵;
·ISP(帧内子分区),所述ISP根据块大小将亮度帧内预测块竖直或水平地划分成2个或4个子分区;
·CCLM(交叉分量线性模型)预测,其中通过使用线性模型基于相同CU的重构亮度样本来预测CU的色度样本;
·IBC(帧内块复制),所述IBC包括从相同图片的另一块中预测图片中的块;以及
·帧内区域中的参考样本滤波,该参考样本滤波包括对用于帧内预测的参考样本进行滤波。
帧间预测包括从当前图片(此图片被称为参考图片)之前或之后的图片的像素块(被称为参考块)中预测当前块的像素。在根据帧间预测方法对当前块进行编码期间,由运动估计步骤304根据相似度准则确定参考图片的最接近当前块的块。在步骤304期间,确定指示参考图片中的参考块的位置的运动矢量。运动估计一般以子像素精度执行,即对当前图片和参考图片进行内插。在最近的视频标准中,内插取决于用于时间预测的内插的相位(子像素位置)。例如,在VVC的情况下,针对相位0(从样本的位置直接对样本进行内插(对应于整数像素内插))或者针对大于0的相位(对应于子像素内插)定义内插。当应用子像素内插时,亮度使用“15”子像素相位和8抽头多相滤波器,并且色度使用“31”子像素相位和4抽头多相滤波器。因此将考虑三种情况:整数内插、在水平方向或竖直方向上的子像素内插、在水平方向和竖直方向上的子像素内插。通过运动估计确定的运动矢量在运动补偿步骤305期间使用,在该运动补偿步骤期间以当前块与参考块之间的差的形式计算残差块。在第一视频压缩标准中,上述单向帧间预测模式是唯一可用的帧间模式。随着视频压缩标准的演进,帧间模式族已显著增长并且现在包括许多不同的帧间模式。这些帧间预测模式包括例如:
·DMVR(解码器侧运动矢量细化),其中在双向预测中,在每个初始运动矢量周围搜索细化运动矢量。该细化由编码器和解码器对称地执行。
·BDOF(双向光流),所述BDOF是基于光流概念,其假设对象的运动是平滑的。BDOF用于以4×4子块级别对CU的双向预测信号进行细化。BDOF仅被应用于亮度分量。
·PROF(具有光流的预测细化):与基于像素的运动补偿相比,基于子块的仿射运动补偿可以节省存储器存取带宽并且降低计算复杂度,代价是预测准确度损失。为了实现运动补偿的较精细粒度,使用具有光流的预测细化(PROF)来对基于子块的仿射运动补偿预测进行细化,而不增加用于运动补偿的存储器存取带宽。
·CIIP(组合的帧间预测和帧内预测),所述CIIP将帧间预测信号与帧内预测信号进行组合
·GPM(几何分区模式),所述GPM通过几何定位的直线将CU分割成两个部分。CU中的几何分区的每个部分使用其自身的运动进行帧间预测;仅允许对每个分区进行单一预测。
在选择步骤306期间,由编码模块在所测试的预测模式(帧内预测模式、帧间预测模式)当中根据速率/失真优化准则(即RDO准则)来选择优化压缩性能的预测模式。
当选择预测模式时,在步骤307期间变换残差块,并且在步骤309期间量化残差块。变换也已经演进,并且最近提出了新工具。这些新工具包括:
·JCCR(色度残差联合编码),其中对色度残差进行联合编码。
·MTS(多重变换选择),其中在用于水平变换和竖直变换的DCT-2、DST-7和DCT-8之间执行选择。
·LFNST(低频不可分离变换):LFNST应用于正向初级变换与量化之间(在编码器处)以及去量化与逆向初级变换之间(在解码器侧处)。根据块大小应用4×4不可分离变换或8×8不可分离变换。
·BDPCM(块差分脉冲编码调制)。BDPCM可以被视为常规帧内模式的竞争者。当使用BDPCM时,传输BDPCM预测方向标志以指示预测是水平还是竖直。随后,使用常规的水平或竖直帧内预测过程以未经滤波的参考样本来预测该块。对残差进行量化,并且对每个量化残差与其预测符(即水平或竖直(取决于BDPCM预测方向)相邻位置的先前编码残差)之间的差进行编码。
·SBT(子块变换),其中对于CU,仅对残差块的子部分进行编码。
需注意,编码模块可跳过变换,并对未变换的残差信号直接应用量化。当根据帧内预测模式对当前块进行编码时,在步骤310期间,由熵编码器对预测方向以及经变换和量化的残差块进行编码。当根据帧间预测对当前块进行编码时,在适当时根据从与位于待编码块附近的重构块相对应的运动矢量的集合中选择的预测矢量来预测块的运动矢量。接下来,在步骤310期间,由熵编码器以运动残差和用于识别预测矢量的索引的形式对运动信息进行编码。在步骤310期间,由熵编码器对所变换和量化的残差块进行编码。需注意,编码模块可绕过变换和量化,即,对残差应用熵编码,而不应用变换或量化过程。熵编码的结果插入到编码视频流311中。
在量化步骤309之后,重构当前块,使得对应于该块的像素可用于将来预测。该重构阶段也称为预测环路。因此,在步骤312期间将逆量化应用于经变换和量化的残差块,并且在步骤313期间应用逆变换。根据用于在步骤314期间获得的块的预测模式,重构块的预测块。如果根据帧间预测模式对当前块进行编码,则编码模块在适当时在步骤316期间应用使用当前块的运动矢量的运动补偿,以便识别当前块的参考块。如果根据帧内预测模式对当前块进行编码,则在步骤315期间,使用对应于当前块的预测方向来重构当前块的参考块。将参考块和重构的残差块相加,以便获得重构的当前块。
在重构后,在步骤317期间,将旨在减少编码伪像的环路内滤波应用于重构块。该滤波称为环路内滤波,因为该滤波发生在预测环路中,以在解码器处获得与编码器相同的参考图像,从而避免编码过程与解码过程之间的漂移。如先前所提及,环路内滤波工具包括解块滤波、SAO(样本自适应偏移)、ALF(自适应环路滤波器)和CC-ALF(交叉分量ALF)。通过将自适应线性滤波器应用于亮度通道,并且随后使用此滤波操作的输出来进行色度细化,CC-ALF使用亮度样本值来对每个色度分量进行细化。被称为LMCS(具有色度缩放的亮度映射)的新工具也可以被视为环路内滤波。在其他环路滤波之前添加LMCS作为新的处理块。LMCS具有两个主要分量:基于自适应分段线性模型对亮度分量的环路内映射;对于色度分量,应用亮度相关的色度残差缩放。
当重构块时,在步骤318期间将块插入到存储在一般所称的解码图片缓冲器(DPB)对应的重构图像的存储器319中的重构图片中。然后,这样存储的重构图像可用作待编码的其他图像的参考图像。
被称为参考图片重采样(RPR)的新工具VVC允许动态地改变编码图片的分辨率。图片以其实际编码/解码分辨率存储在DPB中,该实际编码/解码分辨率可能低于比特流的高级语法(HLS)中发信号通知的视频空间分辨率。当以给定分辨率编码的图片针对时间预测使用不处于相同分辨率的参考图片时,应用纹理的参考图片重采样,使得预测图片与参考图片具有相同分辨率(由图3中的步骤320表示)。需注意,根据具体实施,重采样过程不一定应用于整个参考图片(整个参考图片重采样),而是可以仅应用于当执行当前图片的解码和重构时被识别为参考块的块(基于块的参考图片重采样)。在这种情况下,在当前图片中的当前块使用具有与当前图片不同的分辨率的参考图片时,根据计算为当前图片分辨率和参考图片分辨率之间的比率的重采样比率,对参考图片中用于当前块的时间预测的样本进行重采样。
诸如SEI(补充增强信息)消息的元数据可以被附加到编码视频流311。如例如在诸如AVC、HEVC或VVC的标准中定义的SEI(补充增强信息)消息是与视频流相关联并且包括提供与视频流相关的信息的元数据的数据容器或数据结构。
图4示意性地描绘了由解码模块执行的用于对根据关于图3描述的方法编码的编码视频流311进行解码的方法。设想了该用于解码的方法的变型,但是为了清楚起见,以下描述了图4的用于解码的方法,而未描述所有预期变型。
解码是逐块进行的。对于当前块,该解码在步骤410期间以当前块的熵解码开始。熵解码允许获得块的预测模式。
如果已根据帧间预测模式对块进行了编码,则熵解码允许在适当时获得预测矢量索引、运动残差和残差块。在步骤408期间,使用预测矢量索引和运动残差来重构当前块的运动矢量。
如果已根据帧内预测模式对块进行了编码,则熵解码允许获得预测方向和残差块。由解码模块实现的步骤412、413、414、415、416和417分别在所有方面都与由编码模块实现的步骤412、413、414、415、416和417相同。在步骤418中,将解码块保存在解码图片中并将解码图片存储在DPB 419中。当解码模块对给定图片进行解码时,存储在DPB 419中的图片与由编码模块在所述给定图像的编码期间存储在DPB 319中的图片相同。也可由解码模块输出解码的图片,以例如进行显示。当RPR被激活时,用作参考图片的图片的样本(即至少一部分)在步骤420中被重采样到预测图片的分辨率。在一些具体实现中,重采样步骤(420)和运动补偿步骤(416)可以组合在一个单样本内插步骤中。
在步骤421中,解码图像可以进一步经过后处理。后处理可以包括逆颜色变换(例如,从YCbCr 4∶2∶0到RGB 4∶4∶4的转换)、执行在步骤301的预处理中执行的重新映射过程的逆的逆映射、用于基于例如在SEI消息中提供的滤波器参数来改善重构的图片的后滤波和/或例如用于将输出图像调整到显示约束的重采样。
如上文已提及,标准ISO/IEC 23001-11节能媒体消费(绿色元数据)指定了针对视频分发链的不同过程(编码、自适应流式传输、解码、显示)的信令复杂度信息或度量(CM)的元数据。因此,CM表示由所述不同过程引起的能量消耗。关于解码器侧,针对不同的解码模块(DM)给出复杂度信息:熵解码、去量化和逆变换、帧内预测、运动补偿、解块和边信息准备。此信息可以由解码器用于将其CPU频率设置为最低频率,这保证了在帧速率截止时间内完成解码,并且因此有可能减少功耗。
在现有绿色MPEG中,每周期发信号通知CM。周期类型(由语法元素“period_type”指示)是单个图片、图片群组(GOP)或时间间隔。CM由以下信息组成:
·分别为大小8×8、16×16和32×32的块在非零区域中的比例。此信息影响熵解码、逆量化和逆变换过程。
·帧内块的比例以及(对于那些帧内块)根据特定帧内模式(平面、DC、角水平/竖直)编码的块的比例。此信息影响帧内块解码过程。
·对于帧间块,针对不同子采样位置使用运动补偿的块的比例。此信息影响运动补偿过程。
·使用解块滤波的块的比例。
下文是针对HEVC(表TAB1)定义的用于传送CM的SEI消息。词语“部分”指示在SEI消息中发信号通知关于编码工具/配置的使用的比率。这些“使用率”由编码器计算,并且由解码器利用以更好地控制其能量消耗。
/>
表TAB1
可以根据由语法元素period_type定义的不同类型的图片集合来发信号通知使用率。对于HEVC,period_type定义如下(表TAB2):
表TAB2
表TAB1的SEI消息最初是针对AVC和HEVC设计的。如上文所见,没有考虑在VVC中引入的许多新的工具和特征。以下实施方案中的各种实施方案描述了允许考虑在VVC中采用的新工具和特征的表TAB1的SEI消息的适配。
图1A描述了其中可以实现以下实施方案的上下文的示例。
在图1A中,可以是相机、存储设备、计算机、服务器或者能够递送视频流的任何设备的装置10使用通信信道11将视频流传输到系统12。视频流由装置10编码和传输,或者由装置10接收和/或存储,并且随后进行传输。通信信道11是有线(例如互联网或以太网)或无线(例如WiFi、3G、4G或5G)网络链路。
装置10包括符合关于图3描述的编码方法的编码模块100。系统12包括例如解码模块120和显示设备121。解码模块120符合关于图4描述的方法。
图1B示出了其中可以实现各种实施方案的过程的示例。
在步骤101中,装置10获得待编码的图片序列。
在步骤102中,装置10的编码模块100应用图3的方法以比特流的形式对图片序列进行编码。与编码并行地,编码模块100计算与通过图3的方法实现的编码工具和特征相对应的CM,并且在至少一个SEI消息中发信号通知这些CM。
在步骤103中,装置10使至少一个SEI消息与比特流相关联,并且将比特流和相关联的SEI消息传输到系统12。SEI消息例如在VVC NAL(网络抽象层)单元中进行传送。
在步骤104中,系统12接收比特流。
在步骤105中,解码模块120识别传送SEI消息的VVC NAL单元,对SEI消息进行解码,并且获得CM。
在步骤106中,解码模块120根据解码CM来调整其解码参数。例如,该解码模块将其CPU频率调整到允许实时地对图片进行解码的最小值。
在步骤107中,解码模块120使用其经调整的参数对图片进行解码。
图5A示意性地示出根据不同方面和实施方案修改的能够实现编码模块100或解码模块120的处理模块500的硬件架构的示例,该编码模块或解码模块能够分别实现图3的用于编码的方法以及图4的用于解码的方法或者图1B的与装置10相关或与系统12相关的过程的部分。作为非限制性示例,处理模块500包括由通信总线5005连接的以下项:涵盖一个或多个微处理器的处理器或CPU(中央处理单元)5000、通用计算机、专用计算机以及基于多核心架构的处理器;随机存取存储器(RAM)5001;只读存储器(ROM)5002;存储单元5003,该存储单元可以包括非易失性存储器和/或易失性存储器,包括但不限于电可擦除可编程只读存储器(EEPROM)、只读存储器(ROM)、可编程只读存储器(PROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、磁盘驱动器和/或光盘驱动器,或者存储介质读取器,诸如SD(安全数字)卡读取器和/或硬盘驱动器(HDD)和/或可访问网络的存储设备;至少一个通信接口5004,该至少一个通信接口用于与其他模块、设备或装备交换数据。通信接口5004可以包括但不限于被配置成通过通信信道发射和接收数据的收发器。通信接口5004可以包括但不限于调制解调器或网卡。
如果处理模块500实现解码模块,则通信接口5004使得例如处理模块500能够接收编码视频流和/或SEI消息,并且基于SEI消息来提供解码图片序列。如果处理模块500实现编码模块,则通信接口5004使得例如处理模块500能够接收待编码的原始图片数据序列,并且提供编码视频流和相关联的SEI消息。
处理器5000能够执行从ROM 5002、外部存储器(未示出)、存储介质或通信网络加载到RAM 5001中的指令。当处理模块500上电时,处理器5000能够从RAM 5001读取指令,并且执行该指令。这些指令形成计算机程序,该计算机程序使得例如由处理器5000实现如关于图4描述的解码方法或者关于图3描述的编码方法或者关于图1B描述的过程的一部分,该解码方法和编码方法以及该过程包括下文在本文档中描述的各个方面和实施方案。
所述编码或解码方法的全部或部分算法和步骤可通过由诸如DSP(数字信号处理器)或微控制器的可编程机器执行一组指令而以软件形式实现,或者可通过诸如FPGA(现场可编程门阵列)或ASIC(专用集成电路)的机器或专用部件而以硬件形式实现。
图5C示出了其中实现各个方面和实施方案的系统12的示例的框图。系统12可以体现为包括下文描述的各种部件的设备,并且被配置成执行本文档中描述的方面和实施方案中的一者或多者。此类设备的示例包括但不限于各种电子设备,诸如个人计算机、膝上型计算机、智能电话、平板电脑、数字多媒体机顶盒、数字电视接收器、个人视频录制系统、连接的家用电器和头戴式显示器。系统12的元件可以单独地或组合地体现在单个集成电路(IC)、多个IC和/或分立的部件中。例如,在至少一个实施方案中,系统12包括实现解码模块的一个处理模块500。在各种实施方案中,系统12经由例如通信总线或者通过专用输入端口和/或输出端口通信地耦接到一个或多个其他系统或其他电子设备。在各种实施方案中,系统12被配置成实现本文档中描述的方面中的一个或多个方面。
处理模块500的输入可以通过如框531中所指示的各种输入模块来提供。此类输入模块包括但不限于:(i)射频(RF)模块,其接收例如由广播器空中发射的RF信号;(ii)分量(COMP)输入模块(或一组COMP输入模块);(iii)通用串行总线(USB)输入模块;和/或(iv)高清晰度多媒体接口(HDMI)输入模块。图5C中未示出的其他示例包括复合视频。
在各种实施方案中,框531的输入模块具有如本领域所已知的相关联的相应输入处理元件。例如,RF模块可与适用于以下的元件相关联:(i)选择所需的频率(也称为选择信号,或将信号频带限制到一个频带),(ii)下变频选择的信号,(iii)再次频带限制到更窄频带以选择(例如)在某些实施方案中可称为信道的信号频带,(iv)解调下变频和频带限制的信号,(v)执行纠错,以及(vi)解复用以选择所需的数据包流。各种实施方案的RF模块包括用于执行这些功能的一个或多个元件,例如频率选择器、信号选择器、频带限制器、信道选择器、滤波器、下变频器、解调器、纠错器和解复用器。RF部分可包括执行这些功能中的各种功能的调谐器,这些功能包括例如下变频接收信号至更低频率(例如,中频或近基带频率)或至基带。在一个机顶盒实施方案中,RF模块及其相关联的输入处理元件接收通过有线(例如,电缆)介质发射的RF信号,并且通过滤波、下变频和再次滤波至所需的频带来执行频率选择。各种实施方案重新布置上述(和其他)元件的顺序,移除这些元件中的一些元件,和/或添加执行类似或不同功能的其他元件。添加元件可包括在现有元件之间插入元件,例如,插入放大器和模数变换器。在各种实施方案中,RF模块包括天线。
另外,USB和/或HDMI模块可以包括用于跨USB和/或HDMI连接将系统12连接到其他电子设备的相应接口处理器。应理解,输入处理(例如Reed-Solomon纠错)的各个方面可以根据需要例如在单独的输入处理IC内或者在处理模块500内实现。类似地,USB或HDMI接口处理的各方面可以根据需要在单独的接口IC内或在处理模块500内实现。经解调、纠错和解复用的流被提供给处理模块500。
系统12的各种元件可以设置在集成壳体内。在集成壳体内,各种元件可使用合适的连接布置(例如,本领域已知的内部总线,包括IC间(I2C)总线、布线和印刷电路板)互连并且在这些元件之间传输数据。例如,在系统12中,处理模块500通过总线5005与所述系统12的其他元件互连。
处理模块500的通信接口5004允许系统12在通信信道11上通信。如上文已提及,通信信道11可以例如在有线介质和/或无线介质内实现。
在各种实施方案中,使用诸如Wi-Fi网络(例如IEEE 802.11(IEEE是指电气电子工程师学会))的无线网络将数据流式传输或以其他方式提供给系统12。这些实施方案的Wi-Fi信号通过适用于Wi-Fi通信的通信信道11和通信接口5004来接收。这些实施方案的通信信道11通常连接到接入点或路由器,该接入点或路由器提供对外部网络(包括互联网)的访问,以用于允许流式传输应用和其他越过运营商的通信。其他实施方案使用输入框531的RF连接向系统12提供流式传输数据。如上所述,各种实施方案以非流式的方式提供数据。另外,各种实施方案使用除了Wi-Fi以外的无线网络,例如蜂窝网络或蓝牙网络。
系统12可以向各种输出设备(包括显示系统55、扬声器56和其他外围设备57)提供输出信号。各种实施方案的显示系统55包括例如触摸屏显示器、有机发光二极管(OLED)显示器、曲面显示器和/或可折叠显示器中的一者或多者。显示器55可用于电视机、平板计算机、膝上型计算机、蜂窝电话(移动电话)、头戴式显示器或其他设备。显示系统55还可以与如图1A中的其他部件集成(例如,如在智能电话中),或者可为独立的(例如用于膝上型计算机的外部监视器)。在实施方案的各种示例中,其他外围设备57包括独立数字视频光盘(或数字多功能光盘)(DVR,针对这两个术语)、碟片播放器、立体声系统和/或照明系统中的一者或多者。各种实施方案使用一个或多个外围设备57,该一个或多个外围设备基于系统12的输出来提供功能。例如,碟片播放器执行播放系统12的输出的功能。
在各种实施方案中,控制信号使用诸如AV.Link、消费电子产品控制(CEC)或其他通信协议的信令在系统12与显示系统55、扬声器56或其他外围设备57之间进行传送,该其他通信协议使得能够在有或没有用户干预的情况下进行设备到设备控制。可以通过相应的接口532、533和534经由专用连接将输出设备通信地耦接到系统12。另选地,输出设备可以使用通信信道11经由通信接口5004连接到系统12,或者使用专用通信信道经由通信接口5004连接到该系统。显示系统55和扬声器56可以与电子设备(诸如电视机)中的系统12的其他部件一起集成在单个单元中。在各种实施方案中,显示器接口532包括显示驱动器,诸如定时控制器(T Con)芯片。
显示系统55和扬声器56可以另选地与其他部件中的一个或多个部件分离。在显示系统55和扬声器56为外部部件的各种实施方案中,可以经由专用输出连接(包括例如HDMI端口、USB端口或COMP输出)来提供输出信号。
图5B示出了其中实现各个方面和实施方案的装置10的示例的框图。装置10与系统12非常类似。装置10可以体现为包括下文描述的各种部件的设备,并且被配置成执行本文档中描述的方面和实施方案中的一者或多者。此类设备的示例包括但不限于各种电子设备,诸如个人计算机、膝上型计算机、智能电话、平板电脑、相机和服务器。装置10的元件可以单独地或组合地体现在单个集成电路(IC)、多个IC和/或分立的部件中。例如,在至少一个实施方案中,装置10包括实现编码模块的一个处理模块500。在各种实施方案中,装置10经由例如通信总线或通过专用输入端口和/或输出端口通信地耦接到一个或多个其他系统或者其他电子设备。在各种实施方案中,装置10被配置成实现本文档中描述的方面中的一个或多个方面。
对处理模块500的输入可通过如关于图5C已经描述的框531中所示的各种输入模块来提供。
装置10的各种元件可以设置在集成壳体内。在集成壳体内,各种元件可使用合适的连接布置(例如,本领域已知的内部总线,包括IC间(I2C)总线、布线和印刷电路板)互连并且在这些元件之间传输数据。例如,在装置10中,处理模块500通过总线5005与所述装置10的其他元件互连。
处理模块500的通信接口5004允许系统500在通信信道11上通信。
在各种实施方案中,使用诸如Wi-Fi网络(例如IEEE 802.11(IEEE是指电气电子工程师学会))的无线网络将数据流式传输或以其他方式提供给装置10。这些实施方案的Wi-Fi信号通过适用于Wi-Fi通信的通信信道11和通信接口5004来接收。这些实施方案的通信信道11通常连接到接入点或路由器,该接入点或路由器提供对外部网络(包括互联网)的访问,以用于允许流式传输应用和其他越过运营商的通信。其他实施方案使用输入框531的RF连接向装置10提供流式传输数据。
如上所述,各种实施方案以非流式的方式提供数据。另外,各种实施方案使用除了Wi-Fi以外的无线网络,例如蜂窝网络或蓝牙网络。
所提供的数据是由连接到装置10或者包括在装置10中的图片和/或音频获取模块所提供的原始数据。
装置10可以向能够对输出信号进行存储和/或解码的各种输出设备(诸如系统12)提供输出信号。
各种具体实施参与解码。如本申请中所用,“解码”可涵盖例如对所接收的编码视频流执行的过程的全部或部分,以便产生适于显示的最终输出。在各种实施方案中,此类过程包括通常由解码器执行的一个或多个过程,例如熵解码、逆量化、逆变换和预测。在各种实施方案中,这类过程还包括或另选地包括由本申请中描述的各种具体实现的解码器执行的过程,例如用于确定用于执行解码的CPU频率。
短语“解码过程”旨在具体地指代操作的子集还是广义地指代更广泛的解码过程基于具体描述的上下文将是清楚的,并且被认为会被本领域的技术人员很好地理解。
各种具体实施参与编码。以与上面关于“解码”的讨论类似的方式,如在本申请中使用的“编码”可涵盖例如对输入视频序列执行以便产生编码视频流的全部或部分过程。在各种实施方案中,此类过程包括通常由编码器执行的一个或多个过程,例如,分区、预测、变换、量化和熵编码。在各种实施方案中,这类过程还包括或另选地包括由本申请中描述的各种具体实现的编码器执行的过程,例如用于生成包括CM的SEI消息。
短语“编码过程”是具体地指代操作的子集还是广义地指代更广泛的编码过程基于具体描述的上下文将是清楚的,并且据信将被本领域的技术人员很好地理解。
需注意,本文所使用的语法元素名称是描述性术语。因此,它们不排除使用其他语法元素名称。
当附图呈现为流程图时,应当理解,其还提供了对应装置的框图。类似地,当附图呈现为框图时,应当理解,其还提供了对应的方法/过程的流程图。
本文所述的具体实施和方面可在例如方法或过程、装置、软件程序、数据流或信号中实现。即使仅在单个形式的具体实施的上下文中讨论(例如,仅作为方法讨论),讨论的特征的具体实施也可以其他形式(例如,装置或程序)实现。装置可在例如适当的硬件、软件和固件中实现。方法可在例如一般是指处理设备的处理器中实施,该处理设备包括例如计算机、微处理器、集成电路或可编程逻辑设备。处理器还包括通信设备,诸如例如计算机、手机、便携式/个人数字助理(“PDA”)以及便于最终用户之间信息通信的其他设备。
提及“一个实施方案”或“实施方案”或“一个具体实施”或“具体实施”以及它们的其他变型,意味着结合实施方案描述的特定的特征、结构、特性等包括在至少一个实施方案中。因此,短语“在一个实施方案中”或“在实施方案中”或“在一个具体实施中”或“在具体实施中”的出现以及出现在本申请通篇的各个地方的任何其他变型不一定都是指相同的实施方案。
另外,本申请可涉及“确定”各种信息。确定信息可包括例如估计信息、计算信息、预测信息、从存储器检索信息或例如从另一设备、模块或从用户获得信息中的一者或多者。
此外,本申请可涉及“访问”各种信息。访问信息可包括例如接收信息、检索信息(例如,从存储器)、存储信息、移动信息、复制信息、计算信息、确定信息、预测信息或估计信息中的一者或多者。
另外,本申请可涉及“接收”各种信息。与“访问”一样,接收旨在为广义的术语。接收信息可包括例如访问信息或检索信息(例如,从存储器)中的一者或多者。此外,在诸如例如存储信息、处理信息、发射信息、移动信息、复制信息、擦除信息、计算信息、确定信息、预测信息或估计信息的操作期间,“接收”通常以一种方式或另一种方式参与。
应当理解,例如,在“A/B”、“A和/或B”以及“A和B中的至少一者”、“A和B中的一者或多者”的情况下,使用以下“/”、“和/或”以及“至少一种”、“一者或多者”中的任一种旨在涵盖仅选择第一列出的选项(A),或仅选择第二列出的选项(B),或选择两个选项(A和B)。作为进一步的示例,在“A、B和/或C”和“A、B和C中的至少一者”、“A、B和C中的一者或多者”的情况下,此类短语旨在涵盖仅选择第一列出的选项(A),或仅选择第二列出的选项(B),或仅选择第三列出的选项(C),或仅选择第一列出的选项和第二列出的选项(A和B),或仅选择第一列出的选项和第三列出的选项(A和C),或仅选择第二列出的选项和第三列出的选项(B和C),或选择所有三个选项(A和B和C)。如对于本领域和相关领域的普通技术人员显而易见的是,这可扩展到所列出的尽可能多的项目。
而且,如本文所用,词语“发信号通知”是指(除了别的以外)向对应解码器指示某物。例如,在某些实施方案中,编码器发信号通知一些编码工具的使用。这样,在一个实施方案中,在编码器侧和解码器侧两者均可使用相同的参数。因此,例如,编码器可将特定参数发射(显式信令)到解码器,使得解码器可使用相同的特定参数。相反,如果解码器已具有特定参数以及其他,则可在不发射(隐式信令)的情况下使用信令,以简单允许解码器知道和选择特定参数。通过避免传输任何实际功能,在各种实施方案中实现了比特节省。应当理解,信令可以各种方式实现。例如,在各种实施方案中,使用一个或多个语法元素、标志等将信息发信号通知至对应解码器。虽然前面涉及词语“signal(发信号通知)”的动词形式,但是词语“signal(信号)”在本文也可用作名词。
对于本领域的普通技术人员将显而易见的是,具体实施可产生格式化为携带例如可存储或可传输的信息的各种信号。信息可包括例如用于执行方法的指令或由所述具体实施中的一个具体实施产生的数据。例如,可格式化信号以携带所述实施方案的编码视频流和SEI消息。可格式化此类信号例如为电磁波(例如,使用频谱的射频部分)或基带信号。格式化可包括例如对编码视频流进行编码以及使用编码视频流调制载波。信号携带的信息可以是例如模拟或数字信息。已知的是,信号可通过各种不同的有线或无线链路发射。信号可存储在处理器可读介质上。
第一实施方案集中于在绿色MPEG元数据中提供适于RPR的CM。
在现有绿色MPEG中,针对AVC和HEVC定义的许多语法元素是基于图片大小,该图片大小在提及在图片标头(图片参数集(PPS))中发信号通知的大小的序列内是恒定的。相对于此图片大小指示不同编码模式的使用率。这例如用于确定在绿色MPEG规范中由参数TotalNum4x4BlocksInPeriod定义的周期内处理的4×4块的总数。
另外,对于支持若干模式m1至mN的一些解码器特征,一般报告模式m1至mN-1的比率,并且针对模式mN的比率从其他比率中推导为ratio_mN=255–ratio_m1-…-ratio_mN-1(使用255的振幅以固定点表示比率,该比率对应于比率100%)。
由于RPR所允许的图片大小的变化,报告现有绿色MPEG的各种模式的使用率的方式不再适于VVC。
在第一实施方案的第一变型中,通过将例如在序列标头(序列参数集(SPS))中经由参数sps_pic_width_max_in_luma_samples和sps_pic_height_max_in_luma_samples发信号通知的比特流的最大图片大小视为参考图片大小来定义各种比率,而不是使用解码图片大小。各种比率(即CM=表示能量消耗的信息)取决于在序列标头(即SPS)中针对图片序列定义的单个参考图片大小。
参照图片大小由如下定义的参数maxPicSizeInCtbsY定义:
maxPicSizeInCtbsY=maxPicWidthInCtbsY*maxPicHeightInCtbsY其中maxPicWidthInCtbsY和maxPicheightInCtbsY定义如下:
maxPicWidthInCtbsY=(sps_pic_width_max_in_luma_samples+CtbSizeY-1)/CtbSizeY
maxPicHeightInCtbsY=(sps_pic_height_max_in_luma_samples+CtbSizeY-1)/CtbSizeY
其中,CtbSizeY被定义为亮度编码树块的大小(最大块大小)。
因此,针对特征的不同模式的使用率的总和可以低于255(100%),例如在若干图片中的一个图片未以在SPS中发信号通知的最大图片分辨率进行编码的情况下。一个结果是显式地报告针对特征的所有模式的使用率。实际上,在该情况下,不能从其他模式中推导出一个模式的使用率。在上文提及的示例中,针对所有模式m1至mN指定使用率,而不是如在用于AVC和HEVC的现有绿色MPEG规范中所做的模式m1至mN-1。
参考在现有绿色MPEG规范中定义的参数TotalNum4x4BlocksPic的示例,在第一实施方案的第一变型中,现在如下导出参数TotalNum4x4BlocksPic
TotalNum4x4BlocksPic=maxPicSizeInCtbsY*(1<<(CtbLog2SizeY-2))2
其中CtbLog2SizeY定义CTB大小的log2(例如对于CTB大小16×16等于2,对于CTB大小32×32等于3,对于CTB大小64×64等于4,对于CTB大小128×128等于5)。另选地,该变量可以被重命名为TotalNum16BlocksPic,参考包括16个样本的块。
当处理模块500实现解码模块120时,图6中所示出的第一实施方案的第二变型由处理模块500实现。
在步骤600中,处理模块500确定语法元素period_type是否指示对单个图片进行使用(即CM)的报告。
在语法元素period_type指示对单个图片进行使用的报告的情况下,在步骤602中,处理模块500指定使用如在PPS中发信号通知的解码图片大小(例如用于计算参数TotalNum4x4BlocksPic)。
在语法元素period_type指示对若干图片进行使用报告的情况下,在步骤601中,处理模块指定使用如在SPS中发信号通知的最大图片大小(例如用于计算参数TotalNum4x4BlocksPic)。此第二变型允许保持针对报告使用率的最大精度。
在此第二变型中,当针对若干图片发信号通知各种比率时,各种比率(即CMS=表示能量消耗的信息)取决于在序列标头(即SPS)中针对图片序列定义的单个参考图片大小。
在第一实施方案的第三变型中,由语法元素total_number_4x4_blocks_in_period在SEI消息中显式地发信号通知4×4块的总数TotalNum4x4BlocksInPeriod。因此,不需要检查在所考虑的周期——被定义为视频流的连续图片子集的周期——中不同图片的图片大小。
如果4×4块的总数TotalNum4x4BlocksInPeriod如此进行编码,则认为“26”比特足够大以指示其针对8K图片以及针对“128”图片的片段的值(通常针对“120”fps视频)。为了较容易的字节对准,因此针对语法元素total_number_4x4_blocks_in_period推荐“32”比特。
如果使用较少比特是优选的,则这可以减少到“16”比特。在这种情况下,有可能例如通过因子“1024”(210)来对4×4块的总数TotalNum4x4BlocksInPeriod的值进行量化,4×4块的实际总数为:
TotalNum4x4BlocksInPeriod=1024*total_number_4x4_blocks_in_period。
在另一变型中,为了避免4×4块的总数TotalNum4x4BlocksInPeriod的过大值超过“32”比特,将语法元素total_number_4x4_blocks_in_period设置为:
·当指示在period_type为2时CM可应用的秒数的SEI消息的语法元素num_second大于给定阈值numSecondsMax(通常numSecondsMax=1)时,取决于阈值numSecondsMax的值;或者,
·当SEI消息的指定复杂度度量在period_type为3时可应用、以解码顺序计数的图片数量的语法元素num_pictures大于给定阈值numPicturesMax(通常被设置为编码视频内容的每秒帧数)时,
取决于阈值numPicturesMax的值。
这产生了针对语法元素total_number_4x4_blocks_in_period的以下语义(在下文中以粗体表示):
total_number_4x4_blocks_in_period指定在指定周期内编码的4×4块(或包括16个样本的块)的总数。参数TotalNum4x4BlocksInPeriod导出如下:
·TotalNum4x4BlocksInPeriod被设置为等于total_number_4x4_blocks_in_period
·当以下条件成立时,TotalNum4x4BlocksInPeriod被设置为等于(num_seconds×TotalNum4x4BlocksInPeriod+numSecondsMax/2)/numSecondsMax:
οperiod_type等于“2”;
οnum_seconds大于numSecondsMax。
·当以下条件成立时,TotalNum4x4BlocksInPeriod被设置为等于(num_pictures×TotalNum4x4BlocksInPeriod+numPicturesMax/2)/numPicturesMax
οperiod_type等于“3”;
οnum_pictures大于numPicturesMax。
在一个变型中,大小小于4×4或16个样本的块被视为参考大小。例如,参考大小是2×2,因为这是针对色度块的最小大小。对应语法元素随后被定义为TotalNum2x2BlocksInPeriod。然而,一般认为4个样本的块总体上是较小比例的,并且不会显著地影响总体解码器复杂度。另外,这些块可以被计数并且被添加到块数量4×4,这些块中的每个块对此编号贡献为1/4=0.25。相同概念能够应用于小于4×4或16个样本的其他块大小。
第二实施方案集中于提供适于绿色MPEG元数据中的矩形块的CM。
在一些情况下,由给定语法元素报告的给定模式的使用率(即CMS=表示能量消耗的信息)是基于针对使用该模式的所有各种块大小的使用率的级联。由于在VVC块中可以是矩形的,因而优选考虑每正方形块和矩形块的样本数量,而不是如在现有绿色MPEG规范中所做的那样考虑正方形块宽度/高度。举例来说,对于4×4至64×64的块大小,当这些大小相关时,应针对具有样本数量16、32、64、128、256、512、1024、2048、4096的块添加总和,而不是如当前在用于AVC和HEVC的绿色MPEG规范中所做的那样添加针对块4×4、8×8、16×16、32×32、64×64的使用。
在VVC中,支持“3”个变换类型,类型“0”(对应于DCT-II)、类型“1”(对应于DST-VII)、类型“2”(对应于DCT-VIII)。对于给定块,类型“0”用于在水平维度和竖直维度两者上的变换,或者类型“1”和“2”可以一起用于在水平维度和竖直维度两者上的变换。类型“0”变换可以使用诸如蝶形具体实现的快速具体实现来实现。在另一方面,类型“1”和“2”不能使用这类解决方案来实现,并且涉及变换的大小的矩阵相乘。下文针对变换类型“0”的使用提供说明此第二实施方案的文本规范的一个示例(以粗体表示)。同等的文本规范可用于变换类型“1”和“2”。
portion_trtype0_blocks_area指示区域的在使用4×4粒度的指定周期的图片中由使用类型“0”的变换的块覆盖的部分,并且定义如下:
NumTrType0Blocks是在使用4×4粒度的指定周期内使用类型0的变换的块数量。在编码器侧处,该块数量计算如下:
NumTrType0Blocks=NumTrType0_16Blocks+2*NumTrType0_32Blocks+4*NumTrType0_64Blocks+8*NumTrType0_128Blocks+16*NumTrType0_256Blocks+32*NumTrType0_512Blocks+64*NumTrType0_1024Blocks+128*NumTrType0_2048Blocks+256*NumTrType0_4096Blocks
其中NumTrType0_XBlocks是针对来自X=16、32、64、128、256、512、1024、2048、4096的样本数量使用变换类型“0”的块数量。公式中的因子2、4、…256对应于相对于大小16的块的块大小比。例如,对于大小32的块(NumTrType0_32Blocks),因子是32/16=2。对于大小4096的块(NumTrType0_4096Blocks),因子是4096/16=256。
例如,如果编码器导出NumTrType0_8Blocks和NumTrType0_4Blocks作为包括“8”和“4”个样本的块数量,则NumTrType0Blocks可以递增NumTrType0_8Blocks/2或(NumTrType0_8Blocks+1)/2以及NumTrType0_4Blocks/4或(NumTrType0_4Blocks+2)/4。
第三实施方案集中于提供适于影响绿色MPEG元数据中的熵解码复杂度的新特征的CM。
在此第三实施方案中,现在针对不同数量的样本的正方形块和矩形块发信号通知针对不同正方形块大小的针对AVC和HEVC所指定的与非零块的量相关的语法元素。添加新语法元素portion_X_blocks_in_non_zero_area,其中X是块中的样本数量(其中X=16、32、64、128、256、512、1024、2048和4096)。可以注意到,引入最后一个值X=4096以考虑具有等于VVC中定义的最大变换单元大小64x64的大小的块。
SBT模式也对熵解码具有直接影响,在SBT模式中,仅对残差块的子部分进行编码,其余子部分被设置为零。因此,添加与SBT模式相关的新语法元素portion_sbt_blocks_in_non_zero_area。语法元素portion_sbt_blocks_in_non_zero_area指示子块变换(SBT)模式的相对使用。
第四实施方案集中于提供适于影响绿色MPEG元数据中的逆变换复杂度的新特征的CM。
在VVC中,若干新工具影响逆变换的复杂度:JCCR、MTS、LFNST和BDPCM。在第四实施方案中,定义新语法元素以解决这些新工具:
·portion_jccr_blocks_area:添加此新语法元素以指示JCCR模式的相对使用;
·portion_trtype0_blocks_area:添加此新元素以指示MTS工具中的变换类型0(DCT2)的相对使用;
·portion_trtype1_2_blocks_area:添加此语法新元素以指示MTS工具中的变换类型“1”或“2”(分别为DST7或DCT8)的相对使用;
·portion_lfnst_blocks_area:添加此新语法元素以指示LFNST工具的相对使用;该语法元素使用大小16×16和48×16的LFNST来对图片中的区域进行计数;
·portion_bdpcm_blocks_area:添加此新语法元素以指示BDPCM模式的相对使用。
第五实施方案集中于提供适于影响绿色MPEG元数据中的帧内预测和帧内块解码复杂度的新特征的CM。
诸如MIP、ISP、CCLM、IBC和帧内区域中的参考样本滤波的新帧内预测工具对解码复杂度具有影响。在第五实施方案中,定义新语法元素以解决这些新工具:
·portion_mip_blocks_in_intra_area:添加此新语法元素以指示MIP模式的相对使用;
·portion_isp_blocks_in_intra_area:添加此新语法元素以指示ISP模式的相对使用;
·portion_cclm_blocks_in_intra_area:添加此新语法元素以指示CCLM模式的相对使用:
·portion_ibc_blocks_in_intra_area:添加此新语法元素以指示IBC模式的相对使用;
·ref_samples_filtering_in_intra_area:添加此新语法元素以指示帧内预测中的参考样本滤波模式的相对使用。
在一个变型中,由于MIP根据块大小使用不同大小的矩阵,因而可以针对不同块大小报告语法元素portion_mip_blocks_in_intra_area。例如,可以引入以下语法元素:
·针对16×4块的portion_mip16x4_blocks_in_intra_area;
·针对16×8块的portion_mip16x8_blocks_in_intra_area;
·针对64×8块的portion_mip64x8_blocks_inintra_area。
另选地,语法元素portion_mip_blocks_in_intra_area的值可以根据来自不同块大小的参数NumMipCodedBlocks计算如下:
NumMipCodedBlocks=4*NumMipCoded_16x4Blocks+8*NumMipCoded_16x8Blocks
因子“4”和“8”对应于相对于大小“16”的块的块大小比。例如,对于大小16×4的块(NumMipCoded_16x4Blocks),因子是16×4/16=4。对于大小16×4的块(NumMipCoded_16x8Blocks),因子是16×8/16=8。编码器计算NumMipCodedBlocks的值,将portion_mip_blocks_in_intra_area设置为等于NumMipCodedBlocks,并且在流中发信号通知portion_mip_blocks_in_intra_area。
第六实施方案集中于提供适于影响绿色MPEG元数据中的帧间预测和帧间块解码复杂度的新特征的CM。
影响帧间预测的复杂度的一个特征是使用单向预测或双向预测来预测块的事实。在现有绿色MPEG规范(即用于AVC和HEVC)中没有报告此信息,但这对解码器复杂度具有重要影响。
在第六实施方案中,定义新语法元素以解决此特征:
·portion_uni_predicted_blocks_area:添加此新语法元素以指示帧间预测中的单向预测的相对使用;
·portion_bi_predicted_blocks_area:添加此新语法元素以指示帧间预测中的双向预测的相对使用。
另外,新帧间预测模式也影响解码复杂度。在第七实施方案中,定义新语法元素以解决这些新模式:
·portion_dmvr_blocks:添加此新语法元素以指示DMVR模式的相对使用;
·portion_bdof_blocks:添加此新语法元素以指示BDOF模式的相对使用;
·portion_prof_blocks:添加此新语法元素以指示PROF模式的相对使用;
·portion_ciip_blocks_area:添加此新语法元素以指示CIIP模式的相对使用;
·portion_gpm_blocks_area:添加此新语法元素以指示GPM模式的相对使用。
第七实施方案集中于提供适于影响用于绿色MPEG元数据中的时间预测复杂度的内插的新特征的CM。
如上文所见,运动估计一般以子像素精度执行,这需要内插图片。在第七实施方案中,定义三个语法元素以考虑三种可能的内插情况,即整数内插、在水平方向或竖直方向上的子像素内插、在水平方向和竖直方向上的子像素内插:
·portion_integer_interpolation_blocks:添加此新语法元素以指示用于运动补偿的整数像素内插的相对使用;
·portion_hor_or_ver_interpolation_blocks:添加此新语法元素以指示用于运动补偿的在水平方向或竖直方向中的一者上的子像素内插的相对使用;
·portion_hor_and_ver_interpolation_blocks:添加此新语法元素以指示用于运动补偿的在水平方向和竖直方向上的子像素内插的相对使用。
第八实施方案集中于提供适于影响绿色MPEG元数据中的环路内滤波复杂度的新特征的CM。
在VVC中,引入了三个新环路内滤波工具:ALF、CCALF和LMCS。在第八实施方案中,定义三个语法元素以考虑这三个工具:
·portion_alf_instances:添加此新语法元素以指示ALF模式的相对使用;
·portion_ccalf_instances:添加此新语法元素以指示CCALF模式的相对使用;
·portion_lmcs_instances:添加此新元素以指示LMCS模式的相对使用。
下表TAB3描绘了由与VVC相关的上述八个实施方案引起的绿色MPEG SEI语法的变化,其中与现有绿色MPEG SEI语法相比的变化以粗体指示。
/>
表TAB3
对于period_type等于“4”的情况,对应于具有切片/图块/子图片粒度的每图片信令,将在语法部分中进行相同语法改变,其中针对每个所添加的语法元素添加索引[t],t指示如表TAB3bis中所表示的切片/图块索引。
/>
/>
表TAB3bis
第九实施方案集中于提供适于在绿色MPEG元数据中使用子图片的CM。
当在VVC比特流中使用子图片时,针对每个子图片发信号通知在SEI中发信号通知的参数。当VVC SPS中的语法元素sps_num_subpics_minus1大于“0”时,使用子图片,sps_num_subpics_minus1表示图片中的子图片数量。
表TAB4表示表TAB2的修改版本,其中针对启用子图片(值5)的情况添加新条目。
表TAB4
另外,通过将语法元素period_type的值的同等性检查添加到5(if(period_type==5)),表TAB3的语法元素针对子图片情况进行重复。报告使用率的语法元素由指示子图片索引的索引[z]来索引。在表TAB5中给出了由表TAB3中的第九实施方案引起的一些修改的图示。
表TAB5
在第九实施方案的一个变型中,在子图片粒度的情况下,还可以针对图片周期发信号通知使用率参数。例如,通过period_type的以下新值(6,7,8):
在第九实施方案的一个变型中,新period_type值(period_type=5)不被添加到表TAB2,但信令在子图片的情况下依赖于period_type值“4”(具有切片/图块粒度的单个图片)。对于子图片,需要识别包括在子图片中的切片。当对子图片进行解码时,则有可能识别子图片所包含的切片,并且从这些切片中获得元数据。归功于允许识别切片所属的子图片的sh_subpic_id语法元素,可以完成此操作。
在第十实施方案中,如图1B的步骤103和104中所提及,在VVC NAL单元中传送TAB3(或TAB3bis)的绿色MPEG SEI消息,NAL(网络抽象层)单元是数据容器。NAL单元由允许解码器识别NAL单元所传送的数据类型的NAL单元类型来标识。在绿色MPEG SEI消息的情况下,NAL单元类型被设置为PREFIX_SEI_NUT。表TAB6描述了适用于传送如表TAB3中所描述的绿色MPEG SEI消息的有效载荷的语法。
/>
/>
表TAB6
语法元素green_metadata_type的语义的示例如下:
green_metadata_type:指定存在于SEI消息中的元数据的类型。如果green_metadata_type是“0”,则存在复杂度度量。否则,如果green_metadata_type是“1”,则存在使得能够在低功率编码之后进行质量恢复的元数据。green_metadata_type的其他值被保留以供ISO/IEC将来使用。
下文中提供了上文讨论的各种语法元素的语义的示例:
·period_type指定复杂度度量能够应用的即将到来的周期的类型,并且在下表中定义:
表TAB7
·num_seconds指示当period_type为“2”时复杂度度量能够应用的秒数。
·num_pictures指定在period_type为“3”时复杂度度量能够应用、按解码顺序计数的图片数量。
NumPicsInPeriod是在指定周期内的图片数量。当period_type为“0”时,则NumPicsInPeriod为“1”。当period_type为“1”时,则通过按解码顺序对图片进行计数直到(但不包括)包含下一I切片的图片来确定NumPicsInPeriod。当period_type为“2”时,则根据帧速率来确定NumPicsInPeriod。当period_type为“3”时,则NumPicsInPeriod等于num_pictures。
·total_number_4x4_blocks_in_period指定在指定周期内编码的4×4块的总数。参数TotalNum4x4BlocksInPeriod导出如下。
TotalNum4x4BlocksInPeriod是在指定周期内编码的4×4块的总数。
TotalNum4x4BlocksInPeriod导出如下:
οTotalNum4x4BlocksInPeriod被设置为等于total_number_4x4_blocks_in_period;
ο当以下条件成立时,TotalNum4x4BlocksInPeriod被设置为等于(num_seconds×TotalNum4x4BlocksInPeriod):
period_type等于2;
num_second大于1;
ο当以下条件成立时,TotalNum4x4BlocksInPeriod被设置为等于(num_pictures×TotalNum4x4BlocksInPeriod+64)/128:
period_type等于3;
num_pictures大于128
·portion_non_zero_blocks_area指示区域的在使用4x4块粒度的指定周期的图片中由具有非零变换系数值的块覆盖的部分,并且定义如下:
其中NumNonZeroBlocks是在使用4x4粒度的指定周期内具有非零变换系数值的块数量。在编码器侧处,NumNonZeroBlocks计算如下:
NumNonZeroBlocks=NumNonZero16Blocks+2*NumNonZero32Blocks+4*NumNonZero64Blocks+8*NumNonZero128Blocks+16*NumNonZero256Blocks+32*NumNonZero512Blocks+64*NumNonZero1024Blocks+128*NumNonZero2048Blocks+256*NumNonZero4096Blocks
其中NumNonZeroXBlocks是在指定周期内对于来自X=16、32、64、128、256、512、1024、2048、4096的样本数量分别具有非零变换系数值的块数量。
在解码器中从portion_non_zero_blocks_area和TotalNum4x4BlocksInPeriod中导出NumNonZeroBlocks。
·portion_64_blocks_in_non_zero_area指示“64”个采样块区域的在指定周期内在非零区域中的部分,并且定义如下:
当不存在时,等于“0”。
NumNonZero64Blocks是在指定周期内具有非零变换系数值的“64”个样本块的数量。该数量是在解码器中从portion_64_blocks_in_non_zero_araa和NumNonZeroBlocks中导出的。
·portion_128_blocks_in_non_zero_area指示“128”个样本块区域的在指定周期内在非零区域中的部分,并且定义如下:
当不存在时,等于“0”。
NumNonZero128Blocks是在指定周期内具有非零变换系数值的“128”个样本块的数量。该数量是在解码器中从portion_128_blocks_in_non_zero_area和NumNonZeroBlocks中导出的。
·portion_256_blocks_in_non_zero_area指示“256”个样本块区域的在指定周期内在非零区域中的部分,并且定义如下:
当不存在时,等于“0”。
NumNonZero256Blocks是在指定周期内具有非零变换系数值的256个样本块的数量。该数量是在解码器中从portion_256_blocks_in_non_zaro_area和NumNonZeroBlocks中导出的。
·portion_512_blocks_in_non_zero_area指示“512”个样本块区域的在指定周期内在非零区域中的部分,并且定义如下:
当不存在时,等于“0”。
NumNonZero512Blocks是在指定周期内具有非零变换系数值的512个样本块的数量。该数量是在解码器中从portion_512_blocks_in_non_zero_area和NumNonZeroBlocks中导出的。
·portion_1024_blocks_in_non_zero_area指示“1024”个样本块区域的在指定周期内在非零区域中的部分,并且定义如下:
当不存在时,等于“0”。
NumNonZero1024Blocks是在指定周期内具有非零变换系数值的“1024”个样本块的数量。该数量是在解码器中从portion_1024_blocks_in_non_zero_area和NumNonZeroBlocks中导出的。
·portion_2048_blocks_in_non_zero_area指示“2048”个样本块区域的在指定周期内在非零区域中的部分,并且定义如下:
当不存在时,等于“0”。
NumNonZero2048Blocks是在指定周期内具有非零变换系数值的“2048”个样本块的数量。该数量是在解码器中从portion_2048_blocka_in_non_zero_area和NumNonZeroBlocks中导出的。
·portion_4096_blocks_in_non_zero_area指示“4096”个样本块区域的在指定周期内在非零区域中的部分,并且定义如下:
当不存在时,等于“0”。
NumNonZero4096Blocks是在指定周期内具有非零变换系数值的“4096”个样本块的数量。该数量是在解码器中从portion_4096_blocka_in_non_zero_area和NumNonZeroBlocks中导出的。
NumNonZero16Blocks是在指定周期内具有非零变换系数值的“16”个样本块的数量。在解码器中将NumNonZero4x4Blocks从NumNonZeroBlocks、NumNonZero64Blocks、NumNonZero128Blocks、NumNonZero256Blocks、NumNonZero512Blocks、NumNonZero1024Blocks、NumNonZero2048Blocks和NumNonZero4096Blocks中导出如下:
NumNonZero16Blocks=NumNonZeroBlocks-4*NumNonZero64Blocks-8*NumNonZero128Blocks-16*NumNonZero256Blocks-32*NumNonZero512Blocks-64*NumNonZero1024Blocks-128*NumNonZero2048Blocks-256*NumNonZero4096Blocks
·portion_jccr_blocks_area指示区域的在使用4×4粒度的指定周期的图片中由JCCR编码块覆盖的部分,并且定义如下:
NumJccrCodedBlocks是在使用4×4粒度的指定周期内被编码为JCCR的块数量。在编码器侧处,该块数量计算如下:
NumJccrCodedBlocks=NumJccrCoded16Blocks+2*NumJccrCoded32Blocks+4*NumJccrCoded64Blocks+16*NumJccrCoded128Blocks+32*NumJccrCoded256Blocks+64*NumJccrCoded1024Blocks+128*NumJccrCoded2048Blocks+256*NumJccrCoded4096Blocks
其中NumJccrCoded_XBlocks是在指定周期内针对样本数量X=16、32、64、128、256、512、1024、2048、4096被编码为JCCR的块数量。
在解码器中从portion_jccr_blocks_area和TotalNum4x4BlocksInPeriod中导出NumJccrCodedBlocks。
·portion_trtype0_blocks_area指示区域的在使用4×4粒度的指定周期的图片中由使用类型“0”的变换的块覆盖的部分,并且定义如下:
NumTrType0Blocks是在使用4×4粒度的指定周期内使用类型“0”的变换的块数量。在编码器侧处,该块数量计算如下:
NumTrType0Blocks=NumTrType016Blocks+2*NumTrType032Btocks+4*NumTrType064Blocks+8*NumTrType0128Blocks+16*NumTrType0256Blocks+32*NumTrType0512Blocks+64*NumTrType01024Blocks+128*NumTrType02048Blocks+256*NumTrType04096Blocks
其中NumTrType0_XBlocks是在指定周期内针对来自X=16、32、64、128、256、512、1024、2048、4096的样本数量使用变换类型“0”的块数量。
在解码器中从portion_trtype0_blocks_area和TotalNum4x4BlocksInPeriod中导出NumTrType0Blocks。
·portion_trtype1_2_blocks_area指示区域的在使用4×4粒度的指定周期的图片中由使用类型1或2的变换的块覆盖的部分,并且定义如下:
NumTrType1_2Blocks是在使用4x4粒度的指定周期内使用类型“0”的变换的块数量。在编码器侧处,该块数量计算如下:
其中NumTrType1_2_XBlocks是在指定周期内针对来自X=16、32、64、128、256、512、1024的样本数量使用变换类型1或2的块数量。
在解码器中从portion_trtype1_2_blocks_area和TotalNum4x4BlocksInPeriod中导出NumTrType1_2Blocks。
·portion_lfnst_blocks_area指示区域的在使用4×4粒度的指定周期的图片中由使用LFNST变换的块覆盖的部分,并且定义如下:
NumLfnstBlocks是在使用4×4粒度的指定周期内使用LFNST变换的块所覆盖的区域。在编码器侧处,该块数量计算如下:
NumLfnstBlocks=16*NumLfnst16x16Blocks+48*NumLfnst48x16Blocks
其中NumLfnst16x16Blocks和NumLfnst48x16Blocks分别是在指定周期内使用大小16×16和48×16的LFNST变换的块数量。
在解码器中从portion_lfnst_blocks_area和TotalNum4x4BlocksInPeriod中导出NumLfnstBlocks。
·portion_intra_predicted_blocks_area指示区域的在使用4×4粒度的指定周期的图片中由帧内预测块覆盖的部分,并且定义如下:
NumIntraPredictedBlocks是在使用4×4粒度的指定周期内的帧内预测块数量。在编码器侧处,该块数量计算如下:
NumIntraPredictedBlocks=NumIntraPredicted16Blocks+2*NumIntraPredicted32Blocks+4*NumIntraPredicted64Blocks+8*NumIntraPredicted128Blocks+16*NumIntraPredicted256Blocks+32*NumIntraPredicted512Blocks+64*NumIntraPredicted1024Blocks+128*NumIntraPredicted2048Blocks+256*NumIntraPredicted4096Blocks
其中NumIntraPredictedBlocks是在指定周期内针对来自X=16、32、64、128、256、512、1024、2048、4096的样本数量使用帧内预测的块数量。
在解码器中从portion_intra_predicted_blocks_area和TotalNum4x4BlocksInPeriod中导出NumIntraPredictedBlocka。
·portion_uni_predicted_blocks_area指示区域的在使用4×4粒度的指定周期的图片中由帧间单向预测块覆盖的部分,并且定义如下:
NumUniPredictedBlocks是在使用4×4粒度的指定周期内的帧间单向预测块数量。在编码器侧处,该块数量计算如下:
NumUniPredictedBlocks=NumUniPredicted16Blocks+2*NumUniPredicted32Blocks+4*NumUniPredicted64Blocks+8*NumUniPredicted128Blocks+16*NumUniPredicted256Blocks+32*NumUniPredicted512Blocks+64*NumUniPredicted1024Blocks+128*NumUniPredicted2048Blocks+256*NumUniPredicted4096Blocks
其中NumUniPredictedXBlocks是在指定周期内针对来自X=16、32、64、128、256、512、1024、2048、4096的样本数量使用帧间单向预测的块数量。
在解码器中从portion_uni_predicted_blocks_area和TotalNum4x4BlocksInPeriod中导出NumUniPredictedBlocka。
·portion_bi_predicted_blocks_area指示区域的在使用4×4粒度的指
定周期的图片中由帧间双向预测块覆盖的部分,并且定义如下:
NumBiPredictedBlocks是在使用4×4粒度的指定周期内的帧间双向预测块数量。在编码器侧处,该块数量计算如下:
NumBiPredictedBlocks=NumBiPredicted16Blocks+2*NumBiPredicted32Blocks+4*NumBiPredicted64Blocks+8*NumBiPredicted128Blocks+16*NumBiPredicted256Blocks+32*NumBiPredicted512Blocks+64*NumBiPredicted1024Blocks+128*NumBiPredicted2048Blocks+256*NumBiPredicted4096Blocks
其中NumBiPredictedXBlocks是在指定周期内针对来自X=16、32、64、128、256、512、1024、2048、4096的样本数量使用帧间双向预测的块数量。
在解码器中从portion_bi_predicted_blocks_area和TotalNum4x4BlocksInPeriod中导出NumBiPredictedBlocks。
·portion_planar_blocks_in_intra_area指示平面块区域的在指定周期内在帧内预测区域中的部分,并且定义如下:
当不存在时,等于“0”。
NumPlanaripredictedBlocks是在使用4×4粒度的指定周期内的帧内平面预测块数量。在编码器侧处,该块数量计算如下:
NumPlanarPredictedBlocks=NumPlanarPredicted16Blocks+2*NumPlanarPredicted32Blocks+4*NumPlanarPredicted64Blocks+8*NumPlanarPredicted128Blocks+16*NumPlanarPredicted256Blocks+32*NumPlanarPredicted512Blocks+64*NumPlanarPredicted1024Blocks+128*NumPlanarPredicted2048Blocks+256*NumPlanarPredicted4096Blocks
其中NumPlanarPredictedXBlocks是在指定周期内针对来自X=16、32、64、128、256、512、1024、2048、4096的样本数量使用帧内平面预测的块数量。
在解码器中从portion_planar_blocks_in_intra_area和TotalNum4x4BlocksInPeriod中导出NumPlanarPredictedBlocks。
·portion_dc_blocks_in_intra_area指示DC块区域的在指定周期内在帧内预测区域中的部分,并且定义如下:
当不存在时,等于“0”。
NumDcPredictedBlocks是在使用4×4粒度的指定周期内的帧内dc预测块数量。在编码器侧处,该块数量计算如下:
NumDcPredictedBlocks=NumDcPredicted16Blocks+2*NumDcPredicted32Blocks+4*NumDcPredicted64Blocks+8*NumDcPredicted128Blocks+16*NumDcPredicted256Blocks+32*NumDcPredicted512Blocks+64*NumDcPredicted1024Blocks+128*NumDcPredicted2048Blocks+256*NumDcPredicted4096Blocks
其中NumDcPredictedXBlocks是在指定周期内针对来自X=16、32、64、128、256、512、1024、2048、4096的样本数量使用帧内DC预测的块数量。
在解码器中从portion_dc_blocks_in_intra_area和TotalNum4x4BlocksInPeriod中导出NumDcPredictedBlocks。
·portion_angular_hv_blocks_in_intra_area指示成角水平或竖直块区域的在指定周期内在帧内预测区域中的部分,并且定义如下:
当不存在时,等于“0”。
NumAngularHVPredictedBlocks是在使用4×4粒度的指定周期内的帧内成角水平或竖直预测块数量。在编码器侧处,该块数量计算如下:
NumAngularHVPredictedBlocks=NumAngularHVPredicted16Blocks+2*NumAngularHVPredicted32Blocks+4*NumAngularHVPredicted64Blocks+8*NumAngularHVPredicted128Blocks+16*NumAngularHVPredicted256Blocks+32*NumAngularHyPredicted512Blocks+64*NumAngularHVPredicted1024Blocks+128*NumAngularHyPredicted2048Blocks+256*NumAngularHVPredicted4096Blocks
其中NumAngularHVPredictedXBlocks是在指定周期内针对来自X=16、32、64、128、256、512、1024、2048、4096的样本数量使用帧内成角水平或竖直预测的块数量。
在解码器中从portion_angular_hv_blocks_in_intra_area和NumIntraPredictedBlocks中导出NumAngularHVPredictedBlocks。
·portion_mip_blocks_in_intra_area指示MIP预测块区域的在指定周期内在帧内预测区域中的部分,并且定义如下:
当不存在时,等于“0”。
NumMipPredictedBlocks是在使用4×4粒度的指定周期内的帧内MIP预测块数量。在编码器侧处,该块数量计算如下:
NumMipPredictedBlocks=NumMipPredicted16Blocks+2*NumMipPredicted32Blocks+4*NumMipPredicted64Blocks+8*NumMipPredicted128Blocks+16*NumMipPredicted256Blocks+32*NumMipPredicted512Blocks+64*NumMipPredicted1024Blocks+128*NumMipPredicted2048Blocks+256*NumMipPredicted4096Blocks
其中NumMipPredictedXBlocks是在指定周期内针对来自X=16、32、64、128、256、512、1024、2048、4096的样本数量使用帧内MIP预测的块数量。
在解码器中从portion_mip_blocks_in_intra_area和TotalNum4x4BlocksInPeriod中导出NumMipPredictedBlocks。
·portion_cclm_blocks_in_intra_area指示块区域的在指定周期内在帧内预测区域中使用CCLM模式的部分,并且定义如下:
当不存在时,等于“0”。
NumCclmPredictedBlocks是在使用4×4粒度的指定周期内的帧内CCLM色度预测块数量。在编码器侧处,该块数量计算如下:
NumCclmPredictedBlocks=NumCclmPredicted16Blocks+2*NumCclmPredicted32Blocks+4*NumCclmPredicted64Blocks+8*NumCclmPredicted128Blocks+16*NumCclmPredicted256Blocks+32*NumCclmPredicted512Blocks+64*NumCclmPredicted1024Blocks+128*NumCclmPredicted2048Blocks
其中NumCclmPredictedXBlocks是在指定周期内针对来自X=16、32、64、128、256、512、1024、2048的样本数量使用帧内CCLM预测的块数量。
在解码器中从portion_cclm_blocks_in_intra_area和TotalNum4x4BlocksInPeriod中导出NumCclmPredictedBlocks。
·portion_ibc_blocks_in_intra_area指示块区域的在指定周期内在帧内预测区域中使用IBC模式的部分,并且定义如下:
当不存在时,等于“0”。
NumIbcPredictedBlocks是在使用4×4粒度的指定周期内的帧内IBC预测块数量。在编码器侧处,该块数量计算如下:
NumIbcPredictedBlocks=NumIbcPredicted16Blocks+2*NumIbcPredicted32Blocks+4*NumIbcPredicted64Blocks+8*NumIbcPredicted128Blocks+16*NumIbcPredicted256Blocks+32*NumIbcPredicted512Blocks+64*NumIbcPredicted1024Blocks+128*NumIbcPredicted2048Blocks+256*NumIbcPredicted4096Blocks
其中NumIbcPredictedXBlocks是在指定周期内针对来自X=16、32、64、128、256、512、1024、2048、4096的样本数量使用帧内IBC预测的块数量。
在解码器中从porrion_ibc_blocks_in_intra_area和TotalNum4x4BlocksInPeriod中导出NumIbcPredictedBlocks。
·portion_integer_interpolation_blocks指示在指定周期内其亮度采样位置位于水平和竖直整数采样位置中的预测块的部分,并且定义如下:
当不存在时,等于“0”。
NumBlocksIntegerInterpolation是在指定周期内其亮度采样位置位于水平和竖直整数采样位置中的预测块的数量。该数量是在解码器中从portion_integer_interpolation_blocks和TotalNum4x4BlocksInPeriod中导出的。
portion_hor_or_ver_interpolation_blocks指示在指定周期内其亮度采样位置在水平方向或竖直方向中的一个方向上位于整数采样位置中并且在另一方向上位于子采样位置中的预测块的部分,并且定义如下:
当不存在时,等于“0”。
NumblocksHorOrVerInterpolation是在指定周期内其亮度采样位置在水平方向或竖直方向中的一者上位于整数采样位置中的预测块的数量。该数量是在解码器中从portion_hor_or_ver_interpolation_blocks和TotalNum4x4BlocksInPeriod中导出的。
·portion_hor_and_ver_interpolation_blocks指示在指定周期内其亮度采样位置在水平方向和竖直方向上都位于子采样位置中的预测块的部分,并且定义如下:
当不存在时,等于“0”。
NumblocksHorAndVerInterpolation是在指定周期内其亮度采样位置在水平方向或竖直方向上,都位于子采样位置中的预测块的数量。该数量是在解码器中从portion_hor_and_ver_interpolation_blocks和TotalNum4x4BlocksInPeriod中导出的。
·portion_dmvr_blocks指示区域的在使用4×4粒度的指定周期的图片中由应用DMVR的块覆盖的部分,并且定义如下:
NumBiPredictedBlocks是在使用4×4粒度的指定周期内的帧间双向预测块数量。在编码器侧处,该块数量计算如下:
NumBiPredictedBlocks=NumBiPredicted16Blocks+2*NumBiPredicted32Blocks+4*NumBiPredicted64Blocks+8*NumBiPredicted128Blocks+16*NumBiPredicted256Blocks+32*NumBiPredicted512Blocks+64*NumBiPredicted1024Blocks+128*NumBiPredicted2048Blocks+256*NumBiPredicted4096Blocks
其中NumBiPredictedXBlocks是在指定周期内针对来自X=16、32、64、128、256、512、1024、2048、4096的样本数量使用帧间双向预测的块数量。
在解码器中从portion_bi_predicted_blocks_area和TotalNum4x4BlocksInPeriod中导出NumBiPredictedBlocks。
·portion_bdof_blocks指示块区域的在指定周期内在帧间预测区域中使用BDOF滤波的部分,并且定义如下:
当不存在时,等于“0”。
NumBdofPredictedBlocks是在使用4×4粒度的指定周期内使用BDOF滤波的帧间预测块数量。在编码器侧处,该块数量计算如下:
NumBdofPredictedBlocks=4*NumBdofPredicted64Blocks+8*NumBdofPredicted128Blocks+16*NumBdofPredicted256Blocks+32*NumBdofPredicted512Blocks+64*NumBdofPredicted1024Blocks+128*NumBdofPredicted2048Blocks+256*NumBdofPredicted4096Blocks
其中NumBdofPredictedXBlocks是在指定周期内针对来自X=64、128、256、512、1024、2048、4096的样本数量使用BDOF滤波的帧间编码块数量。
在解码器中从portion_bdof_blocks_in_intra_area和TotalNum4x4BlocksInPeriod中导出NumBdofPredictedBlocks。
·portion_prof_blocks指示块区域的在指定周期内在帧间预测区域中使用PROF滤波的部分,并且定义如下:
当不存在时,等于“0”。
NumProfPredictedBlocks是在使用4×4粒度的指定周期内使用PROF滤波的帧间预测块数量。在编码器侧处,该块数量计算如下:
NumProfPredictedBlocks=NumProfPredicted16Blocks+2*NumProfPredicted32Blocks+4*NumProfPredicted64Blocks+8*NumProfPredicted128Blocks+16*NumProfPredicted256Blocks+32*NumProfPredicted512Blocks+64*NumProfPredicted1024Blocks+128*NumProfPredicted2048Blocks+256*NumProfPredicted4096Blocks
其中NumProfPredictedXBlocks是在指定周期内针对来自X=16、32、64、128、256、512、1024、2048、4096的样本数量使用PROF滤波的帧间编码块数量。
在解码器中从portion_prof_blocks_in_intra_area和TotalNum4x4BlocksInPeriod中导出NumProfPredictedBlocks。
·portion_gpm_blocks_area指示块区域的在指定周期内使用GPM帧间预测区域的部分,并且定义如下:
当不存在时,等于“0”。
NumGpmPredictedBlocks是在使用4×4粒度的指定周期内使用
GPM的帧间预测块数量。在编码器侧处,该块数量计算如下:
NumGpmPredictedBlocks=4*NumGpmPredicted64Blocks+8*NumGpmPredicted128Blocks+16*NumGpmPredicted256Blocks+32*NumGpmPredicted512Blocks+64*NumGpmPredicted1024Blocks+128*NumGpmPredicted2048Blocks+256*NumGpmPredicted4096Blocks
其中NumGpmPredictedXBlocks是在指定周期内针对来自X=64、128、256、512、1024、2048、4096的样本数量使用GPM的帧间编码块数量。
在解码器中从portion_gpm_blocks_in_intra_area和TotalNum4x4BlocksInPeriod中导出NumGpmPredictedBlocka。
·portion_deblocking_instances指示如本文档的术语和定义中所定义的解块滤波实例的在指定周期内的部分,并且定义如下:
ChromaFormatMultiplier取决于如下表TAB8中所示出的VVC变量sps_chroma_format_idc。
ChromaFormatMultiplier |
chroma_format_idc |
注释 |
1 |
0 |
单色 |
1.5 |
1 |
4∶2∶0采样 |
2 |
2 |
4∶2∶2采样 |
3 |
3 |
4∶4∶4采样 |
表TAB8
NumDeblockingInstances是在指定周期内的解块滤波实例的数量。该数量是在解码器中从portion_deblocking_instances、TotalNum4x4BlocksInPeriod和ChromaFormatMultiplier中导出的。
·portion_alf_instances指示如本文档的术语和定义中所定义的ALF滤波实例的在指定周期内的部分,并且定义如下:
NumAlfInstances是在指定周期内的ALF滤波实例的数量。该数量是在解码器中从portion_alf_instancesTotalNum4x4BlocksInPeriod中导出的。
·portion_ccalf_instances指示如本文档的术语和定义中所定义的CCALF滤波实例的在指定周期内的部分,并且定义如下:
NumCcalfInstances是在指定周期内的CCALF滤波实例的数量。该数量是在解码器中从portion_ccalf_instancesTotalNum4x4BlocksInPeriod中导出的。
·max_num_slices_tiles_subpicture_minus1指定相关联的图片中的切片数量与图块数量之间的最大数量。
·first_ctb_in_slice_or_tile_or_subpict[t]指定按光栅扫描顺序的切片[t]或图块[t]中的第一编码树块(CTB)编号
在period_type等于“4”(对应于每切片或图块的信令)的情况下,参数TotalNum4x4BlocksInSliceOrTileOrSubpic[t]定义如下:
TotalNum4x4BlocksInSliceOrTileOrSubpic[t]是切片[t]或图块[t]中的4×4块的总数,并且使用在ISO/IEC 23090-3中的条款“CTB光栅扫描、图块扫描和子图片扫描处理”中指定的参数ctbToTileColIdx、ctbToTileRowIdx、ColWidthVal和RowHeightVal通过以下计算来确定:
οctbAddrX=first_ctb_in_slice_or_tile_or_subpict[t]
οtileColIdx=ctbToTileColIdx[ctbAddrX]
οtileRowIdx=ctbToTileRowIdx[ctbAddrX]
οtileWidth=ColWidrhVal[tileColIdx]
οtileHeight=RowHeightVal[tileRowIdx]
οTotalNum4x4BlocksInSliceOrTileOrSubpic[t]=tileWidth*tileHeight*(1<<(CtbLog2SizeY-2))2
在period_type等于“5”(对应于每子图片的信令)的情况下,参数TotalNum4x4BlocksInSliceOrTileOrSubpic[t]定义如下:
TotalNum4x4BlocksInSliceOrTileOrSubpic[t]是子图片[t]中的4×4块的总数,并且使用在ISO/IEC 23090-3中的条款“序列参数集RBSP语义”中指定的语法元素sps_subpic_ctu_top_left_x和sps_subpic_ctu_top_left_y通过以下计算来确定:
οsubpicWidth=1+sps_subpic_width_minus1[t]
οsubpicHeight=1+sps_subpic_height_minus1[t]
οTotalNum4x4BlocksInSliceOrTileOrSubpic[t]=subpicWidth*subpicHeight*(1<<(CtbLog2SizeY-2))2
随后,重复上文描述的所有语法元素,其中添加index[t]并且将TotalNum4x4BlocksInPeriod用TotalNum4x4BlocksInSliceOrTileOrSubpic[t]替换。
例如,添加以下语法元素:
·portion_non_zero_blocks_area[t]指示区域的在使用4×4块粒度的切片[t]或图块[t]或子图片[t]中由具有非零变换系数值的块覆盖的部分,并且定义如下:
其中NumNonZeroBlocks[t]是在使用4×4粒度的切片[t]或图块[t]内具有非零变换系数值的块数量。在编码器侧处,NumNonZeroBlocks[t]计算如下:
NumNonZeroBlocks[t]=NumNonZero16Blocks[t]+2*NumNonZero32Blocks[t]+4*NumNonZero64Blocks[t]+8*NumNonZero128Blocks[t]+16*NumNonZero256Blocks[t]+32*NumNonZero512Blocks[t]+64*NumNonZero1024B locks[t]+128*NumNonZero2048Blocks[t]+256*NumNonZero4096Blocks[t]
其中NumNonZeroXBlocks[t]是在切片[t]或图块[t]内对于来自X=16、32、64、128、256、512、1024、2048、4096的样本数量分别具有非零变换系数值的块数量。
在解码器中从portion_non_zero_blocks_area[t]和TotalNum4x4BlocksInSliceOrTileOrSubpic[t]中导出NumNonZeroBlocks[t]。
更明确地,在解码器处,参数TotalNum4x4BlocksInSliceOrTileOrSubpicture[t]和portion_non_zero_blocks_area[t]用于导出包含非零变换系数的4×4(或16个样本)块的数量NumNonZeroBlocks[t]。此数量被导出为:
NumNonZeroBlocks[t]=TotalNum4x4BlocksInSliceOrTileOrSubpicture[t]]*portion_non_zero_blocks_area[t]
并且对于与编码模式的使用率相关的所有其他语法元素,诸如在表Tab6中发信号通知的语法元素portion_64_blocks_in_non_zero_area[t]或portion_alf_instances[t],该数量在编码器处从参数NumNonZero64Blocks[t]或NumAlfInstances[t]中被计算出,随后在SEI中发信号通知,并且在解码器处从SEI中被解码并用于分别导出参数NumNonZero64Blocks[t]或NumAlfInstances[t]。
如例如在ISO/IEC 23001-11(绿色元数据)规范的附录B.1中所描述,诸如NumNonZeroBlocks[t]、NumNonZero64Blocks[t]或NumAlfInstances[t]的参数由解码器利用以改变操作频率,并且因此减少解码器功耗。
在一个实施方案中,与对复杂度度量进行解码相关的语法元素被分组或移除以获得元数据的更紧凑表示。一个示例在表TAB9中提供。在表TAB9中,用于指示度量的粒度不是4×4块,而是对应于在一些具体实现中支持的最小变换块的“4”个样本的块。例如,针对不同块大小对与非零区域相关的语法元素进行分组,从而产生“4”个语法元素portion_non_zero_4_8_16_blocks_area(包括大小“4”、“8”和“16”个样本的变换块)、portion_non_zero_32_64_128_blocks_area(包括大小“32”、“64”和“128”个样本的变换块)、portion_non_zero_256_512_1024_blocks_area(包括大小“256”、“512”和“1024”个样本的变换块)和portion_non_zero_2048_4096_blocks_area(包括大小“2048”和“4096”个样本的变换块)。与变换相关的若干语法元素已被移除(portion_jccr_blocks_area、portion_trtype0_blocks_area、portion_trtype1_2_blocks_area、portion_lfnst_blocks_area、portion_bdpcm_blocks_area)。帧内和帧间相关语法元素也已被简化。portion_non_zero_transform_coefficients_area指示非零块中的非零系数的部分。
对于帧内部分,仅考虑“4”个语法元素:portion_planar_blocks_in_intra_area(块预测的使用平面预测的部分)、portion_dc_blocks_in_intra_area(块预测的使用DC预测的部分)、portion_angular_hv_blocks_in_intra_area(块预测的使用方向水平或竖直预测的部分)、portion_mip_blocks_in_intra_area(块预测的使用MIP预测的部分)。
对于帧间部分,仅定义portion_bi_and_gpm_predicted_blocks_area,并且可以根据其以及根据周期内的块的总数来推导单向预测部分。
对于环路滤波,定义用于每个环路滤波器的语法元素:portion_deblocking_instances、portion_sao_filtered_blocks、portion_alf_filtered_blocks。
/>
表TAB9
period_type在表TAB10中定义如下。
表TAB10
在表TAB9的示例中,针对period_type的小于或等于“3”的最大有效载荷大小是“14”字节。
在此示例中,针对period_type的大于“3”的最大有效载荷大小为(3+11*片段数量)字节,其中片段被定义为图片中的图块、切片或子图片。
在改进解码复杂度度量元数据的紧凑性的另一实施方案(被称为改进紧凑性的第一实施方案)中,与非零块相关的详细语法元素portion_non_zero_4_8_16_blocks_area、portion_non_zero_32_64_128_blocks_area、portion_non_zero_256_512_1024_blocks_area、portion_non_zero_2048_4096_blocks_area被进一步分组。例如,将这些详细语法元素分组成“2”个语法元素portion_non_zero_small_blocks_area和portion_non_zero_large_blocks_area,其中较小块是具有小于或等于M个样本的样本数量的变换块,并且较大块是具有大于M个样本的变换块。在一个实施方案中,M等于“512”(其对应于小于32x32的变换)。在另一实施方案中,M等于“1024”(其对应于至多32x32的变换)。在改进紧凑性的第一实施方案的一个变型中,与非零块相关的详细语法元素被移除,并且仅portion_non_zero_blocks_area和portion_non_zero_transform_coefficients_area被保持为对变换复杂度进行量化的语法元素。
在改进解码复杂度度量元数据的紧凑性的另一实施方案(被称为改进紧凑性的第二实施方案)中,与帧内编码相关的语法元素被分组,其中一个语法元素指示使用帧内预测的部分区域portion_intra_predicted_blocks_area,加上一个语法元素指示使用帧内预测的区域当中的MIP预测portion_mip_blocks_in_intra_area的使用。
在改进紧凑性的第二实施方案的一个变型中,语法元素portion_mip_blocks_in_intra_area被移除,并且除了语法元素portion_intra_predicted_blocks_area以外,还保持语法元素portion_planar_blocks_in_intra_area、portion_dc_blocks_in_intra_area和portion_angular_hv_blocks_in_intra_area。
在改进紧凑性的第二实施方案的另一变型中,除了全局计数语法元素portion_intra_predicted_blocks_area之外,还移除与帧内编码相关的语法元素。
在改进解码复杂度度量元数据的紧凑性的另一实施方案(被称为改进紧凑性的第三实施方案)中,与环路滤波相关的语法元素被分组。例如,将portion_sao_filtered_blocks和portion_alf_filtered_blocks分组成portion_sao_alf_filtered_blocks。
表TAB11示出了基于第一、第二和第三实施方案来对复杂度元数据进行解码的最紧凑版本,该最紧凑版本改进了上文针对减小有效载荷大小的紧凑性。基于此版本,针对period_type的小于或等于“3”的最大有效载荷大小是“9”字节(这意味着与扩展版本相比节省了“5”字节)。对于针对period_type的大于“3”的每个图块/切片/子图片,重复语法元素。
表TAB11
在一个实施方案中,添加语法元素以指示是否使用元数据有效载荷的紧凑版本或完整版本。例如,这使用语法元素extended_representation_flag来指示。
为了保持字节对准的有效载荷,当添加标志时,用于编码的位长度period_type有可能减小“1”比特。此位长度减小可以另选地应用于有效载荷中所包括的其他语法元素中的任何语法元素。另选地,这由period_type的特定值来指示。另选地,“8”比特用于对extended_representation_flag进行编码,并且“8”比特用于对period_type进行编码。
下表TAB12示出了所得有效载荷,使得能够对解码复杂度度量进行紧凑且更详细的(扩展的)表示。该示例仅针对period_type<=3提供,但对于period_type>3的情况可以容易地一般化(图块/切片/子图片版本)。
存在针对紧凑版本和扩展版本两者定义的核心语法元素,即:
·portion_non_zero_blocks_area、
·portion_non_zero_transform_coefficients_area、
·portion_intra_predicted_blocks_area、
·portion_bi and_gpm_predicted_blocks_area、
·portion_deblocking_instances、portion_sao_alf_filtered_blocks。
另外,当使用扩展版本时,发信号通知扩展语法元素:
·portion_non_zero_4_8_16_blocks_area、
·portion_non_zero_32_64_128_blocks_area、
·portion_non zero_256_512_1024_blocks_area、
·portion_non_zero_2048_4096_blocks_area、
·portion_planar_blocks_in_intra_area、
·portion_dc_blocks_in_intra_area、
·portion_angular_hv_blocks_in_intra_area、
·portion_mip_blocks_in_intra_area。
表TAB12
在一个实施方案中,标志extended_representation_flag仅针对图块/切片/子图片情况(即当period_type大于“3”时,此时引用在本文档中使用的period_type定义)被发信号通知。
图8A和图8B中示出了具有两个不同具体实现的发信/解码过程的一个示例。
在图8A中,在步骤800中检查extended_representation_flag的值。如果extended_representation_flag为假,则在步骤801中仅对核心语法元素进行解码。如果extended_representation_flag为真,则在步骤802中对核心语法元素和扩展语法元素进行解码。
在图8B中,在步骤803中仅对核心语法元素进行解码。随后,在步骤804中检查extended_representation_flag的值。如果extended_representation_flag为真,则在步骤805中对扩展语法元素进行解码。
在另一实施方案中,在图块/切片情况与子图片情况之间,period_type值没有区别。相反,period_type值可以指示是否使用图块/切片/子图片粒度,如下表TAB13中以粗体所指示。
表TAB13
当使用图块/切片/子图片粒度时,添加额外语法元素以指示使用图块、切片或子图片当中的哪种类型的片段。在下表中,此语法元素被命名为type_segments。当type_segments=0时,片段对应于图块,当type_segments=1时,片段对应于切片,当type_segments=2时,片段对应于子图片。另选地,当type_segments=0时,片段对应于图块或切片,当type_segments=1时,片段对应于子图片。针对将来可能定义的其他类型的片段或针对特定应用保留其他值。
下表TAB14包括对应于period_type>=4、针对图块/切片/子图片粒度的情况的此新语法元素type_segments。
表TAB14
定义片段中的4样本块数量的参数TotalNum4BlocksInSegment[t],当type_segments等于“0”时,片段是切片或图块,并且当type_segments等于“1”时,则子图片定义如下:
TotalNum4BlocksInSegment[t]是切片[t]或图块[t]或子图片[t]中的4样本块的总数,并且MaxNumDbfInstancesInSegment[t]是切片[t]或图块[t]或子图片[t]中的解块实例的最大数量。通过以下计算来确定TotalNum4BlocksInSegment[t]和MaxNumDbfInstancesInSegment[t]。
-如果type_segments等于0,则如下从在ISO/IEC 23090-3中的条款“序列参数集RBSP语义”中指定的语法元素sps_subpic_ctu_top_left_x和sps_subpic_ctu_top_left_y中导出TotalNum4BlocksInSegment[t]:
-ctbAddrX被设置为等于first_ctb_in_segment[t]
-tileColIdx被设置为等于ctbToTileColIdx[ctbAddrX]
-tileRowIdx被设置为等于ctbToTileRowIdx[ctbAddrX]
-tileWidth被设置为等于ColWidthVal[tileColIdx]<<(CtbLog2SizeY-1)
-tileHeight被设置为等于RowHeightVal[tileRowIdx]<<(CtbLog2SizeY-1)
-TotalNum4BlocksInSegment[t]被设置为等于(tileWidth*tileHeight)
-MaxNumDbfInstancesInSegment[t]被设置为等于ChromaFormatMultiplier*(tileWidth*tileHeight-2*(tileWidth+tileHeight))
-否则,如果type_segments等于1,则如下从在ISO/IEC 23090-3中的条款“CTB光栅扫描、图块扫描和子图片扫描处理”中指定的参数ctbToTileColIdx、ctbToTileRowIdx、ColWidthVal和RowHeightVal中导出TotalNum4BlocksInSegment[t]:
-subpicWidth被设置为等于
(1+sps_subpic_width_minus1[t])<<(CtbLog2SizeY-1)
-subpicHeight被设置为等于
(1+sps_subpic_height_minus1[t])<<(CtbLog2SizeY-1)
-TotalNum4BlocksInSegment[t]被设置为等于
(subpicWidth*subpicHeigh)
-MaxNumDbfInstancesInSegment[t]被设置为等于ChromaFormatMultiplier*(subpicWidth*subpicHeight-2*(subpicWidth+subpicHeight))
图7示出了根据实施方案的解码过程的框图。
在步骤700中,处理模块500检查参数period_type。
如果period_type不对应于具有切片、图块或子图片粒度的单个图片,则处理模块500在步骤701中导出参数TotalNum4x4BlocksInPeriod。
随后,在步骤703中,处理模块500通过考虑TotalNum4x4BlocksInPeriod的值来对该周期的图片进行解码,以导出在该周期期间的编码模式的使用率,并且因此减少解码器功耗。
在步骤700中,如果period_type对应于具有切片、图块或子图片粒度的单个图片,则处理模块500在步骤702中再次检查参数period_type。
在步骤702中,如果对于由从t1至tK的索引t进行索引(步骤704)的待解码的K个子图片,period_type对应于子图片粒度,则在步骤705中,处理模块500根据上文针对值period_type=5描述的过程来导出参数TotalNum4x4BlocksInSliceOrTileOrSubpic[t]。
随后,在步骤706中,处理模块500通过考虑TotalNum4x4BlocksInSliceOrTileOrSubpic[t]的值来对索引t的子图片进行解码,以导出子图片中的编码模式的使用率,并且因此减少解码器功耗。
在步骤702中,如果对于由从t1至nbTiles的索引t进行索引(步骤707)的待解码的图块中的每个图块,period_type不对应于子图片粒度,则在步骤708中,处理模块500根据上文针对值period_type=4描述的过程来导出参数TotalNum4x4BlocksInSliceOrTileOrSubpic[t]。
随后,在步骤709中,处理模块500通过考虑TotalNum4x4BlocksInSliceOrTileOrSubpic[t]的值来对索引t的图块进行解码,以导出图块中的编码模式的使用率,并且因此减少解码器功耗。
在一个实施方案中,在对应于子图片粒度的period_type的情况下,解码器可以使用向编码器指示哪些子图片相关的反向信道,使得仅计算对应于那些子图片的使用率值,并且在SEI中发信号通知这些使用率值。
以上描述了多个实施方案。这些实施方案的特征可以单独提供或以任何组合形式提供。此外,实施方案可包括以下特征、设备或方面中的一个或多个,单独地或以任何组合,跨各种权利要求类别和类型:
·包括所描述的语法元素中的一个或多个语法元素或其变型的比特流或信号。
·对包括所描述的语法元素中的一个或多个语法元素或其变型的比特流或信号进行创建和/或传输和/或接收和/或解码。
·执行所描述的实施方案中的至少一个实施方案的电视机、机顶盒、移动电话、平板电脑或其他电子设备。
·执行所描述的实施方案中的至少一个实施方案并(例如,使用监视器、屏幕或其他类型的显示器)显示所得图像的电视机、机顶盒、移动电话、平板电脑或其他电子设备。
·调谐(例如,使用调谐器)信道以接收包括编码视频流的信号并执行所描述的实施方案中的至少一个实施方案的电视机、机顶盒、移动电话、平板电脑或其他电子设备。
·通过空中(例如,使用天线)接收包括编码视频流的信号并执行所描述的实施方案中的至少一个实施方案的电视机、机顶盒、移动电话、平板电脑或其他电子设备。