用于发信号通知视频编码中的参数的系统和方法

文档序号:621652 发布日期:2021-05-07 浏览:6次 >En<

阅读说明:本技术 用于发信号通知视频编码中的参数的系统和方法 (System and method for signaling parameters in video coding ) 是由 萨钦·G·德施潘德 于 2019-09-17 设计创作,主要内容包括:公开了一种发信号通知图块集参数的方法。在网络抽象层(NAL)单元中发信号通知语法元素的值。所述语法元素的值指示所述NAL单元中包括图块集层语法结构。发信号通知所述图块集层语法结构中所包括的一个或多个图块集参数的值。(A method of signaling tile set parameters is disclosed. The value of the syntax element is signaled in a Network Abstraction Layer (NAL) unit. The value of the syntax element indicates that a tile set layer syntax structure is included in the NAL unit. Signaling values of one or more tile set parameters included in the tile set layer syntax structure.)

用于发信号通知视频编码中的参数的系统和方法

技术领域

本公开涉及视频编码,并且更具体地涉及用于发信号通知经编码视频的图块集参数的技术。

背景技术

数字视频能力可结合到广泛范围的装置中,所述装置包括数字电视、膝上型或台式计算机、平板计算机、数字记录装置、数字媒体播放器、视频游戏装置、蜂窝电话(包括所谓的智能电话)、医学成像装置等。可根据视频编码标准对数字视频进行编码。视频编码标准可结合视频压缩技术。视频编码标准的示例包括ISO/IEC MPEG-4 Visual和ITU-T H.264(也称为ISO/IEC MPEG-4AVC)以及高效率视频编码(High-Efficiency Video Coding,HEVC)。在2016年12月的高效率视频编码(HEVC),Rec.ITU-T H.265(以引用方式并入并且在本文中称为ITU-T H.265)中描述了HEVC。当前正在考虑对ITU-T H.265进行扩展和改进,以用于下一代视频编码标准的开发。例如,ITU-T视频编码专家组(Video Coding ExpertsGroup,VCEG)和ISO/IEC(动态图像专家组(Moving Picture Experts Group,MPEG)(统称为联合视频探索小组(Joint Video Exploration Team,JVET))正在研究对压缩能力显著超过当前HEVC标准的压缩能力的未来视频编码技术进行标准化的潜在需求。联合探索模型7(JEM 7)、联合探索测试模型7(JEM 7)算法描述、2017年7月意大利托里诺(Torino,IT)ISO/IEC JTC1/SC29/WG11文档JVET-G1001(以引用方式并入本文)将在JVET所进行的协调测试模型研究下的编码特征描述为潜在地增强视频编码技术从而超过ITU-T H.265的能力。应注意,JEM 7的编码特征在JEM参考软件中实现。如本文所用,术语JEM可共同指代JEM 7中所包括的算法和JEM参考软件的实施方式。此外,响应于VCEG和MPEG联合发布的“关于具有超过HEVC的能力的视频压缩提案的联合呼吁(Joint Call for Proposals on VideoCompression with Capabilities beyond HEVC)”,各个组在2018年4月16日至20日于加利福尼亚州圣地亚哥举行的ISO/IEC JTC1/SC29/WG11第10次会议上提出了视频编码的多种描述。由于视频编码的多种描述,2018年4月16日至20日在加利福尼亚州圣地亚哥举行的ISO/IEC JTC1/SC29/WG11第10次会议的“通用视频编码(草案1)(Versatile Video Coding(Draft 1))”的文档JVET-J1001-v2(以引用方式并入本文并且称为JVET-J1001)中描述了视频编码规范的草案文本。2018年7月10日至18日在斯洛文尼亚卢布尔雅那举行的ISO/IECJTC1/SC29/WG11第11次会议的“通用视频编码(草案2)”的文档JVET-K1001-v5(以引用方式并入本文并且称为JVET-K1001)是JVET-J1001的更新。

视频压缩技术通过利用视频序列中的固有冗余来减少对存储和传输视频数据的数据需求。视频压缩技术可将视频序列细分成连续地更小的部分(即,视频序列内的帧组、帧组内的帧、帧内的条带、条带内的编码树单元(例如,宏块)、编码树单元内的编码块等)。可使用帧内预测编码技术(例如,图片内(空间))和帧间预测技术(即,图片间(时间))来生成待编码的单位视频数据与参考单位视频数据之间的差值。这些差值可称为残差数据。残差数据可被编码为量化变换系数。语法元素可涉及残差数据和参考编码单元(例如,帧内预测模式索引、运动矢量和块矢量)。可对残差数据和语法元素进行熵编码。经熵编码的残差数据和语法元素可包括在合规比特流中。可根据数据结构来格式化合规比特流和相关联的元数据。

发明内容

在一个示例中,一种发信号通知图块集参数的方法包括:发信号通知网络抽象层单元中的语法元素的值,所述网络抽象层单元指示包括在网络抽象层单元的图块集层语法结构,以及发信号通知被包括在图块集层语法结构的一个或多个图块集层参数的值。

在一个示例中,一种对视频数据进行解码的方法包括:在网络抽象层单元中解析指示所述网络抽象层单元中包括图块集层语法结构的语法元素的值;解析所述图块集层语法结构中所包括的一个或多个图块集参数的值;并且基于一个或多个图块集参数的所解析的值来生成视频数据。

附图说明

图1是展示根据本公开的一种或多种技术的可被配置来对视频数据进行编码和解码的系统的示例的框图。

图2是展示根据本公开的一种或多种技术的经编码视频数据和对应数据结构的概念图。

图3是展示根据本公开的一种或多种技术的封装经编码视频数据和对应元数据的数据结构的概念图。

图4是展示根据本公开的一种或多种技术的可包括在系统的实施方式中的部件的示例的概念图,所述系统可被配置来对视频数据进行编码和解码。

图5是展示根据本公开的一种或多种技术的可被配置来对视频数据进行编码的视频编码器的示例的框图。

图6是展示根据本公开的一种或多种技术的可被配置来对视频数据进行解码的视频解码器的示例的框图。

图7是展示根据本公开的一种或多种技术的经编码视频数据和对应数据结构的概念图。

具体实施方式

总体而言,本公开描述用于对视频数据进行编码的各种技术。具体地讲,本公开描述用于发信号通知经编码视频的图块集参数的技术。根据本文所描述的技术发信号通知图块集参数对于通过降低传输带宽和/或促进视频编码器和/或解码器的并行化来改善视频分发系统性能可能特别有用。应注意,尽管关于ITU-T H.264、ITU-T H.265、JVET-J1001和JVE T-K1001描述了本公开的技术,但本公开的技术通常适用于视频编码。例如,本文所描述的编码技术可结合到包括块结构的视频编码系统(包括基于未来视频编码标准的视频编码系统)、帧内预测技术、帧间预测技术、变换技术、滤波技术和/或熵编码技术中,ITU-TH.265中所包括的那些除外。因此,对ITU-T H.264、ITU-T H.265、JVET-J1001和JVET-K1001的参考是出于描述性目的并且不应解释为限制本文所描述的技术的范围。此外,应注意,文档以引用方式并入本文不应解释为限制或产生关于本文所用的术语的歧义。例如,在某个并入的参考文献中提供的对某个术语的定义不同于另一个并入的参考文献和/或如本文中使用的该术语的情况下,该术语应以广泛地包括每个相应定义的方式和/或以在包括替代方案中每个特定定义的方式来解释。

在一个示例中,一种装置包括一个或多个处理器,所述一个或多个处理器被配置来:发信号通知网络抽象层单元中的语法元素的值,所述网络抽象层单元指示包括在网络抽象层单元的图块集层语法结构,以及发信号通知被包括在图块集层语法结构的一个或多个图块集层参数的值。

在一个示例中,一种非暂时性计算机可读存储介质包括存储在其上的指令,所述指令在被执行时致使装置的一个或多个处理器:发信号通知网络抽象层单元中的语法元素的值,所述网络抽象层单元指示包括在网络抽象层单元的图块集层语法结构;并且发信号通知图块集层语法结构中所包括的一个或多个图块集参数的值。

在一个示例中,一种设备包括:用于在网络抽象层单元中发信号通知指示网络抽象层单元中包括图块集层语法结构的语法元素的值的元件;以及用于发信号通知图块集层语法结构中所包括的一个或多个图块集参数的值的部件。

在一个示例中,一种装置包括一个或多个处理器,所述一个或多个处理器被配置来:在网络抽象层单元中解析指示网络抽象层单元中包括图块集层语法结构的语法元素的值;解析图块集层语法结构中所包括的一个或多个图块集参数的值;并且基于一个或多个图块集参数的所解析的值来生成视频数据。

在一个示例中,一种非暂时性计算机可读存储介质包括存储在其上的指令,所述指令在被执行时致使装置的一个或多个处理器:在网络抽象层单元中解析指示网络抽象层单元中包括图块集层语法结构的语法元素的值;解析图块集层语法结构中所包括的一个或多个图块集参数的值;并且基于一个或多个图块集参数的所解析的值来生成视频数据。

在一个示例中,一种设备包括用于在网络抽象层单元中解析指示网络抽象层单元中包括图块集层语法结构的语法元素的值的部件;用于解析图块集层语法结构中所包括的一个或多个图块集参数的值的部件;以及用于基于一个或多个图块集参数的所解析的值来生成视频数据的部件。

在附图和下面的描述中阐述一个或多个示例的细节。其他特征、目的和优点将从描述和附图以及权利要求书中显而易见。

视频内容通常包括由一系列帧组成的视频序列。一系列帧也可称为图片组(agroup of pictures,GOP)。每个视频帧或图片可包括一个或多个条带,其中一个条带包括多个视频块。一个视频块包括可被预测性地编码的像素值(也称为样本)阵列。视频块可根据扫描模式(例如,光栅扫描)来排序。视频编码器对视频块和其子分区执行预测编码。ITU-T H.264指定了包括16×16亮度样本的宏块。ITU-T H.265指定了类似的编码树单元(Coding Tree Unit,CTU)结构(其可称为最大编码单元(Largest Coding Unit,LCU)),其中图片可被分裂成相等大小的CTU,并且每个CTU可包括具有16×16、32×32或64×64亮度样本的编码树块(Coding Tree Block,CT B)。如本文所用,术语视频块通常可指代图片的区域,或者更具体地可指代可被预测性地编码的像素值的最大阵列、其子分区和/或对应结构。此外,根据ITU-T H.265,每个视频帧或图片可被分割为包括一个或多个图块,其中图块是与图片的矩形区域相对应的编码树单元序列。

在ITU-T H.265中,CTU由视频数据的每个分量(例如,亮度(Y)和色度(Cb和Cr))的相应CTB组成。此外,在ITU-T H.265中,可根据四叉树(quadtree,QT)分割结构来分割CTU,这导致CTU的CTB被分割成编码块(Coding Block,CB)。也就是说,在ITU-T H.265中,CTU可分割成四叉树叶节点。根据ITU-T H.265,一个亮度CB连同两个对应色度CB和相关联的语法元素一起被称为编码单元(coding unit,CU)。在ITU-T H.265中,可发信号通知CB的最小允许大小。在ITU-T H.265中,亮度CB的最小允许大小是8×8亮度样本。在ITU-T H.265中,在CU级别做出使用帧内预测或帧间预测对图片区域进行编码的决定。

在ITU-T H.265中,CU与其根在CU处的预测单元(prediction unit,PU)结构相关联。在ITU-T H.265中,PU结构允许将亮度CB和色度CB分裂,以用于生成对应参考样本的目的。也就是说,在ITU-T H.265中,亮度CB和色度CB可分裂成相应的亮度预测块(predictionblock,PB)和色度预测块,其中PB包括对其应用相同预测的样本值的块。在ITU-T H.265中,CB可分割成1个、2个或4个PB。ITU-T H.265支持从64×64样本低至4×4样本的PB大小。在ITU-T H.265中,方形PB被支持用于帧内预测,其中CB可形成PB,或者CB可分割成四个方形PB(即,帧内预测PB大小类型包括M×M或M/2×M/2,其中M是方形CB的高度和宽度)。在ITU-TH.265中,除了方形PB之外,矩形PB被支持用于帧间预测,其中CB可垂直或水平二等分以形成PB(即,帧间预测PB类型包括M×M、M/2×M/2、M/2×M或M×M/2)。此外,应注意,在ITU-TH.265中,对于帧间预测,支持四个不对称PB分区,其中CB在CB高度(顶部或底部)或宽度(左侧或右侧)的四分之一处被分割成两个PB(即,不对称分区包括M/4×M左侧、M/4×M右侧、M×M/4顶部和MxM/4底部)。使用与PB相对应的帧内预测数据(例如,帧内预测模式语法元素)或帧间预测数据(例如,运动数据语法元素)来产生PB的参考样本值和/或预测样本值。

JEM指定了具有256×256亮度样本的最大尺寸的CTU。JEM指定了四叉树加二叉树块(quadtree plus binary tree,QTBT)结构。在JEM中,QTBT结构使得能够通过二叉树(binary tree,BT)结构进一步分割四叉树叶节点。也就是说,在JEM中,二叉树结构使得能够递归地垂直或水平划分四叉树叶节点。因此,在JEM中,二叉树结构实现方形叶节点和矩形叶节点,其中每个叶节点包括CB。如图2所展示,GOP中所包括的图片可包括条带,其中每个条带包括CTU序列,并且每个CTU可根据QTBT结构来分割。在JEM中,使用CB进行预测,而无需任何进一步分割。也就是说,在JEM中,CB可以是对其应用相同预测的样本值的块。因此,JEM QTBT叶节点可类似于ITU-T H.265中的PB。

帧内预测数据(例如,帧内预测模式语法元素)或帧间预测数据(例如,运动数据语法元素)可将PU与对应参考样本相关联。残差数据可包括与视频数据的每个分量(例如,亮度(Y)和色度(Cb和Cr))相对应的相应差值阵列。残差数据可能在像素域中。可对像素差值应用变换,诸如离散余弦变换(discrete cosine transform,DCT)、离散正弦变换(discrete sine transform,DST)、整数变换、小波变换或概念上类似的变换,以生成变换系数。应注意,在ITU-T H.265中,CU可进一步细分成变换单元(Transform Unit,TU)。也就是说,为了生成变换系数,可对像素差值的阵列进行细分(例如,可将四个8×8变换应用于与16×16亮度CB相对应的16×16残差值阵列),此类子分区可称为变换块(TransformBlock,TB)。可根据量化参数(quantization parameter,QP)对变换系数进行量化。可根据熵编码技术(例如,内容自适应可变长度编码(content adaptive variable lengthcoding,CAVLC)、上下文自适应二进制算术编码(context adaptive binary arithmeticcoding,CABAC)、概率区间分割熵编码(probability interval partitioning entropycoding,PIPE)等)对量化的变换系数(可称为级别值)进行熵编码。此外,也可对语法元素(诸如指示预测模式的语法元素)进行熵编码。经熵编码的量化变换系数和对应的经熵编码的语法元素可形成可用于再现视频数据的合规比特流。可对语法元素执行二值化过程,以作为熵编码过程的一部分。二值化指代将语法值转换成一系列一个或多个比特的过程。这些比特可称为“二进制比特”。

如以上所描述,使用帧内预测数据或帧间预测数据来产生样本值块的参考样本值。当前PB或另一种图片区域结构中所包括的样本值与相关联的参考样本(例如,使用预测生成的那些)之间的差值可称为残差数据。如以上所描述,帧内预测数据或帧间预测数据可将图片区域(例如,PB或CB)与对应参考样本相关联。对于帧内预测编码,帧内预测模式可指定参考样本在图片内的位置。在ITU-T H.265中,所定义的可能的帧内预测模式包括平面(即,曲面拟合)预测模式(predMode:0)、DC(即,平面总体平均)预测模式(predMode:1)和33个角度预测模式(predMode:2-34)。在JEM中,所定义的可能的帧内预测模式包括平面预测模式(predMode:0)、DC预测模式(predMode:1)和65个角度预测模式(predMode:2-66)。应注意,平面预测模式和DC预测模式可称为非方向预测模式,并且角度预测模式可称为方向预测模式。应注意,无论所定义的可能的预测模式的数量如何,本文所描述的技术通常都适用。

对于帧间预测编码,运动矢量(motion vector,MV)标识除了待编码的视频块的图片之外的图片中的参考样本,并从而利用视频中的时间冗余。例如,可根据位于一个或多个先前经编码帧中的一个或多个参考块来预测当前视频块,并且可使用运动矢量来指示参考块的位置。运动矢量和相关联的数据可描述例如运动矢量的水平分量、运动矢量的垂直分量、运动矢量的分辨率(例如,四分之一像素精度、二分之一像素精度、一像素精度、两像素精度、四像素精度)、预测方向和/或参考图片索引值。此外,诸如例如ITU-T H.265的编码标准可支持运动矢量预测。运动矢量预测使得能够使用邻近块的运动矢量来指定运动矢量。运动矢量预测的示例包括高级运动矢量预测(advanced motion vector prediction,AMVP)、时间运动矢量预测(temporal motion vector prediction,TMVP),即所谓的“合并(merge)”模式,以及“跳过(skip)”和“直接(direct)”运动推断。此外,JEM支持高级时间运动矢量预测(advanced temporal motion vector prediction,ATMVP)、空时运动矢量预测(Spatial-temporal motion vector prediction,STMVP)、模式匹配的运动矢量推导(Pattern matched motion vector derivation,PMMVD)模式(是基于帧率上转换(Frame-Rate Up Conversion,FRUC)技术的特殊合并模式)和仿射变换运动补偿预测。

残差数据可包括与视频数据的每个分量相对应的相应差值阵列。残差数据可能在像素域中。可对差值阵列应用变换诸如离散余弦变换(DCT)、离散正弦变换(DST)、整数变换、小波变换或概念上类似的变换,以生成变换系数。在ITU-T H.265中,CU与其根在CU级别处的变换单元(TU)结构相关联。也就是说,在ITU-T H.265中,如以上所描述,为了生成变换系数可对差值的阵列进行细分(例如,可将四个8×8变换应用于16×l6残差值阵列)。应注意,在ITU-T H.265中,TB不一定与PB对齐。

应注意,在JEM中,使用对应于CB的残差值来生成变换系数,而无需进一步分割。也就是说,在JEM中,QTBT叶节点可类似于ITU-TH.265中的PB和TB两者。应注意,在JEM中,可(在视频编码器中)应用核心变换和后续的二次变换以生成变换系数。对于视频解码器,变换顺序相反。此外,在JEM中,是否应用二次变换以生成变换系数可取决于预测模式。

可对变换系数执行量化过程。量化通过限定于一组指定值的幅度来近似计算变换系数。可使用量化,以便改变表示一组变换系数所需的数据量。可通过将变换系数除以比例因子和任何相关联的舍入函数(例如,舍入到最接近的整数)来实现量化。量化的变换系数可称为系数级别值。逆量化(或“解量化”)可包括将系数级别值乘以比例因子。应注意,如本文所用,术语量化过程在一些情况下可指代除以比例因子以生成级别值或在一些情况下可指代乘以比例因子以恢复变换系数。也就是说,量化过程在一些情况下可指代量化并且在一些情况下可指代逆量化。

关于本文所用的方程式,可使用以下算术运算符:

+加法

-减法

*乘法,包括矩阵乘法

xy求幂。指定x的y次幂。在其他情形中,这种表示法用于加上标,而不意图用于解释为求幂。

/使结果的截断趋向零的整数除法。例如,7/4和-7/-4截断为1,并且-7/4和7/-4截断为-1。

÷用于表示数学方程式中不意图进行截断或舍入的除法。

用于表示数学方程式中不意图进行截断或舍入的除法。

此外,可使用以下数学函数:

Log2(x):x的以2为底的对数;

Ceil(x):大于或等于x的最小整数。

关于本文所用的示例性语法,可应用以下逻辑运算符定义:

x&&y:x和y的布尔逻辑“和”

x||y:x和y的布尔逻辑“或”

!布尔逻辑“非”

x?y:z:如果x为真或不等于0,则评估为y的值;否则,评估为z的值。

此外,可应用以下关系运算符:

>大于

>=大于或等于

<小于

<=小于或等于

==等于

!=不等于

此外,应注意,在本文所用的语法描述符中,可应用以下描述符:

-b(8):具有任何比特串模式(8比特)的字节。此描述符的解析过程由函数read_bits(8)的返回值指定。

-f(n):使用以左比特在先写入(从左到右)的n比特的固定模式比特串。此描述符的解析过程由函数read_bits(n)的返回值指定。

-u(n):使用n比特的无符号整数。

-ue(v):左比特在先的无符号整数0阶指数哥伦布码编码的(Exp-Golomb-coded)语法元素。

如以上所描述,根据ITU-T H.265,每个视频帧或图片可被分割为包括一个或多个条带并且进一步分割为包括一个或多个图块。图2是展示包括条带的一组图片的示例的概念图。在图2所展示的示例中,图片4展示为包括两个条带(即,条带1和条带2),其中每个条带包括CTU序列(例如,按光栅扫描顺序排列)。应注意,条带是一个或多个条带片段的序列,所述序列从一个独立条带片段开始,并包含同一访问单元内下一个独立条带片段(如果有的话)之前的所有后续非独立条带片段(如果有的话)。条带片段(如条带)是编码树单元的序列。在本文所描述的示例中,在一些情况下,术语条带和条带片段可以可互换地使用以指示编码树单元的序列。应注意,在ITU-T H.265中,图块可由包含在不止一个条带中的编码树单元组成,并且条带可由包含在不止一个图块中的编码树单元组成。然而,ITU-T H.265规定应满足以下条件中的一个或两个:(1)条带中的所有编码树单元属于同一图块;和(2)图块中的所有编码树单元属于同一条带。图块集可用于定义编码相依性(例如,帧内预测相依性、熵编码相依性等)的边界,并且因此可实现编码中的并行性。

在ITU-T H.265中,经编码视频序列(coded video sequence,CVS)可被封装(或结构化)为访问单元序列,其中每个访问单元包括结构化为网络抽象层(networkabstraction layer,NAL)单元的视频数据。在ITU-T H.265中,比特流被描述为包括形成一个或多个CVS的NAL单元序列。应注意,ITU-T H.265支持多层扩展,包括格式范围扩展(RExt)、可伸缩性(SHVC)、多视图(MV-HEVC)和3-D(3D-HEVC)。多层扩展使得视频呈现能够包括基本层和一个或多个附加的增强层。例如,基本层可使得能够呈现具有基本质量级别(例如,高清晰度渲染)的视频呈现,并且增强层可使得能够呈现具有增强质量级别(例如,超高清晰度渲染)的视频呈现。在ITU-T H.265中,可通过参考基本层来对增强层进行编码。也就是说,例如,可通过参考基本层中的一个或多个图片(包括其缩放版本)来对增强层中的图片进行编码(例如,使用帧间预测技术)。在ITU-T H.265中,每个NAL单元可包括指示NAL单元与其相关联的视频数据层的标识符。应注意,子比特流提取可指代接收合规比特流的装置通过丢弃和/或修改所接收的比特流中的数据来形成新的合规比特流的过程。例如,子比特流提取可用于形成与视频的特定表示(例如,高质量表示)相对应的新的合规比特流。

参考图2所展示的示例,图片4中所包括的视频数据的每个条带(即,条带1和条带2)展示为封装在NAL单元中。在ITU-T H.265中,视频序列、GOP、图片、条带和CTU中的每一者可与描述视频编码特性的元数据相关联。ITU-T H.265定义可用于描述视频数据和/或视频编码特性的参数集。在ITU-T H.265中,参数集可封装为特殊类型的NAL单元或者可作为消息被发信号通知。包括经编码视频数据的NAL单元(例如,条带)可称为VCL(视频编码层)NAL单元,并且包括元数据的NAL单元(例如,参数集)可称为非VCL NAL单元。此外,ITU-T H.265使得能够发信号通知补充增强信息(supplemental enhancement information,SEI)消息。在ITU-T H.265中,SEI消息协助与解码、显示或其他目的相关的过程,然而,通过解码过程构造亮度或色度样本可以不需要SEI消息。在ITU-T H.265中,可使用非VCL NAL单元在比特流中发信号通知SEI消息。此外,可通过除了存在于比特流中之外的一些其他手段(即,在带外发信号通知)来传送SEI消息。

图3展示包括多个CVS的比特流的示例,其中CVS由相应访问单元中所包括的NAL单元表示。在图3所展示的示例中,非VCL NAL单元包括相应的参数集单元(即,视频参数集(Video Parameter Set,VPS)单元、序列参数集(Sequence Parameter Set,SPS)单元和图片参数集(Picture Parameter Set,PPS)单元)和访问单元定界符NAL单元。ITU-T H.265定义NAL单元标头语义,其指定了NAL单元中所包括的原始字节序列载荷(Raw Byte SequencePayload,RBSP)数据结构的类型。

表1展示了ITU-T H.265中提供的并在JVET-K1001中另外使用的一般NAL单元语法。

nal_unit(NumBytesInNalUnit){ 描述符
nal_unit_header()
NumBytesInRbsp=0
fbr(i=2;i<NumBytesInNalUnit;i++)
if(i+2<NumBytesInNalUnit&&next_bits(24)==0x000003){
rbsp_byte[NumBytesInRbsp++] b(8)
rbsp_byte[NumBytesInRbsp++] b(8)
i+=2
emulation_prevention_three_byte/*equal to 0x03*/ f(8)
}else
rbsp_byte[NumBytesInRbsp++] b(8)
}

表1

ITU-T H.265提供以下的一般NAL单元语义:

NumBytesInNalUnit指定了NAL单元的大小,以字节为单位。在NAL单元解码时需要此值。为了能够推断出NumBytesInNalUnit,需要对NAL单元边界进行某种形式的定界。[ITU-T H.265附件B]中指定了一种用于字节流格式的此类定界方法。在本规范之外可指定其他定界方法。

注释1-视频编码层(VCL)被指定来有效表示视频数据的内容。NAL被指定来格式化所述数据并以适合在各种通信信道或存储介质上进行传送的方式提供标头信息。所有数据包含在NAL单元中,NAL单元中的每一个包含整数数量的字节。NAL单元指定了在面向分组的系统和比特流系统两者中使用的通用格式。面向分组的传输和字节流两者的NAL单元的格式相同,除了在[ITU-T H.265附件B]中指定的字节流格式中,每个NAL单元之前可以有起始码前缀和额外的填补字节。

rbsp_byte[i]是RBSP的第i个字节。RBSP被指定为字节的有序序列,如下:

RBSP包含数据比特串(string of data bit,SODB),如下:

-如果SODB为空(即,长度为零比特),则RBSP也为空。

-否则,RBSP包含SODB,如下:

1)RBSP的第一个字节包含(最高有效、最左)八比特的SODB;RBSP的下一个字节包含下一八比特的SODB,等等,直到剩余的SODB不到八比特为止。

2)rbsp_trailing_bits()存在于SODB之后,如下:

i)最后RBSP字节的第一个(最高有效、最左)比特包含SODB的剩余比特(如果有的话)。

ii)下一个比特由等于1的单个rbsp_stop_one_bit组成。

iii)当rbsp_stop_one_bit不是字节对齐的字节的最后一个比特时,就会存在一个或多个rbsp_alignment_zero_bit来形成字节对齐。

3)在某些RBSP中,在RBSP结尾处的rbsp_trailing_bits()之后可存在等于0x0000的一个或多个cabac_zero_word 16比特语法元素。

具有这些RBSP特性的语法结构在语法表中使用“_rbsp”后缀表示。这些结构在NAL单元中作为rbsp_byte[i]数据字节的内容携带。RBSP语法结构与NAL单元的关联如[本文中的表3]中所指定。

注释2-当已知RBSP的边界时,解码器可通过以下方式从RBSP中提取SODB:将RBSP字节的比特串联并丢弃作为等于1的最后一个(最低有效、最右)比特的rbsp_stop_one_bit,并丢弃其后的等于0的任何后续(较低有效、较靠右)比特。解码过程所必需的数据包含在RBSP的SODB部分。

emulation_prevention_three_byte是等于0x03的字节。当NAL单元中存在emulation_prevention_three_byte时,应由解码过程将其丢弃。

NAL单元的最后一个字节不应等于0x00。

在NAL单元内,以下三字节序列不应在任何字节对齐的位置处出现:

-0x000001

在NAL单元内,除了以下序列之外的以0x000003起始的任何四字节序列不应在任何字节对齐的位置处出现:

-0x00000301

-0x00000303

表2展示了ITU-T H.265中所提供的NAL单元标头语法。

nal_unit_header(){ 描述符
forbidden_zero_bit f(1)
nal_unit_type u(6)
nuh_layer_id u(6)
nuh_temporal_id_plus1 u(3)
}

表2

ITU-T H.265为表2中所展示的相应语法元素提供以下定义:

forbidden_zero_bit应等于0。

Nuh_layer_id指定了VCL NAL单元所属于的层的标识符或非VCL NAL单元所应用于的层的标识符。

nuh_temporal_id_plus1-1指定了NAL单元的时间标识符。nuh_temporal_id_plusl的值不应等于0。

关于nal_unit_type,nal_unit_type指定了NAL单元中所包含的RBSP数据结构的类型。表3展示了ITU-T H.265中所提供的NAL单元类型。

表3

为简洁起见,本文中不提供对ITU-T H.265中的NAL单元类型中的每一者的完整描述。但是,可参考ITU-T H.265的相关章节。

如以上所描述,JVET-K1001是视频编码规范的草案文本。表4展示了JVET-K1001中的NAL单元标头的语法。

nal_unit_header(){ 描述符
forbidden_zero_bit f(1)
nal_unit_type u(5)
}

表4

JVET-K1001为表4中所展示的相应语法元素提供以下定义:

forbidden_zero_bit应等于0。

关于nal_unit_type,JVET-K1001提供尚未定义NAL单元类型的位置。JVET-K1001进一步提供基本序列参数集语法。表5展示了JVET-K1001中所提供的序列参数集的语法。

seq_parameter_set_rbsp(){ 描述符
sps_seq_parameter_set_id ue(v)
chroma_format_idc ue(v)
if(chroma_format_idc==3)
separate_colour_plane_flag u(1)
pic_width_in_luma_samples ue(v)
pic_height_in_luma_samples ue(v)
bit_depth_luma_minus8 ue(v)
bit_depth_chroma_minus8 ue(v)
qtbtt_dual_tree_intra__flag ue(v)
log2_ctu_size_minus2 ue(v)
log2_min_qt_size_intra_slices_minus2 ue(v)
log2_min_qt_size_inter_slices_minus2 ue(v)
max_mtt_hierarchy_depth_inter_slices ue(v)
max_mtt_hierarchy_depth_intra_slices ue(v)
sps_cclm_enabled_flag u(1)
sps_temporalmvp_enabled_flag u(1)
if(sps_temporal_mvp_enabled_flag)
sps_sbtmvp_enabled_flag u(1)
if(sps_sbtmvp_enabled_flag)
log2_sbtmvp_default_size_minus2 u(1)
sps_amvr_enabled_flag u(1)
sps_affine_enabled_flag u(1)
if(sps_affine_enabled_flag)
sps_affine_type_flag u(1)
sps_mts_intra_enabled_flag u(1)
sps_mts_inter_enabled_flag u(1)
rbsp_trailing_bits()
}

表5

表5中所展示的相应语法元素的基本定义如下:

sps_seq_Parameter_set_id提供用于由其他语法元素参考的SPS的标识符。

sps_seq_Parameter_set_id的值应在0至15(包括端值)的范围内。

chroma_format_idc指定了相对于亮度采样的色度采样。chroma_format_idc的值应在0至3(包括端值)的范围内。

separate_colour_plane_flag等于1指定了单独对4:4:4色度格式的三个颜色分量进行编码,separate_colour_plane_flag等于0指定了不单独对颜色分量进行编码。当separate_colour_plane_flag不存在时,推断其等于0。当separate_colour_plane_flag等于1时,经编码图片由三个单独分量组成,其中的每一个由一个色彩平面(Y、Cb或Cr)的经编码样本组成并使用单色编码语法。在这种情况下,每个色彩平面与特定colour_plane_id值相关联。

pic_width_in_luma_samples指定了每个经解码图片的宽度,以亮度样本为单位。

pic_height_in_luma_samples指定了每个经解码图片的高度,以亮度样本为单位。

bit_depth_luma_minus8指定了亮度阵列样本的比特深度和亮度量化参数范围偏移的值。

bit_depth_chroma_minus8指定了色度阵列样本的比特深度和色度量化参数范围偏移的值。

qtbtt_dual_tree_intra_flag等于1指定:对于I条带,使用隐式四叉树分裂将每个CTU分裂成具有64×64亮度样本的编码单元,并且这些编码单元是亮度和色度两个单独的coding_quadtree语法结构的根。

log2_ctu_size_minus2+2指定了每个CTU的亮度编码树块大小。

log2_min_qt_size_intra_slices_minus2+2指定了由slice_type等于2(I)的条带中的CTU的四叉树分裂产生的叶块的最小亮度大小。

log2_min_qt_size_inter_slices_minus2+2指定了由slice_type等于0(B)或1(P)的条带中的CTU的四叉树分裂产生的叶块的最小亮度大小。

max_mtt_hierarchy_depth_inter_slices指定了由slice_type等于0(B)或1(P)的条带中的四叉树叶的多类型树分裂产生的编码单元的最大层次深度。

max_mtt_hierarchy_depth_intra_slices指定了由slice_type等于2(I)的条带中的四叉树叶的多类型树分裂产生的编码单元的最大层次深度。

sps_cclm_enabled_flag等于0指定了禁用从亮度分量到色度分量的跨分量线性模型帧内预测。sps_cclm_enabled_flag等于1指定了启用从亮度分量到色度分量的跨分量线性模型帧内预测。

sps_temporal_mvp_enabled_flag等于1指定了在CVS中slice_type不等于I的条带的条带标头中存在slice_temporal_mvp_enabled_flag。sps_temporal_mvp_enabled_flag等于0指定了在条带标头中不存在slice_temporal_mvp_enabled_flag并且CVS中不使用时间运动矢量预测子(predictor)。

sps_sbtmvp_enabled_flag等于1指定了在CVS中所有条带的slice_type不等于I的图片的解码中可使用基于子块的时间运动矢量预测子。sps_sbtmvp_enabled_flag等于0指定了在CVS中不使用基于子块的时间运动矢量预测子。当sps_sbtmvp_enabled_flag不存在时,推断其等于0。

log2_sbtmvp_default_size_mnius2指定了当slice_sbtmvp_size_override_flag等于0时,CVS中slice_type不等于I的条带的条带标头中的语法元素log2_sbtmvp_active_size_minus2的推断值。

sps_amvr_enabled_flag等于1指定了在运动矢量编码中使用自适应运动矢量差分辨率。amvr_enabled_flag等于0指定了在运动矢量编码中不使用自适应运动矢量差分辨率。

sps_affine_enabled_flag指定了基于仿射模型的运动补偿是否可用于帧间预测。如果sps_affine_enabled_flag等于0,则应限定语法,以使得在CVS中不使用基于仿射模型的运动补偿并且在CVS的编码单元语法中不存在merge_affine_flag、inter_affine_flag和cu_affine_type_flag。否则(sps_affine_enabled_flag等于1),在CVS中可使用基于仿射模型的运动补偿。

sps_affine_type_flag指定了基于6参数仿射模型的运动补偿是否可用于帧间预测。如果sps_affine_type_flag等于0,则应限定语法,以使得在CVS中不使用基于6参数仿射模型的运动补偿并且在CVS中的编码单元语法中不存在cu_affine_type_flag。否则(sps_afiine_type_flag等于1),在CVS中可使用基于6参数仿射模型的运动补偿。当sps_affine_type_flag不存在时,推断其值等于0。

sps_mts_intra_enable_flag等于1指定了在帧内编码单元的残差编码语法中可存在cu_mts_flag。sps_mts_intra_enabled_flag等于0指定了在帧内编码单元的残差编码语法中不存在cu_mts_flag。

sps_mts_mter_enabled_flag指定了在帧间编码单元的残差编码语法中可存在cu_mts_flag。sps_mts_interenabled_flag等于0指定了在帧间编码单元的残差编码语法中不存在cu_mts_flag。

JVET-K1001进一步提供基本图片参数集语法。表6展示了JVET-K1001中的图片参数集的语法。

pic_parameter_set_rbsp(){ 描述符
pps_pic_parameter_set_id ue(v)
pps_seq_parameter_set_id ue(v)
transform_skip_enabled_flag u(1)
rbsp_trailing_bits()
}

表6

JVET-K1001为表6中所展示的相应语法元素提供以下定义:

pps_pic_qarameter_set_id标识了用于由其他语法元素参考的PPS。pps_pic_parameter_set_id的值应在0至63(包括端值)的范围内。

pps_seq_parameter_set_id指定了活动SPS的sps_seq_parameterset_id的值。pps_seq_parameter_set_id的值应在0至15(包括端值)的范围内。

transform_skip_enabled_flag等于1指定了在残差编码语法中可存在transform_skip_flag。transform_skip_enabled_flag等于0指定了在残差编码语法中不存在transform_skip_flag。

JVET-K1001进一步提供访问单元定界符语法。表7展示了JVET-K1001中的访问单元定界符的语法。

access_unit_delimiter_rbsp(){ 描述符
pic_type u(3)
rbsp_trailing_bits()
}

表7

JVET-K1001为表7中所展示的相应语法元素提供以下定义:

pic_type指示了包含访问单元定界符NAL单元的访问单元中的经编码图片的所有条带的slice_type值是表8中针对给定pic_type值所列出的集的成员。在符合本规范的此版本的比特流中,pic_type的值应等于0、1或2。保留pie_type的其他值以供未来使用。符合本规范的此版本的解码器应忽略pie_type的保留值。

pic_type 经编码图片中可存在的slice_type值
0 I
1 P,I
2 B,P,I

表8

应注意,B条带指代其中允许双向预测帧间预测、单向预测帧间预测和帧内预测的条带;P条带指代其中允许单向预测帧间预测和帧内预测的条带;并且I条带指代其中仅允许帧内预测的条带。应注意,在一些情况下,B条带和P条带统称为帧间条带。

JVET-K1001进一步提供序列结束语法、比特流结束语法和填充数据语法。表9展示了JVET-K1001中所提供的序列结束语法,表10展示了JVET-K1001中所提供的比特流结束语法,并且表11展示了JVET-K1001中所提供的比特流结束语法。

end_of_seq_rbsp(){ 描述符
}

表9

end_of_bitstrcam_rbsp(){ 描述符
}

表10

filler_data_rbsp(){ 描述符
while(next_bits(8)==0xFF)
ff_byte/*equal to 0xFF*/ f(8)
rbsp_trailing_bits()
}

表11

JVET-K1001为表11中所展示的相应语法元素提供以下定义:

ff_byte是等于0xFF的字节。

JVET-K1001进一步提供包括条带标头的条带层语法。表12展示了JVET-K1001中所提供的条带层语法,并且表13展示了JVET-JK001中所提供的条带标头。

slice_layer_rbsp(){ 描述符
slice_header()
slice_data()
rbsp_slice_trailing_bits()
}

表12

slice_header(){ 描述符
slice_pic_parameter_set_id ue(v)
slice_address u(v)
slice_type ue(v)
if(slice_type!=I){
log2_diff_ctu_max_bt_size ue(v)
if(sps_sbtmvp_enabled_flag){
sbtmvp_size_override_flag u(1)
if(sbtmvp_size_override_flag)
log2_sbtmvp_active_size_minus2 u(3)
}
if(sps_temporal_mvp_enabled_flag)
slice_temporal_mvp_enabled_flag u(1)
if(slice_type==B)
mvd_l1zero_flag u(1)
if(slice_temporal_mvp_enabled_flag){
if(slice_type==B)
collocated_from_l0flag u(1)
}
six_minus_max_num_merge_cand ue(v)
}
dep_quant_enabled_flag u(1)
if(!dep_quant_enabled_flag)

sign_data_hiding_enabled_flag u(1)
byte_alignment()
}

表13

JVET-K1001为表13中所展示的相应语法元素提供以下定义:

Slice_pic_parameter_set_id指定了使用中的PPS的pps_pic_parameter_set_id的值。slice_pic_parameter_set_id的值应在0至63(包括端值)的范围内。

slice_address指定了在图片的CTB光栅扫描中,条带中的第一个CTB的地址。

slice_type指定了根据表14的条带的编码类型。

slice_type slice_type的名称
0 B(B条带)
1 P(P条带)
2 I(I条带)

表14

当nal_unit_type具有在[待确定](包括端值)范围内的值(即,图片是IRAP图片)时,slice_type应等于2。

log2_diff_ctu_max_bt_size指定了可使用二叉分裂进行分裂的编码块的亮度CTB大小与最大亮度大小(宽度或高度)之间的差。

sbtmvp_size_override_flag等于1指定了对于当前条带,存在语法元素log2_sbtmvp_active_size_minus2。sbtmvp_size_override_flag等于0指定了不存在语法元素log2_atmvp_active_size_minus2并且推断log2_sbtmvp_size_active_minus2等于log2_sbtmvp_default_size_minus2。

log2_sbtmvp_active_size_minus2+2指定了用于推导当前条带的基于子块的TMVP的运动参数的子块大小的值。当log2_sbtmvp_size_active_minus2不存在时,推断其等于log2_sbtmvp_default_size_minus2。如下推导变量:

slice_temporal_mvp_enabled_flag指定了时间运动矢量预测子是否可用于帧间预测。如果slice_temporal_mvp_enabled_flag等于0,则应限定当前图片的语法元素,以使得在对当前图片的解码中不使用时间运动矢量预测子。否则(slice_temporal_mvp_enabled_flag等于1),在对当前图片的解码中可使用时间运动矢量预测子。当slice_temporal_mvp_enabled_flag不存在时,推断其值等于0。

mvd_l1_zero_flag等于1指示了不解析mvd_coding(x0,y0,1)语法结构并且针对compIdx=0..1将MvdL1[x0][y0][compIdx]设定为等于0。mvd_ll_zero_flag等于0指示了解析mvd_coding(x0,y0,1)语法结构。

collocated_from_10_flag等于1指定了根据参考图片列表0推导用于时间运动矢量预测的并置图片。collocated_from_10_flag等于0指定了根据参考图片列表1推导用于时间运动矢量预测的并置图片。当collocated_from_10_flag不存在时,推断其等于1。

six_minus_max_num_merge_cand指定了6减去条带中所支持的合并运动矢量预测(motion vector prediction,MVP)候选者的最大数量。如下推导合并MVP候选者的最大数量MaxNumMergeCand:

MaxNumMergeCand的值应在1至6(包括端值)的范围内。

dep_quant_enabled_flag等于0指定了禁用依赖性量化。dep_quant_enabled_flag等于1指定了启用依赖性量化。

sign_data_hiding_enabled_flag等于0指定了禁用符号比特隐藏。sign_data_hiding_enabled_flag等于1指定了启用符号比特隐藏。当sign_data_hiding_enabled_flag不存在时,推断其等于0。

JVET-K1001进一步提供RBSP后置位语法和字节对齐语法。表15展示了JVET-K1001中所提供的RBSP后置位语法,并且表16展示了JVET-K1001中所提供的字节对齐语法。

rbsp_trailing_bits(){ 描述符
rbsp_stop_one_bit/*equal to 1*/ f(1)
while(!byte_aligned())
rbsp_alignment_zero_bit/*equal to 0*/ f(1)
}

表15

byte_alignment(){ 描述符
alignment_bit_equal_to_one/*equal to 1*/ f(1)
wbile(!byte_aligned())
alignment_bit_equal_to_zero/*equal to 0*/ f(1)
}

表16

如以上所描述,根据ITU-T H.265,每个视频帧或图片可被分割为包括一个或多个图块。在ITU-T H.265中,使用图片参数集发信号通知图片的图块结构。表17是ITU-T H.265中指定的PPS语法的一部分,该部分包括用于发信号通知图块结构的相关语法元素。

pic_parameter_set_rbsp(){ 描述符
...
tiles_enabled_flag u(1)
...
if(tiles_enabled_flag){
num_tile_columns_minus1 ue(v)
num_tile_rows_minus1 ue(v)
uniform_spacing_flag u(1)
if(!unifom_spacing_flag){
for(i=0;i<num_tiles_columns_minus1;i++)
column_width_minus1[i] ue(v)
for(i=0;i<num_tiles_rows_minus1;i++)
row_height_minus1[i] ue(v)
}

表17

ITU-TH.265为表17中所展示的相应语法元素提供以下定义:

Tiles_enabled_flag等于1指定了每个图片中有不止一个图块参考PPS。tiles_enabled_flag等于0指定了每个图片中仅有一个图块参考PPS。比特流一致性的要求是:对于CVS内已激活的所有PPS,tiles_enabled_flag的值应相同。

num_tile_columns_minusl+1指定了分割图片的图块列的数量。num_tile_columns_minusl应在0至PicWidthlnCtbsY-1(包括端值)的范围内。当num_tile_columns_minusl不存在时,推断其值等于0。

num_tile_rows_minusl+1指定了分割图片的图块行的数量。num_tile_rows_minusl应在0至PicHeightlnCtbsY-1(包括端值)的范围内。当num_tile_rows_minusl不存在时,推断其值等于0。当tiles_enabled_flag等于1时,num_tile_columns_minusl和num_tile_rows minusl不应均等于0。

uniform_spacing_flag等于1指定了图块列边界和同样图块行边界在图片中均匀分布。uniform_spacing_flag等于0指定了图块列边界和同样图块行边界不在图片中均匀分布、但使用语法元素column_width_minusl[i]和row_height_minusl[i]显式地发信号通知。当uniform_spacing_flag不存在时,推断其值等于1。

column_width_minusl[i]+1指定了第i个图块列的宽度,以编码树块为单位。

row_height_minusl[i]+1指定了第i个图块行的高度,以编码树块为单位。

如上所描述,JVET-K1001不提供用于发信号通知图块结构的机制。本公开描述用于发信号通知包括图片标头和图块集参数的总体比特流结构的技术。

图1是展示根据本公开的一种或多种技术的可被配置来对视频数据进行译码(即,编码和/或解码)的系统的示例的框图。系统100表示根据本公开的一种或多种技术的可封装视频数据的系统的示例。如图1所展示,系统100包括源装置102、通信介质110和目的地装置120。在图1所展示的示例中,源装置102可包括被配置来对视频数据进行编码并将经编码视频数据传输到通信介质110的任何装置。目的地装置120可包括被配置来经由通信介质110接收经编码视频数据并对经编码视频数据进行解码的任何装置。源装置102和/或目的地装置120可包括被配备用于有线和/或无线通信的计算装置,并且可包括例如机顶盒、数字视频录像机、电视、台式计算机、膝上型计算机或平板计算机、游戏机、医学成像装置以及移动装置(包括例如智能电话、蜂窝电话、个人游戏装置)。

通信介质110可包括无线和有线通信介质的任何组合和/或存储装置。通信介质110可包括同轴电缆、光纤电缆、双绞线电缆、无线发射器和接收器、路由器、交换机、中继器、基站或可用于促进各种装置与站点之间的通信的任何其他装备。通信介质110可包括一个或多个网络。例如,通信介质110可包括被配置来使得能够访问万维网(例如,互联网)的网络。网络可根据一个或多个电信协议的组合进行操作。电信协议可包括专有方面和/或可包括标准化电信协议。标准化电信协议的示例包括数字视频广播(Digital VideoBroadcasting,DVB)标准、高级电视系统委员会(Advanced Television SystemsCommittee,ATSC)标准、综合业务数字广播(Integrated Services DigitalBroadcasting,ISDB)标准、有线数据服务接口规范(Data Over Cable Service InterfaceSpecification,DOCSIS)标准、全球移动通信系统(Global System MobileCommunications,GSM)标准、码分多址(code division multiple access,CDMA)标准、第三代合作伙伴项目(3rd Generation Partnership Project,3GPP)标准、欧洲电信标准协会(EuropeanTelecommunications Standards Institute,ETSI)标准、互联网协议(InternetProtocol,IP)标准、无线应用协议(Wireless Application Protocol,WAP)标准以及电气与电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE)标准。

存储装置可包括能够存储数据的任何类型的装置或存储介质。存储介质可包括有形或非暂时性计算机可读介质。计算机可读介质可包括光盘、快闪存储器、磁存储器或任何其他合适的数字存储介质。在一些示例中,存储器装置或其部分可描述为非易失性存储器,而在其他示例中,存储器装置的部分可描述为易失性存储器。易失性存储器的示例可包括随机存取存储器(random access memory,RAM)、动态随机存取存储器(dynamic randomaccess memory,DRAM)和静态随机存取存储器(static random access memory,SRAM)。非易失性存储器的示例可包括磁性硬盘、光盘、软盘、快闪存储器或电可编程存储器(electrically programmable memory,EPROM)或电可擦除和可编程存储器(electricallyerasable and programmable memory,EEPROM)的形式。一个或多个存储装置可包括存储卡(例如,安全数字(Secure Digital,SD)存储卡)、内部/外部硬盘驱动器和/或内部/外部固态驱动器。可根据所定义的文件格式将数据存储在存储装置上。

图4是展示可包括在系统100的实施方式中的部件的示例的概念图。在图4所展示的示例性实施方式中,系统100包括一个或多个计算装置402A-402N、电视服务网络404、电视服务提供商站点406、广域网408、局域网410以及一个或多个内容提供商站点412A-412N。图4所展示的实施方式表示可被配置来允许数字媒体内容(诸如例如电影、现场体育赛事等)以及与其相关联的数据和应用程序和媒体呈现被分发到多个计算装置(诸如计算装置402A-402N)并且可由其访问的系统的示例。在图4所展示的示例中,计算装置402A-402N可包括被配置来从电视服务网络404、广域网408和/或局域网410中的一者或多者接收数据的任何装置。例如,计算装置402A-402N可被配备用于有线和/或无线通信,并且可被配置来通过一个或多个数据信道来接收服务,并且可包括电视(包括所谓的智能电视)、机顶盒和数字视频录像机。此外,计算装置402A-402N可包括台式计算机、膝上型计算机或平板计算机、游戏机、移动装置(包括例如“智能”电话、蜂窝电话和个人游戏装置)。

电视服务网络404是被配置来使得能够分发数字媒体内容(可包括电视服务)的网络的示例。例如,电视服务网络404可包括公共空中电视网络、公共或基于订阅的卫星电视服务提供商网络、以及公共或基于订阅的有线电视提供商网络和/或过顶(over the top)或互联网服务提供商。应注意,尽管在一些示例中电视服务网络404可主要用于使得能够提供电视服务,但电视服务网络404还可使得能够根据本文所描述的电信协议的任何组合提供其他类型的数据和服务。此外,应注意,在一些示例中,电视服务网络404可使得能够在电视服务提供商站点406与计算装置402A-402N中的一者或多者之间进行双向通信。电视服务网络404可包括无线和/或有线通信介质的任何组合。电视服务网络404可包括同轴电缆、光纤电缆、双绞线电缆、无线发射器和接收器、路由器、交换机、中继器、基站或可用于促进各种装置与站点之间的通信的任何其他装备。电视服务网络404可根据一个或多个电信协议的组合进行操作。电信协议可包括专有方面和/或可包括标准化电信协议。标准化电信协议的示例包括DVB标准、ATSC标准、ISDB标准、DTMB标准、DMB标准、有线数据服务接口规范(DOCSIS)标准、HbbTV标准、W3C标准以及UPnP标准。

再次参考图4,电视服务提供商站点406可被配置来经由电视服务网络404分发电视服务。例如,电视服务提供商站点406可包括一个或多个广播电台、有线电视提供商、或卫星电视提供商或基于互联网的电视提供商。例如,电视服务提供商站点406可被配置来通过卫星上行链路/下行链路接收包括电视节目的传输。此外,如图4所展示,电视服务提供商站点406可与广域网408进行通信,并且可被配置来从内容提供商站点412A-412N接收数据。应注意,在一些示例中,电视服务提供商站点406可包括电视演播室,并且内容可来源于所述电视演播室。

广域网408可包括基于分组的网络并根据一个或多个电信协议的组合进行操作。电信协议可包括专有方面和/或可包括标准化电信协议。标准化电信协议的示例包括全球移动通信系统(GSM)标准、码分多址(CDMA)标准、第三代合作伙伴项目(3GPP)标准、欧洲电信标准协会(ETSI)标准、欧洲标准(EN)、互联网协议(IP)标准、无线应用协议(WAP)标准以及电气与电子工程师协会(IEEE)标准(诸如例如IEEE 802标准中的一个或多个(例如,Wi-Fi))。广域网408可包括无线和/或有线通信介质的任何组合。广域网408可包括同轴电缆、光纤电缆、双绞线电缆、以太网电缆、无线发射器和接收器、路由器、交换机、中继器、基站或可用于促进各种装置与站点之间的通信的任何其他装备。在一个示例中,广域网408可包括互联网。局域网410可包括基于分组的网络并根据一个或多个电信协议的组合进行操作。局域网410可基于访问和/或物理基础设施的级别与广域网408区分开。例如,局域网410可包括安全家庭网络。

再次参考图4,内容提供商站点412A-412N表示可向电视服务提供商站点406和/或计算装置402A-402N提供多媒体内容的站点的示例。例如,内容提供商站点可包括具有一个或多个演播室内容服务器的演播室,所述演播室内容服务器被配置来向电视服务提供商站点406提供多媒体文件和/或流。在一个示例中,内容提供商站点412A-412N可被配置来使用IP套件提供多媒体内容。例如,内容提供商站点可被配置来根据实时流式传输协议(RealTime Streaming Protocol,RTSP)、HTTP等向接收器装置提供多媒体内容。此外,内容提供商站点412A-412N可被配置来通过广域网408向接收器装置、计算装置402A-402N和/或电视服务提供商站点406中的一者或多者提供数据(包括基于超文本的内容等)。内容提供商站点412A-412N可包括一个或多个web服务器。由数据提供商站点412A-412N提供的数据可根据数据格式来定义。

再次参考图1,源装置102包括视频源104、视频编码器106、数据封装器107和接口108。视频源104可包括被配置来捕获和/或存储视频数据的任何装置。例如,视频源104可包括摄像机和可操作地耦接到其的存储装置。视频编码器106可包括被配置来接收视频数据并生成表示视频数据的合规比特流的任何装置。合规比特流可指代视频解码器可接收并从其再现视频数据的比特流。合规比特流的方面可根据视频编码标准来定义。当生成合规比特流时,视频编码器106可压缩视频数据。压缩可能是有损的(对于观看者而言是可辨别的或不可辨别的)或无损的。图5是展示可实施用于对本文所描述的视频数据进行编码的技术的视频编码器500的示例的框图。应注意,尽管示例性视频编码器500展示为具有不同的功能块,但这种展示是出于描述性目的并且不将视频编码器500和/或其子部件限于特定的硬件或软件架构。视频编码器500的功能可使用硬件、固件和/或软件实施方式的任何组合来实现。

视频编码器500可执行图片区域的帧内预测编码和帧间预测编码,并且因此可称为混合视频编码器。在图5所展示的示例中,视频编码器500接收源视频块。在一些示例中,源视频块可包括已经根据编码结构进行划分的图片区域。例如,源视频数据可包括宏块、CTU、CB、其子分区和/或另一种等效编码单元。在一些示例中,视频编码器500可被配置来执行源视频块的附加子分区。应注意,无论在编码之前和/或在编码期间如何分割源视频数据,本文所描述的技术通常都适用于视频编码。在图5所展示的示例中,视频编码器500包括求和器502、变换系数生成器504、系数量化单元506、逆量化和变换系数处理单元508、求和器510、帧内预测处理单元512、帧间预测处理单元514、滤波器单元516以及熵编码单元518。如图5所展示,视频编码器500接收源视频块并输出比特流。

在图5所展示的示例中,视频编码器500可通过从源视频块减去预测视频块来生成残差数据。在下面详细描述预测视频块的选择。求和器502表示被配置来执行此减去操作的部件。在一个示例中,视频块的减去发生在像素域中。变换系数生成器504对残差块或其子分区应用变换诸如离散余弦变换(DCT)、离散正弦变换(DST)或概念上类似的变换(例如,可将四个8×8变换应用于16×l6残差值阵列),以产生一组残差变换系数。变换系数生成器504可被配置来执行离散三角变换族中所包括的变换、包括其近似计算的任何和所有组合。变换系数生成器504可将变换系数输出到系数量化单元506。系数量化单元506可被配置来执行变换系数的量化。量化过程可减少与系数中的一些或全部相关联的比特深度。量化程度可改变经编码视频数据的率失真(即,比特率对视频质量)。可通过调整量化参数(QP)来修改量化程度。可基于条带级别值和/或CU级别值(例如,CU delta QP值)来确定量化参数。QP数据可包括用于确定QP以对特定组变换系数进行量化的任何数据。如图5所展示,量化的变换系数(可称为级别值)被输出到逆量化和变换系数处理单元508。逆量化和变换系数处理单元508可被配置来应用逆量化和逆变换,以生成重构的残差数据。如图5所展示,在求和器510处,可将重构的残差数据添加到预测视频块中。以此方式,可重构经编码视频块并且可使用所得重构的视频块来评估给定预测、变换和/或量化的编码质量。视频编码器500可被配置来执行多个编码回合(coding pass)(例如,在改变预测、变换参数和量化参数中的一者或多者的同时执行编码)。可基于对重构的视频块的评估来优化比特流或其他系统参数的率失真。此外,可存储重构的视频块并将其用作预测后续块的参考。

再次参考图5,帧内预测处理单元512可被配置来为待编码的视频块选择帧内预测模式。帧内预测处理单元512可被配置来评估帧并确定帧内预测模式以用于对当前块进行编码。如以上所描述,可能的帧内预测模式可包括平面预测模式、DC预测模式和角度预测模式。此外,应注意,在一些示例中,可根据亮度预测模式的预测模式推断色度分量的预测模式。帧内预测处理单元512可在执行一个或多个编码回合之后选择帧内预测模式。此外,在一个示例中,帧内预测处理单元512可基于率失真分析来选择预测模式。如图5所展示,帧内预测处理单元512将帧内预测数据(例如,语法元素)输出到熵编码单元518和变换系数生成器504。如以上所描述,对残差数据执行的变换可以是模式相关的(例如,可基于预测模式来确定二次变换矩阵)。

再次参考图5,帧间预测处理单元514可被配置来对当前视频块执行帧间预测编码。帧间预测处理单元514可被配置来接收源视频块并计算视频块的PU的运动矢量。运动向量可指示当前视频帧内的视频块的PU相对于参考帧内的预测块的位移。帧间预测编码可使用一个或多个参考图片。此外,运动预测可以是单向预测(使用一个运动矢量)或双向预测(使用两个运动矢量)。帧间预测处理单元514可被配置来通过计算由例如绝对差之和(sumof absolute difference,SAD)、平方差之和(sum of square difference,SSD)或其他差异度量确定的像素差选择预测块。如以上所描述,可根据运动矢量预测来确定并指定运动矢量。帧间预测处理单元514可被配置来执行运动矢量预测,如以上所描述。帧间预测处理单元514可被配置来使用运动预测数据生成预测块。例如,帧间预测处理单元514可将预测视频块定位在帧缓冲器(图5中未示出)内。应注意,帧间预测处理单元514可进一步被配置来将一个或多个内插滤波器应用于重构的残差块,以计算在运动估计中使用的次整数像素值。帧间预测处理单元514可将用于所计算的运动矢量的运动预测数据输出到熵编码单元518。

再次参考图5,滤波器单元516接收重构的视频块和编码参数并输出修改后的重构视频数据。滤波器单元516可被配置来执行去块滤波和/或样本自适应偏移(SampleAdaptive Offset,SAO)滤波。SAO滤波是可用于通过向重构的视频数据添加偏移来改善重构的非线性幅度映射。应注意,如图5所展示,帧内预测处理单元512和帧间预测处理单元514可经由滤波器单元216接收修改后的重构视频块。熵编码单元518接收量化的变换系数和预测语法数据(即,帧内预测数据和运动预测数据)。应注意,在一些示例中,在将量化的变换系数输出到熵编码单元518之前,系数量化单元506可执行对包括所述系数的矩阵的扫描。在其他示例中,熵编码单元518可执行扫描。熵编码单元518可被配置来根据本文所描述的技术中的一种或多种执行熵编码。以此方式,视频编码器500表示被配置来根据本公开的一种或多种技术生成经编码视频数据的装置的示例。

再次参考图1,数据封装器107可接收经编码视频数据并根据所定义的数据结构生成合规比特流(例如,NAL单元序列)。接收合规比特流的装置可从合规比特流再现视频数据。此外,如以上所描述,子比特流提取可指代接收ITU-T H.265合规比特流的装置通过丢弃和/或修改所接收的比特流中的数据来形成新的ITU-T H.265合规比特流的过程。应注意,可使用术语一致性比特流来代替术语合规比特流。

在一个示例中,数据封装器107可被配置来根据本文所描述的一种或多种技术生成语法。应注意,数据封装器107不需要一定与视频编码器106位于同一物理装置中。例如,描述为由视频编码器106和数据封装器107执行的功能可分布在图4所展示的装置之间。在一个示例中,图片可分割成图块集和图块,其中图块集是图块序列并且图块是编码树单元序列。图块集可覆盖图片的矩形区。图7展示被划分成六个图块集的图片的示例。在图7所展示的示例中,每个图块集是矩形的。每个图块集可具有布置在不同数量的图块列和行的列中的不同数量的图块。但在另一个示例中,每个图块集可具有相同数量的图块。另外,在每个图片中,可改变每个图块集中的图块列的数量和图块行的数量。可发信号通知标记以指示在经编码视频序列中每个图块集中的图块列的数量和图块行的数量是固定的。应注意,“图块集”可替代地称为“条带”。因此,术语“图块集(tile set)”或“图块集(tileset)”和条带可以可互换地使用。

如以上所描述,表4展示JVET-K100l中所提供的一般NAL单元语法。如上进一步所描述,JVET-K1001提供尚未定义NAL单元类型的位置。然而,应注意,2018年7月10日至18日在斯洛文尼亚卢布尔雅那举行的ISO/IEC JTC1/SC29/WG11第11次会议的“关于高级语法起点(On High Level Syntax Starting Point)”的文档JVET-K0325(以引用方式并入本文并且称为JVET-K0325)提供了待添加到JVET-K1001中的NAL单元类型。在一个示例中,根据本文所描述的技术,数据封装器107可被配置来发信号通知表18中所包括的NAL单元类型中的一种或多种。

表18

关于表18,可定义以下内容:

intra random access point(IRAP)picture:每个VCL NAL单元所具有的nal_unit_type等于IRAP_NUT的经编码图片。

non-IRAP picture:每个VCL NAL单元所具有的nal_unit_type等于NON_IRAP_NUT的经编码图片。

表18中示出作为NAL单元发信号通知图片标头。在图片标头中发信号通知语法参数并允许在图块集标头中覆写它们可实现比特节省并仍然支持灵活性。在一些示例中,根据本文的技术,同一图片标头可适用于多个图片。这可提供更多的比特节省。此外,将图片标头作为其自己的NAL单元使得多个图片轻松参考同一图片标头。

与图块参数相关的标头可具有以下方面:1.其可适用于不止一个图块,例如,适用于图块集或图块集合,因此,其可以是图块集标头;和/或2.其可根据需要选择性地覆写图片标头中的某些参数。这可由图块集标头中的一组存在标记控制。

应注意,在替代示例中,PICH_NUT可以是为每个图片/图块集激活的非VCL NAL单元。例如,这种情况下的NAL单元表可如表18A所示:

表18A

在一个示例中,可使用图块、图块列、图块行和图块集的以下定义。应注意,词语“图块集(tileset)”和“图块集(tile set)”可互换地使用并且可意指相同的东西。

图块:图片中特定图块列和特定图块行内的经编码树块(coded tree block,CTB)的矩形区。

图块列:具有与图片高度相等的高度和由图片参数集中的语法元素指定的宽度的CTB矩形区。

图块行:具有由图片参数集中的语法元素指定的高度和与图片宽度相等的宽度的CTB矩形区。

图块集:一个或多个图块的集合。在一个示例中,图块集的形状应是矩形的。图块集仅可包括整数数量的相连图块。在一个示例中,在图块集中,每个图块必须沿列或行维度与另一个图块相连,或者图块集只能有一个图块。

在一个示例中,NONIRAP_NUT可以是经编码的非IRAP图块集tileset_layer_rbsp(),并且IRAP_NUT可以是经编码的TRAP图块集tileset_layer_rbsp()。通过仅提取用于IRAP图块集的数据的子比特流提取过程获得的比特流可独立地解码。此提取的比特流中对应于图块集的第一个图片或子图片是IRAP图片或子图片。

表19展示了可由数据封装器107根据本文的技术发信号通知的tileset_layer_rbsp()语法的示例。

tileset_layer_rbsp(){ 描述符
tileset_header0
tileset_data0
rbsp_tileset_trailing_bits0
}

表19

表20展示了可由数据封装器107根据本文的技术发信号通知的tileset_header()语法的示例。

tileset_header(){ 描述符
ts_pic_header_id ue(v)
tile_set_id ue(v)
first_tile_id ue(v)
num_tiles_in_setdata ue(v)
tileset_coding_params()
}

表20

关于表20,相应的语法元素可基于以下定义:

ts_pic_header_id指定了适用于此图块集的图片标头的pic_header_id的值。ts_pic_header_id的值应在0至232-1(包括端值)的范围内。

tile_set_id指定了此图块集的图块集标识符。

first_tile_id指定了具有标识符tile_set_id的图块集中存在于按照此tileset_header()的tileset_data()中的第一个图块的TileId(图块标识符)。

num_tiles_in_setdata指定了具有标识符tile_set_id的图块集中存在于按照此tileset_header()的tileset_data()中的图块的数量。

表21展示了可由数据封装器107根据本文的技术发信号通知的tileset_header()语法的示例。

tileset_header(){ 描述符
ts_pic_header_id ue(v)
first_tile_set_id ue(v)
num_tile_set_ids_minusl ue(v)
first_tile_id_in_first_tileset ue(v)
num_tiles_in_setdata_in_last_tileset ue(v)
tileset_coding_params()
}

表21

关于表21,相应的语法元素可基于以下定义:

ts_pic_header_id指定了适用于此图块集的图片标头的pic_header_id的值。ts_pic_header_id的值应在0至232-1(包括端值)的范围内。

first_tile_set_id指定了按照tileset_header()的tileset_data()中的第一个图块集的图块集标识符。

num_tile_set_ids_minus1+1指定了存在于按照此tileset_header()的tileset_data()中的图块集的数量。

first_tile_id_in_first_tileset指定了第一个图块集中存在于按照此tileset_header()的tileset_data()中的第一个图块的TileId(图块标识符)。

num_tiles_in_setdata_in_last_tileset指定了最后一个图块集中存在于按照此tileset_header()的tileset_data()中的图块的数量。

表22展示了可由数据封装器107根据本文的技术发信号通知的tileset_header()语法的示例。

tileset_header(){ 描述符
first_tile_set_id ue(v)
num_tile_set_ids_minus1 ue(v)
first_tile_id_in_first_tileset ue(v)
if(num_tile_set_ids_minus1==0)
mum_tiles_in_setdata_in_first_tileset ue(v)
else if(num_tile_set_ids_minus1>0)
numm_tiles_in_setdata_in_last_tileset ue(v)
tileset_coding_oarams0
}

表22

关于表22,相应的语法元素可基于以下定义:

first_tile_set_id指定了按照此tileset_header()的tileset_data()中的第一个图块集的图块集标识符。

num_tile_set_ids_minusl+1指定了存在于按照此tileset_header()的tileset_data()中的图块集的数量。

first_tile_id_in_first_tileset指定了第一个图块集中存在于按照此tileset_header()的tileset_data()中的第一个图块的TileId(图块标识符)。

num_tiles_in_setdata_in_first_tileset指定了第一个图块集中存在于按照此tileset_header()的tileset_data()中的图块的数量。

num_tiles_in_setdata_in_last_tileset指定了最后一个图块集中存在于按照此tileset_header()的tileset_data()中的图块的数量。

表22A展示了可由数据封装器107根据本文的技术发信号通知的tileset_header()语法的示例。在此示例中,tileset_data()中仅包括完整整数数量的图块集。这要求在tilset_header()中发信号通知更少的语法元素。

tileset_header(){ 描述符
ts_pic_header_id ue(v)
first_tile_set_id ue(v)
num_tile_set_ids_minus1 ue(v)
tileset_coding_params()
}

表22A

关于表22A,相应的语法元素可基于以下定义:

first_tile_set_id指定了按照tileset_header()的tileset_data()中的第一个图块集的图块集标识符。

num_tile_set_ids_minusl+1指定了存在于按照此tileset_header()的tileset_data()中的图块集的数量。

表23展示了可由数据封装器107根据本文的技术发信号通知的tileset_coding_parameters()语法的示例。

表23

关于表23,相应的语法元素可基于以下定义:

tileset_log2_diff_ctu_max_bt_size_present_flag等于1指定了存在tileset_log2_diff_ctu_max_bt_size。tileset_log2_diff_ctu_max_bt_size_present_flag等于0指定了不存在tileset_log2_diff_ctu_max_bt_size。当tileset_log2_diff_ctu_max_bt_size不存在时,根据与对于此图块集处于活动的此tilset_header()中的ts_pic_header_id相对应的pic_header()结构推断其等于log2_diff_ctu_max_bt_size。

tileset_log2_diff_ctu_maxjbt_size指定了对于此图块集可使用二叉分裂进行分裂的编码块的亮度CTB大小与最大亮度大小(宽度或高度)之间的差。log2_diff_ctu_max_bt_size的语义适用,图块集除外。

tileset_sbtmvp_size_override_flag_present_flag等于1指定了存在tileset_sbtmvp_size_override_flag和如果tileset_sbtmvp_size_override_flag等于1,则存在log2_tileset_sbtmvp_active_size_minus2。tileset_sbtmvp_size_override_flag_present_flag等于0指定了不存在tileset_sbtmvp_size_override_flag和log2_tileset_sbtmvp_active_size_minus2。当tileset_sbtmvp_size_override_flag和log2_tileset_sbtmvp_active_size_minus2不存在时,根据与对于此图块集处于活动的此tilset_header()中的ts_pic_header_id相对应的pic_header()结构推断它们分别等于sbtmvp_size_override_flag和log2_sbtmvp_active_size_minus2。

tilset_sbtmvp_size_override_flag等于1指定了对于当前图块集,存在语法元素log2_tilset_sbtmvp_active_size_minus2。sbtmvp_size_override_flag等于0指定了不存在语法元素log2_tilset_sbtmvp_active_size_minus2并且推断log2_tileset_sbtmvp_size_active_minus2等于log2_sbtmvp_size_active_minus2。

log2_tilset_sbtmvp_active_size_minus2+2指定了用于推导当前图块集的基于子块的TMVP的运动参数的子块大小的值。当log2_tilset_sbtmvp_size_active_minus2不存在时,推断其等于log2_sbtmvp_size_active_minus2。如下推导变量:

tileset_tmvp_info_present_flag等于1指定了可存在tileset_temporal_mvp_enabled_flag、tileset_mvd_l1_zero_flag和tileset_collocated_from_10_flag。tileset_tmvp_info_present_flag等于0指定了不存在tileset_temporal_mvp_enabled_flag、tileset_mvd_l1_zero_flag和tileset_collocated_from_10_flag。当tileset_temporal_mvp_enabled_flag、tileset_mvd_l1_zero_flag和tileset_collocated_from_10_flag不存在时,根据与对于此图块集处于活动的此tilset_header()中的ts_pic_header_id相对应的pic_header()结构推断它们分别等于pic_temporal_mvp_enabled_flag、mvd_l1_zero_flag和collocated_from_10_flag。

tileset_temporal_mvp_enabled_flag指定了时间运动矢量预测子是否可用于当前图块集的帧间预测。如果tileset_temporal_mvp_enabled_flag等于0,则应限定当前图块集的语法元素,以使得在对当前图块集的解码中不使用时间运动矢量预测子。否则(tileset_temporal_mvp_enabled_flag等于1),在对当前图块集的解码中可使用时间运动矢量预测子。当tileset_temporal_mvp_enabled_flag不存在时,根据与对于此图块集处于活动的此tilset_header()中的ts_pic_header_id相对应的pic_header()结构推断其值等于pic_temporal_mvp_enabled_flag。

tilset_mvd_l1_zero_flag等于1指示了对于当前图块集,不解析mvd_coding(x0,y0,1)语法结构并且针对compIdx=0..1将MvdL1[x0][y0][compIdx]设定为等于0。mvd_l1_zero_flag等于0指示了对于当前图块集,解析mvd_coding(x0,y0,1)语法结构。

tileset_collocated_from_10_flag等于1指定了对于当前图块集,根据参考图片列表0推导用于时间运动矢量预测的并置图片。collocated_from_10_flag等于0指定了对于当前图块集,根据参考图片列表1推导用于时间运动矢量预测的并置图片。当tileset_collocated_from_10_flag不存在时,根据与对于此图块集处于活动的此tilset_header()中的ts_pic_header_id相对应的pic_header()结构推断其等于collocated_from_10_flag。

tileset_six_minus_max_num_merge_cand_present_flag等于1指定了存在tileset_six_minus_max_num_merge_cand。tileset_six_minus_max_num_merge_cand_present_flag等于0指定了不存在tileset_six_minus_max_num_merge_cand。当tileset_six_minus_max_num_merge_cand不存在时,根据与对于此图块集处于活动的此tilset_header()中的ts_pic_header_id相对应的pic_header()结构推断其等于six_minus_max_num_merge_cand。

tileset_six_minus_max_num_merge_cand指定了6减去当前图块集中所支持的合并运动矢量预测(MVP)候选者的最大数量。如下推导合并MVP候选者的最大数量MaxNumMergeCand:

MaxNumMergeCand的值应在1至6(包括端值)的范围内。

tileset_dep_quant_info_present_flag等于1指定了存在tileset_dep_quant_enabled_flag。tileset_dep_quant_info_present_flag等于0指定了不存在tileset_dep_quant_enabled_flag。当tileset_dep_quant_enabled_flag不存在时,根据与对于此图块集处于活动的此tilset_header()中的ts_pic_header_id相对应的pic_header()结构推断其等于dep_quant_enabled_flag。

tileset_dep_quant_enabled_flag等于0指定了对于当前图块集,禁用依赖性量化。tileset_dep_quant_enabled_flag等于1指定了对于当前图块集,启用依赖性量化。

tileset_sign_data_hiding_enabled_flag等于0指定了对于当前图块集,禁用符号比特隐藏。tile_sign_data_hiding_enabled_flag等于1指定了对于当前图块集,启用符号比特隐藏。当tile_sign_data_hiding_enabled_flag不存在时,根据与对于此图块集处于活动的此tilset_header()中的ts_pic_header_id相对应的pic_header()结构推断其等于sign_data_hiding_enabled_flag。

表24展示了可由数据封装器107根据本文的技术发信号通知的tileset_data()语法的示例。

tileset_data(){ 描述符
do{
coding_tree_unit()
end_of_tileset_flag ae(v)
CtbAddrInRs++
}while(!end_of_tileset_flag)
}

表24

关于表24,相应的语法元素可基于以下定义:

end_of_tileset_flag等于0指定了图块集中跟随有另一个CTU。end_of_tileset_flag等于1指定了图块集条带的结束,即,图块集中没有跟随另外的CTU。

表25展示了可由数据封装器107根据本文的技术发信号通知的rbsp_tileset_trailing_bits()语法的示例。

rbsp_tileset_trailing_bits(){ 描述符
rbsp_trailing_bits()
while(more_rbsp_trailing_data())
cabac_zero_word/*equal to 0x0000*/ f(16)
}

表25

表26展示了可由数据封装器107根据本文的技术发信号通知的

pic_header_rbsp()语法的示例。

pic_header_rbsp(){ 描述符
pic_header()
rbsp_pic_header_trailing_bits()
}

表26

表27展示了可由数据封装器107根据本文的技术发信号通知的pic_header()语法的示例。

pic_header(){ 描述符
pic_parameter_set_id ue(v)
pic_header_id ue(v)
picture_type ue(v)
if(picture_type!=I){
log2_diff_ctu_max_bt_size ue(v)
if(sps_sbtmvp_enabled_flag){
sbtmvp_size_override_flag u(1)
if(sbtmvp_size_override_flag)
log2_sbtmvp_active_size_minus2 u(3)
}
if(sps_temporal_mvp_enabled_flag)
pic_temporal_mvp_enabled_flag u(1)
if(picture_type==B)
mvd_l1_zero_flag u(1)
if(pie_temporal_mvp_enabled_flag){
if(picture_type==B)
collocated_from_I0_flag u(1)
}
six_minus_max_num_merge_cand ue(v)
}
dep_quant_enabled_flag u(1)
if(!dep_quant_enabled_flag)
sign_data_hiding_enabled_flag u(1)
byte_alignment()
}

表27

关于表24,相应的语法元素可基于以下定义:

pps_pic_parameter_set_id标识了用于由其他语法元素参考的PPS。pps_pic_parameter_set_id的值应在0至63(包括端值)的范围内。

pic_header_id标识了用于由其他语法元素参考的图片标头。pps_pic_parameter_set_id的值应在0至232-1(包括端值)的范围内。

picture_type指示了根据表28的图片的编码类型。在符合本规范的此版本的比特流中,pic_type的值应等于0、1或2。保留pic_type的其他值以供未来使用。符合本规范的此版本的解码器应忽略pic_type的保留值。

picture_type 经编码图片中可存在的picture_type的名称
0 B(B图片)
1 P(P图片)
2 I(I图片)

表28

log2_diff_ctu_max_bt_size指定了可使用二叉分裂进行分裂的编码块的亮度CTB大小与最大亮度大小(宽度或高度)之间的差。

sbtmvp_size_override_flag等于1指定了对于当前条带,存在语法元素log2_sbtmvp_active_size_minus2。sbtmvp_size_override_flag等于0指定了不存在语法元素log2_atmvp_active_size_minus2并且推断log2_sbtmvp_size_active_minus2等于log2_sbtmvp_default_size_minus2。

log2_sbtmvp_active_size_minus2+2指定了用于推导当前条带的基于子块的TMVP的运动参数的子块大小的值。当log2_sbtmvp_size_active_minus2不存在时,推断其等于log2_sbtmvp_default_size_minus2。如下推导变量:

pic_temporal_mvp_enabled_flag指定了时间运动矢量预测子是否可用于当前图片的帧间预测。如果pic_temporal_mvp_enabled_flag等于0,则应限定当前图片的语法元素,以使得在对当前图片的解码中不使用时间运动矢量预测子。否则(pic_temporal_mvp_enabled_flag等于1),在对当前图片的解码中可使用时间运动矢量预测子。当pic_temporal_mvp_enabled_flag不存在时,推断其值等于0。

mvd_l1_zero_flag等于1指示了不解析mvd_coding(x0,y0,1)语法结构并且针对compIdx=0..1将MvdL1[x0][y0][compIdx]设定为等于0。mvd_ll_zero_flag等于0指示了解析mvd_coding(x0,y0,1)语法结构。collocated_from_10_flag等于1指定了根据参考图片列表0推导用于时间运动矢量预测的并置图片。collocated_from_10_flag等于0指定了根据参考图片列表1推导用于时间运动矢量预测的并置图片。当collocated_from_10_flag不存在时,推断其等于1。

six_minus_max_num_merge_cand指定了6减去条带中所支持的合并运动矢量预测(MVP)候选者的最大数量。如下推导合并MVP候选者的最大数量MaxNumMergeCand:

MaxNumMergeCand的值应在1至6(包括端值)的范围内。

dep_quant_enabled_flag等于0指定了禁用依赖性量化。dep_quant_enab1ed_flag等于1指定了启用依赖性量化。

sign_data_hiding_enabled_flag等于0指定了禁用符号比特隐藏。sign_data_hiding_enabled_flag等于1指定了启用符号比特隐藏。当sign_data_hiding_enabled_flag不存在时,推断其等于0。

应注意,在一个示例中,可在PPS_NUT而非PICH_NUT中发信号通知pic_header()中的一个或多个语法元素。

表29展示了可由数据封装器107根据本文的技术发信号通知的rbsp_pic_header_trailing_bits()语法的示例。

rbsp_pic_header_trailing_bits(){ 描述符
rbsp_trailing_bits()
while(more_rbsp_trailing_data())
cabac_zero_word/*equal to 0x0000*/ f(16)
}

表29

应注意,在一些示例中,图片标头可适用于一个或多个图片。此外,在一些示例中,可根据图块集参数针对图块集覆写图片标头中的参数。在一些示例性情况下,某些限制可适用于针对图块集覆写图片标头中的参数。

如以上所描述,在ITU-T H.265中,使用图片参数集发信号通知图片的一些或全部图块结构,即,一个或多个图块和/或图块集相关参数。在一个示例中,根据本文的技术,可在图片参数集中发信号通知图块结构,其中,如上所描述,在picture_header()中标识图片参数集。在另一个示例中,可在序列参数集(SPS)中发信号通知一些或全部图块结构,即,一个或多个图块和/或图块集相关参数。

以此方式,源装置102表示一种装置的示例,所述装置被配置来:发信号通知网络抽象层单元中的语法元素的值,所述网络抽象层单元指示包括在网络抽象层单元的图块集层语法结构;并且发信号通知图块集层语法结构中所包括的一个或多个图块集参数的值。

再次参考图1,接口108可包括被配置来接收由数据封装器107生成的数据并将数据传输和/或存储到通信介质的任何装置。接口108可包括网络接口卡(诸如以太网卡),并且可包括光收发器、射频收发器或可发送和/或接收信息的任何其他类型的装置。此外,接口108可包括可使得能够将文件存储在存储装置上的计算机系统接口。例如,接口108可包括支持外围部件互连(Peripheral Component Interconnect,PCI)和外围部件快速互连(Peripheral Component Interconnect Express,PCIe)总线协议、专有总线协议、通用串行总线(Universal Serial Bus,USB)协议的芯片组、FC或可用于将对等装置互连的任何其他逻辑和物理结构。

再次参考图1,目的地装置120包括接口122、数据解封器123、视频解码器124和显示器126。接口122可包括被配置来从通信介质接收数据的任何装置。接口122可包括网络接口卡(诸如以太网卡),并且可包括光收发器、射频收发器或可接收和/或发送信息的任何其他类型的装置。此外,接口122可包括使得能够从存储装置检索合规视频比特流的计算机系统接口。例如,接口122可包括支持PCI和PCIe总线协议、专有总线协议、USB协议的芯片组、PC或可用于将对等装置互连的任何其他逻辑和物理结构。数据解封器123可被配置来接收并解析本文所描述的示例性语法结构中的任一个。

视频解码器124可包括被配置来接收比特流(例如,MCTS子比特流提取)和/或其可接受的变型并从其再现视频数据的任何装置。显示器126可包括被配置来显示视频数据的任何装置。显示器126可包括多种显示装置中的一种,诸如液晶显示器(liquid crystaldisplay,LCD)、等离子体显示器、有机发光二极管(organic light emitting diode,OLED)显示器或另一种类型的显示器。显示器126可包括高清晰度显示器或超高清晰度显示器。应注意,尽管在图1所展示的示例中,视频解码器124描述为将数据输出到显示器126,但视频解码器124可被配置来将视频数据输出到各种类型的装置和/或其子部件。例如,视频解码器124可被配置来将视频数据输出到任何通信介质,如本文所描述。

图6是展示根据本公开的一种或多种技术的可被配置来对视频数据进行解码的视频解码器的示例的框图。在一个示例中,视频解码器600可被配置来对变换数据进行解码并基于所解码的变换数据从变换系数重构残差数据。视频解码器600可被配置来执行帧内预测解码和帧间预测解码,并且因此可称为混合解码器。视频解码器600可被配置来解析上文在表1-表27中描述的语法元素的任何组合。视频解码器600可基于所解析的语法元素的值执行视频解码。例如,可基于图片是否具有特定类型来执行不同的视频解码技术。

在图6所展示的示例中,视频解码器600包括熵解码单元602、逆量化单元和逆变换系数处理单元604、帧内预测处理单元606、帧间预测处理单元608、求和器610、后滤波器单元612以及参考缓冲器614。视频解码器600可被配置来以与视频编码系统一致的方式对视频数据进行解码。应注意,尽管示例性视频解码器600展示为具有不同的功能块,但这种展示是出于描述性目的并且不将视频解码器600和/或其子部件限于特定的硬件或软件架构。视频解码器600的功能可使用硬件、固件和/或软件实施方式的任何组合来实现。

如图6所展示,熵解码单元602接收经熵编码的比特流。熵解码单元602可被配置来根据与熵编码过程互反的过程对来自比特流的语法元素和量化系数进行解码。熵解码单元602可被配置来根据本文所描述的熵编码技术中的任一种执行熵解码。熵解码单元602可以与视频编码标准一致的方式确定经编码比特流中的语法元素的值。如图6所展示,熵解码单元602可从比特流确定量化参数、量化的系数值、变换数据和预测数据。在图6所展示的示例中,逆量化单元和逆变换系数处理单元604从熵解码单元602接收量化参数、量化的系数值、变换数据和预测数据并输出重构的残差数据。

再次参考图6,可将重构的残差数据提供到加法器610,加法器610可将重构的残差数据添加到预测视频块中并生成重构的视频数据。可根据预测视频技术(即,帧内预测和帧间预测)来确定预测视频块。帧内预测处理单元606可被配置来接收帧内预测语法元素并从参考缓冲器614检索预测视频块。参考缓冲器614可包括被配置来存储视频数据的一个或多个帧的存储器装置。帧内预测语法元素可标识帧内预测模式,诸如以上所描述的帧内预测模式。帧间预测处理单元608可接收帧间预测语法元素并生成运动矢量,以标识存储在参考缓冲器616中的一个或多个参考帧中的预测块。帧间预测处理单元608可产生运动补偿的块,从而有可能基于内插滤波器执行内插。语法元素中可包括待用于具有子像素精度的运动估计的内插滤波器的标识符。帧间预测处理单元608可使用内插滤波器来计算参考块的次整数像素的内插值。后滤波器单元614可被配置来对重构的视频数据执行滤波。例如,后滤波器单元614可被配置来例如基于比特流中指定的参数执行去块滤波和/或样本自适应偏移(SAO)滤波。此外,应注意,在一些示例中,后滤波器单元614可被配置来执行专有的自主滤波(例如,视觉增强,诸如蚊式噪声降低)。如图6所展示,可由视频解码器600输出重构的视频块。以此方式,视频解码器600表示一种装置的示例,所述装置被配置来:在网络抽象层单元中解析指示网络抽象层单元中包括图块集层语法结构的语法元素的值;解析图块集层语法结构中所包括的一个或多个图块集参数的值;并且基于一个或多个图块集参数的所解析的值来生成视频数据。

在一个或多个示例中,所描述的功能可在硬件、软件、固件或它们的任何组合中实现。如果在软件中实现,则功能可作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输并且由基于硬件的处理单元执行。计算机可读介质可包括计算机可读存储介质,其对应于有形介质诸如数据存储介质;或通信介质,其包括例如根据通信协议促进计算机程序从一个位置传递到另一个位置的任何介质。以此方式,计算机可读介质通常可对应于(1)为非暂时性的有形计算机可读存储介质或(2)诸如信号或载波的通信介质。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中所描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可包括计算机可读介质。

例如但不限于,此类计算机可读存储介质可包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置、磁盘存储装置、或其他磁性存储装置、快闪存储器或可用于存储呈指令或数据结构形式的所需程序代码并且可由计算机访问的任何其他介质。另外,任何连接都可适当地称为计算机可读介质。例如,如果指令是使用同轴电缆、光纤电缆、双绞线、数字用户线路(digital subscriber line,DSL)或诸如红外、无线电和微波的无线技术从网站、服务器或其他远程源传输,则同轴电缆、光纤电缆、双绞线、DSL或诸如红外、无线电和微波的无线技术包括在介质的定义中。然而,应理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时性介质,而是针对非暂时性有形存储介质。如本文所用的磁盘和光盘包括紧凑盘(compact disc,CD)、激光盘、光盘、数字通用盘(digitalversatile disc,DVD)、软盘和蓝光盘,其中磁盘通常磁性地再现数据,而光盘用激光器光学地再现数据。以上的组合也应包括在计算机可读介质的范围内。

指令可由一个或多个处理器执行,所述一个或多个处理器诸如一个或多个数字信号处理器(digital signal processor,DSP)、通用微处理器、专用集成电路(applicationspecific in-tegrated circuit,ASIC)、现场可编程逻辑阵列(field programmablelogic array,FPGA)、或其他等效的集成或离散逻辑电路。因此,如本文所用,术语“处理器”可指代前述结构中的任一者或适合于实现本文所描述的技术的任何其他结构。另外,在一些方面,本文所描述的功能性可在被配置用于编码和解码的专用硬件模块和/或软件模块内提供,或者结合在组合的编解码器中。另外,所述技术可在一个或多个电路或逻辑元件中完全实现。

本公开的技术可在广泛多种的装置或设备中实现,所述装置或设备包括无线手持机、集成电路(integrated circuit,IC)或IC组(例如芯片组)。本公开中描述了各种部件、模块或单元以强调被配置来执行所公开技术的装置的功能方面,但这些部件、模块或单元不一定需要由不同的硬件单元来实现。相反,如以上所描述,各种单元可组合在编解码器硬件单元中,或者由包括如以上所描述的一个或多个处理器的互操作硬件单元的集合与合适的软件和/或固件相结合提供。

此外,上述实施例中的每一个中所用的每个功能块或基站装置和终端装置的各种特征可由电路系统实现或执行,所述电路系统通常是一个集成电路或多个集成电路。被设计来执行本说明书中所描述的功能的电路系统可包括通用处理器、数字信号处理器(DSP)、专用或通用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑装置、离散门或晶体管逻辑、或离散硬件部件或它们的组合。通用处理器可以是微处理器,或替代地,处理器可以是常规处理器、控制器、微控制器或状态机。以上所描述的通用处理器或每个电路可由数字电路配置或可由模拟电路配置。此外,当由于半导体技术的进步而出现使得集成电路取代当前集成电路的技术时,根据此技术的集成电路也能够使用。

已经描述了各种示例。这些和其他示例在以下权利要求书的范围内。

<交叉引用>

本非临时申请根据35 U.S.C.§119要求2018年9月20日提交的临时申请号62/734,232的优先权,所述申请的全部内容特此以引用方式并入。

47页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于画面编码和解码的方法和设备

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类