用于变换系数级编码的上下文建模技术的制作方法

文档序号:7991171阅读:312来源:国知局
用于变换系数级编码的上下文建模技术的制作方法
【专利摘要】在一个实施例中,提供了用于编码视频数据的方法,所述方法包括接收包括变换系数的二维阵列的变换单元以及沿着单级扫描顺序处理该二维阵列的变换系数。该处理包括为沿着单级扫描顺序的每个非零变换系数选择一个或多个上下文模型以用于编码该非零变换系数的绝对级,其中该选择基于沿着单级扫描顺序先前编码的一个或多个变换系数。
【专利说明】用于变换系数级编码的上下文建模技术
[0001]相关申请的交叉引用[0002]本申请根据美国法典第35条119(e)款要求标题为“CONTEXT MODELING FOR LEVELCODING IN CABAC”、于2011年7月15日提交的美国临时申请N0.61/508,595和标题为“WAVEFRONT SCAN AND RELATED CONTEXT MODELING”、于 2011 年 11 月 8 日提交的美国临时申请N0.61/557,299的权益和优先权。这些申请的全部内容通过引用被包含在此以用于所有目的。
【背景技术】
[0003]视频压缩(B卩,编码)系统一般地针对大多数压缩操作采用块处理。块是一组邻近像素并且被认为是用于压缩目的的“编码单元”。理论上,较大的编码单元大小被优选成利用中间邻近像素当中的相关性。诸如运动图像专家组(MPEG)-l、MPEG-2以及MPEG-4的特定视频编码标准使用4x4、8x8或16x16个像素的编码单元大小(被称为宏块)。
[0004]高效率视频编码(HEVC)是同样采用块处理的替代性视频编码标准。如图1中所示,HEVC将输入图片100分割成称为最大编码单元(IXU)的方形块。每个IXU能够和128x128个像素一样大,并且能够被分割成称为编码单元(CU)的较小方形块。例如,LCU能够被分成四个CU,每个都是LCU的大小的四分之一。CU能够被进一步分成四个较小的CU,每个都是原始CU的大小的四分之一。能够重复这个分割过程直到满足特定准则为止。图2图示了被分割成七个⑶(202-1、202-2、202-3、202-4、202-5、202-6 以及 202-7)的 LCU200。如所示,CU202-1、202-2以及202-3每个都是LCU200的大小的四分之一。另外,LCU200的右上象限被分成四个CU202-4、202-5、202-6以及202-7,其每个都是象限的大小的四分之
O
[0005]每个CU包括一个或多个预测单元(PU)。图3图示了包括PU302-l、302-2、302-3以及302-4的示例⑶分割300。PU被用于⑶分割300的空间或时间预测编码。例如,如果CU分割300在“帧内”模式下被编码,则每个叩302-1、302-2、302-3以及302-4具有它自己的预测方向以用于空间预测。如果CU分割300在“帧间”模式下被编码,则每个PU302-1、302-2,302-3以及302-4具有它自己的(一个或多个)运动矢量和关联的(一个或多个)参考图片以用于时间预测。
[0006]另外,PU的每个⑶分割都与一组变换单元(TU)相关联。像其它视频编码标准一样,HEVC对残差数据应用块变换以使块内的像素解相关并且将块能压缩成低阶变换系数。然而,不像对宏块应用单个4x4或8x8变换的其它标准,HEVC能够对单个CU应用不同大小的一组块变换。要应用于CU的该组块变换由它关联的TU来表示。通过示例,图4图示了具有关联的一组 TU402-l、402-2、402-3、402-4、402-5、402-6 以及 402-7 的图 3 的 CU 分割300 (包括PU302-1、302-2、302-3以及302-4)。这些TU指示七个单独的块变换应该被应用于CU分割300,其中每个块变换的范围由每个TU的位置和大小来定义。与特定CU相关联的TU的配置能够基于各种准则而不同。
[0007]—旦已经关于特定TU应用了块变换操作,导致变换系数就被量化以降低系数数据的大小。所量化的变换系数然后被熵编码,导致最终一组压缩比特。HEVC当前提供被称为基于上下文的自适应二进制算术编码(CABAC)的熵编码方案。CABAC由于它基于先前编码的符号统计自适应地选择用于算术地编码输入符号的上下文模型(即,概率模型)的能力导致能够提供有效压缩。然而,CABAC中的上下文模型选择(被称为上下文建模)是复杂的,并且需要比其它压缩方案显著更多的处理能力以用于编码/编码。

【发明内容】

[0008]在一个实施例中,提供了用于编码视频数据的方法,所述方法包括接收包括变换系数的二维阵列的变换单元以及沿着单级扫描顺序处理二维阵列的变换系数。所述处理包括为沿着单级扫描顺序的每个非零变换系数选择一个或多个上下文模型以用于编码非零变换系数的绝对级,其中所述选择基于沿着单级扫描顺序先前编码的一个或多个变换系数。
[0009]在另一实施例中,提供了用于解码视频数据的方法,所述方法包括:接收压缩数据的比特流,所述压缩数据对应于沿着单级扫描顺序被先前编码的变换系数的二维阵列;以及解码压缩数据的比特流。所述解码包括为沿着单级扫描顺序的每个非零变换系数选择一个或多个上下文模型以用于解码非零变换系数的绝对级,其中所述选择基于沿着单级扫描顺序先前解码的一个或多个变换系数。
[0010]在另一实施例中,提供了用于编码视频数据的方法,所述方法包括接收包括多个变换系数的变换单元,以及使用单个扫描类型和单个上下文模型选择方案来编码变换单元的有效位图和所述多个变换系数的绝对级。
[0011]在另一实施例中,提供了用于解码视频数据的方法,所述方法包括接收压缩数据的比特流,所述压缩数据对应于包括被先前编码的多个变换系数的变换单元。所述方法还包括使用单个扫描类型和单个上下文模型选择方案来解码变换单元的有效位图和所述多个变换系数的绝对级。
[0012]以下【具体实施方式】和附图提供了特定实施例的本质和优点的更好理解。
【专利附图】

【附图说明】
[0013]图1图示被分割成最大编码单元(IXU)的输入图片。
[0014]图2图示被分割成编码单元(⑶)的IXU。
[0015]图3图示被分割成预测单元(PU)的⑶。
[0016]图4图示被分割成I3U的⑶和与该⑶相关联的一组变换单元(TU)。
[0017]图5图示用于编码视频内容的编码器。
[0018]图6图示用于解码视频内容的解码器。
[0019]图7图不CABAC编码/解码过程。
[0020]图8图不TU中的最后有效的系数位直。
[0021]图9图示用于使用正向扫描用于上下文模型选择的示例邻居。
[0022]图10图示包括每4x4子块的正向Z字形扫描和每个子块内的逆向Z字形扫描的两级扫描序列。
[0023]图11图示使用两级扫描序列用于变换系数级的CABAC编码/解码的过程。[0024]图12图示根据一个实施例使用单级扫描用于变换系数级的CABAC编码/解码的过程。
[0025]图13图示单级、逆向Z字形扫描。
[0026]图14图示单级、逆向波前扫描。
[0027]图15图示根据一个实施例使用统一扫描类型和上下文模型选择方案用于有效位图值和变换系数级的CABAC编码/解码的过程。
[0028]图16图示使用逆向扫描用于上下文模型选择的示例邻居。
【具体实施方式】
[0029]本文中描述的是能够在诸如CABAC的上下文自适应熵编码方案内被用于变换系数级编码的上下文建模技术。在以下描述中,出于说明的目的,许多示例和特定细节被阐述以便提供对特定实施例的彻底理解。如由权利要求书所限定的特定实施例可以单独或者与在下面所描述的其它特征相结合地包括这些示例中的特征中的一些或全部,并且可以进一步包括本文中所描述的特征和概念的修改和等同物。
[0030]编码器和解码器实施例
[0031 ] 图5描绘了用于编码视频内容的示例编码器500。在一个实施例中,编码器500能够实现HEVC标准。编码器500的通用操作在下面被描述;然而,应该领会的是,本描述被提供仅用于说明目的并且不旨在在此限制本公开和教导。本领域的普通技术人员将认识到针对编码器500的结构和操作的各种修改、变化以及替代方案。
[0032]如所示,编码器500接收当前PU “χ”作为输入。PU χ对应于⑶(或其一部分),其相应地是正被编码的输入图片(例如,视频帧)的一部分。给定PU X,预测TO “X’”通过空间预测或时间预测(经由空间预测块502或时间预测块504)来获得。然后I3U χ减去PUX’以生成残差PU “e”。
[0033]一旦被生成,残差I3U e就被传递给变换块506,所述变换块506被配置成对PU e执行一个或多个变换操作。这种变换操作的示例包括离散正弦变换(DST)、离散余弦变换(DCT)及其变体(例如,DCT-1、DCT-11、DCT-1II等)。变换块506然后在变换域(“E”)中输出残差PU e,使得所变换的TO E包括变换系数的二维阵列。在这个块中,能够关于已经与对应于PU e的CU相关联的每个TU执行变换操作(如上面关于图4所描述的)。
[0034]所变换的PU E被传递给量化器508,所述量化器508被配置成将I3U E的相对高精度的变换系数转换或者量化成有限数目的可能值。在量化之后,所变换的PU E经由熵编码块510被熵编码。该熵编码过程将所量化的变换系数压缩成被随后传送到适当的接收器/解码器的最终压缩比特。熵编码块510能够使用各种不同类型的熵编码方案,诸如CABAC。实现CABAC的熵编码块510的特定实施例被在下面更详细地描述。
[0035]除前面的步骤之外,编码器500包括其中去量化器512将PU E的所量化的变换系数去量化成去量化的PU“E’ ”的解码过程。PU E’被传递给逆变换块514,所述逆变换块514被配置成逆变换PU E’的所去量化的变换系数并且从而生成重建的残差TO “e’”。重建的残差PU e’然后被加到原始预测PU χ’以形成新的、重建的“χ’’”。环路滤波器516对重建的PU χ’’执行各种操作以使块边界平滑并且最小化所重建的像素与原始像素之间的编码失真。所重建的PU χ’’然后被用作用于编码视频内容的将来帧的预测PU。例如,如果所重建的I3U X’’是参考帧的一部分,则所重建的I3U X’’能够被存储在参考缓冲器518中以用于将来的时间预测。
[0036]图6描绘了与图5的编码器500互补的示例解码器600。像编码器500 —样,在一个实施例中,解码器600能够实现HEVC标准。解码器600的通用操作在下面被描述;然而,应该领会的是,本描述被提供仅用于说明目的并且不旨在在此限制本公开和教导。本领域的普通技术人员将认识到针对解码器600的结构和操作的各种修改、变化以及替代方案。
[0037]如所示,解码器600接收压缩数据的比特流,诸如由编码器500所输出的比特流,作为输入。该输入比特流被传递给熵解码块602,所述熵解码块602被配置成对比特流执行熵解码以生成残差I3U的所量化的变换系数。在一个实施例中,熵解码块602被配置成执行由编码器500的熵编码块510所执行的操作的逆。熵解码块602能够使用各种不同类型的熵编码方案,诸如CABAC。实现CABAC的熵解码块602的特定实施例被在下面更详细地描述。
[0038]一旦被生成,所量化的变换系数就被去量化器604去量化以生成残差PU“E’ ”。PUE’被传递给逆变换块606,所述逆变换块606被配置成逆变换PU E’的所去量化的变换系数并且从而输出所重建的残差PU “e’”。重建的残差TO e’然后被加到先前解码的预测
X’以形成新的、所重建的PU“x’’”。环路滤波器608对所重建的PU χ’’执行各种操作以使块边界平滑并且最小化所重建的像素与原始像素之间的编码失真。所重建的PU χ’’然后被用来输出所重建的视频帧。在特定实施例中,如果所重建的PU χ’’是参考帧的一部分,则所重建的PU χ’’能够被存储在参考缓冲器610中以用于将来PU的重建(经由例如空间预测块612或时间预测块614)。
[0039]CABAC编码/解码
[0040]如关于图5和6所指出的,熵编码块510和熵解码块602能够每个实现CABAC,所述CABAC是将输入符号映射到非整数长度(例如,分数的)码字的算术编码方案。算术编码的效率在很大程度上取决于对于输入符号的准确概率的确定。因此,为了提高编码效率,CABAC使用其中不同的上下文模型(B卩,概率模型)被选择并且应用于不同的语法元素的上下文自适应技术。另外,能够在编码/解码期间更新这些上下文模型。
[0041]一般地说,使用CABAC来编码语法元素的过程包括三个基本步骤:(1) 二值化,(2)上下文建模,以及(3)二进制算术编码。在二值化步骤中,语法元素被转换成二进制序列或二进制串(如果它还未被二值化)。在上下文建模步骤中,为二进制串的一个或多个二进制值(即,比特)选择(从每CABAC标准可用模型的列表中)上下文模型。上下文模型选择过程能够基于正被编码的特定语法元素以及最近编码的元素的统计而不同。在算术编码步骤中,每个二进制值基于所选上下文模型被编码(经由算术编码器)。使用CABAC来解码语法元素的过程对应于这些步骤的逆。
[0042]图7描绘了被执行以用于编码/解码残差(例如,图5的量化PU E)的量化的变换系数的示例性CABAC编码/解码过程700。过程700能够由例如图5的熵编码块510或图6的熵解码块602来执行。在特定实施例中,过程700被应用于与残差I3U相关联的每个TU。
[0043]在块702处,熵编码块510/熵解码块602编码或者解码对应于当前TU中最后有效的(即,非零)变换系数的(y,χ)坐标的最后有效的系数部分(针对给定扫描模式)。通过示例,图8图示了 NxN个变换系数的TU800,其中系数802对于例如Z字形扫描来说对应于TU800中的最后有效的系数位置。关于编码过程,块702包括二值化“last_significant_coeff_y”语法元素(与y坐标相对应)并且二值化“ last_significant_coeff_x”语法元素(与 χ 坐标相对应)。块 702 还包括为 last_significant_coeff_y 和 last_significant_COeff_X语法元素选择上下文模型,其中该上下文模型基于预定义上下文索引(IastCtx)和上下文索引增量(IastIndInc)而被选择。在一个实施例中,上下文索引增量被确定如下:
[0044]1.如果当前TU大小是4x4个像素,则IastIndInc=IastCtx
[0045]2.如果当前 TU 大小是 8x8 个像素,则 lastIndInc=lastCtx+3
[0046]3.如果当前 TU 大小是 16x16 个像素,则 lastIndInc=lastCtx+8
[0047]4.如果当前 TU 大小是 32x32 个像素,则 lastIndInc=lastCtx+15
[0048]一旦上下文模型被选择,就使用所选模型在算术上编码/解码last_significant_coeff_y 和 last_significant_coefT_x 语法兀素。
[0049]在块704处,熵编码块510/熵解码块602编码或者解码与当前TU相关联的二进制有效位图,其中有效位图的每个元素(由语法元素significant_coeff_flag来表示)是指示在TU中的对应位置处的变换系数是否为非零的二进制值。块704包括扫描当前TU并且以扫描顺序为每个变换系数选择用于该变换系数的上下文模型。所选上下文模型然后被用来在算术上编码/解码与变换系数相关联的significant_coeff_flag语法元素。上下文模型的选择是基于基本上下文索引(SigCtx)和上下文索引增量(siglndlnc)。使用考虑变换系数的位置以及用于在当前变换系数附近的一个或多个相邻系数的有效位图值的基于邻居的方案针对每个变换系数动态地确定变量sigCtx和siglndlnc。
[0050]在一个实施例中,像在下面所指出的那样针对给定变换系数(y, χ)来确定sigCtx和siglndlnc。在这个实施例中,假定TU使用正向Z字形扫描来扫描。其它类型的扫描可以导致用于确定sigCtx和siglndlnc的不同邻居的使用。
[0051]1.如果当前 TU 大小是 4x4 个像素,则 sigCtx=y*4+x 并且 sigIndInc=sigCtx+48
[0052]2.如果当前TU大小是8x8个像素,贝丨J sigCtx= (y?l) *4+ (x?l)并且sigIndInc=sigCtx+32
[0053]3.如果当前TU大小是16x16或32x32个像素,则sigCtx基于当前变换系数的位置(y,χ)和系数的所编码的邻居的有效位图值被确定如下:
[0054]a.如果 y〈=2 并且 x〈=2,则 sigCtx=y*2+x
[0055]b.否则如果y=0 (BP,当前变换系数是在TU的上边界处),贝丨JsigCtx=4+significant_coeff_flag[y][χ-l]+significant_coeff_flag[y][x~2]
[0056]c.否则如果x=0 (BP,当前变换系数是在TU的左边界处),贝IJsigCtx=7+significant_coeff_flag[y-l][x]+significant_coeff_flag[y-2][x]
[0057]d.否则如果 χ>1 并且 y>l,则 sigCtx=significant_coeff_flag[y-l][x]+significant_coeff_flag[y] [χ-1]+significant_coeff_flag[y-l][χ-l]+significant_coeff_flag[y][x~2]+significant_coeff_flag[y-2][x]
[0058]e.否则如果 x>l,则 sigCtx=significant_coeff_flag[y-l] [x] +significant_coeff_flag[y][χ-l]+significant_coeff_flag[y-1][χ-l]+significant_coeff_flag[y][x-2]
[0059]f.否则如果 y>l,则 sigCtx=significant_coeff_flag[y-l] [x] +significant_coeff_flag[y] [χ-l]+significant_coeff_flag[y-1] [χ-l]+significant_coeff_flag[y-2][x]
[0060]g.否 则 sigCtx=significant_coeff_flag[y-1][x]+significant_coeff_flag[y][χ-l]+significant_coeff_flag[y-1][x-1]
[0061]h.最终值,如果 sigCtx 是 10+min(4, sigCtx)
[0062]4.如果当前 TU 大小是 16x16,则 sigIndInc=sigCtx+16
[0063]5.如果当前 TU 大小是 32x32,则 sigIndInc=sigCtx
[0064]为了帮助视觉化以上的邻居确定逻辑,图9在示例TU900中图示了不同变换系数的可能的邻居定义。对于位于TU900中间的变换系数(例如,位于(y,x)处的系数902),sigCtx 基于位于(y, x-l)、(y,x_2)、(y-l,x)、(y-2,x)以及(y-l,x-l)处的五个邻居的有效位图值而被确定。对于位于TU900的左边界上的变换系数(例如,位于(y,O)处的系数904), sigCtx基于位于(y -1, O)和(y - 2,O)处的两个邻居的有效位图值而被确定。对于位于TU900的上边界上的变换系数(例如,位于(0,x)处的系数906),sigCtx基于位于(0,χ -1)和(0,χ - 2)处的两个邻居的有效位图值而被确定。并且对于位于TU900的上部左上边界中的特定变换系数(例如,系数908、910、912、914),sigCtx不是基于任何邻居数据。
[0065]在图7的块706处,熵编码块510/熵解码块602编码或者解码当前TU的有效(即,非零)变换系数。该过程包括针对每个有效变换系数,编码或者解码(I)变换系数的绝对级(还被称为“变换系数级”)以及(2)变换系数的符号(正或负)。作为编码/解码变换系数级的一部分,熵编码块510/熵解码块602编码或者解码三个不同语法元素:COeff_abs_level_greaterl_flag> coeff_abs_level_greater2_flag 以 及 coeff_abs_level_remaining。Coeff_abs_level_greaterl_flag是指示变换系数的绝对级是否大于I的二进制值。Coeff_abs_level_greater2_flag是指示变换系数的绝对级是否大于2的二进制值。并且coefT_abs_level_remaining是等于变换系数的绝对级减预定值(在一个实施例中,这个预定值是3)的值。
[0066]在一个实施例中,编码/ 解码 coeff_abs_level_greaterl_flag 和 coeff_abs_level_greater2_flag语法元素的过程涉及基于子块方案为每个语法元素选择上下文模型(注意,coefT_abs_level_remaining语法元素不需要上下文模型选择)。在这个方案中,当前TU被划分成许多4x4个子块,并且针对给定非零变换系数的coeff_abs_level_greaterl_f lag和coeff_abs_level_greater2_f lag的上下文模型选择基于变换系数的子块内的统计以及TU中先前的子块的统计而被执行。为了促进这个,在块706中,(在特定子块内)使用两次扫描或循环-(I)子块级处的外扫描和(2)变换系数级处的内扫描来扫描当前TU。这在视觉上在图10中被示出,图10描绘了 TU1000的两级扫描序列。在该示例中,扫描序列根据关于TU1000的4x4个子块的正向Z字形模式进行(S卩,外扫描)。在每个4x4子块内,扫描序列根据关于子块的变换系数的逆向Z字形模式进行(即,内扫描)。这允许TU1000的每个4x4子块在移动到下一个子块上之前被整体地处理。
[0067]图11描绘 了图不 coeff_abs_level_greaterl_flag 和 coeff_abs_level_greater2_flag语法元素如何使用10中所示出的两级扫描序列被编码/解码的过程1100。在块1102处,针对当前TU的每个4x4子块进入外FOR循环。这个外FOR循环根据第一扫描模式进行,所述第一扫描模式诸如图10中所示出的子块级正向Z字形模式。在块1104处,针对当前4x4子块中的每个变换系数进入内FOR循环。这个内FOR循环根据第二扫描模式进行,所述第二扫描模式诸如图10中所示出的系数级逆向Z字形模式。在块1104的内FOR循环内,如果变换系数是非零(即,如果对应的有效位图中用于变换系数的significant,coeff_flag等于1),则熵编码块510/熵解码块602编码或者解码当前变换系数的c0eff_abs_level_greaterl_f lag 语法兀素(块 1106)。
[0068]如上面所指出的,在块1106处编码/解码coeff_abs_level_greaterl_flag语法元素包括选择适当的上下文模式,其中所选上下文模型是基于子块级数据(例如,当前子块内的统计和TU中先前的子块的统计)的。在一个实施例中,在块1106处为coeff_abs_level_greaterl_flag选择上下文模型包括首先为当前子块确定上下文集(ctxSet)如下:
[0069]1.如果当前TU大小是4x4个像素,则CtxSet=O
[0070]2.如果当前TU大小大于4x4并且当前4x4子块在子块级扫描顺序(B卩,块1102的FOR循环)上是第一个,则ctxSet=5
[0071]3.否则ctxSet由在前一个4x4子块中具有大于I的绝对值的变换系数数目(lastGreater2Ctx)来确定;即,ctxSet= ((lastGreater2Ctx) >>2) +1
[0072]在每个上下文集内,能够存在五个不同的上下文模型(被编号O至4)。一旦用于当前子块的上下文集像上面那样被确定,就为coeff_abs_level_greaterl_flag语法元素选择该上下文集内的特定上下文模型如下:
[0073]1.初始上下文被设置为I
[0074]2.在当前4x4子块中具有大于I的绝对级的变换系数已被编码/解码之后,上下文模型被设置为O
[0075]3.当当前4x4子块中的仅一个变换系数已被编码/解码并且其绝对级等于I时,上下文模型被设置为2
[0076]4.当当前4x4子块中的仅两个变换系数已被编码/解码并且它们的绝对级等于I时,上下文模型被设置为3
[0077]5.当当前4x4子块中的三个或更多个变换系数已被编码/解码并且它们的绝对级等于I时,上下文模型被设置为4
[0078]在块1108处,在块1104处发起的内FOR循环结束(一旦当前子块中的所有变换系数都被遍历)。
[0079]在块1110处,针对当前4x4子块中的每个变换系数进入另一内FOR循环。该循环基本上与循环1104类似但被用来编码/解码coeff_abs_level_greater2_flag语法元素。特别地,在块1110的内FOR循环内,如果用于变换系数的coeff_abs_level_greaterl_f lag等于I则熵编码块510/熵解码块602编码或者解码当前变换系数的c0eff_abs_level_greater2_flag (块 1112)。
[0080]像coeff_abs_level_greaterl_flag 语法元素一样,在块 1112 处编码 / 解码coeff_abs_level_greaterl_flag语法元素包括选择适当的上下文模型,其中所选上下文模型是基于子块级数据。在一个实施例中,在块1112处为coeff_abs_level_greater2_flag选择上下文模型包括首先根据与关于块11106所描述的ctxSet选择规则集相同的规则集来为当前子块确定上下文集。一旦用于当前子块的上下文集被确定,就为当前变换系数的coeff_abs_level_greater2_flag语法元素选择该上下文集内的特定上下文模型如下:
[0081]1.初始上下文被设置为O
[0082]2.当在当前4x4子块中具有大于I的绝对级的仅一个变换系数已被编码/解码时,上下文模型被设置为I
[0083]3.当在当前4x4子块中具有大于I的绝对级的仅两个变换系数已被编码/解码时,上下文模型被设置为3
[0084]4.当在当前4x4子块中具有大于I的绝对级的仅三个变换系数已被编码/解码时,上下文模型被设置为3
[0085]5.当在当前4x4子块中具有大于I的绝对级的四个或更多个变换系数已被编码/解码时,上下文模型被设置为4
[0086]在块1114处,在块1110处发起的内FOR循环结束(一旦当前子块中的所有变换系数都被遍历)。
[0087]尽管未在图11中示出,但是在块1114之后,过程1100能够包括用于分别编码/解码系数符号和coeff_abs_level_remaining语法元素的两个附加的内FOR循环(即,在当前子块内的循环)。注意,这些语法元素的编码不需要任何上下文模型选择。
[0088]在块1116处,在块1102处发起的外FOR循环结束(一旦当前TU中的所有子块都被遍历)。
[0089]如从图11及其所附描述能够看到的,很大部分地由于当为coeff_abs_level_greaterl_flag和coeff_abs_level_greater2_flag语法兀素选择上下文模型时4x4个子块之间的依赖,导致使用CABAC来编码和解码变换系数级的过程可能是复杂的。这些子块依赖导致两级扫描过程和相对复杂的上下文模型选择规则。以下部分描述了当使用CABAC来编码/解码变换系数级时简化扫描和上下文模型选择的各种增强。
[0090]使用单级扫描的变换系数级的CABAC编码/解码
[0091]在一组实施例中,在图7的块706处变换系数级的编码/解码能够被修改,使得针对 coeff_abs_level_greaterl_f lag 和 coeff_abs_level_greater2_f lag 语法兀素的上下文模型选择不再依赖子块级数据。替代地,在这些实施例中,能够基于当前TU内的单个变换系数来选择上下文模型。因此,和图11的过程Iioo对比,无需执行两级扫描序列(B卩,每子块的外子块级扫描和内系数级扫描)来编码/解码变换系数级。相反地,能够使用整个TU的单级扫描(即,沿着单级扫描顺序)执行编码/解码。这能够提高编码/解码性能,同时简化上下文模型选择所需的代码。
[0092]图12描绘了根据一个实施例用于使用单级扫描在CABAC中执行变换系数级编码/解码的过程 1200。特别地,图 12 集中于 coeff_abs_level_greaterl_flag 和 coeff_abs_level_greater2_flag 语法元素的编码 / 解码(coeff_abs_level_remaining 语法元素的编码/解码因为不需要上下文模型选择而未被描述)。能够通过熵编码块510或熵解码块602在图7的块706内执行过程1200。在一个实施例中,能够执行过程1200代替图11的过程1100。[0093]在块1202处,熵编码块510/熵解码块602能够针对当前TU中的每个变换系数进入FOR循环。该FOR循环能够表示沿着单级扫描顺序TU的遍历(即,不需要任何子块划分的扫描)。在一个实施例中,单级扫描顺序能够对应于如图13中所示出的逆向Z字形扫描。在另一实施例中,单级扫描顺序能够对应于如图14中所示出的逆波前扫描。在波前或逆波前扫描中,扫描线中的全部都具有相同的对角线扫描方向。在又一些实施例中,单级扫描顺序能够对应于本领域中已知的任何其它类型的扫描模式。
[0094]在块1204处,如果系数是非零则熵编码块510/熵解码块602能够编码/解码当前变换系数的coeff_abs_level_greaterl_flag语法元素,其中编码/解码包括以当前单级扫描顺序(即,在块1202的FOR循环中)基于先前编码的/解码的变换系数来为coeff_abs_level_greaterl_flag选择上下文模型。在一个实施例中,选择该上下文模型能够包括:
[0095]1.针对所有TU大小:
[0096]a.将初始上下文模型设置为I
[0097]b.如果具有大于I的绝对级的变换系数已经被以当前单级扫描顺序先前编码/解码,则将上下文模型设置为O
[0098]c.如果仅(η-1)个变换系数已经被以当前单级扫描顺序先前编码/解码并且它们的绝对级等于1,则将上下文模型设置为范围从2至T-1的η
[0099]d.如果(T-1)个变换系数已经被以当前单级扫描顺序先前编码/解码并且它们的绝对级等于I,则将上下文模型设置为T
[0100]注意在前面的逻辑中,上下文模型选择与当前TU的大小无关,因为相同的规则应用于所有TU大小。另外,关于(I) (C)和(I) (d),所选上下文模型能够基于已经被以当前单级扫描顺序先前编码/解码的、具有等于I的绝对级的变换系数的数目来改变,直到阈值数目T减I。当达到了 T减I时,上下文模型能够被设置为阈值数目T。在特定实施例中,T的值能够被设置为10。
[0101]在可替换的实施例中,前面的针对coeff_abs_level_greaterl_flag的上下文模型选择逻辑能够被修改成考虑当前TU的大小(范围从例如4x4个像素到32x32个像素)。在该实施例中,选择该上下文模型能够包括:
[0102]1.针对所有TU大小:
[0103]a.将初始上下文模型设置为I
[0104]b.如果具有大于I的绝对级的变换系数已经被以当前单级扫描顺序先前编码/解码了,则将上下文模型设置为O
[0105]2.对于4x4个TU,如果仅(n4x4-l)个变换系数已经在当前4x4TU中被编码/解码了并且它们的(一个或多个)绝对级等于1,则将上下文模型设置为范围从2至T4x4-1的n4x4 ;如果(T4x4-1)或更多变换系数已经在当前4x4TU中被编码/解码了并且它们的级等于1,则将上下文模型设置为T4x4
[0106]3.对于8x8个TU,如果仅(n8x8-l)个变换系数已经在当前8x8TU中被编码/解码了并且它们的(一个或多个)绝对级等于1,则将上下文模型设置为范围从2至T8x8-1的n8x8 ;如果(T8x8-1)或更多变换系数已经在当前8x8TU中被编码/解码了并且它们的级等于1,则将上下文模型设置为T8x8[0107]4.对于16x16个TU,如果仅(n16xl6_l)个变换系数已经在当前16xl6TU中被编码/解码了并且它们的(一个或多个)绝对级等于1,则将上下文模型设置为范围从2至T16xl6-1的n16xl6;如果(T16xl6-1)或更多变换系数已经在当前16xl6TU中被编码/解码了并且它们的级等于I,则将上下文模型设置为T16xl6
[0108]5.对于32x32个TU,如果仅(n32x32_l)个变换系数已经在当前32x32TU中被编码/解码了并且它们的(一个或多个)绝对级等于1,则将上下文模型设置为范围从2至T32x32-1的n32x32 ;如果(T32x32-1)或更多变换系数已经在当前32x32TU中被编码/解码了并且它们的级等于1,则将上下文模型设置为T32x32
[0109]在特定实施例中,以上阈值数目T4x4、T8x8, T16xl6以及T32x32的值分别能够被设置为4、6、8 以及 10。
[0110]在块1206处,熵编码块510/熵解码块602能够编码/解码当前变换系数的c0eff_abs_level_greater2_flag语法元素,其中编码/解码包括以当前单级扫描顺序基于先前编码的/解码的变换系数来为coeff_abs_level_greater2_flag选择上下文模型。在一个实施例中,选择该上下文模型能够包括:
[0111]1.针对所有TU大小:
[0112]a.将初始上下文模型设置为O
[0113]b.如果具有大于I的(一个或多个)绝对级的仅m个变换系数已经被以当前单级扫描顺序先前编码/解码,则将上下文模型设置为范围从I至κ-1的m
[0114]c.如果具有大于I的(一个或多个)绝对级的K个或更多个变换系数已经被以当前单级扫描顺序先前编码/解码,则将上下文模型设置为K
[0115]注意在前面的逻辑中,上下文模型选择与当前TU的大小无关,因为相同的规则应用于所有TU大小。另外,关于(I) (b)和(I) (C),所选上下文模型能够基于已经被以当前单级扫描顺序先前编码/解码的、具有大于I的绝对级的变换系数的数目来改变,直到阈值数目K减I。当达到了 K时,上下文模型能够被设置为阈值数目K。在特定实施例中,K的值能够被设置为10。
[0116]在可替换的实施例中,前面的针对coeff_abs_level_greater2_flag的上下文模型选择逻辑能够被修改成考虑当前TU的大小(范围从例如4x4个像素到32x32个像素)。在该实施例中,选择该上下文模型能够包括:
[0117]1.对于所有TU大小,将初始上下文模型设置为O
[0118]2.对于4x4个TU,如果具有大于I的(一个或多个)绝对级的仅(m4x4_l)个变换系数已经在当前4x4TU中被编码/解码,则将上下文模型设置为范围从I至K4x4-1的m4x4 ;如果具有大于I的(一个或多个)绝对级的K4x4或更多个变换系数已经在当前4x4TU中被编码/解码,则将上下文模型设置为K4x4。
[0119]3.对于8x8个TU,如果具有大于I的(一个或多个)绝对级的仅(m8x8_l)个变换系数已经在当前4x4TU中被编码/解码,则将上下文模型设置为范围从I至K8x8-1的m8x8 ;如果具有大于I的(一个或多个)绝对级的K8x8或更多个变换系数已经在当前8x8TU中被编码/解码,则将上下文模型设置为K8x8。
[0120]4.对于16x16个TU,如果具有大于I的(一个或多个)绝对级的仅(m16xl6_l)个变换系数已经在当前16xl6TU中被编码/解码,则将上下文模型设置为范围从I至K16xl6-1Wm16xl6 ;如果具有大于I的(一个或多个)绝对级的K16xl6或更多个变换系数已经在当前16xl6TU中被编码/解码,则将上下文模型设置为K16xl6
[0121]5.对于32x32个TU,如果具有大于I的(一个或多个)绝对级的仅(m32x32_l)个变换系数已经在当前32x32TU中被编码/解码,则将上下文模型设置为范围从I至K32x32-1的m32x32 ;如果具有大于I的(一个或多个)绝对级的K32x32或更多个变换系数已经在当前4x4TU中被编码/解码,则将上下文模型设置为K32x32。
[0122]在特定实施例中,以上阈值数目K4x4、K8x8, K16xl6以及K32x32的值分别能够被设置为
4、6、8 以及 10。
[0123]在块1208处,在块1202处发起的FOR循环能够结束(一旦当前TU中沿着单级扫描顺序所有变换系数被处理)。
[0124]尽管图12 描绘了 coeff_abs_level_greaterl_flag 和 coeff_abs_level_greater2_flag语法元素像发生在单个循环(S卩,FOR循环1202)中那样的编码/解码,但是在特定实施例中能够在单独的循环中编码/解码这些语法元素。在这些实施例中,针对coeff_abs_level_greaterl_f lag 和 coeff_abs_level_greater2_f lag 的每个 FOR 循环能够对应于当前TU的单级扫描。
[0125]使用统一扫描类型和上下文模型选择的变换系数级和有效位图的CABAC编码/解
M
[0126]如上面所指出的那样,使用CABAC来编码/解码TU的一个方面是编码/解码指示TU中的每个变换系数是否为非零的二进制有效位图。在当前HEVC标准中,通过其上下文模型被选择用于编码/解码有效位图的每个元素(即,significant_coeff_flag)的方法大大地不同于通过其上下文模型被选择用于编码/解码变换系数级的方法。例如,如关于图7的块704所描述的,针对TU编码/解码有效位图涉及使用例如正向Z字形扫描来遍历TU,以及基于围绕变换系数的特定邻居的有效位图值来为每个变换系数的signifiCant_COefT_flag语法元素选择上下文模型。相比之下,如关于图7的块706所描述的,针对TU编码/解码变换系数级涉及使用两级、嵌套的扫描顺序(例如,每4x4子块的外正向Z字形扫描和给定子块内的内逆向Z字形扫描)来遍历TU,以及基于子块级系数数据来为每个变换系数的 abs_coeff_level_greaterl_flag 和 abs_coeff_level_greater2_flag 语法兀素选择单独的上下文模型。
[0127]在特定实施例中,能够修改在块704和706处执行的处理,使得针对TU的有效位图和变换系数级使用相同的扫描类型和相同的上下文模型选择方案被编码/解码。这个方法在图15中作为过程1500被示出。
[0128]在块1502处,熵编码块510/熵解码块602能够使用特定扫描类型和特定上下文模型选择方案来编码或者解码当前TU的有效位图。在一组实施例中,在块1502处使用的扫描类型可以是单级正向Z字形扫描、逆向Z字形扫描、正向波前扫描、逆向波前扫描或本领域中已知的任何其它扫描类型。在块1502处使用的上下文模型选择方案可以是基于邻居的方案,诸如关于图7的块704上面所描述的方案。基于邻居的方案能够基于围绕变换系数的一个或多个相邻变换系数来为当前TU的每个变换系数选择用于变换系数的significant_coeff_flag语法元素的上下文模型。在一个实施例中,在该方案中用于控制邻居选择的逻辑能够基于被使用扫描类型(例如,正向Z字形、逆向Z字形等)而变化。[0129]在块1504处,熵编码块510/熵解码块602能够使用在块1502处使用的相同扫描类型和上下文模型选择方案来编码或者解码当前TU中每个变换系数的绝对级(例如,coeff_abs_level_greaterl_f lag 和 coeff_abs_level_greater2_f lag 语法兀素)。例如,如果逆向Z字形扫描被用于在块1502处的有效位图编码/解码,则相同的逆向Z字形扫描能够被用于在块1504处的变换系数级编码/解码。另外,如果特定的基于邻居的上下文模型选择方案被用于在块1502处的有效位图编码/解码,则相同的(或类似的)基于邻居的方案能够被用于在块1504处的变换系数级编码/解码。该统一方法能够大大地降低实现CABAC编码和解码所需的软件和/或硬件的复杂性,因为软件和/或硬件逻辑的大部分能够被再用于有效位图和变换系数级编码阶段。
[0130]下列的是当统一正向扫描类型(例如,正向Z字形、正向波前等)和统一基于邻居的方案被使用时能够被应用于为TU中变换系数(y,x)的significant_coeff_flag、coeff_abs_level_greaterl_f lag 以及 coeff_abs_level_greater2_f lag 语法兀素选择上下文模型的示例逻辑。在各种实施例中,相同的逻辑能够被应用于三个语法元素中的每一个。变量baseCtx指的是语法元素的基本上下文索引并且变量ctxlndlnc指的是语法元素的上下文索引增量。
[0131]1.如果当前TU 大小是 4x4 个像素,则 baseCtx=y*4+x 并且 ctxIndInc=baseCtx+48
[0132]2.如果当前TU大小是8x8个像素,贝丨J baseCtx= (y?l) *4+ (x?l)并且ctxIndInc=baseCtx+32
[0133]3.如果当前TU大小是16x16或32x32个像素,则baseCtx基于当前变换系数的位置(y, χ)和系数的编码邻居的有效位图值被确定如下:
[0134]a.如果 y〈=2 并且 x〈=2,则 baseCtx=y*2+x
[0135]b.否则如果y=0 (BP,当前变换系数是在TU的上边界处),贝丨JbaseCtx=4+significant_coeff_fl`ag[y][χ -1]+significant_coeff_flag[y][x - 2]
[0136]c.否则如果x=0 (BP,当前变换系数是在TU的左边界处),贝IJbaseCtx=7+significant_coeff_flag[y -1][x]+significant_coeff_flag[y - 2][x]
[0137]d.否则如果 χ>1 并且 y>l,则 baseCtx=significant_coeff_flag[y -1][x]+significant_coeff_flag[y] [χ - l]+significant_coeff_flag[y -1][χ -1]+significant_coeff_flag[y][x - 2]+significant_coeff_flag[y - 2][x]
[0138]e.否则如果 x>l,则 baseCtx=significant_coeff_flag[y -1] [x]+significant—coeff_flag[y] [x -1]+significant_coeff_flag[y -1][x -1]+significant_coeff_flag[y][x - 2]
[0139]f.否则如果 y>l,则 baseCtx=significant_coeff_flag[y -1] [x]+significant—coeff_flag[y] [x -1]+significant_coeff_flag[y -1][x -1]+significant_coeff_flag[y - 2][x]
[0140]g.否则 baseCtx=significant_coeff_flag[y -1][x]+significant_coeff_flag[y][x -1]+significant_coeff_flag[y -1][x -1]
[0141]h.最终值,如果 baseCtx 是 10+min (4,baseCtx)
[0142]4.如果当前 TU 大小是 16x16,则 baseIndInc=baseCtx+16
[0143]5.如果当前 TU 大小是 32x32,则 baseIndInc=baseCtx[0144]上面被用来在逻辑中确定baseCtx的特定邻居在图9的TU900中被在视觉上示出。对于位于TU900中间的变换系数(例如,位于(y,x)处的系数902),baseCtx基于位于(y,x-l)、(y,x-2)、(y-l,x)、(y-2,x)以及(y-l,x-l)处的五个邻居而被确定。对于位于TU900的左边界上的变换系数(例如,位于(y,O)处的系数904),baseCtx基于位于(y- 1,O)和(y-2,O)处的两个邻居而被确定。对于位于TU900的上边界上的变换系数(例如,位于(0,χ)处的系数906), baseCtx基于位于(0,χ -1)和(0,χ - 2)处的两个邻居而被确定。并且对于位于TU900的上部左上边界中的特定变换系数(例如,系数908、910、912、914), baseCtx不是基于任何邻居数据。
[0145]下列的是当统一逆扫描类型(例如,逆向Z字形、逆向波前等)和统一基于邻居的方案被使用时能够被应用于为TU中变换系数(y,x)的significant_coeff_flag、coeff_abs_level_greaterl_f lag 以及 coeff_abs_level_greater2_f lag 语法兀素选择上下文模型的示例逻辑。在各种实施例中,相同的逻辑能够被应用于三个语法元素中的每一个。变量baseCtx指的是语法元素的基本上下文索引并且变量ctxlndlnc指的是语法元素的上下文索引增量。
[0146]1.如果当前TU 大小是 4x4 个像素,则 baseCtx=y*4+x 并且 ctxIndInc=baseCtx+48
[0147]2.如果当前TU大小是8x8个像素,贝丨J baseCtx= (y?l)*4+ (x?l)并且ctxIndInc=baseCtx+32
[0148]3.如果当前TU大小是16x16或32x32个像素,则baseCtx基于当前变换系数的位置(y,χ)和系数的编码 邻居的有效位图值被确定如下:
[0149]a.如果 y〈=2 并且 x〈=2,则 baseCtx=y*2+x
[0150]b.否则如果y=0 (即,当前变换系数是在TU的上边界处),贝丨JbaseCtx=4+significant_coeff_flag[y][x+1]+significant_coeff_flag[y][x+2]
[0151]c.否则如果x=0 (即,当前变换系数是在TU的左边界处),贝丨JbaseCtx=7+significant_coeff—flag[y+1][x]+significant_coeff—flag[y+2][x]
[0152]d.否则如果 χ>1 并且 y>l,则 baseCtx=significant—coeff—flag[y+l][x]+significant_coeff_flag[y] [x + l]+significant_coeff_flag[y + l][x+1]+significant_coeff_flag[y][x+2]+significant_coeff_flag[y+2][x]
[0153]e.否则如果 x>l,则 baseCtx=significant—coeff—flag[y+l] [x] +significant_coeff_flag[y][x+1]+significant_coeff—flag[y+1][x+1]+significant_coeff_flag[y][x+2]
[0154]f.否则如果 y>l,则 baseCtx=significant—coeff—flag[y+l] [x] +significant_coeff_flag[y] [x+1]+significant_coeff_flag[y+1][x+1]+significant_coeff_flag[y+2][x]
[0155]g.否则 baseCtx=signif icant_coeff_f lag [y+1] [x] +signif icant_coeff_flag[y][x+1]+significant_coeff_flag[y+1][x+1]
[0156]h.最终值,如果 baseCtx 是 10+min (4,baseCtx)
[0157]4.如果当前 TU 大小是 16x16,则 baseIndInc=baseCtx+16
[0158]5.如果当前 TU 大小是 32x32,则 baseIndInc=baseCtx
[0159]上面被用来在逻辑中确定baseCtx的特定邻居在图16的TU1600中被在视觉上示出。对于位于TU1600中间的变换系数(例如,位于(y,x)处的系数1602),baseCtx基于位于(73+1)、(7,1+2)、(7+1,1)、(7+2,1)以及(y+l,x+l)处的五个邻居而被确定。对于位于TU1600的左边界上的变换系数(例如,位于(y,O)处的系数1604),baseCtx基于位于(y+1, O)和(y+2, O)处的两个邻居而被确定。对于位于TU1600的上边界上的变换系数(例如,位于(0,χ)处的系数1606),baseCtx基于位于(0,x+1)和(0,x+2))处的两个邻居而被确定。并且对于位于TU1600的上部左上边界中的特定变换系数(例如,系数1608、1610、1612、1614), baseCtx不是基于任何邻居数据。
[0160]特定实施例可以被实现在用于由指令执行系统、设备、装置或机器使用或者连同其一起使用的非暂时性计算机可读存储介质中。例如,非暂时性计算机可读存储介质能够包含用于控制计算机系统/装置执行由特定实施例所描述的方法的程序代码或指令。程序代码当被计算机系统/装置的一个或多个处理器执行时,能够可操作来执行在特定实施例中被描述的程序代码。
[0161]如于此在本描述中和遍及以下权利要求书所使用的那样,除非上下文明确地另外规定,否则“一”、“一个”以及“该”包括复数参考。并且,如于此在本描述中和遍及以下权利要求书所使用的那样,除非上下文明确地另外规定,否则“在...中”的意义包括“在...中”和“在...上”。
[0162]上述描述连同特定实施例的方面如何可以被实现的示例一起图示了各种实施例。上述示例和实施例不应该被认为是仅有的实施例,并且被呈现来图示如由以下权利要求书所限定的特定实施例的灵活性和优点。基于上述公开和以下权利要求书,在不背离如由本权利要求书所限定的其范围的情况下可以采用其它布置、实施例、实施方式以及等同物。
【权利要求】
1.一种用于编码视频数据的方法,所述方法包括: 通过计算装置来接收包括变换系数的二维阵列的变换单元;以及 通过所述计算装置沿着单级扫描顺序处理所述二维阵列的所述变换系数, 其中,所述处理包括为沿着所述单级扫描顺序的每个非零变换系数选择一个或多个上下文模型以用于编码所述非零变换系数的绝对级,所述选择基于沿着所述单级扫描顺序先前编码的一个或多个变换系数。
2.根据权利要求1所述的方法,其中,选择所述一个或多个上下文模型包括为与所述非零变换系数相关联的第一语法元素选择第一上下文模型,所述第一语法元素指示用于所述非零变换系数的所述绝对级是否大于一。
3.根据权利要求2所述的方法,其中,选择所述第一上下文模型基于具有等于一的绝对级的、沿着所述单级扫描顺序先前编码的变换系数的第一阈值数目。
4.根据权利要求3所述的方法,其中,所述第一阈值数目等于十。
5.根据权利要求2所述的方法,其中,选择所述一个或多个上下文模型还包括为与所述非零变换系数相关联的第二语法元素选择第二上下文模型,所述第二语法元素指示用于所述非零变换系数的所述绝对级是否大于二。
6.根据权利要求5所述的方法,其中,选择所述第二上下文模型基于具有大于一的绝对级的、沿着所述单级扫描顺序先前编码的变换系数的第二阈值数目。
7.根据权利要求6所述的方法,其中,所述第二阈值数目等于十。
8.根据权利要求1所述的方法,其中,选择所述一个或多个上下文模型进一步基于所述变换单元的大小。
9.根据权利要求1所述的方法,其中,所述单级扫描顺序对应于逆Z字形扫描或逆波前扫描。
10.一种用于解码视频数据的方法,所述方法包括: 通过计算装置来接收压缩数据的比特流,所述压缩数据对应于沿着单级扫描顺序先前编码的变换系数的二维阵列;以及 通过所述计算装置来解码所述压缩数据的比特率, 其中,所述解码包括为沿着所述单级扫描顺序的每个非零变换系数选择一个或多个上下文模型以用于解码所述非零变换系数的绝对级,所述选择基于沿着所述单级扫描顺序先前解码的一个或多个变换系数。
11.根据权利要求10所述的方法,其中,选择所述一个或多个上下文模型包括为与所述非零变换系数相 关联的第一语法元素选择第一上下文模型,所述第一语法元素指示用于所述变换系数的所述绝对级是否大于一。
12.根据权利要求11所述的方法,其中,选择所述第一上下文模型基于具有等于一的绝对级的、沿着所述单级扫描顺序先前解码的变换系数的第一阈值数目。
13.根据权利要求11所述的方法,其中,选择所述一个或多个上下文模型还包括为与所述非零变换系数相关联的第二语法元素选择第二上下文模型,所述第二语法元素指示用于所述非零变换系数的所述绝对级是否大于二。
14.根据权利要求13所述的方法,其中,选择所述第二上下文模型基于具有大于一的绝对级的、沿着所述单级扫描顺序先前解码的变换系数的第二阈值数目。
15.一种用于编码视频数据的方法,所述方法包括: 通过计算装置来接收包括多个变换系数的变换单元;以及 通过所述计算装置使用单个扫描类型和单个上下文模型选择方案来编码所述变换单元的有效位图和所述多个变换系数的绝对级。
16.根据权利要求15所述的方法,其中,所述单个扫描类型是正向Z字形扫描、逆向Z字形扫描、正向波前扫描或逆向波前扫描。
17.根据权利要求16所述的方法,其中,所述单个上下文模型选择方案是基于邻居的方案,所述基于邻居的方案基于沿着所述单个扫描类型先前编码的一个或多个相邻变换系数来为所述多个变换系数中的每一个变换系数选择用于所述变换系数的上下文模型。
18.一种用于解码视频数据的方法,所述方法包括: 通过计算装置来接收压缩数据的比特流,所述压缩数据对应于包括先前编码的多个变换系数的变换单元;以及 通过所述计算装置使用单个扫描类型和单个上下文模型选择方案来解码所述变换单元的有效位图和所述多个变换系数的绝对级。
19.根据权利要求18所述的方法,其中,所述单个扫描类型是正向Z字形扫描、逆向Z字形扫描、正向波前扫描或逆向波前扫描。
20.根据权利要求18所述的方法,其中,所述单个上下文模型选择方案是基于邻居的方案,所述基于邻居的方案基于沿着所述单个扫描类型先前解码的一个或多个相邻变换系数来为所述多个变换系数中的每一个变换系数选择用于所述变换系数的上下文模型。
【文档编号】H04N19/176GK103650510SQ201280035145
【公开日】2014年3月19日 申请日期:2012年7月16日 优先权日:2011年7月15日
【发明者】娄健, 金在勋, 王利民 申请人:摩托罗拉移动有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1