具体实施方式
一般来讲,本公开描述了用于对视频数据进行编码的各种技术。具体地,本公开描述了用于对变换系数位阶值进行编码的技术。应当指出的是,虽然本公开的技术是关于ITU-T H.264、ITU-T H.265和JEM描述的,但是本公开的技术可普遍应用于视频编码。例如,除了包括在ITU-T H.265和JEM中的那些技术,本文所述的编码技术可并入视频编码系统(包括基于未来视频编码标准的视频编码系统),包括块结构、帧内预测技术、帧间预测技术、变换技术、滤波技术和/或其他熵编码技术。因此,对ITU-T H.264、ITU-T H.265和/或JEM的参考是出于描述性目的,并且不应被解释为限制本文所述技术的范围。此外,应当指出的是,将文献以引用方式并入本文是出于描述性目的,并且不应被解释为限制或产生关于本文所用术语的歧义。例如,在某个并入的参考文献中提供的对某个术语的定义不同于另一个并入的参考文献和/或如本文所用的该术语的情况下,则该术语应以广泛地包括每个相应定义的方式和/或以包括替代方案中每个特定定义的方式来解释。
在一个示例中,方法包括:确定系数位阶值是否等于1;并且在系数位阶值等于1的情况下,通过发送信号通知第一标记和第二标记的值来指示系数位阶值等于1;在系数位阶值大于1的情况下,确定系数位阶值是否大于或等于3;在系数位阶值不大于或等于3的情况下,通过发送信号通知第一标记、第二标记和第三标记的值来指示系数位阶值等于2;在系数位阶值大于或等于3的情况下,通过发送信号通知第一标记、第二标记、第三标记和第四标记的值来指示系数位阶值。
在一个示例中,设备包括一个或多个处理器,该一个或多个处理器被配置为:确定系数位阶值是否等于1;并且在系数位阶值等于1的情况下,通过发送信号通知第一标记和第二标记的值来指示系数位阶值等于1;在系数位阶值大于1的情况下,确定系数位阶值是否大于或等于3;在系数位阶值不大于或等于3的情况下,通过发送信号通知第一标记、第二标记和第三标记的值来指示系数位阶值等于2;在系数位阶值大于或等于3的情况下,通过发送信号通知第一标记、第二标记、第三标记和第四标记的值来指示系数位阶值。
在一个示例中,一种非暂态计算机可读存储介质包括存储在其上的指令,这些指令在被执行时使得设备的一个或多个处理器:确定系数位阶值是否等于1;并且在系数位阶值等于1的情况下,通过发送信号通知第一标记和第二标记的值来指示系数位阶值等于1;在系数位阶值大于1的情况下,确定系数位阶值是否大于或等于3;在系数位阶值不大于或等于3的情况下,通过发送信号通知第一标记、第二标记和第三标记的值来指示系数位阶值等于2;在系数位阶值大于或等于3的情况下,通过发送信号通知第一标记、第二标记、第三标记和第四标记的值来指示系数位阶值。
在一个示例中,装置包括以下装置:用于确定系数位阶值是否等于1的装置;以及在系数位阶值等于1的情况下,用于通过发送信号通知第一标记和第二标记的值来指示系数位阶值等于1的装置;在系数位阶值大于1的情况下,用于确定系数位阶值是否大于或等于3的装置;在系数位阶值不大于或等于3的情况下,用于通过发送信号通知第一标记、第二标记和第三标记的值来指示系数位阶值等于2的装置;在系数位阶值大于或等于3的情况下,用于通过发送信号通知第一标记、第二标记、第三标记和第四标记的值来指示系数位阶值的装置。
在一个示例中,方法包括:解析比特流中包括的第一标记和第二标记,基于所解析的第一标记和第二标记的值来确定系数位阶值大于1;解析包括在比特流中的第三标记和第四标记,基于所解析的第三标记和第四标记的值来确定系数位阶值是大于或等于3的奇数还是大于或等于4的偶数。
在一个示例中,设备包括一个或多个处理器,该一个或多个处理器被配置为:解析比特流中包括的第一标记和第二标记,基于所解析的第一标记和第二标记的值来确定系数位阶值大于1;解析比特流中包括的第三标记和第四标记,基于所解析的第三标记和第四标记的值来确定系数位阶值是大于或等于3的奇数还是大于或等于4的偶数。
在一个示例中,非暂态计算机可读存储介质包括存储在其上的指令,这些指令在被执行时使得设备的一个或多个处理器:解析比特流中包括的第一标记和第二标记,基于所解析的第一标记和第二标记的值来确定系数位阶值大于1;解析比特流中包括的第三标记和第四标记,基于所解析的第三标记和第四标记的值来确定系数位阶值是大于或等于3的奇数还是大于或等于4的偶数。
在一个示例中,装置包括以下装置:用于解析比特流中包括的第一标记和第二标记的装置;用于基于所解析的第一标记和第二标记的值来确定系数位阶值大于1的装置;用于解析包括在比特流中的第三标记和第四标记的装置;用于基于所解析的第三标记和第四标记的值来确定系数位阶值是大于或等于3的奇数还是大于或等于4的偶数。
在以下附图和描述中阐述了一个或多个示例的细节。其他特征、对象和优点将从描述和附图以及权利要求书中显而易见。
视频内容通常包括由一系列帧(或图片)组成的视频序列。一系列帧也可以被称为一组图片(GOP)。每个视频帧或图片可以包括多个切片或图块,其中切片或图块包括多个视频块。如本文所用,术语“视频块”通常可以指图片的区域,或者可以更具体地指可以被预测性地编码的样本值的最大阵列、其子分区和/或对应结构。此外,术语“当前视频块”可以指正被编码或解码的图片的区域。视频块可被定义为可被预测性地编码的样本值的阵列。应当指出的是,在一些情况下,像素值可被描述为包括视频数据的相应分量的样本值,其也可被称为颜色分量(例如,亮度(Y)和色度(Cb和Cr)分量或红色、绿色和蓝色分量)。应当指出的是,在一些情况下,术语“像素值”和“样本值”可互换使用。视频块根据扫描模式(例如,光栅扫描)在图片内排序。视频编码器可对视频块和其子分区执行预测编码。视频块和其子分区可以被称为节点。
视频采样格式(也可以被称为色度格式)可以相对于CU中包括的亮度样本的数量来定义CU中包括的色度样本的数量。例如,对于4:2:0采样格式,亮度分量的采样率是水平和垂直两个方向的色度分量的采样率的两倍。因此,对于根据4:2:0格式格式化的CU,用于亮度分量的样本阵列的宽度和高度是用于色度分量的每个样本阵列的宽度和高度的两倍。如上所述,通常根据水平和垂直亮度样本的数量来定义CU。对于根据4:2:2格式格式化的CU,亮度分量的样本阵列的宽度是每个色度分量的样本阵列的宽度的两倍,但是亮度分量的样本阵列的高度等于每个色度分量的样本阵列的高度。此外,对于根据4:4:4格式格式化的CU,亮度分量的样本阵列具有与每个色度分量的样本阵列相同的宽度和高度。
ITU-T H.264规定了包括16×16亮度样本的宏块。即,在ITU-T H.264中,图片被分段成宏块。ITU-T H.265指定了类似的编码树单元(CTU)结构(其可被称为最大编码单元(LCU))。在ITU-T H.265中,图片被分段成CTU。在ITU-T H.265中,对于图片,CTU大小可被设定为包括16×16、32×32或64×64亮度样本。在ITU-T H.265中,CTU由视频数据的每个分量(例如,亮度(Y)和色度(Cb和Cr))的相应编码树块(CTB)组成。应当指出的是,具有一个亮度分量和两个对应色度分量的视频可被描述为具有两个通道,即,亮度通道和色度通道。此外,在ITU-T H.265中,可根据四叉树(QT)划分结构来划分CTU,这使得CTU的CTB被划分为编码块(CB)。也就是说,在ITU-T H.265中,CTU可被划分为四叉树叶节点。根据ITU-T H.265,一个亮度CB连同两个对应的色度CB和相关联语法元素被称为编码单元(CU)。在ITU-TH.265中,可以发送信号通知CB的最小允许大小。在ITU-T H.265中,亮度CB的最小允许最小大小是8×8亮度样本。在ITU-T H.265中,使用帧内预测或帧间预测对图片区域进行编码的决定在CU级进行。
在ITU-T H.265中,CU与在CU处具有其根的预测单元(PU)结构相关联。在ITU-TH.265中,PU结构允许分割亮度CB和色度CB以生成对应的参考样本。即,在ITU-T H.265中,可将亮度CB和色度CB分割成相应的亮度预测块和色度预测块(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-T H.265中,除了正方形PB之外,还支持矩形PB来进行帧间预测,其中CB可垂直地或水平地减半以形成PB(即,帧间预测PB类型包括M×M、M/2×M/2、M/2×M或M×M/2)。此外,应当指出的是,在ITU-T H.265中,对于帧间预测,支持四个非对称PB划分,其中CB在CB的高度(顶部或底部)或宽度(左侧或右侧)的四分之一处被划分为两个PB(即,非对称划分包括M/4×M左、M/4×M右、M×M/4顶部和M×M/4底部)。对应于PB的帧内预测数据(例如,帧内预测模式语法元素)或帧间预测数据(例如,运动数据语法元素)用于生成PB的参考和/或预测样本值。
JEM规定了具有最大大小的256×256亮度样本的CTU。JEM指定了四叉树加二叉树(QTBT)块结构。在JEM中,QTBT结构允许由二叉树(BT)结构进一步划分四叉树叶节点。也就是说,在JEM中,二叉树结构允许将四叉树叶节点垂直或水平递归划分。图1示出了CTU(例如,具有256×256亮度样本的大小的CTU)被划分为四叉树叶节点并且四叉树叶节点根据二叉树进一步划分的示例。也就是说,在图1中,虚线指示四叉树中的附加二叉树划分。因此,JEM中的二叉树结构实现了正方形和矩形叶节点,其中每个叶节点包括CB。如图1所示,包括在GOP中的图片可以包括切片,其中每个切片包括CTU序列,并且每个CTU可根据QTBT结构被划分。图1示出了包括在切片中的一个CTU的QTBT划分的示例。在JEM中,CB用于预测而无需任何进一步的划分。也就是说,在JEM中,CB可以是对其应用相同预测的样本值的块。因此,JEM QTBT叶节点可类似于ITU-T H.265中的PB。
对于帧内预测编码,帧内预测模式可指定图片内的参考样本的位置。在ITU-TH.265中,已定义的可能的帧内预测模式包括平面(即,表面拟合)预测模式(predMode:0)、DC(即平坦的整体平均)预测模式(predMode:1),以及33个角度预测模式(predMode:2-34)。在JEM中,已定义的可能的帧内预测模式包括平面预测模式(predMode:0)、DC预测模式(predMode:1),以及65个角度预测模式(predMode:2-66)。应当指出的是,平面预测模式和DC预测模式可以被称为无方向预测模式,并且角度预测模式可以被称为方向预测模式。应当指出的是,无论已定义的可能预测模式的数量如何,本文描述的技术可以是普遍适用的。
对于帧间预测编码,运动矢量(MV)识别除了待编码的视频块的图片之外的图片中的参考样本,从而利用视频中的时间冗余。例如,可以从位于先前编码的一个或多个帧中的一个或多个参考块预测当前视频块,并且可以使用运动矢量来指示参考块的位置。运动向量和相关数据可以描述例如运动向量的水平分量、运动向量的垂直分量、运动向量的分辨率(例如,四分之一像素精度、二分之一像素精度、一像素精度、二像素精度、四像素精度)、预测方向和/或参考图片索引值。此外,编码标准诸如ITU-T H.265,可以支持运动矢量预测。运动矢量预测允许待指定的运动矢量使用相邻块的运动矢量。运动矢量预测的示例包括高级运动矢量预测(AMVP)、时间运动矢量预测(TMVP)、所谓的“合并”模式,以及“跳过”和“直接”运动推理。此外,JEM支持高级时间运动矢量预测(ATMVP)和空间-时间运动矢量预测(STMVP)。
如上所述,帧内预测数据或帧间预测数据用于产生样本值的块的参考样本值。包括在当前PB或另一类型的图片区域结构和相关联的参考样本(例如,使用预测生成的那些)中的样本值之间的差可以被称为残差数据。残差数据可以包括对应于视频数据的每个分量的相应差值阵列。残差数据可能在像素域中。可对差值阵列应用变换诸如离散余弦变换(DCT)、离散正弦变换(DST)、整数变换、小波变换或概念上类似的变换,以生成变换系数。在一些情况下,变换过程可以包括旋转和/或执行一个或多个一维变换。应当指出的是,在ITU-T H.265中,CU与在CU级具有其根的变换单元(TU)结构相关联。也就是说,在ITU-TH.265中,为了生成变换系数,可以对差值的阵列进行再分(例如,可以将四个8×8变换应用于16×16残差值阵列)。对于视频数据的每个分量,差值的此类再分可被称为变换块(TB)。应当指出的是,在ITU-T H.265中,TB不一定与PB对准。此外,应当指出的是,在ITU-T H.265中,TB可具有以下大小4×4、8×8、16×16和32×32。
应当指出的是,在JEM中,对应于CB的残差值用于生成变换系数而无需进一步划分。也就是说,在JEM中,QTBT叶节点可以类似于ITU-T H.265中的PB和TB两者。应当指出的是,在JEM中,可以(在视频编码器中)应用核心变换和后续二次变换来生成变换系数。对于视频解码器,变换的顺序是相反的。此外,在JEM中,是否应用二次变换来生成变换系数可取决于预测模式。
例如,就调色板编码量化而言,可以直接对变换系数或残差样本值执行量化过程。量化通过限制为一组指定值的振幅来近似变换系数。量化实质上对变换系数进行缩放以便改变表示一组变换系数所需的数据量。量化可以包括将变换系数(或将偏移值添加到变换系数的结果值)除以量化缩放因子和任何相关联的取整函数(例如,取整为最接近的整数)。量化的变换系数可以被称为系数位阶值。逆量化(或“去量化”)可以包括将系数位阶值与量化缩放因子相乘,以及任何倒数取整或偏移加法运算。应当指出的是,如本文所用,术语量化过程在一些情况下可指除以缩放因子以生成位阶值,并且在一些情况下可指乘以缩放因子以恢复变换系数。也就是说,量化过程在一些情况下可以指量化,而在一些情况下可以指逆量化。此外,应当指出的是,虽然在下面的示例中的一些示例中关于与十进制记数法相关的算术运算描述了量化过程,但是这样的描述是为了说明的目的,并且不应该被解释为进行限制。例如,本文描述的技术可以在使用二进制运算等的设备中实现。例如,本文描述的乘法和除法运算可以使用移位运算等来实现。
关于本文所用的公式,可以使用以下算术运算符:
+ 加法
- 减法
* 乘法,包括矩阵乘法
xy 求幂。将x指定为y的幂。在其他上下文中,此类符号用于上标而非旨在用于解释为求幂。
/ 将结果向着零截断的整数除法。例如,将7/4和-7/-4截断为1,将-7/4和7/-4截断为-1。
÷ 在不旨在进行截断或舍入情况下用于表示数学公式中的除法。
在不旨在进行截断或舍入情况下用于表示数学公式中的除法。
x%y 模量。x除以y的余数,仅针对x≥0且y>0的整数x和y定义。
此外,可以使用以下逻辑运算符:
x&&y x和y的布尔逻辑“和”
x||y x和y的布尔逻辑“或”
!布尔逻辑“否”
x?y:z如果x为TRUE或不等于0,则求值为y;否则,求值为z。
此外,可以使用以下关系运算符:
> 大于
≥ 大于或等于
< 小于
≤ 小于或等于
== 等于
!= 不等于
此外,可以使用以下逐位运算符:
& 逐位“和”。当对整型变量进行运算时,对整数值的二进制补码表示进行运算。当对包含比另一变量更少位的二进制变量进行运算时,通过添加等于0的更多有效位来扩展较短变量。
| 逐位“或”。当对整型变量进行运算时,对整数值的二进制补码表示进行运算。当对包含比另一变量更少位的二进制变量进行运算时,通过添加等于0的更多有效位来扩展较短变量。
^ 逐位“异或”。当对整型变量进行运算时,对整数值的二进制补码表示进行运算。当对包含比另一变量更少位的二进制变量进行运算时,通过添加等于0的更多有效位来扩展较短变量。
x>>y x乘y二进制数字的二进制补码整数表示的算术右移。该函数仅针对y的非负整数值来定义。由于右移而移位到最高有效位(MSB)中的位具有等于移位操作之前的x的MSB的值。
x<<y x乘y二进制数字的二进制补码整数表示的算术左移。该函数仅针对y的非负整数值来定义。由于左移而移位到最低有效位(LSB)中的位具有等于0的值。
图2A至图2B是示出对视频数据块进行编码的示例的概念图。如图2A所示,通过从当前视频数据块中减去一组预测值生成残差、对残差执行变换并且将变换系数量化来生成位阶值,对视频数据的当前块(例如,对应于视频分量的CB)进行编码。如图2B中所示,通过对位阶值执行逆量化,执行逆变换,并且将一组预测值加上所得残差来对当前视频数据块进行解码。应当指出的是,在图2A至图2B的示例中,重构块的样本值不同于被编码的当前视频块的样本值。这样,编码可被认为是有损的。然而,对于重构视频的观看者,样本值的差值可被认为是可接受的或不可察觉的。
另外,如图2A至图2B所示,使用缩放因子阵列生成系数位阶值。在ITU-T H.265中,通过选择缩放矩阵并将缩放矩阵中的每个条目乘以量化缩放因子来生成缩放因子阵列。在ITU-T H.265中,部分地基于预测模式和颜色分量来选择缩放矩阵,其中定义了以下大小的缩放矩阵:4×4、8×8、16×16和32×32。应当指出的是,在一些示例中,缩放矩阵可以为每个条目提供相同的值(即,根据单个值缩放所有系数)。在ITU-T H.265中,可以由量化参数QP确定量化缩放因子的值。在ITU-T H.265中,对于8位的位深度,QP可以取0至51的52个值,QP变化1通常对应于量化缩放因子的值变化约12%。此外,在ITU-T H.265中,可以使用预测量化参数值(可以被称为预测QP值或QP预测值)和可选地发送信号通知的量化参数增量值(可以被称为QP增量值或增量QP值)来导出一组变换系数的QP值。在ITU-T H.265中,可以针对每个CU更新量化参数,并且可以针对亮度和色度通道中的每一个导出相应量化参数。
再次参考图2A,系数位阶值被编码成比特流。可根据熵编码技术对系数位阶值和语法元素(例如,指示视频块的编码结构的语法元素)进行熵编码。熵编码过程包括使用无损数据压缩算法对语法元素值进行编码。熵编码技术的示例包括内容自适应可变长度编码(CAVLC)、上下文自适应二进制算术编码(CABAC)、概率区间划分熵编码(PIPE)等。熵编码的量化变换系数和对应的熵编码的语法元素可形成可用于在视频解码器处再现视频数据的兼容比特流。熵编码过程,例如CABAC,可以包括对语法元素进行二值化。二值化是指将语法元素的值转换为一个或多个位的序列的过程。这些位可以被称为“bin”。二值化可以包括以下编码技术中的一种或组合:固定长度编码、一元编码、截断一元编码、截断Rice编码、Golomb编码、k阶指数Golomb编码和Golomb-Rice编码。例如,二值化可以包括使用8位固定长度二值化技术将语法元素的整数值5表示为00000101,或者使用一元编码二值化技术将整数值5表示为11110。如本文所用,术语固定长度编码、一元编码、截断一元编码、截断Rice编码、Golomb编码、k阶指数Golomb编码和Golomb-Rice编码中的每一个可以指这些技术的一般实现和/或这些编码技术的更具体实现。例如,可以根据视频编码标准(例如,ITU-TH.265)具体地定义Golomb-Rice编码实现。
在ITU-T H.265中CABAC的示例中,对于特定bin,使用上下文模型来确定bin的上下文索引。上下文模型是bin的概率状态模型所必需的,并且在给定算术编码状态下,上下文索引提供bin的最大概率状态(MPS)值(即,bin的MPS为0或1中的一者),以及bin为MPS和/或最小概率状态(LPS)的概率值。例如,在当前状态下上下文索引可以指示bin的MPS为0,并且bin为1(即,LPS)的概率为0.3。应当指出的是,可以基于先前编码的语法元素的值来选择上下文模型。例如,与相邻视频块相关联的语法元素的值可以用于确定与对应于当前视频块的语法元素相关联的上下文模型。
二进制算术编码基于递归区间子划分原理对一系列0和1进行编码。基本上,对于二进制串(b1,…,bN),对于具有初始宽度(范围)R0的区间,对于(b1,…,bN),R0如下递归地划分:
对于i=(1,…,N),
如果bi等于LPS,则:
Ri=pLPSi*Ri-1,
否则
Ri=Ri-1-pLPSi*Ri-1,
其中,
LPS是最小概率符号的值,并且
pLPSi是bi为LPS的估计概率。
如上所述,基于bi的观测值是MPS还是LPS来确定Ri。例如,对于b1,如果R0为512,则LPS为0,并且pLPS1*R0为158,如果观测到bi为1,则R1=354,并且如果观测到b1为0,则R1=158。在ITU-T H.265中,上下文索引提供bin的MPS值以及bin为LPS的概率值,其中bin为LPS的概率值(即,pLPS)由64个概率状态中的一个概率状态指示。具体地,在ITU-T H.265中,对概率状态索引变量pStateIdx进行索引,使得pStateIdx=0对应于最大LPS概率值,并且降低的LPS概率被索引到更高的pStateIdx值。此外,在ITU-T H.265中,可以用9位表示R0为512。然而,将Ri量化成集合{Q1,…,Q4},使得根据64×4查找表预先计算和索引pLPSi*Ri-1的所有可能值。
在编码期间,在确定Ri的区间之后,即基于pLPSi和bi的观测值来确定之后,进行再归一化过程。再归一化过程基本上基于Ri的值来确定是否输出位(例如,写入比特流)。实质上,在再归一化中,如果Ri降至阈值以下,则Ri加倍并且可输出位值。例如,在ITU-T H.265中描述的编码器侧再归一化过程中,确定Ri是否小于256。如果Ri不小于256,则没有位写入比特流,并且使用Ri计算出bi+1的Ri+1。如果Ri小于256,则基于子区间的下端有条件地将0位、1位写入比特流或者没有位写入比特流,并且Ri加倍,并且计算出bi+1的Ri+1(即,基于加倍的Ri值)。接收输出位(即,算术编码)的二进制解码器通过在每个bi处作为编码器执行相同的区间子划分并且通过将算术编码的子集与Ri值进行比较来恢复二进制串(bi,...,bN)。
在ITU-T H.265中,bin的观测值用于更新上下文索引。ITU-T H.265提供了关于基于所确定的bin值来更新上下文索引的以下内容:
其中,
valMps是bin的MPS值;以及
transIdxMps()和transIdxLps()是如表1中提供的一组定义的转换规则。
pStateIdx |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
transIdxLps |
0 |
0 |
1 |
2 |
2 |
4 |
4 |
5 |
6 |
7 |
8 |
9 |
9 |
11 |
11 |
12 |
transIdxMps |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
pStateIdx |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
transIdxLps |
13 |
13 |
15 |
15 |
16 |
16 |
18 |
18 |
19 |
19 |
21 |
21 |
22 |
22 |
23 |
24 |
transIdxMps |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
pStateIdx |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
transIdxLps |
24 |
25 |
26 |
26 |
27 |
27 |
28 |
29 |
29 |
30 |
30 |
30 |
31 |
32 |
32 |
33 |
transIdxMps |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47. |
48 |
pStateIdx |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
transIdxLps |
33 |
33 |
34 |
34 |
35 |
35 |
35 |
36 |
36 |
36 |
37 |
37 |
37 |
38 |
38 |
63 |
transIdxMps |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
62 |
63 |
表1
因此,在ITU-T H.265中,如果确定bin值等于MPS,则LPS概率值减小。如果确定bin值等于LPS,则LPS概率值增加,并且此外,如果当前概率状态pLPS为0.5(即,pStateIdx等于0),则发生LPS反转(即,先前的LPS值变为MPS)。应当指出的是,根据ITU-T H.265,根据相等概率状态使用算术编码对一些语法元素进行熵编码,此类编码可以称为旁路编码。ITU-TH.265中提供的概率估计具有相对较低的复杂度。已经提出了用于二进制算术编码的具有更高复杂度的改善的(即,更准确的)概率估计。
如上所述,系数位阶值被编码成比特流。ITU-T H.265中,根据表2中所示的语法指示系数位阶值。
表2
关于表2,ITU-T H.265提供了以下语义:
coded_sub_block_flag[xS][yS]为当前变换块内位置(xS,yS)处的子块指定以下内容,其中子块是16个变换系数位阶的(4×4)阵列:
-如果coded_sub_block_flag[xS][yS]等于0,则推断位置(xS,yS)处的子块的16个变换系数位阶等于0。
-否则(coded_sub_block_flag[xS][yS]等于1)应用以下内容:
-如果(xS,yS)等于(0,0)并且(LastSignificantCoeffX,LastSignificantCoeffY)不等于(0,0),则存在针对位置(xS,yS)处的子块的16个sig_coeff_flag语法元素中的至少一个。
-否则,位置(xS,yS)处的子块的16个变换系数位阶中的至少一个具有非零值。
当coded_sub_block_flag[xS][yS]不存在时,推断如下:
-如果以下条件中的一个或多个为真,则推断coded_sub_block_flag[xS][yS]等于l:
-(xS,yS)等于(0,0)
-(xS,yS)等于(LastSignificantCoeffX>>2,LastSignificantCoeffY>>2)
-否则,推断coded_sub_block_flag[xS][yS]等于0。
sig_coeff_flag[xC][yC]为当前变换块内的变换系数位置(xC,yC)指定位置(xC,yC)处的对应变换系数位阶是否为非零,如下:
-如果sig_coeff_flag[xC][yC]等于0,则位置(xC,yC)处的变换系数位阶被设置为等于0。
-否则(sig_coeff_flag[xC][yC]等于1),位置(xC,yC)处的变换系数位阶具有非零值。
当不存在sig_coeff_flag[xC][yC]时,推断如下:
-如果(xC,yC)是扫描顺序中的最后一个有效位置(LastSignificantCoeffX,LastSignificantCoeffY)或所有以下条件均为真,则推断sig_coeff_flag[xC][yC]等于1:
-(xC&3,yC&3)等于(0,0)
-inferSbDcSigCoeffFlag等于1
-coded_subJblock_flag[xS][yS]等于1
-否则,推断sig_coeff_flag[xC][yC]等于0。
coeff_abs_level_greaterl_flag[n]为扫描位置n指定是否存在大于1的变换系数位阶绝对值。
当coeff_abs_level_greaterl_flag[n]不存在时,推断其等于0。
coeff_abs_level_greater2_flag[n]为扫描位置n指定是否存在大于2的变换系数位阶绝对值。
当coeff_abs_level_greater2_flag[n]不存在时,推断其等于0。
coeff_sign_flag[n]为扫描位置n指定变换系数位阶的符号,如下:
-如果coeff_sign_flag[n]等于0,则对应的变换系数位阶具有正值。
-否则(coeff_sign_flag[n]等于1),对应的变换系数位阶具有负值。
当coeff_sign_flag[n]不存在时,推断其等于0。
coeff_abs_level_remaimng[n]是在扫描位置n处用Golomb-Rice代码编码的变换系数位阶的剩余绝对值。
当coeff_abs_level_remaining[n]不存在时,推断其等于0。
表3根据ITU-T H.265中sig_coeff_flag、coeff_abs_level_greaterl_flag、coeff_abs_level_greater2_flag和coeff_abs_level_remaining的值提供了具有有效系数的子块中的系数的可能位阶值的汇总。
表3
应当指出的是,coded_sub_block_flag、sig_coeff_flag,coeff_abs_level_greaterl_flag、coeff_abs_level_greater2_flag和coeff_sign_flag中的每一者都具有1位固定长度的二值化,并且ITU-TH.265为coeff_abs_Level_remaining提供了特定的二值化。此外,ITU-T H.265提供了coeff_sign_flag和coeff_abs_level_remaining被旁路编码的情况以及以下情况:导出针对coded_sub_block_flag的4个上下文中的一个,导出针对sig_coeff_flag的44个上下文中的一个,导出针对coeff_abs_level_greaterl_flag的24个上下文中的一个,并且选择针对coeff_abs_level_greater2_flag的6个上下文中的一个。为了简洁起见,省略coeff_abs_level_remaining的特定二值化以及针对coded_sub_block_flag、sig_coeff_flag、coeff_abs_level_greaterl_flag和coeff_abs_level_greater2_flag的上下文的导出的细节。然而,参考了ITU-T H.265中的相关部分。
2018年7月10日至18日在斯洛文尼亚的卢布尔雅那(Ljubljana,SI)举行的ISO/IEC JTC1/SC29/WG11第11次会议中的“Non-CE7:Alternative Entropy Coding forDependent Quantization”,文档JVET-K0072-v2,描述了对系数位阶值进行编码的具体实施,该文档以引用方式并入本文并且被称为JVET-K0072。在JVET-K0072中,在以下四个回合中在扫描位置上对子块的变换系数位阶进行编码:
ο回合1:按编码顺序有效性(sig_coeff_flag)、奇偶校验(par_level__flag)和大于1的标记(rem_abs_gt1_flag)进行编码。只有当sig_coeff_flag等于1时,才存在奇偶校验和大于1的标记。大于1的标记的上下文不取决于前一奇偶校验标记,并且sig_coeff_fla的上下文不取决于前一rem_abs_gt1_flag的值(当前一sig_coeff_flag等于1时);
ο回合2:对所有扫描位置的较大的2个标记(rem_abs_gt2_flag)进行编码,其中rem_abs_gt1_flag等于1。上下文模型不取决于在该第2回合中编码的任何数据。
ο回合3:对所有扫描位置的语法元素abs_remainder进行编码,其中rem_abs_gt2_flag等于1。将非二进制语法元素二值化,并且在算术编码引擎的旁路模式下对所得的bin进行编码!
ο回合4:对所有扫描位置的符号(sign_flag)进行编码,其中sig_coeff_flag等于1。
JVET-K0072中,根据表4中所示的语法指示系数位阶值。
表4
关于表4,JVET-K0072为par_level_flag、rem_abs_gt1_flag、rem_abs_gt2_flag提供了以下语义:
par_level_flag[n]指定扫描位置n处的变换系数位阶的奇偶校验。当par_level_flag[n]不存在时,推断其等于0。
rem_abs_gt1_flag[n]为扫描位置n指定是否存在语法元素rem_abs_gt2_flag[n]。当rem_abs_gt1_flag[n]不存在时,推断其等于0。
rem_abs_gt2_flag[n]为扫描位置n指定是否存在语法元素abs_remainder[n]。当rem_abs_gt2_flag[n]不存在时,推断其等于0。
应当指出的是,JVET-K0072提供了为par_level_flag、rem_abs_gt1_flag和rem_abe_gt2_flag分配上下文以用于进行熵编码的情况。
表5根据JVET-K0072中sig_coeff_flag、par_level_flag、rem_abs_gt1_flag、rem_abs_gt2_flag和abs_remainder的值提供了具有有效系数的子块中的系数的可能位阶值的汇总。
表5
应当指出的是,ITU-T H.265中,为了限制解码复杂性,如果bin与比特的比率变得太高,则具有值0x0000的一个或多个16位cabac_zero_word语法元素被附加到网络抽象层(NAL)单元。也就是说,ITU-T H.265中,存在对可以特定位速率编码的bin的最大数量的约束。
图3是示出根据本公开的一种或多种技术的可被配置为对视频数据进行编码(例如,编码和/或解码)的系统的示例的框图。系统100表示可以根据本公开的一种或多种技术使用所述划分技术执行视频编码的系统的示例。如图3所示,系统100包括源设备102、通信介质110和目标设备120。在图3所示的示例中,源设备102可以包括被配置为对视频数据进行编码并将编码视频数据发送到通信介质110的任何设备。目标设备120可以包括被配置为经由通信介质110接收编码视频数据并且对编码视频数据进行解码的任何设备。源设备102和/或目标设备120可以包括配备用于进行有线和/或无线通信的计算设备,并且可以包括机顶盒、数字视频录像机、电视机、台式电脑、膝上型电脑或平板电脑、游戏控制台、移动设备包括例如“智能”电话、蜂窝电话、个人游戏设备和医学成像设备。
通信介质110可以包括无线和有线通信介质和/或存储设备的任意组合。通信介质110可以包括同轴电缆、光纤电缆、双绞线电缆、无线发射器和接收器、路由器、交换机、中继器、基站或可用于促进各种设备和站点之间的通信的任何其他设备。通信介质110可以包括一个或多个网络。例如,通信介质110可以包括被配置为允许访问万维网例如互联网的网络。网络可以根据一个或多个电信协议的组合操作。电信协议可以包括专有方面并且/或者可以包括标准化电信协议。标准化电信协议的示例包括数字视频广播(DVB)标准、高级电视系统委员会(ATSC)标准、综合服务数字广播(ISDB)标准、有线数据业务接口规范(DOCSIS)标准、全球移动通信系统(GSM)标准、码分多址(CDMA)标准、第3代合作伙伴计划(3GPP)标准、欧洲电信标准协会(ETSI)标准、互联网协议(IP)标准、无线应用协议(WAP)标准以及电气与电子工程师协会(IEEE)标准。
存储设备可以包括能够存储数据的任何类型的设备或存储介质。存储介质可以包括有形或非暂态计算机可读介质。计算机可读介质可以包括光盘、闪存存储器、磁存储器或任何其他合适的数字存储介质。在一些示例中,存储器设备或其部分可以被描述为非易失性存储器,并且在其他示例中,存储器设备的部分可以被描述为易失性存储器。易失性存储器的示例可以包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)。非易失性存储器的示例可以包括磁性硬盘、光盘、软盘、闪存或电可编程存储器(EPROM)或电可擦除和可编程(EEPROM)存储器的形式。存储设备可以包括存储卡(例如,安全数字(SD)存储卡)、内部/外部硬盘驱动器和/或内部/外部固态驱动器。数据可以根据定义的文件格式存储在存储设备上。
再次参考图3,源设备102包括视频源104、视频编码器106和接口108。视频源104可以包括被配置为捕获和/或存储视频数据的任何设备。例如,视频源104可以包括摄像机和可操作地与其耦接的存储设备。视频编码器106可以包括被配置为接收视频数据并生成表示视频数据的兼容比特流的任何设备。兼容比特流可以指视频解码器可以从其接收和再现视频数据的比特流。兼容比特流的各方面可根据视频编码标准来定义。当生成兼容比特流时,视频编码器106可以压缩视频数据。压缩可能是有损的(可觉察的或不可觉察的)或无损的。接口108可以包括被配置为接收兼容视频比特流并且将该兼容视频比特流传输和/或存储到通信介质的任何设备。接口108可以包括网络接口卡诸如以太网卡,并且可以包括光收发器、射频收发器或者可以传输和/或接收信息的任何其他类型的设备。此外,接口108可以包括计算机系统接口,该计算机系统接口可以允许兼容视频比特流存储在存储设备上。例如,接口108可以包括支持外围组件互连(PCI)和外围组件快速互连(PCIe)总线协议、专用总线协议、通用串行总线(USB)协议、FC的芯片组或可用于互连对等设备的任何其他逻辑和物理结构。
再次参考图3,目标设备120包括接口122、视频解码器124和显示器126。接口122可以包括被配置为从通信介质接收兼容视频比特流的任何设备。接口108可以包括网络接口卡诸如以太网卡,并且可以包括光收发器、射频收发器或者可以接收和/或发送信息的任何其他类型的设备。此外,接口122可以包括允许从存储设备检索兼容视频比特流的计算机系统接口。例如,接口122可以包括支持PCI和PCIe总线协议、专用总线协议、USB协议、PC的芯片组,或者可以被用于互连对等设备的任何其他逻辑和物理结构。视频解码器124可以包括被配置为接收兼容比特流和/或其可接受变体,并且从其再现视频数据的任何设备。显示器126可以包括被配置为显示视频数据的任何设备。显示器126可以包括各种显示设备诸如液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另外的类型的显示器中的一种。显示器126可以包括高清显示器或超高清显示器。应当指出的是,虽然在图3所示的示例中,视频解码器124被描述为将数据输出到显示器126,但视频解码器124可被配置为将视频数据输出到各种类型的设备和/或其子部件。例如,视频解码器124可被配置为将视频数据输出到任何通信介质,如本文所述。
图4是示出可实现本文所述的用于对视频数据进行编码的技术的视频编码器200的示例的框图。应当指出的是,尽管示例性视频编码器200被示出为具有不同的功能块,但此类图示旨在用于描述目的,并且不将视频编码器200和/或其子部件限制为特定的硬件或软件架构。可使用硬件、固件和/或软件具体实施的任何组合来实现视频编码器200的功能。在一个示例中,视频编码器200可被配置为根据本文描述的技术对视频数据进行编码。
视频编码器200可执行图片区域的帧内预测编码和帧间预测编码,并且因此可被称为混合视频编码器。在图4所示的示例中,视频编码器200接收源视频块。在一些示例中,源视频块可以包括已经根据编码结构划分的图片区域。例如,源视频数据可以包括宏块、CTU、CB、其子分区和/或另外的等效编码单元。在一些示例中,视频编码器200可被配置为执行源视频块的附加子划分。应当指出的是,无论在编码之前和/或期间如何划分源视频数据,本文所述的一些技术都可普遍适用于视频编码。在图4所示的示例中,视频编码器200包括求和器202、变换系数生成器204、系数量化单元206、逆量化/变换处理单元208、求和器210、帧内预测处理单元212、帧间预测处理单元214、滤波器单元216和熵编码单元218。
如图4所示,视频编码器200接收源视频块并输出比特流。视频编码器200可通过从源视频块中减去预测视频块来生成残差数据。求和器202表示被配置为执行该减法运算的部件。在一个示例中,减去视频块出现在像素域中。变换系数生成器204将变换,诸如离散余弦变换(Discrete Cosine Transform,DCT)、离散正弦变换(Discrete Sine Transform,DST)或概念上类似的变换,应用到其残余块或子分区(例如,可以将四个8×8变换应用于16×16残差值阵列)以生成一组残差变换系数。变换系数生成器204可被配置为执行离散三角变换系列中包括的变换的任意和全部组合。如上所述,在ITU-T H.265中,TB被限制为以下大小4×4、8×8、16×16和32×32。在一个示例中,变换系数生成器204可被配置为根据大小为4×4、8×8、16×16和32×32的阵列执行变换。在一个示例中,变换系数生成器204可进一步被配置为根据其他尺寸的阵列执行变换。具体地,在一些情况下,对不同值组成的矩形阵列执行变换可能是有用的。在一个示例中,变换系数生成器204可被配置为根据以下阵列大小来执行变换:2×2、2×4N、4M×2和/或4M×4N。在一个示例中,二维(2D)M×N逆变换可实现为一维(1D)M点逆变换后再进行1D N点逆变换。在一个示例中,2D逆变换可实现为1D N点垂直变换后再进行1D N点水平变换。在一个示例中,2D逆变换可实现为1D N点水平变换后再进行1D N点垂直变换。变换系数生成器204可将变换系数输出到系数量化单元206。
系数量化单元206可被配置为执行变换系数的量化。如上所述,可以通过调整量化参数来修改量化程度。系数量化单元206可以进一步被配置为确定量化参数并且输出QP数据(例如,用于确定量化组大小和/或增量QP值的数据),视频解码器可以使用该QP数据来重构量化参数以在视频解码期间执行逆量化。应当指出的是,在其他示例中,可以使用一个或多个附加或另选的参数来确定量化位阶(例如,缩放因子)。本文所述的技术通常可应用于基于对应于视频数据的某一分量的变换系数的量化位阶,确定对应于视频数据的另一分量的变换系数的量化位阶。
再次参见图4,量化的变换系数被输出到逆量化/变换处理单元208。逆量化/变换处理单元208可被配置为应用逆量化和逆变换来生成重构的残差数据。如图4所示,在求和器210处,重构的残差数据可以被添加到预测视频块。这样,可以重构编码的视频块,并且可以使用所得重构的视频块来评估给定的预测、变换和/或量化的编码质量。视频编码器200可被配置为执行多个编码回合(例如,在改变预测、变换参数和量化参数中的一个或多个的同时执行编码)。比特流的率失真或其他系统参数可以基于重构的视频块的评估来优化。此外,重构的视频块可被存储并用作预测后续块的参考。
如上所述,可以使用帧内预测来编码视频块。帧内预测处理单元212可被配置为针对待编码视频块选择帧内预测模式。帧内预测处理单元212可被配置为评估帧和/或其区域并且确定用以对当前块进行编码的帧内预测模式。如图4所示,帧内预测处理单元212将帧内预测数据(例如,语法元素)输出到熵编码单元218和变换系数生成器204。如上所述,对残差数据执行的变换可以取决于模式。如上所述,可能的帧内预测模式可以包括平面预测模式、DC预测模式和角度预测模式。此外,在一些示例中,可以从用于亮度预测模式的帧内预测推断出对色度分量的预测。帧间预测处理单元214可被配置为针对当前视频块执行帧间预测编码。帧间预测处理单元214可被配置为接收源视频块并且计算视频块的PU的运动矢量。运动矢量可以指示当前视频帧内的视频块的PU(或类似的编码结构)相对于参考帧内的预测块的位移。帧间预测编码可以使用一个或多个参考图片。此外,运动预测可以是单向预测(使用一个运动矢量)或双向预测(使用两个运动矢量)。帧间预测处理单元214可被配置为通过计算由例如绝对差之和(SAD)、平方差之和(SSD)或其他差值度量确定的像素差来选择预测块。如上所述,可以根据运动矢量预测来确定和指定运动矢量。如上所述,帧间预测处理单元214可被配置为执行运动矢量预测。帧间预测处理单元214可被配置为使用运动预测数据生成预测块。例如,帧间预测处理单元214可定位帧缓冲器内的预测视频块(图4中未示出)。应当指出的是,帧间预测处理单元214可以进一步被配置为将一个或多个内插滤波器应用于重构的残差块,以计算用于运动估计的子整数像素值。帧间预测处理单元214可将所计算的运动矢量的运动预测数据输出到熵编码单元218。如图4所示,帧间预测处理单元214可经由滤波器单元216接收重构的视频块。滤波器单元216可被配置为执行解块和/或样本自适应偏移(SAO)滤波。解块是指平滑化重构视频块边界的过程(例如,使观察者不易察觉到边界)。SAO滤波是一种可用于通过向重构的视频数据添加偏移以改善重构的非线性振幅映射。
再次参考图4,熵编码单元218接收量化变换系数和预测语法数据(即,帧内预测数据、运动预测数据、QP数据等)。应当指出的是,在一些示例中,系数量化单元206可以在将系数输出到熵编码单元218之前执行对包括量化变换系数的矩阵的扫描。在其他示例中,熵编码单元218可执行扫描。熵编码单元218可被配置为根据本文中所描述的技术中的一个或多个执行熵编码。熵编码单元218可被配置为输出兼容比特流(即视频解码器可从其接收和再现视频数据的比特流)。
图5是示出根据本公开的一种或多种技术的可被配置为对语法元素值进行编码的熵编码器的示例的框图。熵编码单元300可以包括上下文自适应熵编码单元,例如,CABAC编码器。如图5所示,熵编码器300包括二值化单元302、二进制算术编码单元304和上下文建模单元310。熵编码单元300可以接收一个或多个语法元素值并输出兼容比特流。如上所述,二值化包括表示bin串中的语法元素值。二值化单元302可被配置为接收语法元素值并根据一种或多种二值化技术产生bin串。二值化单元302可以使用例如以下技术中的任何一种或组合来产生bin串:固定长度编码、一元编码、截断一元编码、截断Rice编码、Golomb编码、指数Golomb编码和Golomb-Rice编码。
如上所述,二进制算术编码基于递归区间子划分原理对一系列0和1进行编码。如上文进一步所述,bi为LPS(或MPS)的估计概率可基于上下文索引。二进制算术编码单元304被配置为从二值化单元302接收bin串并且从上下文建模单元306接收对应于bin的上下文索引,并且对bin串执行二进制算术编码。也就是说,二进制算术编码单元304被配置为根据再归一化过程将位写入比特流,并且进一步指示bin的观测值,使得可以更新上下文模型。可以根据视频编码标准诸如ITU-T H.265来定义上下文模型。上下文模型可以存储在存储器中。例如,上下文建模单元306可以存储一系列索引表并且/或者利用映射函数来确定特定bin的上下文模型。应当指出的是,二进制编码的功能不限于特定的功能块,并且示例图5中的二进制算术编码单元304和上下文建模单元306的示例不应理解为限制性的。
如上所述,ITU-T H.265中,如果bin与比特的比率变得太高,则具有值0x0000的一个或多个16位cabac_zero_word语法元素被附加到网络抽象层(NAL)单元。已经观察到,当例如根据JVET-K0072中所述的技术修改ITU-T H.265中用于将系数位阶值编码成比特流的过程时,结果是cabac_zero_word语法元素插入比特流中的速率增加。这种增加不太理想。
在一个示例中,根据本文的技术,可以增加bin与比特的比率,一个或多个16位cabac_zero_word语法元素按照该比率附加到NAL单元。例如,ITU-T H.265中,当前约束基于以下内容:
最大bin率=4/3比特率+(原始图像比特率/32)
在一个示例中,约束可被修改为如下:
最大bin率=3/2比特率+原始采样率
此外,在一个示例中,可以禁用约束,使得无论bin与比特的比率如何,都无16位cabac_zero_word语法元素被插入比特流中(或发生其他比特流补偿)。在其他示例中,可以修改语法元素(包括用于对系数位阶值进行编码的语法元素)的二值化,并且当基于bin与比特的比率约束进行比特流补偿时,这样的修改可以提高编码效率。然而,应当指出的是,无论基于bin与比特的比率的任何约束如何,本文所述的用于对系数位阶值进行编码的技术通常都可用于视频编码。
在一个示例中,根据本文的技术,可以基于表6中所示的示例语法来指示系数位阶值。
表6
表7根据表6中sig_coeff_flag、par_level_flag、rem_abs_gt1_flag、rem_abs_gt2_flag和abs_remainder的值提供了具有有效系数的子块中的系数的可能位阶值的汇总。
表7
应当指出的是,当将表6中所示的示例性语法与表4中所示的语法进行比较时,可以观察到以下内容:上下文编码的bin的最差情况数量未改变;上下文的数量可保持不变;在典型情况下可存在更少的bin(即,值1(相对于值2、值3)使用更少的bin);这可能更有效,因为值1使用更少的bin(更少的极端概率);并且语法少利用一个循环。
在一个示例中,根据本文的技术,可以基于表8中所示的示例语法来指示系数位阶值。
表8
表9根据表8中sig_coeff_flag、par_level_flag、rem_abs_gt1_flag、rem_abs_gt2_flag、rem_abs_gt3_flag和abs_remainder的值提供了具有有效系数的子块中的系数的可能位阶值的汇总。
表9
应当指出的是,当将表7中所示的示例性语法与表4中所示的语法进行比较时,可以观察到以下内容:在典型情况下可以存在更少的bin(即,值1使用更少的bin);这可能更有效,因为值1使用更少的bin(更少的极端概率);并且语法少利用一个循环。
在一个示例中,根据本文的技术,可以基于表10中所示的示例语法来指示系数位阶值。
表10
表11根据表10中sig_coeff_fLag、par_level_flag、rem_abs_gt1_flag和abs_remainder的值提供了具有有效系数的子块中的系数的可能位阶值的汇总。
表11
应当指出的是,当将表10中所示的示例性语法与表4中所示的语法进行比较时,可以观察到以下内容:上下文编码的块的最差情况数量减少,并且上下文的数量可以减少。
在一个示例中,根据本文的技术,可以基于表12中所示的示例语法来指示系数位阶值。
表12
表13根据表12中sig_coeff_flag、par_level_flag、rem_abs_gt1_flag、rem_abs_gt2_flag和abs_remainder的值提供了具有有效系数的子块中的系数的可能位阶值的汇总。
表13
应当指出的是,当将表12中所示的示例性语法与表4中所示的语法进行比较时,可以观察到以下内容:上下文编码的bin的最差情况数量未改变;上下文的数量可保持不变;在典型情况下可存在更少的bin(即,值1(相对于值2、值3)使用更少的bin);这可能更有效,因为值1使用更少的bin(更少的极端概率);并且语法少利用一个循环。
这样,视频编码器表示被配置为执行以下操作的设备的示例:确定系数位阶值是否等于1;并且在系数位阶值等于1的情况下,通过发送信号通知第一标记和第二标记的值来指示系数位阶值等于1;在系数位阶值大于1的情况下,确定系数位阶值是否大于或等于3;在系数位阶值不大于或等于3的情况下,通过发送信号通知第一标记、第二标记和第三标记的值来指示系数位阶值等于2;在系数位阶值大于或等于3的情况下,通过发送信号通知第一标记、第二标记、第三标记和第四标记的值来指示系数位阶值。
图6是示出根据本公开的一种或多种技术的可被配置为对视频数据进行解码的视频解码器的示例的框图。在一个示例中,视频解码器400可被配置为基于上文所述的技术中的一种或多种来重构视频数据。也就是说,视频解码器400可以与上述视频编码器200互逆的方式操作。视频解码器400可被配置为执行帧内预测解码和帧间预测解码,并且因此可被称为混合解码器。在图6所示的示例中,视频解码器400包括熵解码单元402、逆量化单元404、逆变换处理单元406、帧内预测处理单元408、帧间预测处理单元410、求和器412、滤波器单元414和参考缓冲器416。视频解码器400可被配置为以与视频编码系统一致的方式对视频数据进行解码,该视频编码系统可以实现视频编码标准的一个或多个方面。应当指出的是,尽管示例性视频解码器400被示出为具有不同的功能块,但此类图示旨在用于描述目的,并且不将视频解码器400和/或其子部件限制为特定的硬件或软件架构。可使用硬件、固件和/或软件具体实施的任何组合来实现视频解码器400的功能。
如图6所示,熵解码单元402接收熵编码的比特流。熵解码单元402可被配置为根据与熵编码过程互逆的过程对来自比特流的量化语法元素和量化系数进行解码。熵解码单元402可被配置为根据上文所述的任何熵编码技术来执行熵解码。熵解码单元402可以与视频编码标准一致的方式解析编码的比特流。视频解码器400可被配置为解析编码的比特流,其中该编码的比特流基于上述技术生成。
图7是示出可实现本公开描述的一种或多种技术的示例性熵解码单元的框图。熵解码单元500接收熵编码的比特流并从该比特流解码语法元素。如图7所示,熵解码单元500包括二进制算术解码模块502、上下文建模单元504和二值化单元506。熵解码单元500可以执行与上文相对于图5所述的熵编码单元300互逆的功能。
如图7所示,上下文建模单元508和二值化单元506接收对语法元素值的请求。上下文建模单元504确定语法元素的上下文索引。此外,上下文建模单元504基于由二进制算术解码模块502例如根据上述概率估计技术进行的确定来更新上下文索引。二进制算术解码模块502从比特流(即,算术代码)接收n位,并且基于算术编码和所计算的子区间输出解析的bin的序列。二值化单元506确定语法元素的可能有效二值化值,并且使用bin匹配函数来确定一系列解析的bin值是否对应于有效语法元素值。当一系列bin值对应于有效语法元素值时,输出语法元素值。也就是说,熵解码单元500被配置为基于当前子区间和来自比特流的位并且基于本文所述的技术来确定bin的值。这样,视频解码器400表示被配置为执行以下操作的设备的示例:解析比特流中包括的第一标记和第二标记,基于所解析的第一标记和第二标记的值来确定系数位阶值大于1;解析比特流中包括的第三标记和第四标记,基于所解析的第三标记和第四标记的值来确定系数位阶值是大于或等于3的奇数还是大于或等于4的偶数。
再次参考图6,逆量化单元404从熵解码单元402接收量化变换系数(即,位阶值)和量化参数数据。量化参数数据可以包括上述增量QP值和/或量化组大小值等的任意和全部组合。视频解码器400和/或逆量化单元404可被配置为基于由视频编码器发信号通知的值和/或通过视频属性和/或编码参数来确定用于逆量化的QP值。也就是说,逆量化单元404可以与上述系数量化单元206互逆的方式操作。例如,逆量化单元404可被配置为根据上述技术推断预定值)、允许的量化组大小等。逆量化单元404可被配置为应用逆量化。逆变换处理单元406可被配置为执行逆变换以生成重构的残差数据。由逆量化单元404和逆变换处理单元406分别执行的技术可类似于由上述逆量化/变换处理单元208执行的技术。逆变换处理单元406可被配置为应用逆DCT、逆DST、逆整数变换、不可分二次变换(NSST)或概念上类似的逆变换过程来变换系数,以便产生像素域中的残差块。此外,如上所述,是否执行特定变换(或特定变换的类型)可以取决于帧内预测模式。如图6所示,可以将重构的残差数据提供给求和器412。求和器412可以将重构的残差数据添加到预测视频块并且生成重构的视频数据。可根据预测视频技术(即帧内预测和帧间预测)确定预测视频块。
帧内预测处理单元408可被配置为接收帧内预测语法元素并且从参考缓冲器416检索预测视频块。参考缓冲器416可以包括被配置为存储一个或多个视频数据帧的存储器设备。帧内预测语法元素可识别帧内预测模式,诸如上述的帧内预测模式。在一个示例中,帧内预测处理单元308可以使用根据本文所述的帧内预测编码技术中的一种或多种来重构视频块。帧间预测处理单元410可以接收帧间预测语法元素并生成运动向量,以识别存储在参考缓冲器416中的一个或多个参考帧中的预测块。帧间预测处理单元410可以生成运动补偿块,可能基于内插滤波器执行内插。用于具有子像素精度的运动估计的内插滤波器的标识符可以被包括在语法元素中。帧间预测处理单元410可以使用内插滤波器来计算参考块的子整数像素的内插值。滤波器单元414可被配置为对重构的视频数据执行滤波。例如,滤波器单元414可被配置为执行解块和/或SAO滤波,如上面关于滤波器单元216所描述的。此外,应当指出的是,在一些示例中,滤波器单元414可被配置为执行专用的任意滤波(例如,视觉增强)。如图6所示,视频解码器400可以输出重构的视频块。
在一个或多个示例中,所述功能可以通过硬件、软件、固件或其任何组合来实现。如果以软件实现,则可将功能作为一个或多个指令或代码存储在计算机可读介质上或经由计算机可读介质上传输,并且由基于硬件的处理单元执行。计算机可读介质可以包括对应于有形介质诸如数据存储介质的计算机可读存储介质,或者包括例如根据通信协议促进计算机程序从一个地方传输到另一个地方的任何介质的传播介质。这样,计算机可读介质通常可以对应于:(1)非暂态的有形计算机可读存储介质,或者(2)通信介质诸如信号或载波。数据存储介质可以是可以由一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中所述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
以举例而非限制的方式,此类计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储设备、磁盘存储设备或其他磁存储设备、闪存存储器、或者可用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其他介质。而且,任何连接都被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线路(DSL)或无线技术诸如红外线、无线电和微波从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、DSL或无线技术诸如红外线、无线电和微波都包含在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂态介质,而是针对非暂态有形存储介质。如本文所用,磁盘和光盘包括压缩光盘(CD)、激光盘、光学光盘、数字通用光盘(DVD)、软磁盘及Blu-ray光盘,其中磁盘通常以磁性方式复制数据,而光盘则利用激光以光学方式复制数据。上述的组合也应该被包括在计算机可读介质的范围内。
可以由一个或多个处理器诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等效集成或离散逻辑电路执行指令。因此,如本文所用的术语“处理器”可以指任何前述结构或适用于实现本文所描述的技术的任何其他结构。此外,在一些方面中,可以在被配置用于编码和解码的专用硬件和/或软件模块内提供本文所述的功能,或者将其结合到组合编解码器中。而且,这些技术可以完全在一个或多个电路或逻辑元件中实现。
本公开的技术可以在各种设备或装置包括无线手机、集成电路(IC)或一组IC(例如,芯片组)中实现。在本公开中描述了各种部件、模块或单元,以强调被配置为执行所公开的技术的设备的功能方面,但是不一定需要通过不同的硬件单元来实现。相反,如上所述,可以将各种单元组合在编解码器硬件单元中,或者通过互操作硬件单元包括如上所述的一个或多个处理器的集合,结合合适的软件和/或固件来提供各种单元。
此外,每个上述实施方案中所使用的基站设备和终端设备的每个功能块或各种特征可通过电路(通常为一个集成电路或多个集成电路)实施或执行。被设计为执行本说明书中所述的功能的电路可以包括通用处理器、数字信号处理器(DSP)、专用或通用集成电路(ASIC)、现场可编程门阵列(FPGA),或其他可编程逻辑设备、分立栅极或晶体管逻辑器、或分立硬件部件、或它们的组合。通用处理器可为微处理器,或另选地,该处理器可为常规处理器、控制器、微控制器或状态机。通用处理器或上述每种电路可由数字电路进行配置,或可由模拟电路进行配置。此外,当由于半导体技术的进步而出现制成取代当前集成电路的集成电路技术时,也能够使用通过该技术生产的集成电路。
已经描述了各种示例。这些示例和其他示例在以下权利要求的范围内。
<交叉引用>
本非临时专利申请根据《美国法典》第35卷第119节(35U.S.C.§119)要求于2018年9月11日提交的临时申请62/729942、2018年9月17日提交的临时申请62/732454的优先权,这两个申请的全部内容据此以引用方式并入。