用于按比例缩放变换系数水平值的系统和方法与流程

文档序号:18832685发布日期:2019-10-09 03:58阅读:156来源:国知局
用于按比例缩放变换系数水平值的系统和方法与流程
本公开涉及视频编码,并且更具体地,涉及用于对视频数据的图片进行分块的技术。
背景技术
:数字视频功能可以并入到各种设备中,包括数字电视、便携式计算机或台式计算机、平板计算机、数字录音设备、数字媒体播放器、视频游戏设备、包括所谓的智能电话的蜂窝电话、医疗成像设备等。可以根据视频编码标准对数字视频进行编码。视频编码标准可以包含视频压缩技术。视频编码标准的示例包括iso/iecmpeg-4visual和itu-th.264(也称为iso/iecmpeg-4avc)和高效视频编码(hevc)。hevc为高效视频编码(hevc),2015年4月的recitu-th.265,其通过引用结合于此,并且在本文中称为itu-th.265。itu-th.265的扩展和改进目前正在考虑用于下一代视频编码标准的开发。例如,itu-t视频编码专家组(vceg)和iso/iec(运动图像专家组(mpeg)(统称为联合视频探索组(jvet))正在研究未来视频编码技术标准化的潜在需求,其压缩能力远远超过目前的hevc标准。联合浏览模型3(jem3)、联合浏览测试模型3(jem3)的算法描述、iso/iecjtc1/sc29/wg11文档:jvet-c1001v3,2016年5月,日内瓦,ch(其通过引用并入本文)描述了由jvet进行的协调测试模型研究下的编码特征,作为超出itu-th.265能力的潜在增强视频编码技术。应该注意的是,jem3的编码特征是在弗劳恩霍夫(fraunhofer)研究组织维护的jem参考软件中实现的。目前,可以使用更新的jem参考软件版本3(jem3.0)。如本文所使用的,术语jem用于共同地指代jem3中包括的算法和jem参考软件的实现。视频压缩技术使得能够减少用于存储和发送视频数据的数据需求。视频压缩技术可以通过利用视频序列中的固有冗余来减少数据需求。视频压缩技术可以将视频序列细分成连续的较小部分(即,视频序列内的帧组、帧组内的帧、帧内的切片、切片内的编码树单元(例如,宏块)、编码树单元内的编码块等)。帧内预测编码技术(例如,图片内(空间))和帧间预测技术(即,图片间(时间))可以用于产生要编码的视频数据单元与视频数据的参考单元之间的差值。差值可以称为残差数据。可以将残差数据编码为量化变换系数。语法元素可以涉及残差数据和参考编码单元(例如,帧内预测模式索引、运动矢量和块矢量)。可以对残差数据和语法元素进行熵编码。熵编码的残差数据和语法元素可以被包括在兼容的比特流中。技术实现要素:本发明的一个方面是一种视频数据的编码方法,该方法包括:接收具有宽度和高度的系数水平值的矩形阵列;以及对于包括在所述矩形阵列中的每个系数水平值,产生对应的变换系数值,其中,产生对应的变换系数值包括:基于量化参数以及所述矩形阵列的宽度和高度来按比例缩放系数水平值。附图说明图1是示出根据本公开的一种或多种技术的根据四叉树二叉树(quadtreebinarytree)分块所编码的一组图片的示例的概念图。图2是示出根据本公开的一种或多种技术的四叉树二叉树的示例的概念图。图3是示出根据本公开的一种或多种技术的视频分量四叉树二叉树分块的概念图。图4是示出根据本公开的一种或多种技术的视频分量采样格式的示例的概念图。图5是示出根据本公开的一种或多种技术的视频数据块的可能编码结构的概念图。图6a是示出根据本公开的一种或多种技术的对视频数据块进行编码的示例的概念图。图6b是示出根据本公开的一种或多种技术的对视频数据块进行编码的示例的概念图。图7是示出根据本公开的一种或多种技术的可以被配置为对视频数据进行编码和解码的系统的示例的框图。图8是示出根据本公开的一种或多种技术的可以被配置为对视频数据进行编码的视频编码器的示例的框图。图9是示出根据本公开的一种或多种技术的视频分量四叉树二叉树分块的概念图。图10是示出根据本公开的一种或多种技术的视频分量四叉树二叉树分块的概念图。图11是示出根据本公开的一种或多种技术的四叉树二叉树的示例的概念图。图12是示出根据本公开的一种或多种技术的四叉树二叉树分块的概念图。图13是示出根据本公开的一种或多种技术的四叉树二叉树分块的概念图。图14是示出根据本公开的一种或多种技术的可以被配置为对视频数据进行解码的视频解码器的示例的框图。图15a是示出根据本公开的一种或多种技术执行帧内预测的示例的概念图。图15b是示出根据本公开的一种或多种技术执行帧内预测的示例的概念图。图16a是示出根据本公开的一种或多种技术执行帧内预测的示例的概念图。图16b是示出根据本公开的一种或多种技术执行帧内预测的示例的概念图。具体实施方式总体上,本公开描述了用于编码视频数据的各种技术。特别地,本公开描述了用于对视频数据的图片进行分块的技术。应当注意,尽管关于itu-th.264、itu-th.265和jem描述了本公开的技术,但是本公开的技术通常适用于视频编码。例如,本文描述的编码技术可以合并到包括块结构、帧内预测技术、帧间预测技术、变换技术、滤波技术和/或除itu-th.265和jem中包括的编码技术之外的熵编码技术的视频编码系统(包括基于未来视频编码标准的视频编码系统)中。因此,对itu-th.264、itu-th.265和/或jem的引用是出于描述的目的,不应被解释为限制本文描述的技术的范围。此外,应当注意,通过引用并入本文中的文档是出于描述的目的,并且不应被解释为限制或产生关于本文使用的术语的歧义。例如,在并入的参考文献提供与另一个并入的参考文献和/或与本文中使用的术语不同的术语定义的情况下,该术语应该以如下的方式被解释:广泛地包括每个相应的定义和/或在包括备选方案中的每个特定定义。在附图和以下描述中阐述了一个或多个示例的细节。根据说明书和附图以及权利要求,其他特征、目的和优点将是显而易见的。视频内容通常包括由一系列帧(或图片)组成的视频序列。一系列帧也可以称为一组图片(gop)。每个视频帧或图片可以包括多个切片或拼块(tile),其中切片或拼块包括多个视频块。如本文所使用的,术语视频块通常可以指代图片的区域,或者可以更具体地指代可以被预测编码的最大样本值阵列、其子分区和/或对应的结构。此外,术语“当前视频块”可以指代正被编码或解码的图片的区域。视频块可以被定义为可以被预测编码的样本值阵列。应当注意,在一些情况下,像素值可以被描述为包括视频数据的各个分量的样本值,其也可以被称为颜色分量(例如,亮度(y)和色度(cb和cr)分量或者红色、绿色和蓝色分量)。应注意,在一些情况下,术语像素值和样本值可互换使用。可以根据扫描模式(例如,光栅扫描)在图片内对视频块进行排序。视频编码器可对视频块及其子分区执行预测编码。视频块和其子分区可以称为节点。itu-th.264规定了包括16×16亮度样本的宏块。也就是说,在itu-th.264中,图片被分段为宏块。itu-th.265规定了类似的编码树单元(ctu)结构。在itu-th.265中,图片被分段为ctu。在itu-th.265中,对于图片,ctu大小可以被设置为包括16×16、32×32或64×64亮度样本。在itu-th.265中,ctu由用于视频数据的每个分量(例如,亮度(y)和色度(cb和cr))的相应编码树块(ctb)组成。此外,在itu-th.265中,可以根据四叉树(qt)分块结构来对ctu进行分块,这导致ctu的ctb被分块为编码块(cb)。也就是说,在itu-th.265中,ctu可以被分块为四叉树叶节点。根据itu-th.265,将一个亮度cb与两个对应的色度cb和相关联的语法元素一起称为编码单元(cu)。在itu-th.265中,可以发信号通知cb的最小允许大小。在itu-th.265中,亮度cb的最小的最小允许大小是8×8亮度样本。在itu-th.265中,使用帧内预测或帧间预测对图片区域进行编码的决定是在cu级别进行的。在itu-th.265中,cu与其根在cu处的的预测单元(pu)结构相关联。在itu-th.265中,pu结构允许拆分亮度和色度cb,以便产生对应的参考样本。也就是说,在itu-th.265中,亮度和色度cb可以被分成相应的亮度和色度预测块(pb),其中pb包括应用相同预测的样本值块。在itu-th.265中,cb可以被分块为1、2或4个pb。itu-th.265支持从64×64样本下降到4×4样本的pb大小。在itu-th.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顶和m×m/4底)。对应于pb的帧内预测数据(例如,帧内预测模式语法元素)或帧间预测数据(例如,运动数据语法元素)用于产生pb的参考和/或预测样本值。jem指定ctu的最大大小为256×256亮度样本。jem指定四叉树加二叉树(qtbt)块结构。在jem中,qtbt结构使得四叉树叶节点能够通过二叉树(bt)结构进一步分块。也就是说,在jem中,二叉树结构使得四叉树叶节点能够竖直地或水平地递归划分。图1示出了ctu(例如,具有256×256亮度样本的大小的ctu)被分块为四叉树叶节点并且四叉树叶节点根据二叉树被进一步分块的示例。也就是说,在图1中,虚线表示四叉树中的附加二叉树分块。因此,jem中的二叉树结构实现方形和矩形叶节点,其中每个叶节点包括cb。如图1所示,包括在gop中的图片可以包括切片,其中每个切片包括ctu序列,并且每个ctu可以根据qtbt结构来分块。图1示出了切片中包括的一个ctu的qtbt分块的示例。图2是示出与图1所示的示例qtbt分块相对应的qtbt的示例的概念图。在jem中,通过发信号通知qt分裂标志和bt分裂模式语法元素来发信号通知qtbt。当qt分裂标志具有值1时,指示qt分裂。当qt分裂标志具有值0时,发信号通知bt分裂模式语法元素。当bt分裂模式语法元素具有值0时,不指示二叉分裂。当bt分裂模式语法元素具有值1时,指示分裂模式。当bt分裂模式语法元素具有值2时,指示水平分裂模式。此外,可以执行bt分裂,直到达到最大bt深度。因此,根据jem,可以基于表1中提供的伪语法来发信号通知图2中所示的qtbt:表1在一个示例中,当达到最大qt深度时,可以跳过qt标志的信令,并且可以推断出其值,例如,为0。在一个示例中,在当前深度小于最小qt深度时,可以跳过qt标志的信令,并且可以推断出其值,例如,为1。在一个示例中,当达到用于分块类型的信令的最大深度时,可以不在比特流中发信号通知关联的语法元素,并且可以推断出其值。在一个示例中,当尚未达到用于分块类型的信令的最小深度时,可以不在比特流中发信号通知关联的语法元素,并且可以推断出其值。在一个示例中,当不允许qt分裂并且当前深度小于最小bt深度时,然后可以修改bt分裂的信令以不允许bt分裂以等于0。在一个示例中,遵循树遍历可以用于发信号通知分裂决策。例如:1.当前节点的信号分裂决策2.对于i=1到当前节点的子节点数(步长为1),执行以下操作:a.确定对应于i的子节点n(这可以基于查找,即基于当前节点的分裂模式)b.通过递归调用遍历函数来遍历以子节点n为根的子树。在一个示例中,遵循树遍历可以用于发信号通知分裂决策。例如:1.对于i=1到当前节点的子节点数(步长为1),执行以下操作:a.确定对应于i的子节点n(这可以基于查找,即基于当前节点的分裂模式)b.通过递归调用遍历函数来遍历以子节点n为根的子树。c.当前节点的信号分裂决策在一个示例中,遵循树遍历可以用于发信号通知分裂决策。例如:1.对于i=1到当前节点的子节点数(步长为1),执行以下操作:a.确定对应于i的子节点n(这可以基于查找,即基于当前节点的分裂模式)b.通过递归调用遍历函数来遍历以子节点n为根的子树。2.当前节点的信号分裂决策在一个示例中,可以以增加的深度遍历树。在这种情况下,可以在行进到下一深度之前发信号通知特定深度处的节点的所有分裂决策。如图2和表1中所示,qt分裂标志语法元素和bt分裂模式语法元素与深度相关联,其中零深度对应于qtbt的根,而较高值深度对应于超出根的后续深度。此外,在jem中,亮度和色度分量可以具有单独的qtbt分块。也就是说,在jem中,可以通过发信号通知相应的qtbt来独立地对亮度和色度分量进行分块。图3示出了根据亮度分量的qtbt和色度分量的独立qtbt所分块的ctu的示例。如图3所示,当独立qtbt用于对ctu进行分块时,亮度分量的cb不需要并且不必与色度分量的cb对齐。目前,在jem中,使用帧内预测技术对切片实现独立的qtbt结构。应当注意,在一些情况下,可能需要从相关的亮度变量值导出色度变量的值。在这些情况下,色度和色度格式的样本位置可用于确定亮度中的相应样本位置以确定相关的亮度变量值。另外,应该注意jem包括用于qtbt树的信令的以下参数:ctu大小:四叉树的根节点大小(例如,256×256、128×128、64×64、32×32、16×16亮度样本);minqtsize:最小允许四叉树叶节点大小(例如,16×16、8×8亮度样本);maxbtsize:最大允许二叉树根节点大小,即可以通过二叉分裂分块的叶四叉树节点的最大大小(例如,64×64亮度样本);maxbtdepth:最大允许二叉树深度,即可发生二叉分裂的最低水平,其中四叉树叶节点是根(例如,3);minbtsize:最小允许二叉树叶节点大小;即,二叉叶节点的最小宽度或高度(例如,4个亮度样本)。应该注意的是,在一些示例中,minqtsize、maxbtsize、maxbtdepth和/或minbtsize可以针对视频的不同分量而不同。在jem中,cb用于预测而无需进一步分块。也就是说,在jem中,cb可以是应用相同预测的样本值的块。因此,jemqtbt叶节点可以类似于itu-th.265中的pb。视频采样格式——其也可以称为色度格式——可以相对于cu中包括的亮度样本的数量来定义cu中包括的色度样本的数量。例如,对于4:2:0采样格式,亮度分量的采样率是水平和垂直方向的色度分量的两倍。结果,对于根据4:2:0格式所格式化的cu,亮度分量的样本阵列的宽度和高度是色度分量的每个样本阵列的宽度和高度的两倍。图4是示出根据4:2:0样本格式所格式化的编码单元的示例的概念图。图4示出了色度样本相对于cu内的亮度样本的相对位置。如上所述,通常根据水平和竖直亮度样本的数量来定义cu。因此,如图4所示,根据4:2:0样本格式所格式化的16×16cu包括亮度分量的16×16个样本和每个色度分量的8×8个样本。此外,在图4所示的示例中,示出了色度样本相对于与16×16cu相邻的视频块的亮度样本的相对位置。对于根据4:2:2格式所格式化的cu,亮度分量的样本阵列的宽度是每个色度分量的样本阵列宽度的两倍,但是亮度分量的样本阵列的高度等于每个色度分量的样本阵列的高度。此外,对于根据4:4:4格式所格式化的cu,亮度分量的样本阵列具有与每个色度分量的样本阵列相同的宽度和高度。如上所述,帧内预测数据或帧间预测数据用于产生样本值块的参考样本值。包括在当前pb或另一类型的图片区域结构中的样本值与相关联的参考样本(例如,使用预测产生的参考样本)之间的差异可以被称为残差数据。残差数据可以包括与视频数据的每个分量相对应的各个差值的阵列。残差数据可以在像素域中。诸如离散余弦变换(dct)、离散正弦变换(dst)、整数变换、小波变换或概念上类似的变换之类的变换可以应用于差值阵列以产生变换系数。应当注意,在itu-th.265中,cu与其根在cu水平处的变换单元(tu)结构相关联。也就是说,在itu-th.265中,为了产生变换系数,可以对差值阵列进行细分(例如,可以将四个8×8变换应用于16×16残差值阵列)。对于视频数据的每个分量,差值的这种细分可以称为变换块(tb)。应当注意,在itu-th.265中,tb不必与pb对齐。图5示出了可用于对特定cb进行编码的备选pb和tb组合的示例。此外,应注意,在itu-th.265中,tb可具有以下大小:4×4、8×8、16×16和32×32。应当注意,在jem中,对应于cb的残差值用于产生变换系数而无需进一步分块。也就是说,在jem中,qtbt叶节点可以类似于itu-th.265中的pb和tb。应当注意,在jem中,可以(在视频编码器中)应用核心变换和随后的二次变换以产生变换系数。对于视频解码器,变换的次序是相反的。此外,在jem中,是否应用二次变换以产生变换系数可取决于预测模式。可以对变换系数执行量化处理。量化对变换系数进行缩放以便改变表示一组变换系数所需的数据量。量化可以包括通过量化比例因子和任何相关的舍入函数(例如,舍入到最接近的整数)来对变换系数进行划分。量化的变换系数可以称为系数水平值。逆量化(或“反量化”)可以包括将系数水平值乘以量化比例因子。应当注意,如本文所使用的,在一些情况下,术语量化过程可以指通过除以比例因子以产生水平值并乘以比例因子以在某些情况下恢复变换系数。也就是说,量化处理在某些情况下可以指量化并且在某些情况下可以指逆量化。此外,应当注意,尽管在下面的示例中,关于与十进制符号相关联的算术运算描述了以下量化过程,但是这样的描述是出于说明性目的而不应被解释为限制性的。例如,这里描述的技术可以使用二叉操作等在设备中实现。例如,可以使用比特移位(bitshifting)操作等来实现这里描述的乘法和除法运算。图6a至图6b是示出对视频数据块进行编码的示例的概念图。如图6a所示,通过从当前视频数据块中减去一组预测值而产生残差,对残差执行变换,并量化变换系数以产生水平值,从而对当前视频数据块(例如,对应于视频分量的cb)进行编码。如图6b所示,通过对水平值执行逆量化,执行逆变换,并将一组预测值添加到所得到的残差来对当前视频数据块进行解码。应当注意,在图6a至图6b的示例中,重建块的样本值不同于被编码的当前视频块的样本值。以这种方式,编码可以被认为是有损的。然而,对于重建视频的观看者,样本值的差可以认为是可接受的或不可察觉的。此外,如图6a至图6b所示,使用比例因子阵列来执行按比例缩放。在itu-th.265中,通过选择缩放矩阵并将缩放矩阵中的每个条目乘以量化比例因子来产生比例因子阵列。在itu-th.265中,基于预测模式和颜色分量来选择缩放矩阵,其中定义了以下大小的缩放矩阵:4×4、8×8、16×16和32×32。因此,应该注意,itu-th.265没有为4×4、8×8、16×16和32×32以外的大小定义缩放矩阵。在itu-th.265中,量化比例因子的值可以由量化参数qp确定。在itu-th.265中,qp可以取0到51的52个值,并且qp的1的变化通常对应于量化比例因子值的变化约12%。此外,在itu-th.265中,可以使用预测量化参数值(其可以被称为预测qp值或qp预测值)和可选地发信号通知的量化参数δ值(可以称为qpδ值或δqp值)来导出一组变换系数的qp值。在itu-th.265中,可以针对每个cu来更新量化参数,并且可以针对亮度(y)和色度(cb和cr)分量中的每一个来导出量化参数。在itu-th.265中针对x×y阵列中的每个条目定义的逆量化过程可总结如下:d[x][y]=((transcoefflevel[x][y]*m[x][y]*levelscale[qp%6]<<(qp/6))+(1<<(bdshift-1)))>>bdshift其中d[x][y]是结果变换系数;transcoefflevel[x][y]是系数水平值;m[x][y]是比例矩阵;levelscale[k]={40,45,51,57,64,72}其中k=0.5qp是量化参数;bdshift=bitdepth+log2(ntbs)+10,其中bitdepth是相应分量的比特深度;log2(x)x的以2为底的对数。ntbs指定对应变换块的大小;x>>y是对x的二进制补码整数表示的算术右移y个二进制数;x>>y是对x的二进制补码整数表示的算术左移y个二进制数;并且x%y是x模数y。应注意,itu-th.265包括逆变换跳过(或旁路)模式。在一些情况下,可以不对残差数据执行变换。itu-th.265提供了如果应用逆变换跳过条件,则可以导出残差值阵列,如下:r[x][y]=(rotatecoeffs?d[ntbs-x-1][ntbs-y-1]:d[x][y]<<tsshift)其中x?y:z定义为如果x为true或不等于0,则评估为y的值;否则,评估为z的值,tsshift=(extended_precision_processing_flag?min(5,bdshift-2):5)+log2(ntbs),min(x,y)返回x为x小于或等于y,或min(x,y)返回y为x大于y,extended_precision_processing_flag等于1指定扩展动态范围用于系数解析和逆变换处理。extended_precision_processing_flag等于0指定不使用扩展动态范围。应注意,当rotatecoeffs等于1时,则在缩放之前旋转一组输入系数。在itu-th.265中,如果以下所有条件为真,则rotatecoeffs等于1,启用变换跳过,ntbs等于4,并且预测模式为帧内预测模式,否则rotatecoeffs等于0。如图6a所示,量化的变换系数被编码到比特流中。可以根据熵编码技术对量化的变换系数和语法元素(例如,指示视频块的编码结构的语法元素)进行熵编码。熵编码技术的示例包括内容自适应可变长度编码(cavlc)、上下文自适应二进制算术编码(cabac)、概率区间划分熵编码(pipe)等。熵编码的量化变换系数和对应的熵编码语法元素可以形成可以用于在视频解码器处再现视频数据的兼容比特流。熵编码过程可以包括对语法元素执行二值化。二值化是指将语法值的值转换为一个或多个比特的序列的过程。这些比特可以称为“箱(bin)”。二值化是一种无损过程,并且可以包括以下编码技术中的一种或组合:固定长度编码、一元编码、截断一元编码、截断rice编码、golomb编码、k阶指数golomb编码和golomb-rice编码。例如,二值化可以包括使用8位固定长度二值化技术将语法元素的整数值5表示为00000101,或者使用一元编码二值化技术将整数值5表示为11110。如本文所使用的,术语固定长度编码、一元编码、截断一元编码、截断rice编码、golomb编码、k阶指数golomb编码和golomb-rice编码中的每一个可以指这些技术的一般实现和/或这些编码技术的更多具体实现。例如,可以根据视频编码标准例如itu-th.265具体地定义golomb-rice编码实现。熵编码过程还包括使用无损数据压缩算法对箱值(binvalue)进行编码。在cabac的示例中,对于特定的箱,可以从与箱相关联的一组可用上下文模型中选择上下文模型。在一些示例中,可以基于先前的箱和/或先前语法元素的值来选择上下文模型。上下文模型可以识别具有特定值的箱的概率。例如,上下文模型可以指示对0值箱进行编码的0.7概率以及对1值箱进行编码的0.3概率。应当注意,在一些情况下,对0值箱进行编码的概率和对1值箱进行编码的概率之和可以不为1。在选择可用的上下文模型之后,cabac熵编码器可以基于所识别的上下文模型对箱进行算术编码。可以基于编码的箱的值来更新上下文模型。可以基于与上下文一起存储的关联变量——例如自适应窗口大小、使用上下文编码的箱的数量——来更新上下文模型。应当注意,根据itu-th.265,可以实现cabac熵编码器,使得可以使用算术编码对一些语法元素进行熵编码,而无需使用明确分配的上下文模型,这种编码可以被称为旁路编码。如上所述,帧内预测数据或帧间预测数据可以将图片的区域(例如,pb或cb)与对应的参考样本相关联。对于帧内预测编码,帧内预测模式可指定图片内的参考样本的位置。在itu-th.265中,定义的可能帧内预测模式包括平面(即表面拟合)预测模式(predmode:0)、dc(即平坦的整体平均)预测模式(predmode:1)和33个角度预测模式(predmode:2-34)。在jem中,定义的可能的帧内预测模式包括平面预测模式(predmode:0)、dc预测模式(predmode:1)和65个角度预测模式(predmode:2-66)。应当注意,平面和dc预测模式可以被称为非方向性预测模式,并且角度预测模式可以被称为方向性预测模式。应当注意,无论定义的可能预测模式的数量如何,这里描述的技术通常都是适用的。如上所述,根据itu-th.265定义的平面预测模式可以被描述为表面拟合。根据itu-th.265定义的平面预测模式包括平均两个线性预测。也就是说,在itu-th.265中,对于包括在cb中的每个样本,相应的预测被确定为两个线性预测的平均值。通过将位于相邻上一行中的重建样本值到最右侧位置处的cb(图15a中的t所示)的值内插到具有位于cb的相邻左列且具有与当前样本相同的竖直位置(即,定义为p[-1][y])的重建样本的当前样本值的位置来产生第一水平线性预测。通过将位于相邻左列中的重建样本值到最底侧位置处的cb(图15a中的l所示)的值内插到具有位于cb的相邻上一行且具有与当前样本相同的水平位置(即,定义为p[-1][y])的重建样本的当前样本值的位置来产生第二竖直线性预测。因此,参考图15a,根据itu-th.265定义的平面预测模式通常可以描述为(1)t与p[-1][y]的内插值和(2)l与p[x][-1]的内插值的平均。以下等式提供了itu-th.265中提供的平面预测模式的形式定义。predsamples[x][y]=((ntbs-1-x)*p[-1][y]+(x+1)*p[ntbs][-1]+(ntbs-1-y)*p[x][-1]+(y+1)*p[-1][ntbs]+ntbs)>>(log2(ntbs)+1)其中,p[-1][y]是位于cb的相邻左列并且具有与当前样本相同的竖直位置的重建样本的样本值;p[ntbs][-1]是t的样本值;p[x][-1]是位于cb的相邻上一行并且具有与当前样本相同的水平位置的重建样本的样本值;p[-1][ntbs]是l的样本值;x>>y是对x的二进制补码整数表示的算术右移y个二进制数;以及log2(x)x的以2为底的对数。图15b示出了对于当前样本c,p[-1][y]表示为b并且p[x][-1]表示为a的示例。对于帧间预测编码,运动矢量(mv)识别除了要编码的视频块的图片之外的图片中的参考样本,从而利用视频中的时间冗余。例如,可以根据位于先前编码的帧中的参考块预测当前视频块,并且可以使用运动矢量来指示参考块的位置。运动矢量和相关数据可以描述例如运动矢量的水平分量、运动矢量的竖直分量、运动矢量的分辨率(例如,四分之一像素精度、一半像素精度、一个像素精度、双像素精度、四像素精度)、预测方向和/或参考图像索引值。此外,编码标准例如itu-th.265可以支持运动矢量预测。运动矢量预测使得能够使用相邻块的运动矢量来指定运动矢量。运动矢量预测的示例包括高级运动矢量预测(amvp)、时间运动矢量预测(tmvp)、所谓的“合并”模式、以及“跳过”和“直接”运动推断。此外,jem支持高级时间运动矢量预测(atmvp)和空间-时间运动矢量预测(stmvp)。如上所述,在jem中,允许任意矩形cb的qtbt叶节点可以类似于itu-th.265中的pb和tb。因此,在某些情况下,jem可能在可能的pb和tb结构方面提供的灵活性低于itu-th.265中提供的灵活性。如上面进一步描述的,在itu-th.265中,仅允许方形tb,并且对于帧内预测,仅允许方形pb。因此,itu-th.265中的一些过程是基于输入到过程的样本值阵列必须是正方形的假设来定义的,因此,itu-th.265中的一些过程可能无法为编码任意矩形视频块提供足够的支持。此外,jem中定义的qtbt分块和相关信令可能不太理想。本公开描述用于使用任意矩形视频块执行视频编码的技术。图7是说明可被配置为根据本公开的一种或多种技术对视频数据进行编码(即,编码和/或解码)的系统的示例的框图。系统100表示根据本公开的一种或多种技术可以使用任意矩形视频块执行视频编码的系统的示例。如图1所示,系统100包括源设备102、通信介质110和目的地设备120。在图1所示的示例中,源设备102可以包括被配置为对视频数据进行编码并将编码的视频数据发送到通信介质110的任何设备。目的地设备120可以包括被配置为经由通信介质110接收编码的视频数据且对编码的视频数据进行解码的任何设备。源设备102和/或目的地设备120可以包括配备用于有线和/或无线通信的计算设备,并且可以包括机顶盒、数字视频记录器、电视、台式机、膝上型或平板计算机、游戏控制台、包括例如“智能”电话、蜂窝电话在内的移动设备、个人游戏设备和医学想象设备。通信介质110可以包括无线和有线通信介质和/或存储设备的任何组合。通信介质110可以包括同轴线缆、光纤线缆、双绞线、无线发射机和接收机、路由器、交换机、中继器、基站或可以有益于实现各种设备和站点之间的通信的任意其它设备。通信介质110可以包括一个或多个网络。例如,通信介质110可以包括被配置为使得能够访问万维网例如因特网的网络。网络可以根据一个或多个电信协议的组合来操作。电信协议可以包括专有方面和/或可以包括标准化电信协议。标准化电信协议的示例包括数字视频广播(dvb)标准、高级电视系统委员会(atsc)标准、综合业务数字广播(isdb)标准、有线数据业务接口规范(docsis)标准、全球系统移动通信(gsm)。标准、码分多址(cdma)标准、第三代合作伙伴计划(3gpp)标准、欧洲电信标准协会(etsi)标准、互联网协议(ip)标准、无线应用协议(wap)标准以及电气和电子学会工程师(ieee)标准。存储设备可以包括能够存储数据的任何类型的设备或存储介质。存储介质可以包括有形或非暂时性计算机可读介质。计算机可读介质可以包括光盘、闪存、磁存储器或任何其他合适的数字存储介质。在一些示例中,存储器设备或其的部分可以被描述为非易失性存储器,并且在其他示例中,存储器设备的部分可以被描述为易失性存储器。易失性存储器的示例可以包括随机存取存储器(ram)、动态随机存取存储器(dram)和静态随机存取存储器(sram)。非易失性存储器的示例可以包括磁性硬盘、光盘、软盘、闪存、或电可编程存储器(eprom)或电可擦除可编程(eeprom)存储器的形式。存储设备可以包括存储卡(例如,安全数字(sd)存储卡)、内部/外部硬盘驱动器和/或内部/外部固态驱动器。可以根据定义的文件格式将数据存储在存储设备上。再次参考图1,源设备102包括视频源104、视频编码器106和接口108。视频源104可以包括被配置为捕获和/或存储视频数据的任何设备。例如,视频源104可以包括视频摄像机和可操作地耦合到其上的存储设备。视频编码器106可包括被配置为接收视频数据且产生表示视频数据的兼容比特流的任何设备。兼容比特流可以指视频解码器可以从其接收和再现视频数据的比特流。可以根据视频编码标准来定义兼容比特流的方面。当产生兼容比特流时,视频编码器106可以压缩视频数据。压缩可能是有损的(可识别的或不可识别的)或无损的。接口108可以包括被配置为接收兼容视频比特流,并且将兼容视频比特流发送和/或存储到通信介质的任何设备。接口108可以包括网络接口卡例如以太网卡,并且可以包括光学收发器、射频收发器或可发送和/或接收信息的任何其他类型的设备。此外,接口108可以包括可使兼容的视频比特流能够存储在存储设备上的计算机系统接口。例如,接口108可以包括支持外围组件互连(pci)和外围组件互连快速(pcie)总线协议、专有总线协议、通用串行总线(usb)协议、i2c的芯片组、或可用于互连对等设备的任何其他逻辑和物理结构。再次参考图1,目的地设备120包括接口122、视频解码器124和显示器126。接口122可以包括被配置为从通信介质接收兼容视频比特流的任何设备。接口108可以包括网络接口卡例如以太网卡,并且可以包括光学收发器、射频收发器或可接收和/或发送信息的任何其他类型的设备。此外,接口122可以包括使得能够从存储设备取回兼容视频比特流的计算机系统接口。例如,接口122可以包括支持pci和pcie总线协议的芯片组、专有总线协议、usb协议、或者可用于互连对等设备的任何其他逻辑和物理结构。视频解码器124可以包括被配置为接收兼容比特流和/或其可接受变体且从其再现视频数据的任何设备。显示器126可以包括被配置为显示视频数据的任何设备。显示器126可以包括各种显示设备中的一种,例如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或其他类型的显示器。显示器126可以包括高清显示器或超高清显示器。应当注意,尽管在图7所示的示例中,视频解码器124被描述为向显示器126输出数据,但是视频解码器124可以被配置为将视频数据输出到各种类型的设备和/或其子组件。举例来说,视频解码器124可被配置为将视频数据输出到任何通信媒体,如本文中所描述。图8是示出可实施用于编码本文中所描述的视频数据的技术的视频编码器200的示例的框图。应当注意,尽管示例视频编码器200被示为具有不同的功能块,但是这样的说明是出于描述的目的,并且不将视频编码器200和/或其子组件限制到特定的硬件或软件架构。可以使用硬件、固件和/或软件实现的任何组合来实现视频编码器200的功能。在一个示例中,视频编码器200可被配置为根据本文中所描述的技术对视频数据进行编码。视频编码器200可执行图片区域的帧内预测编码和帧间预测编码,且因此可称为混合视频编码器。在图8所示的示例中,视频编码器200接收源视频块。在一些示例中,源视频块可以包括已经根据编码结构划分的图片区域。例如,源视频数据可以包括宏块、ctu、cb、其子分区和/或其他等效编码单元。在一些示例中,视频编码器200可被配置为执行源视频块的额外子分区。应当注意,这里描述的一些技术通常可以适用于视频编码,而不管在编码之前和/或期间如何划分源视频数据。在图8所示的示例中,视频编码器200包括求和器202、变换系数发生器204、系数量化单元206、逆量化/变换处理单元208、求和器210、帧内预测处理单元212、帧间预测处理单元214、后滤波器单元216和熵编码单元218。如图8中所示,视频编码器200接收源视频块并输出比特流。如上所述,jem包括用于qtbt树的信令的以下参数:ctu大小、minqtsize、maxbtsize、maxbtdepth和minbtsize。表2示出了针对不同ctu大小的各种qt深度处的qt叶节点的块大小(在该示例中、minqtsize是8)。此外,表3示出了针对二叉树根节点大小(即,叶四叉树节点大小)在各种bt深度处的bt叶节点的允许块大小。表2表3因此,参考表2,可以基于ctu大小和qt深度来确定形成二叉树的根的四叉树节点大小。如果将四叉树进一步分块为二叉树,则可以基于qt节点大小和bt深度来确定二叉树叶节点大小,如表3所示。maxbtsize、maxbtdepth和minbtsize中的每一个可用于确定最小允许二叉树叶节点大小。例如,如果ctu大小为128×128,qt深度为3,maxbtsize为16×16,maxbtdepth为2,则最小允许二叉树叶节点大小包括64个样本(即8×8、16×4或4×16)。在这种情况下,如果maxbtdepth为1,则最小允许二叉树叶节点大小包括128个样本(即,16×8或8×16)。表4示出了对于ctu大小为128×128的qt深度和bt深度的各种组合下bt叶节点的块大小。表4如上所述,jem中定义的qtbt划分和相关信令可能不太理想。例如,如上面参考图3所述,在jem中,当独立qtbt用于对ctu进行分块时,亮度分量的cb不需要并且不必与色度分量的cb对齐。也就是说,在jem中,当独立qtbt用于对ctu进行分块时,使用单独的qt分裂标志和bt分裂模式语法元素的组来发信号通知亮度分量和色度分量分块中的每一个,这样的信令可能不太理想。在一些示例中,根据本文中所描述的技术,视频编码器200可被配置为对ctu进行分块,使得亮度和色度分量具有达到特定深度的共同分块结构,且因此共享共同的一组的qt分裂标志和bt分裂模式语法元素直到特定深度。应当注意,在这种情况下,深度可以对应于qtbt的绝对深度(即,由qt深度和bt深度之和所形成的深度)。应当注意,在一些情况下,深度可以对应于块中的分量(例如,亮度和/或色度)的多个样本,并且可选地可以根据最小宽度和/或最小高度来指示。例如,可以共享qtbt,直到将色度样本的阵列分块为特定大小。例如,可以共享qtbt,直到节点的高度或宽度中的一个小于分量的指定数量的样本,例如8个样本。例如,可以共享qtbt,直到节点的分量(例如,亮度和/或色度)的样本数小于指定数量,例如64。在一个示例中,可以为一组ctu预先确定深度。例如,对于视频数据切片,深度可以设置为2,或者例如对于视频数据的图片,深度可以设置为2。在一个示例中,可以使用语法元素(例如,shared_depth等)来发信号通知深度。在一个示例中,可以在ctu水平发信号通知共享深度语法元素。在一个示例中,可在切片水平发信号通知共享深度语法元素。在一个示例中,可以在参数集水平(例如,图片参数集(pps)或序列参数集(sps))处发信号通知共享深度语法元素。在一个示例中,可以使用较高水平标志来指示在较低水平处的共享深度语法元素的存在。举例来说,在切片水平包括的语法元素可指示对于在切片中包括的每个ctu是否包括共享深度语法元素。应当注意,以类似的方式,ctu水平标志可用于指示共享qtbt、部分共享qtbt或用于亮度和色度分量的独立qtbt中的一个或多个。在一个示例中,共享深度语法元素可以是在分裂水平处的标志。例如,对于每个qt分裂标志和/或bt分裂模式,相应的标志可以指示所指示的分裂是否被共享。在一个示例中,可使用高水平的共享深度语法元素来设定共享深度,并且可使用较低水平标志来指示超出由语法元素指定的水平的共享。例如,可以在切片水平将共享深度设置为1的深度,并且切片内的每个ctu可以包括指示特定ctu共享是否被扩展超过1的深度到2的深度的标志。图9和图10是示出亮度和色度分量具有共享深度的公共分块的示例的概念图。在图9所示的示例中,亮度分量另外被分块超过共享深度1,并且色度分量未被分块超过深度1。在图10所示的示例中,亮度分量和色度分量都被独立地分块为超过共享深度1。如上所述,视频采样格式可以相对于cu中包括的亮度样本的数量来定义cu中包括的色度样本的数量。在一个示例中,视频编码器200可被配置为基于采样格式来选择性对超过共享深度的色度分量进行分块。例如,在根据4:2:0样本格式来格式化ctu的情况下,在一个示例中,视频编码器200可以被配置为使得色度分量可以不被进一步分块超过共享深度。此外,在根据4:4:4样本格式对ctu进行格式化的情况下,在一个示例中,视频编码器200可以被配置为使得色度分量可以进一步被分块超过共享深度。此外,作为采样格式的附加或备选,可以使用ctu大小、minqtsize、maxbtsize、maxbtdepth和/或minbtsize中的一个或多个来确定是否允许将色度分量划分超出共享深度。图11是示出与图10中所示的示例qtbt分块对应的qtbt的示例的概念图。如图11所示,用于亮度的qtbt和用于色度的qtbt在深度1之前是相同的,即,共享深度是1。此外,应该注意,出于解释的目的,图11中所示的亮度树与图2中所示的qtbt相同。这样,对于图11中所示的示例,视频编码器200可被配置为基于表1中提供的伪语法来发信号通知亮度qtbt。在一个示例中,视频编码器200可被配置为基于表5中提供的伪语法将发信号通知超出共享qtbt的色度qtbt。表5在表5所示的示例中,添加划分条件可以包括基于以下中的一个或多个的条件:采样格式、ctu大小、minqtsize、maxbtsize、maxbtdepth和/或minbtsize,如上所述。应注意,在一个示例中,视频编码器200可被配置为通过复用表1和表5中所说明的语法元素来发信号通知超过共享qtbt色度的qtbt。例如,可以在超过共享节点的亮度分量节点的语法元素和作为共享节点的后代的语法元素之后,发信号通知用于超过共享节点的色度分量节点的语法元素和作为共享节点的后代的语法元素。表6示出了伪语法的示例,其中在语法元素将共享节点终止为用于亮度分量的叶节点之后,发信号通知用于色度分量的语法元素。在一个示例中,可在亮度语法元素之前发信号通知色度语法元素。表6以此方式,视频编码器200表示被配置为:接收视频块的设备的示例,所述视频块包括视频数据的第一分量和视频数据的第二分量的样本值;根据第一四叉树二叉树分块结构来对视频数据进行分块的第一分量的样本值;并且根据第一四叉树二叉树分块结构将视频数据的第二分量的样本值分块为共享深度。如上所述,itu-th.265支持用于帧间预测的四个非对称pb分块。应当注意,itu-th.265中提供的非对称pb分块可能不太理想。也就是说,itu-th.265中提供的非对称pb分块限于使得具有方形cb的宽度或高度的四分之一的pb。例如,对于itu-th.265中的32×32cb,m/4×m左分区将cb分成8×32pb和24×32pb。itu-th.265没有提供基于任意偏移将cb分块为pb的机制。也就是说,不允许pb具有任意宽度或高度。在某些情况下,根据任意偏移对ctb进行分块可能很有用。例如,在上面的示例中,对于32×32cb,在某些情况下,基于图像的属性,将cb分块为10×32pb和22×32pb可能是有用的。此外,参考上面的表3,在一些情况下,根据任意偏移进一步划分二叉叶节点可能是有用的。也就是说,在jem中,潜在的叶节点大小限于表3中所示的那些。例如,在二叉叶节点是32×128的情况下,将二叉叶节点进一步分块为32×28cb和32×100cb可能是有用的。应当注意,根据本文描述的技术根据任意偏移对视频数据块进行分块可以至少应用于以下一种或多种情况:(1)在cu(或cb)形成pu(或pb)的根的情况下,可以将任意偏移分块应用于将ctu(或ctb)分块为cu(或cb);(2)在cu(或cb)不形成pu(或pb)的根的情况下,即,在cb水平确定预测的情况下,可以将任意偏移分块应用于将ctu(或ctb)分块为cu(或cb);(3)任意偏移分块可以应用于pu(或pb)的分块;以及(4)可以将任意偏移分块应用于对与编码树的节点对应的样本块进行分块。应当注意,在一些情况下,可以选择性地启用任意偏移分块以用于ctu分块和/或pu分块。图12示出了根据偏移进一步水平地对二叉叶节点进行分块的示例。应当注意,尽管图12中所示的示例包括根据任意偏移分块来对二叉叶节点进行分块,但是这样的示例不应被解释为限制并且如本文所述,任意偏移分块可适用于其中视频数据已分块的各种场景。在图12所示的示例中,ctb可以对应于大小为256×256的亮度ctb。在这种情况下,右上角的二叉叶节点的大小为32×128。如上所述,将32×128二叉叶节点进一步分块为32x28cb和32x100cb可能是有用的。在图12所示的示例分块中,偏移的值为28。在一个示例中,视频编码器200可被配置为根据偏移来对qtbt的叶节点进行分块。在一个示例中,视频编码器200可被配置为使得可以允许任何数目的不对称偏移分块结构。也就是说,在一些示例中,对于竖直偏移,偏移可以在2到块高度减去2的范围内,并且对于水平偏移,偏移可以在2到块宽度减去2的范围内。在一些示例中,对于竖直偏移,偏移可以在1到块高度减去1的范围内,并且对于水平偏移,偏移可以在1到块宽度减去1的范围内。在一些示例中,可以基于与ctu和/或预测模式相关联的属性来限制允许的不对称偏移分块。例如,可以基于是根据帧内预测还是帧间预测来对cu进行编码来限制非对称偏移分块。此外,在一些示例中,可以基于cu或cb的大小来限制非对称偏移分块。在一个示例中,偏移的值可以被限制为设置的整数倍。在一个示例中,偏移的值可以被限制为设置的整数倍和一些附加的整数值(例如,2)。在一些示例中,整数倍的集合可以基于正应用偏移的叶节点的大小。例如,关于如上所述水平地对32×128叶节点进行分块的情况。在一个示例中,偏移的值可以被限制为4的倍数(即,允许的偏移值包括4、8、12、16、......、120、124)。在一个示例中,可以使用索引的一组偏移值来指定偏移的值。例如,关于如上所述水平地对32×128叶节点进行分块的情况,在一个示例中,偏移的值可以限于下面的一组偏移值28、42、84和100。在一些示例中,可以选择索引的一组偏移值合,以便避免可以使用qtbt信令或其近似变化所发信号通知的分区。例如,在水平地对于32×128叶节点进行分块的情况下,在某些情况下(例如,取决于maxbtdepth的值),bt结构可以允许32×128叶节点被分成两个32x64分块。在这种情况下,可以选择索引的一组偏移值,使得偏移不在64的指定范围内。此外,在一些示例中,索引的一组偏移值可以基于maxbtdepth的值。应当注意,在一些示例中,允许的不对称偏移分块可以包括水平或竖直分块。例如,在一个示例中,关于32×128二叉叶,视频编码器200可以被配置为进一步将32×128二叉叶节点分块为8×128cb和24×128cb。以这种方式,偏移可以指示相对于锚点的偏移值。例如,锚点可以包括用于竖直分块的左边缘和用于水平分块的顶边缘。应注意,在一些示例中,锚可以是来自边缘的设定数量的样本。例如,锚可以设置为来自边缘的4个样本。以这种方式,偏移值为零将指示来自边缘的分块4样本。在一个示例中,偏移可以包括固定长度二值化。在一个示例中,偏移可以包括截断的一元二值化。如上所述,在一个示例中,可以使用索引的一组偏移值来指定偏移的值。在一个示例中,索引的一组偏移值可以对应于分数分块。表7和表8提供了与分数分块对应的索引的一组偏移值的示例。关于表7和表8,应当注意,在一些示例中,分数分块可以舍入到最接近的样本值。例如,关于如上所述水平划分32×128叶节点的情况,在一个示例中,距边缘值1/3的偏移可以舍入到43。关于表7和表8,应当注意,在示例中,可以将分数分块舍入到最接近的整数倍样本值。例如,关于如上所述水平地对32×128叶节点进行分块的情况,在一个示例中,距边缘值1/3的偏移可以舍入到44,这是最接近的4个样本倍数。关于表7和表8,应当注意,在示例中,可以将分数分块向下舍入到最接近的整数倍样本值。例如,关于如上所述水平地对32×128叶节点进行分块的情况,在一个示例中,距边缘值1/3的偏移可以舍入到40,这是最接近的4个样本倍数。距边缘的偏移偏移的二进制表示正在考虑的块大小的1/401正在考虑的块大小的1/21正在考虑的块大小的3/400表7距边缘的偏移偏移的二进制表示正在考虑的块大小的1/301正在考虑的块大小的1/21正在考虑的块大小的2/300表8如上所述,视频编码器200可被配置为发信号通知qtbt。在一个示例中,视频编码器200可被配置为通过在qtbt的信令内并入偏移信令来指示偏移值。例如,图12中所示的示例包括与图1中所示的示例相同的qtbt结构。这样,偏移信令可以基于表1中示出的示例伪语法,其中,在一个示例中,在指示叶节点的语法之后包括偏移信令。表9示出了对应于以下情况的示例伪语法,其中对于256×256ctb,右上角的具有32×128的大小的二叉叶节点被进一步分块为32×28cb和32×100cb。表9因此,根据表9中所示的示例,视频编码器200可被配置为:发信号通知指示偏移分块应用于qtbt叶节点的标志,发信号通知指示偏移分块是竖直分块还是水平分块的信号;并且发信号通知指示偏移值的值。应注意,在其它示例中,视频编码器200可被配置为使用其他信令技术来指示偏移值。举例来说,视频编码器200可被配置为发信号通知cb水平的偏移值。应当注意,在一些示例中,可以将偏移发信号通知为当前bt分裂模式信令的扩展。也就是说,例如,在jem中,bt分裂模式语法元素导致节点减半。在一个示例中,根据本文描述的技术,bt分裂模式信令可以包括用信号通知分裂类型和偏移对。例如,参考图12所示的示例,在一个示例中,可以如下发信号通知偏移:(btsplit=2,offsetvalue=28)。此外,在一个示例中,可以根据定义的扫描次序来索引ctb的每个cb,并且视频编码器200可以被配置为通过发信号通知cb的索引值来发信号通知偏移值。例如,参考图13,右上角的二叉叶节点被示为索引为cb8。因此,在一个示例中,视频编码器200可被配置为使用此索引值来指示对此叶节点执行偏移分块。以此方式,视频编码器200表示被配置为确定偏移值且根据偏移值分块叶节点的设备的示例。在一个示例中,可以将预定次序的一组分裂决策(任意偏移分块和/或qt分块)应用于样本块,并使用单个指示符在比特流中指示。再次参考图8,视频编码器200可通过从源视频块中减去预测性视频块来产生残差数据。求和器202表示被配置为执行该减法操作的组件。在一个示例中,视频块的减法发生在像素域中。变换系数发生器204将诸如离散余弦变换(dct)、离散正弦变换(dst)或概念上类似的变换的变换应用于其残差块或子分区(例如,四个8×8变换可以应用于16×16的残差值阵列)以产生一组残差变换系数。变换系数发生器204可以被配置为执行离散三角变换族中包括的变换的任何一个和所有组合。如上所述,在itu-th.265中,tb被限制为以下大小4×4、8×8、16×16和32×32。在一个示例中,变换系数发生器204可以被配置为根据具有4×4、8×8、16×16和32×32大小的阵列来执行变换。在一个示例中,变换系数发生器204还可以被配置为根据具有其他维度的阵列来执行变换。特别地,在某些情况下,对差值的矩形阵列执行变换可以是有用的。在一个示例中,变换系数产生器204可以被配置为根据以下尺寸的阵列执行变换:4×4、8×8、16×16和32×32。在一个示例中,2维(2d)m×n逆变换可以被实现为1维(1d)m点逆变换,之后是1dn点逆变换。在一个示例中,2d逆变换可以实现为1dn点竖直变换,之后是1dn点水平变换。在一个示例中,2d逆变换可以实现为1dn点水平变换,之后是1dn点竖直变换。变换系数发生器204可将变换系数输出到系数量化单元206。系数量化单元206可以被配置为执行变换系数的量化。如上所述,可以通过调整量化参数来修改量化程度。系数量化单元206还可以被配置为确定量化参数和输出qp数据(例如,用于确定量化组尺寸和/或δqp值的数据),其可以由视频解码器来重建量化参数以执行视频解码期间的逆量化。应当注意,在其他示例中,可以使用一个或多个附加或替代参数来确定量化水平(例如,比例因子)。本文描述的技术通常可应用于基于与视频数据的另一分量对应的变换系数的量化水平来确定与视频数据的分量对应的变换系数的量化水平。如图8所示,量化的变换系数被输出到逆量化/变换处理单元208。逆量化/变换处理单元208可以被配置为应用逆量化和逆变换以产生重建的残差数据。如上所述,itu-th.265提供了对逆量化过程的定义,其基于变量ntbs,该变量ntbs指定对应的变换块的尺寸。如上进一步所述,在itu-th.265中,tb被限制为以下大小4×4、8×8、16×16和32×32。因此,ntbs可以具有值4、8、16或32以指示正方形的尺寸,并且因此不能指示任意尺寸的矩形。因此,根据itu-th.265定义的逆量化过程对于对任意大小的矩形tb执行反量化可能不太理想。应当注意,尽管关于可能在视频编码器或视频解码器处发生的反量化来描述本文描述的技术,但是所述技术通常可适用于在视频编码器处发生的量化。也就是说,视频编码器可以通过执行定义的逆量化过程的逆来执行量化。在一个示例中,逆量化/变换处理单元208可被配置为基于以下等式应用反量化:d[x][y]=((transcoefflevel[x][y]*m[x][y]*levelscale[qp%6][ntbh][ntbw]<<(qp/6))+(1<<(bdshift[ntbh][ntbw]-1)))>>bdshift[ntbh][ntbw]其中,ntbh和ntbw指定水平值的阵列的高度和宽度。因此,根据上面的等式,逆量化/变换处理单元208可以被配置为基于任意大小的矩阵水平值阵列来应用逆量化过程。在一个示例中,levelscale[qp%6][ntbh][ntbw]可以基于以下等式:levelscale[qp%6][ntbh][ntbw]=levelscale0[qp%6]*levelscale1[ntbh][ntbw],其中,levelscale0[k]={40,45,51,57,64,72}其中k=0..5,在一个示例中,bdshift[ntbh][ntbw]可以基于以下等式:bdshift[ntbh][ntbw]=bdshift0[ntbh][ntbw]+bdshift1[ntbh][ntbw],其中,bdshift0[ntbh][ntbw]=bitdepth+floor((log2(ntbh)+log2(ntbw))/2.0)+10-log2transformrange,floor(x)返回小于或等于x的最大整数,log2transformrange=extended_precision_processing_flag?max(15,bitdepth+6):15,在一个示例中,可以定义levelscale1[ntbh[ntbw]和bdshift1[ntbh][ntbw],使得levelscale1[ntbh][ntbw]除以(2^bdshift1[ntbh][ntbw])近似为:1.0除以(2^x-floor(x))),其中x等于(log2(ntbh)+log2(ntbw))除以2.0。在一个示例中,levelscale1[ntbh][ntbw]小于或等于(2^bdshift1[ntbh][ntbw])。应当注意,关于上面的d[x][y]的示例推导,乘数levelscale[qp%6][ntbh][ntbw]不仅取决于qp,还取决于ntbh和ntbw。此外,当x等于(log2(ntbh)+log2(ntbw))除以2.0时,ntbh和ntbw的某些值导致x不是整数(例如,如果ntbh=32并且ntbw=64,x=5.5;或者,如果ntbh=12并且ntbw=64,x=4.292......),在这种情况下,单独使用位移位(bit-shift)操作不能实现2^x的除法。上面提供的levelscale1[ntbh][ntbw]和bdshift1[ntbh][ntbw]的示例定义允许使用乘法和位移位来将2^x除以近似。以这种方式,逆量化/变换处理单元208表示被配置为接收具有宽度和高度的系数水平值的矩形阵列的设备的示例,并且针对矩形阵列中包括的每个系数水平值产生对应的变换系数值,其中产生对应的变换系数值包括基于量化参数以及矩形阵列的宽度和高度来按比例缩放系数水平值。应当注意,在itu-th.265中,缩放m[x][y]仅针对具有值4、8、16或32的ntbs定义。在一个示例中,反量化/变换处理单元208可被配置为基于ntbh和ntbw导出比例矩阵。如上所述,itu-th.265提供了一种用于在应用基于ntbs的逆变换跳过条件的情况下导出残差值阵列的过程。因此,如果应用根据itu-th.265定义的逆变换跳过条件,则用于导出残差值阵列的过程对于任意大小的矩形tb可能不太理想。在一个示例中,反量化/变换处理单元208可被配置为在如下根据以下等式应用逆变换跳过条件时导出残余值阵列:r[x][y]=(rotatecoeffs?d[ntbw-x-1][ntbh-y-1]:d[x][y]<<tsshift[ntbh][ntbw])其中tsshift[ntbh][ntbw]=(extended_precision_processing_flag?min(5,bdshift-2):5)+floor((log2(ntbh)+log2(ntbw))/2.0),bdshift=max(20-bitdepth,extended_precision_processing_flag?11:0)在一个示例中,反量化/变换处理单元208可被配置为在如下根据以下等式应用逆变换跳过条件时导出残余值阵列:r[x][y]=(rotatecoeffs?d[ntbw-x-1][ntbh-y-1]:d[x][y])*(tsscale[ntbh][ntbw])<<(tsshift[ntbh][ntbw]-tsshift1[ntbh][ntbw]))在一个示例中,tsscale[ntbh][ntbw]除以(2^tsshift1[ntbh][ntbw])近似为(2^x-floor(x))),其中x等于(log2(ntbh)+log2)(ntbw))除以2.0。在一个示例中,tsscale[ntbh][ntbw]大于或等于(2^tsshift1[ntbh][ntbw])。在一个示例中,rotatecoeffs可以取决于ntbh和/或ntbw。应当注意,关于上面的r[x][y]的示例推导,乘数(tsscale[ntbh][ntbw])取决于ntbh和ntbw。如图8所示,在求和器210,可以将重建的残差数据添加到预测性视频块。以此方式,可以重建经编码的视频块,并且可以使用所得到的重建视频块来评估给定预测、变换和/或量化的编码质量。视频编码器200可被配置为执行多个编码通道(例如,在改变预测、变换参数和量化参数中的一个或多个时执行编码)。可以基于对重建视频块的评估来优化比特流的率失真或其他系统参数。此外,可以存储重建的视频块并将其用作用于预测后续块的参考。如上所述,可以使用帧内预测来对视频块进行编码。帧内预测处理单元212可以被配置为:为要编码的视频块选择帧内预测模式。帧内预测处理单元212可被配置为:评估帧和/或其区域,并且确定用以对于当前块进行编码的帧内预测模式。如图8所示,帧内预测处理单元212将帧内预测数据(例如,语法元素)输出到熵编码单元218和变换系数发生器204。如上所述,对残差数据执行的变换可以是模式相关的。如上所述,可能的帧内预测模式可以包括平面预测模式、dc预测模式和角度预测模式。此外,在一些示例中,可针对亮度预测模式根据帧内预测推断对色度分量的预测。如上所述,itu-th.265提供了平面预测模式的形式定义,其基于变量ntbs。如上进一步所述,在itu-th.265中,tb被限制为以下大小4×4、8×8、16×16和32×32。因此,ntbs可以具有值4、8、16或32以指示正方形的大小,并且因此不能指示任意大小的矩形。因此,根据itu-th.265所定义的平面预测模式可能对于相对于任意大小的矩形执行平面预测来说不太理想。根据本文描述的技术,视频编码器200可被配置为相对于任意大小的矩形cb执行平面预测。在一个示例中,视频编码器200可被配置为通过对水平内插和竖直预测求平均来相对于任意大小的矩形cb执行平面预测。这种平面预测一般可以如下描述:predsamples[x][y]=(hor_interpolation[x][y]+ver_interpolation[x][y]+1)/2在一个示例中,hor_interpolation[x][y]和ver_interpolation[x][y]可以根据以下等式分别基于cb的宽度和高度:hor_interpolation[x][y]=((ncbsw-1-x)*p[-1][y]+(x+1)*p[ncbsw][-1])/ncbsw以及ver_interpolation[x][y]=((ncbsh-1-y)*p[x][-1]+(y+1)*p[-1][ncbsh])/ncbsh其可以表示为:predsamples[x][y]=(((ncbsw-1-x)*p[-1][y]+(x+1)*p[ncbsw][-1])*ncbsh+((ncbsh-1-y)*p[x][-1]+(y+1)*p[-1][ncbsh])*ncbsw+ncbsw*ncbsh)/(2*ncbsw*ncbsh)其中,ncbsw指定对应编码块的宽度;ncbsh指定对应编码块的高度;p[-1][y]是位于cb的相邻左列并且具有与当前样本相同的竖直位置的重建样本的样本值;p[ncbsw][-1]是t的样本值;p[x][-1]是位于cb的相邻上一行并且具有与当前样本相同的水平位置的重建样本的样本值;p[-1][ncbsh]是l的样本值;并且/是整数除法运算,结果被截断为零。关于上面的示例等式,应当注意,尽管关于cb描述了等式,但是在其他示例中,可以基于pb、tb和/或其他编码结构或图片区域来描述等式。关于上面的示例等式,应当注意,在一些情况下,编码块可以对应于变换块,并且在其他情况下,编码块和变换块结构可以是独立的。图16a示出了根据上面的等式的t和l相对于示例矩形cb的位置。图16b示出了对于当前样本,c、p[-1][y]表示为b并且p[x][-1]表示为a的示例。应当注意,根据上面的等式,在ncbsw大于ncbsh的情况下,与b相比,应用相对较高的权重,以及在ncbsh大于ncbsw的情况下,与b相比,应用相对较高的权重。因此,视频编码器200可被配置为以考虑矩形样本值阵列的方向的方式执行平面预测。应当注意,在一些示例中,加权平均可以应用于水平内插和竖直内插。例如,这种平面预测可以大体描述如下:predsamples[x][y]=(α*hor_interpolation[x][y]+β*ver_interpolation[x][y]+1)/2其中α和β取决于ncbsh和/或ncbsw。此外,α和β相关可以取决于pb、tb和/或其他示例中的其他编码结构或图片区域。帧间预测处理单元214可以被配置为对当前视频块执行帧间预测编码。帧间预测处理单元214可被配置为接收源视频块并计算视频块的pu的运动矢量。运动矢量可以指示当前视频帧内的视频块的pu(或类似编码结构)相对于参考帧内的预测性块的位移。帧间预测编码可以使用一个或多个参考图片。此外,运动预测可以是单预测(使用一个运动矢量)或双预测(使用两个运动矢量)。帧间预测处理单元214可以被配置为通过计算由例如绝对差之和(sad)、平方差之和(ssd)或其他差度量所确定的像素差来选择预测性块。如上所述,可以根据运动矢量预测来确定和指定运动矢量。帧间预测处理单元214可以被配置为执行运动矢量预测,如上所述。帧间预测处理单元214可以被配置为使用运动预测数据产生预测性块。举例来说,帧间预测处理单元214可将预测性视频块定位于帧缓冲器(图8中未示出)内。应注意,帧间预测处理单元214可进一步被配置为将一个或多个内插滤波器应用于经重建的残差块以计算用于运动估计的子整数像素值。帧间预测处理单元214可将针对所计算的运动矢量的运动预测数据输出到熵编码单元218。如图8中所示,帧间预测处理单元214可以经由后置滤波器单元216接收重建的视频块。后置滤波器单元216可以被配置为执行去块(deblock)和/或采样自适应偏移(sao)滤波。去块指的是平滑重建的视频块的边界的过程(例如,使得边界对于观看者来说不易察觉)。sao滤波是非线性幅度映射,其可用于通过向重建的视频数据添加偏移来改善重建。再次参考图8,熵编码单元218接收量化的变换系数和预测性语法数据(即,帧内预测数据、运动预测数据、qp数据等)。应注意,在一些示例中,系数量化单元206可在将系数输出到熵编码单元218之前执行对包括经量化变换系数在内的矩阵的扫描。在其他示例中,熵编码单元218可以执行扫描。熵编码单元218可以被配置为根据本文描述的一种或多种技术执行熵编码。熵编码单元218可以被配置为输出兼容比特流,即视频解码器可以从其接收和再现视频数据的比特流。图14是示出根据本公开的一种或多种技术的可以被配置为对视频数据进行解码的视频解码器的示例的框图。在一个示例中,视频解码器300可被配置为基于上文所描述的技术中的一个或多个来重建视频数据。也就是说,视频解码器300可以以与上述视频编码器200相反的方式操作。视频解码器300可被配置为执行帧内预测解码和帧间预测解码,且因此可称为混合解码器。在图14所示的示例中,视频解码器300包括熵解码单元302、逆量化单元304、逆变换处理单元306、帧内预测处理单元308、帧间预测处理单元310、求和器312、后置滤波器单元314以及参考缓冲器316。视频解码器300可被配置为以与视频编码系统一致的方式解码视频数据,所述视频编码系统可以实现视频编码标准的一个或多个方面。应当注意,尽管示例视频解码器300被示为具有不同的功能块,但是这样的说明是出于描述的目的,并且不将视频解码器300和/或其子组件限制到特定的硬件或软件架构。可以使用硬件、固件和/或软件实现的任何组合来实现视频解码器300的功能。如图14所示,熵解码单元302接收熵编码的比特流。熵解码单元302可被配置为根据与熵编码过程互逆的过程来根据比特流解码经量化语法元素和经量化系数。熵解码单元302可被配置为根据上文所描述的任何熵编码技术执行熵解码。熵解码单元302可以以与视频编码标准一致的方式解析经编码比特流。视频解码器300可被配置为解析经编码比特流,其中基于上述技术来产生经编码比特流。也就是说,例如,视频解码器300可以被配置为基于上面描述的用于重建视频数据的一种或多种技术来确定产生和/或发信号通知的qtbt分块结构。举例来说,视频解码器300可被配置为解析语法元素和/或评估视频数据的属性以便确定qtbt的共享深度。此外,视频解码器300可被配置为确定偏移值且根据偏移值对视频数据块进行分块。再次参考图14,逆量化单元304从熵解码单元302接收量化的变换系数(即,水平值)和量化参数数据。量化参数数据可以包括上面描述的δqp值和/或量化组大小值等的任何一个和所有组合。视频解码器300和/或逆量化单元304可被配置为基于由视频编码器发信号通知的值和/或通过视频属性和/或编码参数来确定用于逆量化的qp值。也就是说,逆量化单元304可以以往复方式操作到上述系数量化单元206。举例来说,逆量化单元304可被配置为根据上文所描述的技术来推断预定值(例如,基于编码参数确定qt深度和bt深度之和)、允许的量化组大小等。逆量化单元304可以被配置为应用逆量化。逆变换处理单元306可以被配置为执行逆变换以产生重建的残差数据。由逆量化单元304和逆变换处理单元306分别执行的技术可以类似于由上述逆量化/变换处理单元208执行的技术。逆变换处理单元306可被配置为将逆dct、逆dst、逆整数变换、不可分离二次变换(nsst)或概念上类似的逆变换过程应用于变换系数,以便产生像素域中的残差块。此外,如上所述,是否执行特定变换(或特定变换的类型)可以取决于帧内预测模式。如图14所示,可以将重建的残差数据提供给求和器312。求和器312可以将重建的残差数据添加到预测性视频块并产生重建的视频数据。可以根据预测视频技术(即,帧内预测和帧间预测)来确定预测性视频块。在一个示例中,视频解码器300和后置滤波器单元314可被配置为确定qp值且将其用于后置滤波(例如,去块)。在一个示例中,利用qp的视频解码器300的其它功能块可基于所接收的信令确定qp并将其用于解码。帧内预测处理单元308可被配置为:接收帧内预测语法元素,并从参考缓冲器316取回预测性视频块。参考缓冲器316可以包括被配置为存储一帧或多帧视频数据的存储器设备。帧内预测语法元素可识别帧内预测模式,例如上文所描述的帧内预测模式。在一个示例中,帧内预测处理单元308可使用根据本文中所描述的帧内预测编码技术中的一个或多个来重建视频块。帧间预测处理单元310可接收帧间预测语法元素,并且产生运动矢量以识别存储在参考缓冲器316中的一个或多个参考帧中的预测块。帧间预测处理单元310可产生运动补偿块,从而可基于内插滤波器执行内插。用于具有子像素精度的运动估计的插值滤波器的标识符可以包括在语法元素中。帧间预测处理单元310可使用内插滤波器来计算参考块的子整数像素的内插值。后置滤波器单元314可以被配置为对重建的视频数据执行滤波。举例来说,后置滤波器单元314可被配置为执行去块和/或sao滤波,如上文关于后置滤波器单元216所描述。此外,应当注意,在一些示例中,后置滤波器单元314可以被配置为执行专有自由选择滤波器(例如,视觉增强)。如图14中所示,重建视频块可以由视频解码器300输出。以此方式,视频解码器300可被配置为根据本文中所描述的一种或多种技术产生经重建视频数据。以这种方式,视频解码器300可以被配置为:解析第一四叉树二叉树分块结构,将第一四叉树二叉树分块结构应用于视频数据的第一分量,确定共享深度,并且将第一四叉树二叉树分块结构应用于视频数据的第二分量直到共享深度。以此方式,视频解码器300表示被配置为确定偏移值且根据偏移值对叶节点进行分块的设备的示例。在一个或多个示例中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件实现,那么所述功能可作为一个或多个指令或代码存储在计算机可读介质上或经由计算机可读介质传输且由基于硬件的处理单元执行。计算机可读介质可以包括对应于诸如数据存储介质的有形介质的计算机可读存储介质、或者包括有助于将计算机程序从一个地方传送到另一个地方的任何介质的通信介质,例如,根据通信协议。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质或(2)诸如信号或载波的通信介质。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问的任何可用介质,以取回用于实现本公开中描述的技术的指令、代码和/或数据结构。计算机程序产品可包括计算机可读介质。作为示例而非限制,这种计算机可读存储介质可包括ram、rom、eeprom、cd-rom或其他光盘存储器、磁盘存储器或其他磁存储设备、闪存或。可用于以指令或数据结构的形式存储所需的程序代码且可由计算机访问的任何其他介质。此外,可以将任意连接适当地命名为计算机可读介质。例如,如果使用同轴电缆、光缆、双绞线、数字用户线(dsl)或无线技术(例如红外线、无线电和微波)从网站、服务器或其他远程源发送指令,则同轴电缆、光缆、双绞线、dsl或无线技术(例如红外线、无线电和微波)包括在介质的定义中。然而,应该理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时性介质,而是针对非暂时性有形存储介质。如本文中所使用的磁盘和光盘包括紧凑盘(cd)、激光盘、光盘、数字多功能盘(dvd)、软盘和蓝光盘,其中,磁盘通常以磁的方式再现数据,而光盘用激光以光的方式再现数据。以上项的组合也应当包括在计算机可读介质的范围内。指令可以由一个或多个处理器执行,例如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其他等效的集成或离散逻辑电路。因此,这里使用的术语“处理器”可以指任何前述结构或适合于实现本文所述技术的任何其他结构。另外,在一些方面,可以在配置用于编码和解码的专用硬件和/或软件模块内提供本文描述的功能,或者将其并入组合的编解码器中。而且,这些技术可以在一个或多个电路或逻辑元件中完全实现。本公开的技术可在各种装置或设备中实施,包括无线手持机、集成电路(ic)或一组ic(例如,芯片组)。在本公开中描述了各种组件,模块或单元以强调被配置为执行所公开的技术的设备的功能方面,但不一定需要由不同的硬件单元实现。而是,如上所述,各种单元可以组合在编解码器硬件单元中,或者由一组互操作硬件单元提供,包括如上所述的一个或多个处理器以及合适的软件和/或固件。此外,在上述每个实施例中使用的基站设备和终端设备的每个功能块或各种特征可以由电路来实现或执行,该电路通常是一个集成电路或多个集成电路。设计为执行本说明书中描述的功能的电路可以包括通用处理器、数字信号处理器(dsp)、专用或通用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立门或晶体管逻辑或分立硬件组件或其组合。通用处理器可以是微处理器,或者备选地,处理器可以是常规处理器、控制器、微控制器或状态机。上述通用处理器或每个电路可以由数字电路配置或者可以由模拟电路配置。此外,当由于半导体技术的进步而出现制成取代当前集成电路的集成电路的技术时,还能够使用通过该技术的集成电路。已经描述了各种示例。这些示例和其它示例在所附权利要求的范围内。<概览>在一个示例中,视频数据的编码方法包括:接收具有宽度和高度的系数水平值的矩形阵列,并且对于矩形阵列中包括的每个系数水平值,产生对应的变换系数值,其中,产生对应的变换系数值包括基于量化参数和矩形阵列的宽度和高度来缩放系数水平值。在一个示例中,用于编码视频数据的设备包括一个或多个处理器,一个或多个处理器被配置为:接收具有宽度和高度的系数水平值的矩形阵列的设备的示例,并且针对矩形阵列中包括的每个系数水平值产生对应的变换系数值,其中,产生对应的变换系数值包括基于量化参数以及矩形阵列的宽度和高度来缩放系数水平值。在一个示例中,非暂时性计算机可读存储介质包括存储在其上的指令,所述指令在被执行时使得设备的一个或多个处理器:接收具有宽度和高度的系数水平值的矩形阵列的设备的示例,并且针对矩形阵列中包括的每个系数水平值产生对应的变换系数值,其中,产生对应的变换系数值包括基于量化参数以及矩形阵列的宽度和高度来缩放系数水平值。在一个示例中,一种装置包括:用于接收具有宽度和高度的系数水平值的矩形阵列的仪器、以及用于针对矩形阵列中包括的每个系数水平值产生对应的变换系数值的仪器,其中,产生对应的变换系数值包括基于量化参数以及矩形阵列的宽度和高度来缩放系数水平值。相关申请的交叉引用本申请要求于2017年1月31日递交的临时申请no.62/452,890的优先权,其全部内容通过引用合并于此。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1