用于变换系数译码的上下文导出中的基于扫描的滑动窗的制作方法

文档序号:7791703阅读:183来源:国知局
用于变换系数译码的上下文导出中的基于扫描的滑动窗的制作方法
【专利摘要】一种视频译码过程包含基于变换系数扫描次序定义多个变换系数中的一者的上下文导出邻域。所述过程还包含基于所述上下文导出邻域确定所述多个变换系数中的所述一者的上下文。所述过程还包含基于所述确定的上下文对所述多个变换系数中的所述一者进行译码。
【专利说明】用于变换系数译码的上下文导出中的基于扫描的滑动窗
[0001]本申请案要求2012年3月2日申请的第61/606,356号美国临时申请案的权益,所述申请案的完整内容以引用的方式并入本文中。

【技术领域】
[0002]本发明涉及视频译码。

【背景技术】
[0003]数字视频能力可以并入到多种多样的装置中,包含数字电视、数字直接广播系统、无线广播系统、个人数字助理(PDA)、膝上型或桌上型计算机、数码相机、数字记录装置、数字媒体播放器、视频游戏装置、视频游戏控制台、蜂窝或卫星无线电电话、视频电话会议装置等等。数字视频装置实施视频压缩技术,例如MPEG-2,MPEG-4,ITU-T H.263,ITU-TH.264/MPEG-4,第10部分,高级视频译码(AVC)所定义的标准、目前正在研发的高效率视频译码(HEVC)标准和此类标准的扩展版本中所描述的那些视频压缩技术,以便更有效率地传输、接收和存储数字视频信息。
[0004]视频压缩技术包含空间预测和/或时间预测以减少或移除视频序列中固有的冗余。对于基于块的视频译码,可以将视频帧或切片分割成块。每一块可以进一步分割。使用相对于相同帧或切片中的相邻块中的参考样本的空间预测对经帧内译码(I)的帧或切片中的块进行编码。经帧间译码(P或B)的帧或切片中的视频块可以使用相对于相同帧或切片中的相邻块中的参考样本的空间预测或相对于其它参考帧中的参考样本的时间预测。空间或时间预测会产生有待译码的块的预测性块。残余数据表示有待译码的原始块与预测性块之间的像素差。
[0005]根据指向形成预测性块的参考样本块的运动向量和指示经译码块与预测性块之间的差的残余数据对经帧间译码块进行编码。根据帧内译码模式和残余数据对经帧内译码块进行编码。为了进一步压缩,可以将残余数据从像素域变换到变换域,从而产生残余系数,可以接着对残余系数进行量化。可以用特定的次序扫描初始布置成二维阵列的经量化变换系数,以便产生变换系数的一维向量用于进行熵译码。


【发明内容】

[0006]本发明的技术总体上涉及对视频数据进行熵译码。举例来说,在熵译码期间,视频译码器可以将变换系数的信息转换成二进制化的形式,从而产生一个或多个位,或“二进制数”。视频译码器可以接着使用对每一二进制数的概率估计对变换系数的每一二进制数进行译码,所述概率估计可以指示一个二进制数具有给定二进制值的可能性。所述概率估计可以包含在概率模型内,也称为“上下文模型”。视频译码器可以通过确定二进制数的上下文来选择上下文模型。可以基于先前译码的语法元素(例如与其他变换系数相关联的语法元素)的相关二进制数的值来确定语法元素的二进制数。从其导出上下文的位置可以称为上下文导出邻域(也称为“上下文支持邻域”或简单地称为“支持域”)。
[0007]本发明的方面总体上涉及基于变换系数扫描次序的上下文导出邻域。举例来说,本发明的方面涉及基于变换系数被扫描以将变换系数的二维阵列串行化成变换系数的一维阵列(在视频编码器处)或被逆向扫描以从变换系数的一维阵列重建变换系数的二维阵列(在视频解码器处)的次序来确定支持域。
[0008]在一个实例中,本发明的方面涉及一种在视频译码过程中对与残余视频数据相关联的变换系数进行译码的方法,所述视频译码过程包含:基于变换系数扫描次序定义多个变换系数中的一者的上下文导出邻域;基于上下文导出邻域确定多个变换系数中的一者的上下文;以及基于所确定的上下文对多个变换系数中的一者进行译码。
[0009]在另一实例中,本发明的方面涉及一种在视频译码过程中对与残余视频数据相关联的变换系数进行译码的设备,所述视频译码过程包含:基于变换系数扫描次序定义多个变换系数中的一者的上下文导出邻域;基于上下文导出邻域确定多个变换系数中的一者的上下文;以及基于所确定的上下文对多个变换系数中的一者进行译码。
[0010]在另一实例中,本发明的方面涉及一种在视频译码过程中对与残余视频数据相关联的变换系数进行译码的设备,所述设备包含:用于基于变换系数扫描次序定义多个变换系数中的一者的上下文导出邻域的装置;用于基于上下文导出邻域确定多个变换系数中的一者的上下文的装置;以及用于基于所确定的上下文对多个变换系数中的一者进行译码的
>J-U ρ?α装直。
[0011]在另一实例中,本发明的方面涉及一种非暂时性计算机可读媒体,其包括当执行时使得一个或多个处理器执行以下操作的指令:基于变换系数扫描次序定义多个变换系数中的一者的上下文导出邻域;基于上下文导出邻域确定多个变换系数中的一者的上下文;以及基于所确定的上下文对多个变换系数中的一者进行译码。
[0012]附图和下面的描述中阐述了本发明的一个或多个方面的细节。通过描述和图式并且通过权利要求书,将容易明白本发明中描述的技术的其它特征、目标和优点。

【专利附图】

【附图说明】
[0013]图1是说明可以利用本发明的技术导出上下文的实例编码与解码系统10的框图。
[0014]图2是说明可以使用本发明的技术导出上下文的视频编码器20的实例的框图。
[0015]图3是说明可以实施用于执行导出上下文的技术的视频解码器30的实例的框图。
[0016]图4Α和4Β是说明用于扫描在译码期间与视频数据块相关联的变换系数的对角线扫描型式的图。
[0017]图5是说明用于计算上下文的上下文导出邻域的图。
[0018]图6是说明用于并行地计算一个以上上下文的基于位置的上下文导出邻域的图。
[0019]图7Α和7Β是说明根据本发明的方面的基于扫描次序的实例上下文导出邻域滑动窗的图。
[0020]图8是说明根据本发明的方面的基于扫描次序并且支持并行导出两个二进制数的上下文的实例上下文导出邻域滑动窗的图。
[0021]图9是说明根据本发明的方面的实例初始上下文导出邻域的图。
[0022]图10是说明根据本发明的方面的使用基于扫描次序的上下文导出邻域对变换系数进行译码的技术的流程图。
[0023]图11是说明根据本发明的方面的使用基于扫描次序的上下文导出邻域对变换系数进行译码的技术的流程图。

【具体实施方式】
[0024]视频译码装置可能试图通过利用空间和时间冗余来压缩视频数据。举例来说,视频编码器可以通过相对于相邻的先前经译码块对一个块进行译码而利用空间冗余。同样,视频编码器可以通过相对于先前经译码帧的数据对一个块进行译码而利用时间冗余。具体来说,视频编码器可以根据空间相邻块的数据或根据先前经译码帧的数据预测当前块。视频编码器可以接着计算块的实际像素值与块的预测像素值之间的差当做块的残余。因此,块的残余可以包含像素(或空间)域中的逐像素差值。
[0025]视频编码器可以接着对残余的值应用变换,以便将像素值的能量压缩成频域中的相对少数的变换系数。视频编码器还可以对变换系数进行量化。一般来说,术语“变换系数”是指残余块在变换域中的系数,其可能经过量化或者可能未经量化。
[0026]视频编码器可以扫描经量化的变换系数以便将经量化的变换系数的二维矩阵转换成包含经量化的变换系数的一维向量。扫描系数的过程有时候称为使系数串行化。
[0027]视频编码器可以接着应用熵译码过程以便对经扫描的变换系数以及与经编码的视频数据相关联的供视频解码器在对视频数据进行解码时使用的其它语法元素进行熵编码。实例熵译码过程可以包含(举例来说)上下文自适应可变长度译码(CAVLC)、上下文自适应二进制算术译码(CABAC)、基于语法的上下文自适应二进制算术译码(SBAC)、概率区间分割熵(PIPE)译码或其它熵编码方法。如下文更详细描述,提到对“变换系数”进行熵译码可能是指对未经量化的变换系数进行熵译码以及对经量化的变换系数进行熵译码两者。
[0028]总地来说,对二进制化的值执行上下文自适应译码。因此,视频编码器可以将正被译码的每一值(例如,变换系数等级、符号、语法元素等等)的绝对值转换成二进制化形式。以此方式,可以例如使用将值转换成具有一个或多个位或“二进制数”的码字的一元译码表或其它译码方案使正被译码的每一非零值二进制化。
[0029]视频编码器可以接着选择概率模型或“上下文模型”,其操作以对与视频数据块相关联的符号进行译码。概率模型指示一个二进制数具有给定的二进制值(例如“O”或“I”)的可能性。因此,在编码器处,可以通过使用概率模型对目标符号进行译码。在解码器处,可以通过使用概率模型对目标符号进行剖析。在任何情况下,视频译码器都可以通过确定二进制数的上下文来选择概率模型。
[0030]语法元素的二进制数的上下文可以包含先前经译码的相邻语法元素的相关二进制数的值。作为一个实例,用于对当前语法元素的二进制数进行译码的上下文可以包含先前经译码的相邻语法元素(例如,在当前语法元素的左上方)的相关二进制数的值。从其导出上下文的位置可以称为上下文导出邻域(也称为“上下文支持邻域”或简单地称为“支持域”)。举例来说,基于位置的上下文导出邻域可以包含相对于当前正被译码的变换系数的预定变换系数位置。
[0031]在用于说明的一个实例中,五点的基于位置的支持域可以用于定义用于对有效性图的二进制数进行译码的上下文模型(例如,指示视频数据块中的非零变换系数的位置)。五点支持域可以包含与当前正被译码的有效性旗标相邻的五个变换系数位置。在这个实例中,概率模型通过Ctx识别,并且Ctx可以定义为支持域的每个点中的有效性旗标的总和,其中如果对应的变换系数不是零,那么将有效性旗标设置成“ I ”,或者如果对应的变换系数是零,那么将有效性旗标设置成“O”,如下面的等式(I)中所示,其中S和P对应于支持域中的有效性旗标:
rnnQ。"! Ctx — Σ (coef !=0),/1 \
[]P^S P Ctx=--(Ctx+1)? I ⑴
[0033]在其它实例中,上下文模型可以基于与先前经译码子块相关联的值(例如,先前经译码子块中的有效性旗标的数目)。在任何情况下,在一些实例中,Ctx可以是被应用以选择多个不同上下文中的一个的索引或偏移,所述上下文中的每一个可以对应于一个特定的概率模型。因此,在任何情况下,通常针对每一上下文定义一个不同的概括模型。在对二进制数进行译码之后,进一步基于二进制数的值更新概率模型以便反映所述二进制数的最当前概率估计。举例来说,可以在有限状态机中作为一个状态来维持概率模型。每一特定状态可以对应于一个具体的概率值。对应于概率模型的更新的下一个状态可以取决于当前二进制数(即,当前正被译码的二进制数)的值。因此,对概率模型的选择可能会受到先前经译码二进制数的值的影响,因为所述值至少部分地指示所述二进制数具有给定值的概率。
[0034]根据一些实例,可以在变换系数值之前对有效系数(即,非零变换系数)在视频块中的位置进行译码,所述变换系数值可以称为变换系数的“等级”。对变换系数的位置进行译码的过程可以称为有效性图译码。有效性图(SM)包含指示有效系数的位置的二进制值的二维阵列。
[0035]举例来说,视频数据块的SM可以包含一和零的二维阵列,其中一指示有效变换系数在块内的位置,并且零指示无效(零值)变换系数在块内的位置。一和零被称为“有效系数旗标”。此外,在一些实例中,SM可以包含一和零的另一 2D阵列,其中一指示根据与块相关联的扫描次序的最后有效系数在块内的位置,并且零指示所有其它系数在块内的位置。在这种情况下,一被称为“最后有效系数旗标”。在其它实例中,可以不使用最后有效系数旗标。实际上,可以在对SM的其余部分进行译码之前首先对块中的最后有效系数进行译码。
[0036]可以接着在一个或多个额外译码遍次中对二进制化的变换系数的剩余二进制数(以及正被上下文译码的任何其它语法元素)进行译码。举例来说,在第一遍次期间,视频译码器可以对SM进行熵译码。在第二遍次期间,视频译码器可以对变换系数等级的第一二进制数进行熵译码。在一些实例中,第一二进制数可以指示系数等级是否大于一,并且第二二进制数可以指示系数等级是否大于二。第三二进制数可以用于指示大于二的任何系数的等级的剩余值(例如,对等级3的值进行译码)。在一些实例中,另一二进制数可以指示系数等级的正负号。
[0037]视频译码器可以继续执行译码遍次,直到对与块的变换系数相关联的所有信息进行了译码为止。在一些实例中,视频译码器可以使用上下文自适应与非上下文自适应译码的组合对视频数据块的二进制数进行译码。举例来说,对于一个或多个遍次,视频译码器可以使用旁路模式来绕过或省略常规上下文自适应算术译码过程。在此些例子中,可以使用固定相等概率模型对经旁路译码的二进制数进行译码。
[0038]在一些实例中,为了改善效率和/或简化实施方案,可以将变换系数块划分成子集(其可以采用多个子块的形式)以便进行译码。举例来说,软件或硬件视频译码器在对例如32x32或64x64块等相对大的块进行译码时实施特定扫描(例如,之字形、对角线、水平、垂直等等)可能在计算上效率较低。在此实例中,视频译码器可以将块划分成预定大小的多个更小的子块(例如,8x8子块)。视频译码器可以接着循序扫描和译码每一子块,直到整个块已经被译码为止。
[0039]在任何情况下,使用基于位置的上下文支持邻域来计算上下文可能在计算上相对成本高。在上述五点基于位置的支持域的实例中,视频译码器在对位置(X,y)处的每一变换系数进行译码时必须确定位于(x+1,y)、(X,y+1)、(x+1,y+1)、(x+2, y)和(χ, y+2)位置处的变换系数的有效性。此外,视频译码器还可以确定支持域中的变换系数的位置是位于包含当前正被译码的变换系数的块的内部还是外部。
[0040]基于位置的支持域还可以呈现与数据存取相关联的复杂性。举例来说,在上述五点基于位置的支持域的实例中,用于计算按照扫描次序的连续变换系数的上下文的支持域可以展现出从第一变换系数到下一变换系数的很少或者没有重叠。也就是说,连续扫描和译码的两个变换系数可能在其相应支持域中共用更少位置或者不共用位置。因此,视频译码器可以存取多达五个不同的变换系数,以便计算每一上下文(例如,并非共用用于上下文计算的数据)。
[0041]在用于说明的一个实例中,假设将变换系数块再分成4x4子块。进一步假设使用对角线定向的扫描型式对每一子块进行扫描。在这个实例中,用于在一个子块中正被扫描的最终变换系数的支持域可能并不与下一子块中正被扫描的第一变换共用任何支持位置。因此,视频译码器必须检索相对大量的数据来计算这些位置的上下文,这可能会使译码过程变慢。
[0042]本发明的方面总体上涉及基于变换系数扫描次序的上下文导出邻域。举例来说,不是如上所述使用基于位置的支持域来确定上下文,本发明的方面涉及基于在译码期间扫描变换系数的次序的支持域来确定上下文。也就是说,根据本发明的方面,基于变换系数被扫描以将变换系数的二维阵列串行化成变换系数的一维阵列(在视频编码器处)或被逆向扫描以从变换系数的一维阵列重建变换系数的二维阵列(在视频解码器处)的次序来确定支持域。
[0043]因此,根据本发明的方面,视频译码器(例如,视频编码器或视频解码器)可以基于按照扫描次序的一组先前变换系数确定用于导出用于对变换系数(例如,有效性、等级、正负号等等)进行上下文译码的上下文的支持域。在一些实例中,按照扫描次序的所述组先前变换系数可以包含按照扫描次序的预定数目个连续变换系数(例如,三个、四个、五个等等)。如下文所述,支持域中包含的所述组变换系数可以通过“滑动窗”来定义。
[0044]在用于说明的一个实例中,视频解码器可以基于按照扫描次序的一组先前系数(例如,n+i到n+j,其中i在j之前译码)来确定用于对第一变换系数(η)进行解码的上下文。举例来说,视频解码器可以基于按照扫描次序的一组五个先前变换系数(η+1到η+5)来确定用于对第一变换系数(η)进行解码的上下文。接下来,视频解码器可以通过使包含按照扫描次序的一个位置的预定数目个变换系数的窗滑动而确定用于对第二变换系数(η-1)进行解码的上下文。也就是说,根据本发明的方面,滑动窗识别用于确定上下文的变换系数。在对连续变换系数进行译码时,窗口以扫描次序“滑动”或移动。
[0045]因此,视频解码器可以基于按照扫描次序的新的一组五个先前变换系数(η到n+4)来确定用于对第二变换系数(n-Ι)进行解码的上下文。新的这组五个先前变换系数包含第一变换系数(η)并且移除第一组的最后变换系数(η+5)。以此方式,用于确定上下文的变换系数窗随着变换系数被扫描而继续以扫描次序滑动。虽然上文的实例是相对于视频解码器描述的,但是可以通过视频编码器来应用相同技术。此外,可以通过窗来定义多于或少于五个变换系数。
[0046]在一些实例中,视频译码器可以在每一块或子块的开头使支持域复位。举例来说,视频译码器可以在计算用于对块或子块中的第一变换系数进行译码的上下文时用新的一组支持域开始。在这个实例中,视频译码器可以不是基于扫描次序来确定初始支持域。而是,在一些实例中,视频译码器可以如上所述实施基于位置的支持域来计算用于对块或子块中的第一变换系数进行译码的上下文。接着,当视频译码器继续对块或子块中的变换系数进行译码时,视频译码器可以在支持域的滑动窗中填充按照扫描次序的变换系数以便计算上下文。
[0047]举例来说,视频译码器可以在对变换系数进行译码时在支持域的滑动窗中一次填充一个变换系数。因而,视频译码器可以使用初始支持域的变换系数与基于扫描次序的变换系数的混合物来确定块或子块的一个或多个变换系数的支持域。举例来说,视频译码器可以使用初始的五点支持域来确定块或子块的第一变换系数的上下文。在这个实例中,视频译码器可以使用来自初始支持域的四个变换系数和基于扫描次序的一个变换系数来确定块或子块的按照扫描次序的第二变换系数的上下文。同样,视频译码器可以使用来自初始支持域的三个变换系数和基于扫描次序的两个变换系数来确定块或子块的扫描次序的第三变换系数的上下文,以此类推,直到在支持域的滑动窗中填满了基于扫描次序的变换系数为止。
[0048]以此方式,本发明的技术可以简化上下文计算。举例来说,当实施本发明的技术时,视频译码器不需要确定变换系数的相对位置(在变换系数的块或子块中)以便确定变换系数的上下文。此外,本发明的技术可以减少在确定上下文时从存储器存取的数据量。举例来说,视频译码器可以在确定连续系数的上下文时重新使用大量数据。也就是说,在所描述的上下文计算窗从一个变换系数滑动到下一个变换系数时,视频译码器只检索与一个新变换系数相关联的数据。此外,视频译码器可以应用相同技术来确定上下文,不管正被用来扫描变换系数的扫描的定向是怎样的(例如,之字形、对角线、水平、垂直等等)。
[0049]在一些例子中,可以使用并行处理来提高译码效率。一般来说,并行处理总体上是指同时执行一个以上计算。然而,在一些实例中,并行处理可能不包含两个过程的恰好时间重合。而是,并行处理可以包含重叠或时间的连续,从而不同时执行此些过程。可以通过并行硬件处理核心或使用在相同或不同处理核心上操作的并行软件线程来执行并行处理。
[0050]在任何情况下,相对于变换系数译码,可以使用并行处理来并行地计算一个以上变换系数的上下文。然而,为了并行地计算一个以上变换系数,支持域中的所有位置都必须可以用于译码。举例来说,如上所述,可以通过将支持域中的所有有效性旗标加总来确定用于对有效性旗标进行译码的上下文模型。当确定用于对有效性旗标进行译码的上下文模型时,必须事先对支持域中的所有有效性旗标进行译码(确定),以便使得此类旗标可以用于加总。
[0051 ] 在一些例子中,特定支持域中的一个或多个有效性旗标可以依赖于支持域中的其它有效性旗标以便确定上下文。举例来说,假设第一有效性旗标A在其支持域中包含相邻有效性旗标B。因此,为了确定有效性旗标A的上下文模型,有效性旗标B必须可供使用(经译码)。因此,在这个实例中,可以不并行地对有效性旗标A和B的上下文进行译码,因为有效性旗标A的上下文依赖于有效性旗标B (例如,在支持域内,有效性上下文是相互依赖的)。视频译码器必须等到已经对有效性旗标B进行了译码时才计算有效性旗标A的上下文,因而阻止了并行上下文计算,并且减少或者消除了与并行处理上下文相关联的效率增.、
Mo
[0052]上述并行上下文计算过程可能会给上下文确定过程引入额外的复杂性。举例来说,在一些例子中,视频译码器可以并行地计算用于对一个以上变换系数进行译码的一个以上上下文(例如,2 二进制数并行化、3 二进制数并行化等等)。在此些例子中,当使用基于分区的支持域来计算上下文时,视频译码器可以修改支持域以移除上述上下文依赖性。此些基于分区的支持域修改可能会增加复杂性,并且可能会使上下文计算过程变慢。
[0053]根据本发明的方面,上述滑动窗方法可以简化并行上下文计算。举例来说,在一些例子中,可以在正被译码的变换系数与支持域的按照扫描次序的成组变换系数之间引入间隙。也就是说,视频译码器可以跳过正被译码的变换系数与定义支持域的滑动窗中的变换系数之间的一个或多个变换系数。正被译码的变换系数与支持域的变换系数之间的间隙可以移除上述上下文依赖性。
[0054]在用于说明的一个实例中,视频解码器可以基于按照扫描次序的一组五个先前变换系数(n+2到n+6)来确定用于对第一变换系数(η)进行解码的上下文。视频解码器还可以基于按照扫描次序的一组五个先前变换系数(η+3到η+7)来确定用于对第二变换系数(n-Ι)进行解码的上下文。在第一变换系数(η)与支持域(n+2到n+6)之间引入间隙(例如,跳过η+1),会移除上下文依赖性,并且使得视频解码器可以并行地计算第一变换系数(η)和第二变换系数(η+1)的上下文。如上所述,在对额外变换系数进行译码时,定义支持域的窗可以按扫描次序滑动。虽然上文的实例是相对于视频解码器描述的,但是可以通过视频编码器来应用相同技术。此外,可以通过窗来定义多于或少于五个变换系数。
[0055]根据本发明的方面,正被译码的变换系数与相关联的支持域之间的间隙中的变换系数的数目可以增加,以适应额外的并行上下文计算。举例来说,两个变换系数的间隙可以允许并行计算三个上下文,以此类推。因此,视频译码器不需要根据正被并行地计算的上下文的数目来确定特殊的基于位置的支持域。
[0056]虽然本发明的方面可以总体上涉及确定变换系数的上下文,但是应理解,变换系数可以包含相关联的有效性、等级、正负号等等。因此,本发明的某些方面可能尤其是关于确定用于对包含与变换系数相关联的有效性信息的有效性图进行译码的上下文。
[0057]图1是说明可以利用本发明的技术导出上下文的实例编码与解码系统10的框图。如图1所示,系统10包含源装置12,其提供有待在稍后时间被目的地装置14解码的经编码视频数据。具体来说,源装置12经由计算机可读媒体16向目的地装置14提供视频数据。源装置12和目的地装置14可以包括多种多样的装置中的任一者,包含桌上型计算机、笔记型(即,膝上型)计算机、平板计算机、机顶盒、电话手持机(例如所谓的“智能”电话)、所谓的“智能”平板、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、视频流式传输装置等等。在一些情况下,源装置12和目的地装置14可以经过装备用于无线通信。
[0058]目的地装置14可以经由计算机可读媒体16接收有待解码的经编码视频数据。计算机可读媒体16可以包括能够将经编码视频数据从源装置12移动到目的地装置14的任何类型的媒体或装置。在一个实例中,计算机可读媒体16可以包括通信媒体,用以使得源装置12能够实时地直接向目的地装置14传输经编码视频数据。可以根据通信标准(例如,无线通信协议)对经编码视频数据进行调制,并且将其传输到目的地装置14。所述通信媒体可以包括任何无线或有线通信媒体,例如射频(RF)频谱或一个或多个物理传输线。所述通信媒体可以形成基于包的网络的一部分,所述网络例如是局域网、广域网或全球网络(例如,因特网)。所述通信媒体可以包含路由器、交换机、基站或任何其它可以用于便于从源装置12到目的地装置14的通信的设备。
[0059]在一些实例中,可以从输出接口 22向存储装置输出经编码数据。类似地,可以通过输入接口从存储装置存取经编码数据。存储装置可以包含多种分布式或本机存取的数据存储媒体中的任一者,例如,硬驱动器、蓝光光盘、DVD、⑶-ROM、快闪存储器、易失性或非易失性存储器或任何其它用于存储经编码视频数据的合适的数字存储媒体。在另一实例中,存储装置可以对应于文件服务器或可以存储源装置12所产生的经编码视频的另一中间存储装置。目的地装置14可以经由流式传输或下载从存储装置存取所存储的视频数据。文件服务器可以是能够存储经编码视频数据并且将经编码视频数据传输到目的地装置14的任何类型的服务器。实例文件服务器包含网络服务器(例如,用于网站的)、FTP服务器、网络附接存储(NAS)装置或本机磁盘驱动器。目的地装置14可以通过任何标准数据连接(包含因特网连接)存取经编码视频数据。这可包含无线信道(例如W1-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或适合于存取被存储在文件服务器上的经编码视频数据的这两者的组合。从存储装置传输经编码视频数据可以是流式传输、下载传输或这两者的组合。
[0060]本发明的技术未必限于无线应用或设置。所述技术可以应用于支持多种多媒体应用中的任一者的视频译码,所述多媒体应用例如是空中电视广播、有线电视传输、卫星电视传输、因特网流式视频传输(例如经由HTTP (DASH)的动态自适应流式传输)、将数字视频编码到数据存储媒体上、对存储在数据存储媒体上的数字视频进行解码或其它应用。在一些实例中,系统10可以经配置以支持单向或双向视频传输以支持例如视频流式传输、视频回放、视频广播和/或视频电话等应用。
[0061]在图1的实例中,源装置12包含视频源18、视频编码器20和输出接口 22。目的地装置14包含输入接口 28、视频解码器30和显示装置32。根据本发明,源装置12的视频编码器20可以经配置以应用用于执行简化的解块决策的技术。在其它实例中,源装置和目的地装置可以包含其它组件或布置。举例来说,源装置12可以从外部视频源18(例如外部相机)接收视频数据。同样,目的地装置14可以与外部显示装置介接,而不是包含集成显示装置。
[0062]图1的所说明的系统10只是一个实例。可以通过任何数字视频编码和/或解码装置执行根据本发明的用于导出上下文的技术。虽然一般来说是通过视频编码装置来执行本发明的技术,但是也可以通过视频编码器/解码器(通常称为“编解码器”)来执行所述技术。此外,也可以通过视频预处理器来执行本发明的技术。源装置12和目的地装置14只是其中源装置12产生经译码视频数据以供传输到目的地装置14的此些译码装置的实例。在一些实例中,装置12、14可以用基本上对称的方式操作,使得装置12、14中的每一者包含视频编码和解码组件。因此,系统10可以支持视频装置12、14之间的单向或双向视频传输,例如用于视频流式传输、视频回放、视频广播或视频会议。
[0063]源装置12的视频源18可以包含视频捕获装置,例如摄像机、含有先前捕获的视频的视频档案和/或视频馈送接口,以从视频内容提供者接收视频。作为另一替代方案,视频源18可以产生基于图形的计算机数据作为源视频或现场视频、存档视频与计算机产生的视频的组合。在一些情况下,如果视频源18是摄像机,那么源装置12和目的地装置14可以形成所谓的相机电话或视频电话。然而,如上文提到的,本发明中描述的技术可能总体上可应用于视频译码,并且可以应用于无线和/或有线应用。在每种情况下,都可以通过视频编码器20对捕获到的、预捕获到的或计算机产生的视频进行编码。可以接着通过输出接口22将经编码的视频信息编码到计算机可读媒体16上。
[0064]计算机可读媒体16可以包含瞬时媒体,例如无线广播或有线网络传输,或存储媒体(也就是说,非瞬时存储媒体),例如硬盘、快闪驱动器、压缩光盘、数字视频光盘、蓝光光盘或其它计算机可读媒体。在一些实例中,网络服务器(未图示)可以例如经由网络传输从源装置12接收经编码视频数据,并且向目的地装置14提供经编码视频数据。类似地,例如光盘刻录设施等媒体生产设施的计算装置可以从源装置12接收经编码视频数据,并且生产含有经编码视频数据的光盘。因此,可以理解,在各种实例中,计算机可读媒体16包含各种形式的一个或多个计算机可读媒体。
[0065]本发明可以总体上称视频编码器20向另一装置(例如视频解码器30)“发信号通知”某些信息。然而,应理解,视频编码器20可以通过使某些语法元素与视频数据的各种经编码部分相关联因而在经译码位流中发信号通知信息而发信号通知信息。也就是说,视频编码器20可以通过将某些语法元素存储到视频数据的各种经编码部分的标头而“发信号通知”数据。在一些情况下,可以在通过视频解码器30接收和解码之前编码和存储(例如,存储到计算机可读媒体16)此些语法元素。因而,术语“发信号通知”可以总体上指代传送语法或其它数据以便对经压缩视频数据进行解码,无论此传送是实时或近实时地发生还是在一段时间中发生,例如在编码的时候将语法元素存储到媒体时可能发生的,接着可以在被存储到此媒体之后的任何时间通过解码装置来检索所述语法元素。
[0066]目的地装置14的输入接口28从计算机可读媒体16接收信息。计算机可读媒体16的信息可以包含通过视频编码器20定义的语法信息,视频解码器30也使用所述语法信息,所述语法信息包含描述块和其它经译码单元(例如,G0P)的特性和/或处理的语法元素。显示装置32向用户显示经解码视频数据,并且可以包括多种显示装置中的任一者,例如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一类型的显示装置。
[0067]视频编码器20和视频解码器30各自可以在适用时实施为多种合适的编码器或解码器电路中的任一者,例如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑电路、软件、硬件、固件或其任何组合。当所述技术部分地是在软件中实施时,装置可以将软件的指令存储在合适的非暂时计算机可读存储媒体中,并且可以使用一个或多个处理器在硬件中执行指令,以便执行本发明的技术。视频编码器20和视频解码器30中的每一者都可以包含在一个或多个编码器或解码器中,其中的任一者可以集成为组合视频编码器/解码器(编解码器)的一部分。包含视频编码器20和/或视频解码器30的装置可以包括集成电路、微处理器和/或无线通信装置,例如蜂窝电话。
[0068]虽然图1中未展示,但是在一些方面中,视频编码器20和视频解码器30可以各自与音频编码器和解码器集成,并且可以包含适当的多路复用器-多路分用器单元或其它硬件和软件,以处理在共用的数据流或分开的数据流中编码音频和视频两者。如果适用的话,多路复用器-多路分用器单元可以符合ITU H.223多路复用器协议,或者例如用户数据报协议(M)P)等其它协议。
[0069]视频编码器20和视频解码器30可以根据视频压缩标准操作,所述视频压缩标准例如是ITU-T H.264标准,替代地称为MPEG-4,第10部分,高级视频译码(AVC)或此类标准的扩展。ITU-T H.264/MPEG-4 (AVC)标准是由ITU-T视频译码专家组(VCEG)与IS0/IEC移动图片专家组(MPEG) —起作为称为联合视频团队(JVT)的集体合作伙伴产品而制订的。在一些方面中,本发明中描述的技术可以应用于总体上符合H.264标准的装置。在2005年3月由ITU-T研究小组提出的ITU-T建议H.264 (通用音频视频服务的高级视频译码)中描述了 H.264标准,ITU-T建议H.264在本文中可以称为H.264标准或H.264规范,或H.264/AVC标准或规范。视频压缩标准的其它实例包含MPEG-2和ITU-T H.263。
[0070]JCT-VC正在努力开发HEVC标准。虽然本发明的技术不限于任何特定的译码标准,但是所述技术可以与HEVC标准有关。到2013年2月21日为止,可以从http://phenix.1nt-evry.fr/jet/doc_end_user/documents/1l_Shanghai/wgll/JCTVC-K1003-vl3.zip获得HEVC的最新工作草案(WD),布罗斯(Bross)等人的“High Efficiency VideoCoding (HEVC) text specificat1n draft 9 (高效率视频译码(HEVC)文本规范草案 9) ”,并且下文中称为HEVC WD9。
[0071]HEVC标准化工作是基于视频译码装置的演进模型,称为HEVC测试模型(HM)。HM假设视频译码装置相对于根据例如ITU-T H.264/AVC的现有装置有若干额外能力。举例来说,H.264提供九种帧内预测编码模式,而HM可以提供多达三十五种帧内预测编码模式。
[0072]总地来说,HM的工作模型描述了视频帧或图片可以划分成包含亮度和色度样本两者的树块或最大译码单元(LCU)的序列。位流内的语法数据可以定义LCU的大小,LCU是在像素数目方面最大的译码单元。切片包含按照译码次序的多个连续树块。视频帧或图片可以分割成一个或多个切片。每一树块可以根据四叉树分裂成译码单元(CU)。一般来说,四叉树数据结构每个CU包含一个节点,其中根节点对应于树块。如果CU分裂成四个子CU,那么对应于CU的节点包含四个叶节点,其中的每一者对应于子CU中的一个。
[0073]四叉树数据结构的每一节点可以提供对应CU的语法数据。举例来说,四叉树中的节点可以包含分裂旗标,其指示对应于节点的CU是否分裂成子CU。CU的语法元素可以递归地定义,并且可以取决于⑶是否分裂成子⑶。如果⑶不进一步分裂,那么其称为叶⑶。在本发明中,即使对原始叶CU没有显式分裂,也将把叶CU的四个子CU称为叶CU。举例来说,如果16x16大小的⑶不进一步分裂,那么四个8x8子⑶也将称为叶⑶,虽然16x16⑶从未分裂。
[0074]⑶具有类似于H.264标准的宏块的用途,只不过⑶不具有大小区分。举例来说,树块可以分裂成四个子代节点(也称为子CU),并且每一子代节点又可以是父代节点,并且分裂成另外四个子代节点。最后的未分裂子代节点(称为四叉树的叶节点)包括译码节点,也称为叶CU。与经译码位流相关联的语法数据可以定义树块可以分裂的最大次数(称为最大CU深度),并且还可以定义译码节点的最小大小。因此,位流还可以定义最小译码单元(SCT)。本发明使用术语“块”来指代HEVC的上下文中的⑶、I3U或TU中的任一者,或者其它标准的上下文中的类似数据结构(例如,H.264/AVC中的宏块及其子块)。
[0075]CU包含译码节点以及与译码节点相关联的预测单元(PU)和变换单元(TU)。CU的大小对应于译码节点的大小,并且必须是正方形形状的。CU的大小可以在从8x8像素直到具有最大64x64像素或更大的树块大小的范围中变动。每一 CU可以含有一个或多个PU和一个或多个TU。
[0076]举例来说,与CU相关联的语法数据可以描述将CU分割成一个或多个PU。CU是被跳过或直接模式编码的、帧内预测模式编码的还是帧间预测模式编码的,在这之间分割模式可能是不同的。PC可以分割成非正方形的形状。举例来说,与CU相关联的语法数据还可以描述根据四叉树将CU分割成一个或多个TU。TU可以是正方形或非正方形(例如,矩形)形状的。
[0077]HEVC标准允许根据TU进行变换,这可能对于不同⑶是不同的。TU的大小通常是基于针对经分割的LCU定义的给定CU内的PU的大小,但是可能并不总是这样的情况。TU的大小通常与PU相同或者比PU小。在一些实例中,可以使用称为“残余四叉树”(RQT)的四叉树结构将对应于CU的残余样本再分成更小的单元。RQT的叶节点可以称为变换单元(TU)。可以变换与TU相关联的像素差值以产生变换系数,可以对变换系数进行量化。
[0078]叶⑶可以包含一个或多个预测单元(PU)。一般来说,I3U表示对应于对应⑶的全部或一部分的空间区域,并且可以包含用于检索PU的参考样本的数据。此外,包含与预测有关的数据。举例来说,当PU是被帧内模式编码时,可以将的数据包含在残余四叉树(RQT)中,所述残余四叉树可以包含描述对应于PU的TU的帧内预测模式。作为另一实例,当PU是被帧间模式编码时,可以包含定义PU的一个或多个运动向量的数据。举例来说,定义PU的运动向量的数据可以描述运动向量的水平分量、运动向量的垂直分量、运动向量的解析度(例如,四分之一像素精度或八分之一像素精度)、运动向量指向的参考图片和/或运动向量的参考图片列表(例如,列表O、列表I或列表C)。
[0079]具有一个或多个I3U的叶⑶还可以包含一个或多个变换单元(TU)。如上所述,可以使用RQT(也称为TU四叉树结构)来指定变换单元。举例来说,分裂旗标可以指示叶CU是否分裂成四个变换单元。接着,可以将每一变换单元进一步分裂成另外四个子TU。当一个TU不进一步分裂时,可以将其称为叶TU。一般来说,对于帧内译码,属于一个叶CU的所有叶TU共用相同的帧内预测模式。也就是说,一般应用相同的帧内预测模式来计算叶CU的所有TU的预测值。对于帧内译码,视频编码器可以使用帧内预测模式来计算每一叶TU的残余值,作为⑶的对应于TU的部分与原始块之间的差。TU未必限于I3U的大小。因此,TU可以大于或小于PU。对于巾贞内译码,F1U可以与相同CU的对应叶TU协同定位。在一些实例中,叶TU的最大大小可以对应于对应叶CU的大小。
[0080]此外,叶⑶的TU还可以与相应的四叉树数据结构(称为残余四叉树(RQT))相关联。也就是说,叶CU可以包含指示如何将叶CU分割成TU的四叉树。TU四叉树的根节点总体上对应于叶⑶,而⑶四叉树的根节点总体上对应于树块(或IXU)。RQT的未分裂的TU称为叶TU。总地来说,除非另有注释,否则本发明使用术语CU和TU来分另指代叶CU和叶TU0
[0081]HM支持各种I3U大小(也称为分割模式)的预测。假设特定⑶的大小是2NX2N,HM支持2Nx2N或NxN的PU大小的帧内预测,并且支持2Nx2N、2NxN、Nx2N或NxN的对称I3U大小的帧间预测。HM还支持用于2NxnU、2NxnD、nLx2N和nRx2N的PU大小的帧间预测的不对称分割。在不对称分割中,不分割CU的一个方向,而将另一个方向分割成25%和75%。⑶的对应于25%分区的部分通过“η”后面加上“上”、“下”、“左”或“右”的指示来指示。因而,举例来说,“2NxnU”是指被水平分割的2Nx2N CU,其中2Nx0.5N I3U在上面,并且2Nxl.5NPU在下面。
[0082]在使用CU的PU的帧内预测性或帧间预测性译码之后,视频编码器20可以计算CU的TU的残余数据。可以包括描述在空间域(也称为像素域)中产生预测性像素数据的方法或模式的语法数据,并且TU可以包括在对残余视频数据应用变换(例如,离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换)之后在变换域中的系数。残余数据可以对应于未编码图片的像素与对应于PU的预测值之间的像素差。视频编码器20可以形成包含⑶的残余数据的TU,并且接着变换TU以产生⑶的变换系数。
[0083]在用以产生变换系数的任何变换之后,视频编码器20可以执行变换系数的量化。量化总体上是指这样一个过程,其中对变换系数进行量化以可能地减少用于表示系数的数据的数量,从而提供进一步的压缩。量化过程可以减少与系数中的一些或所有相关联的位深度。举例来说,可以在量化期间将η位值向下舍入成m位值,其中η大于m。
[0084]在量化之后,视频编码器可以扫描变换系数,从而从包含经量化变换系数的二维矩阵产生一维向量。扫描可以经过设计以将较高能量(且因此较低频率)的系数放在阵列前方,并且将较低能量(且因此较高频率)的系数放在阵列后方。在一些实例中,视频编码器20可以利用预定义的扫描次序来扫描经量化变换系数,以产生可以被熵编码的串行化的向量。在其它实例中,视频编码器20可以执行自适应扫描。
[0085]在扫描经量化变换系数以形成一维向量之后,视频编码器20可以例如根据下面的方法对一维向量进行熵编码:上下文自适应可变长度译码(CAVLC)、上下文自适应二进制算术译码(CABAC)、基于语法的上下文自适应二进制算术译码(SBAC)、概率区间分割熵(PIPE)译码或另一熵编码方法。视频编码器20还可以对与经编码视频数据相关联的语法元素进行熵编码,以供视频解码器30在对视频数据进行解码时使用。
[0086]视频编码器20可以进一步将语法数据(例如基于块的语法数据、基于帧的语法数据以及基于图片组(GOP)的语法数据)发送到视频解码器30 (例如,在帧标头、块标头、切片标头或GOP标头中)。GOP语法数据可以描述相应GOP中的帧数,并且帧语法数据可以指示用于对对应的帧进行编码的编码/预测模式。
[0087]视频编码器20可以对二进制化的值(例如,二进制化的变换系数、符号、语法元素等等)执行基于上下文的译码(例如,CABAC)。举例来说,对于每一二进制数,视频编码器20可以选择对上下文进行操作以对与视频数据块相关联的符号进行译码的概率模型或“上下文模型”。概率模型指示一个二进制数具有给定的二进制值(例如“O”或“I”)的可能性。
[0088]视频编码器20可以通过确定二进制数的上下文来选择概率模型。从其导出上下文的位置可以称为上下文导出邻域(也称为“上下文支持邻域”或简单地称为“支持域”)。
[0089]在一些实例中,视频编码器20可以使用基于位置的五点支持邻域来定义上下文模型,但是也可以使用具有更多或更少的支持位置的其它大小的支持域。五点支持域可以包含与当前正被译码的有效性旗标相邻的五个变换系数位置。使用所述支持域,视频编码器20可以将概率模型定义为支持域的每个点中的有效性旗标的总和。
[0090]然而,使用基于位置的上下文支持邻域来计算上下文可能在计算上相对成本高。举例来说,为了使用上述五点基于位置的支持域,视频编码器20必须确定五个不同位置处的变换系数的有效性。视频编码器20还可以确定支持域中的变换系数的位置是位于包含当前正被译码的变换系数的块的内部还是外部。此外,视频编码器20可能在计算连续上下文时不能重新使用支持数据。实际上,视频编码器20可能必需针对正被计算的每一上下文存取与多达五个变换系数相关联的数据。
[0091]本发明的方面总体上涉及基于变换系数扫描次序的上下文导出邻域。举例来说,不是使用基于位置的支持域来确定上下文,而是,根据本发明的方面,视频编码器20可以通过基于系数扫描次序为多个变换系数中的一者定义上下文导出邻域而在视频译码过程中对与残余视频数据相关联的变换系数进行编码。视频编码器20还可以基于上下文导出邻域为多个变换系数中的一者确定上下文。视频编码器20可以接着基于所确定的上下文对变换系数中的一者进行编码。
[0092]为了基于系数扫描次序为多个变换系数中的一者定义上下文导出邻域,视频编码器20可以识别按照扫描次序的一组先前变换系数。在一些实例中,按照扫描次序的所述组先前变换系数可以包含按照扫描次序的预定数目个连续变换系数(例如,三个、四个、五个等等)。如上所述,可以使用滑动窗来定义支持域。举例来说,对于正被译码的每一连续变换系数,视频编码器20可以向窗添加按照扫描次序的新的变换系数,并且从先前支持域的相对末端移除一个变换系数。以此方式,用于确定上下文的变换系数窗随着变换系数被扫描而继续以扫描次序滑动。
[0093]在一些实例中,视频编码器20可以在每一块或子块的开头使支持域复位。举例来说,视频编码器20可以用新的支持域开始为每一块或子块计算第一变换系数的上下文。在一些实例中,视频编码器20可以使用并非基于扫描次序的支持域来计算用于对块或子块中的第一变换系数进行译码的上下文。视频编码器20可以接着切换到基于扫描次序的支持域,方法是通过在支持域的滑动窗中填充按照扫描次序的变换系数。
[0094]以此方式,本发明的技术可以简化上下文计算。举例来说,视频编码器20不需要确定变换系数的相对位置(在变换系数的块或子块中)以便确定变换系数的上下文。此外,视频编码器20可以减少在确定上下文时从存储器存取的数据量。举例来说,在所描述的上下文计算窗从一个变换系数滑动到下一个变换系数时,视频编码器20只检索与一个新变换系数相关联的数据。此外,视频编码器20可以应用相同技术来确定上下文,不管正被用来扫描变换系数的扫描的定向是怎样的(例如,之字形、对角线、水平、垂直等等)。
[0095]在一些例子中,视频编码器20还可以实施本发明的技术以并行地确定一个以上上下文(用于一个以上变换系数)。举例来说,如上所述,为了并行地计算一个以上变换系数,支持域中的所有位置都必须可以用于译码。然而,在一些例子中,特定支持域中的一个或多个有效性旗标可以依赖于支持域中的其它有效性旗标以便确定上下文。
[0096]根据本发明的方面,视频编码器20可以实施上述滑动窗方法以便执行并行上下文计算。举例来说,视频编码器20可以在正被译码的变换系数与支持域中包含的所述组变换系数之间引入间隙。也就是说,视频编码器20可以跳过正被译码的变换系数与定义支持域的滑动窗中的变换系数之间的一个或多个变换系数。视频编码器20可以在变换系数之间引入间隙,以移除上述上下文依赖性。
[0097]根据本发明的方面,正被译码的变换系数与相关联的支持域之间的间隙中的变换系数的数目可以增加,以适应额外的并行上下文计算。举例来说,视频编码器20可以在正被译码的变换系数与滑动窗之间插入一个变换系数的间隙,以支持并行地计算两个上下文(例如,用于正被译码的变换系数和按照扫描次序的下一个(被跳过的)变换系数的上下文)。在另一实例中,视频编码器20可以在正被译码的变换系数与滑动窗之间插入两个变换系数的间隙,以支持并行地计算三个上下文(例如,用于正被译码的变换系数和按照扫描次序的接下来两个(被跳过的)变换系数的上下文)。视频编码器20可以增加间隙以适应更大的并行程度。以此方式,视频编码器20不需要根据正被并行地计算的上下文的数目来确定特殊的基于位置的支持域。
[0098]视频解码器30在接收到经译码的视频数据后,即刻可以执行相对于视频编码器20描述的编码遍次总体上相反的解码遍次。虽然总体上是相反的,但是在一些例子中,视频解码器30可以执行类似于视频编码器20所执行的那些技术的技术。视频解码器30还可以依赖语法元素或包含相对于视频编码器20描述的数据的接收到的位流中含有的其它数据。
[0099]根据本发明的方面,举例来说,视频解码器30可以在视频译码过程中对与残余视频数据相关联的变换系数进行解码,方法是通过如上文相对于视频编码器20所述基于系数扫描次序为多个变换系数中的一者定义上下文导出邻域。视频解码器30还可以基于上下文导出邻域为多个变换系数中的一者确定上下文。视频解码器30可以接着基于所确定的上下文对变换系数中的一者进行解码。
[0100]虽然本发明的方面可以总体上涉及确定变换系数的上下文,但是应理解,变换系数可以包含相关联的有效性、等级、正负号等等。可以使用多个扫描遍次对有效性和等级进行译码,例如大于O的译码等级、大于I的等级、大于2的等级,以此类推。在一个实例中,可以使用五个不同的语法元素对下面的值进行译码:
[0101]大于O的等级的绝对值,
[0102]大于I的等级的绝对值,
[0103]大于2的等级的绝对值,
[0104]小于3的等级的绝对值,以及
[0105]正负号。
[0106]因此,本发明的某些方面可能尤其是关于确定用于对包含与变换系数相关联的有效性信息的有效性图进行译码的上下文。当然,也可以使用其它类型的语法元素和不同数目的扫描遍次。
[0107]图2是说明可以使用本发明的技术导出上下文的视频编码器20的实例的框图。为了说明,将在HEVC译码的上下文中描述视频编码器20,但是关于可能必需对变换系数的上下文自适应译码的其它译码标准或方法不受限制。
[0108]视频编码器20可以执行视频切片内的视频块的帧内和帧间译码。帧内译码依赖于空间预测来减少或移除给定视频帧或图片内的视频中的空间冗余。帧间译码依赖于时间预测来减少或移除视频序列的邻近帧或图片内的视频中的时间冗余。帧内模式(I模式)可以指代若干基于空间的压缩模式中的任一者。帧间模式,例如单向预测(P模式)或双向预测(B模式)可以指代若干基于时间的压缩模式中的任一者。
[0109]如图2所示,视频编码器20接收有待编码的视频帧内的当前视频块。在图2的实例中,视频编码器20包含模式选择单元40、参考图片存储器64、求和器50、变换处理单元52、量化单元54和熵编码单元56。模式选择单元40又包含运动补偿单元44、运动估计单元42、帧内预测单元46和分割单元48。对于视频块重建,视频编码器20还包含逆量化单元58、逆变换单元60和求和器62。还可以包含解块滤波器(图2未展示)以对块边界进行滤波,以便从经重建视频中移除成块效应。如果需要的话,解码滤波器通常将对求和器62的输出进行滤波。除了解块滤波器之外,还可以使用额外滤波器(在环路中,或者在环路后)。为了简洁起见未展示此些滤波器,但是如果需要的话,此些滤波器可以对求和器50的输出进行滤波(如同环路内滤波器)。
[0110]在编码过程期间,视频编码器20接收有待译码的视频帧或切片。帧或切片可以划分成多个视频块。运动估计单元42和运动补偿单元44相对于一个或多个参考帧中的一个或多个块对接收到的视频块执行帧间预测性译码,以提供时间压缩。帧内预测单元46可以替代地相对于与有待译码的块相同的帧或切片中的一个或多个相邻块对接收到的视频块执行帧内预测性译码,以提供空间压缩。视频编码器20可以执行多个译码遍次,以例如为每一视频数据块选择适当的译码模式。
[0111]此外,分割单元48可以基于对先前译码遍次中的先前分割方案的评估将视频数据块分割成子块。举例来说,分割单元48起初可以将帧或切片分割成LCU,并且基于速率失真分析(例如,速率失真优化)将LCU中的每一者分割成子CU。模式选择单元40可以进一步产生指示将LCU分割成子CU的四叉树数据结构。四叉树的叶节点CU可以包含一个或多个PU和一个或多个TU。
[0112]模式选择单元40可以例如基于误差结果选择译码模式中的一者(帧内或帧间),并且将所得的经帧内或帧间译码的块提供到求和器50以产生残余块数据,并且提供到求和器62以重建经编码的块以用作参考帧。模式选择单元40还将例如运动向量、帧内模式指示符、分割信息和其它此类语法信息等语法元素提供到熵编码单元56。
[0113]运动估计单元42和运动补偿单元44可以高度集成,但是出于概念的目的是分开说明的。运动估计单元42所执行的运动估计是产生运动向量的过程,运动向量估计视频块的运动。举例来说,运动向量可以指示当前视频帧或图片内的视频块的I3U相对于参考帧(或其它经译码单元)内的预测性块相对于当前帧(或其它经译码单元)内正被译码的当前块的位移。预测性块是在像素差方面被发现与有待译码的块紧密匹配的块,所述像素差可以通过绝对差总和(SAD)、平方差总和(SSD)或其它差度量来确定。
[0114]在一些实例中,视频编码器20可以计算存储在参考图片存储器64中的参考图片的子整数像素位置的值。举例来说,视频编码器20可以内插参考图片的四分之一像素位置、八分之一像素位置或其它分数像素位置。因此,运动估计单元42可以执行相对于完整像素位置和分数像素位置的运动搜索,并且输出具有分数像素精度的运动向量。
[0115]运动估计单元42通过将PU的位置与参考图片的预测性块的位置比较而计算经帧间译码切片中的视频块的PU的运动向量。参考图片可以选自第一参考图片列表(列表O)或第二参考图片列表(列表I),其中的每一者识别存储在参考图片存储器64中的一个或多个参考图片。运动估计单元42将计算出的运动向量发送到熵编码单元56和运动补偿单元44。
[0116]运动补偿单元44执行的运动补偿可以涉及基于运动估计单元42确定的运动向量来取出或产生预测性块。同样,在一些实例中,运动估计单元42和运动补偿单元44可以在功能上集成。在接收到当前视频块的PU的运动向量后,运动补偿单元44即刻可以在参考图片列表的一者中定位运动向量所指向的预测性块。求和器通过从正被译码的当前视频块的像素值减去预测性块的像素值从而形成像素差值而形成残余视频块,如下文所述。
[0117]总地来说,运动估计单元42相对于亮度分量执行运动估计,并且运动补偿单元44针对色度分量和亮度分量两者使用基于亮度分量计算的运动向量。模式选择单元40还可以产生与视频块和视频切片相关联的语法元素,以供视频解码器30在对视频切片的视频块进行解码时使用。
[0118]作为对如上所述运动估计单元42和运动补偿单元44执行的帧间预测的替代方案,帧内预测单元46可以对当前块进行帧内预测。具体来说,帧内预测单元46可以确定要用来对当前块进行编码的帧内预测模式。在一些实例中,帧内预测单元46可以使用各种帧内预测模式例如在分开的编码遍次期间对当前块进行编码,并且帧内预测单元46 (或在一些实例中是模式选择单元40)可以从经测试模式中选择要使用的适当的帧内预测模式。
[0119]举例来说,帧内预测单元46可以使用对于各种经测试的帧内预测模式的速率失真分析来计算速率失真值,并且从经测试的模式中选择具有最佳速率失真特性的帧内预测模式。速率失真分析总体上确定经编码块与被编码以产生经编码块的原始未经编码块之间的失真(或误差)量,以及用于产生经编码块的位速率(也就是说,位的数目)。帧内预测单元46可以根据各种经编码块的失真和速率计算比率,以确定帧内预测模式是否展现出块的最佳速率失真值。
[0120]视频编码器20通过从正被译码的原始视频块减去来自模式选择单元40的预测数据而形成残余视频块。求和器50表示执行此减法运算的组件。
[0121]变换处理单元52对残余块应用例如离散余弦变换(DCT)或概念上类似的变换等变换,从而产生包括残余变换系数值的视频块。变换处理单元52可以执行概念上类似于DCT的其它变换。也可以使用小波变换、整数变换、子带变换或其它类型的变换。在任何情况下,变换处理单元52都对残余块应用变换,从而产生残余变换系数块。变换可以将残余信息从像素值域转换成变换域,例如频率域。
[0122]变换处理单元52可以将所得的变换系数发送到量化单元54。量化单元54对变换系数进行量化以进一步减小位速率。量化过程可以减小与系数中的一些或所有相关联的位深度。可以通过调整量化参数来修改量化程度。在一些实例中,量化单元54可以接着执行对包含经量化变换系数的矩阵的扫描。或者,熵编码单元56可以执行扫描。
[0123]在量化之后,熵编码单元56对经量化变换系数进行熵译码。举例来说,熵编码单元56可以执行上下文自适应可变长度译码(CAVLC)、上下文自适应二进制算术译码(CABAC)、基于语法的上下文自适应二进制算术译码(SBAC)、概率区间分割熵(PIPE)译码或另一熵译码技术。
[0124]熵编码单元56可以执行本发明的技术以确定基于变换系数扫描次序的上下文导出邻域。举例来说,并非使用基于位置的支持域来确定用于对二进制化的变换系数(例如,有效性、正负号、等级等等)的二进制数进行熵编码的上下文,熵编码单元56可以使用支持域来确定基于在编码期间对变换系数进行扫描(例如,通过上述变换处理单元52或量化单元54)所使用的次序的上下文。
[0125]以此方式,熵编码单元56可以使用支持域的滑动窗来执行上下文计算。举例来说,当熵编码单元56以扫描次序对连续变换系数进行编码时,熵编码单元56以扫描次序使用来确定上下文的支持域滑动。也就是说,对于正被编码的每一连续变换系数,熵编码单元56按照扫描次序向支持域添加变换系数。此外,熵编码单元56从支持域中移除最后变换系数(相对于扫描次序)。因此,当以扫描次序扫描变换系数时,定义支持域的窗沿着扫描次序滑动。
[0126]熵编码单元56可以确定用于计算上下文的包含按照扫描次序的预定数目个变换系数(例如,三个、四个、五个等等)的支持域。在一些实例中,熵编码单元56可以确定具有按照扫描次序的连续变换系数的支持域。
[0127]熵编码单元56可以在每一块或子块的开头使支持域复位。举例来说,熵编码单元56可以使用新的支持域开始计算块或子块的一个或多个变换系数的上下文,所述支持域在一些实例中可能不是基于扫描次序的。也就是说,在一些实例中,熵编码单元56可以使用基于位置的支持域来计算块中的一个或多个变换系数的上下文,并且可以使用基于扫描次序的支持域来计算块或子块中的一个或多个其它变换系数的上下文。在此些实例中,熵编码单元56可以通过在对块或子块的变换系数进行译码的同时向支持域添加变换系数而在支持域的滑动窗中填充变换系数。
[0128]在一些实例中,熵编码单元56可以实施上述支持域的滑动窗以执行并行上下文计算。举例来说,熵编码单元56可以在当前正被编码的变换系数与支持域中包含的所述组变换系数之间引入间隙以移除可能的上下文计算依赖性。也就是说,熵编码单元56可以跳过当前正被编码的变换系数与定义支持域的滑动窗中的变换系数之间的一个或多个变换系数。因此,熵编码单元56可以并行地计算当前正被编码的变换系数的上下文以及跳过的变换系数的上下文。熵编码单元56可以基于正被并行计算的上下文的数目来调整正被编码的变换系数与支持域之间的间隙(例如,增加间隙以便适应更大的并行程度)。
[0129]在确定支持域之后,熵编码单元56可以使用支持域计算用于对变换系数的二进制数进行译码的上下文。在计算了上下文之后,熵编码单元56可以应用上下文自适应二进制算术译码以基于计算出的上下文对二进制数进行译码。也就是说,熵编码单元56可以基于所确定的上下文来确定上下文模型,并且可以应用上下文模型对二进制数进行编码。在熵编码单元56进行熵译码之后,可以将经编码的位流传输到另一装置(例如,视频解码器30)或者将其存档以供以后传输或检索。
[0130]逆量化单元58和逆变换单元60分别应用逆量化和逆变换在像素域中重建残余块,例如以供以后用作参考块。运动补偿单元44可以通过向参考图片存储器64的帧中的一者的预测性块添加残余块而计算参考块。运动补偿单元44还可以向经重建残余块应用一个或多个内插滤波器以计算子整数像素值供在运动估计中使用。求和器62向运动补偿单元44产生的经运动补偿的预测块添加经重建残余块以产生经重建视频块以供存储在参考图片存储器64中。运动估计单元42和运动补偿单元44可以使用经重建视频块作为参考块对后续视频帧中的块进行帧间译码。
[0131]以此方式,图2的视频编码器20表示经配置以在视频译码过程中对与残余视频数据相关联的变换系数进行译码的过程的视频编码器的实例,所述视频译码过程包含:基于系数扫描次序定义多个变换系数中的一者的上下文导出邻域;基于上下文导出邻域确定多个变换系数中的一者的上下文;以及基于所确定的上下文对变换系数中的一者进行译码。
[0132]图3是说明可以实施用于执行导出上下文的技术的视频解码器30的实例的框图。如上文相对于图2所述,虽然为了说明起见是在HEVC译码的上下文中描述视频解码器30,但是本发明的技术不以此方式受到限制,并且可以使用可能必需对变换系数的上下文自适应译码的其它当前或未来译码标准或方法来实施。
[0133]在图3的实例中,视频解码器30包含熵解码单元70、运动补偿单元72、帧内预测单元74、逆量化单元76、逆变换单元78、参考图片存储器82和求和器80。在解码过程期间,视频解码器30从视频编码器20接收表示经编码视频切片的视频块和相关联的语法元素的经编码视频位流。熵解码单元70对位流进行熵解码以产生经量化系数、运动向量或帧内预测模式指示符和其它语法元素。熵解码单元70将运动向量和其它语法元素转发到运动补偿单元72。视频解码器30可以在视频切片等级和/或视频块等级上接收语法元素。
[0134]举例来说,作为背景,视频解码器30可以接收已经被囊封到所谓的“网络抽象层单元”或NAL单元中以供经由网络传输的经压缩视频数据。每一 NAL单元可以包含识别存储到NAL单元的数据的类型的标头。有两种类型的数据通常会被存储到NAL单元。存储到NAL单元的第一类型的数据是视频译码层(VCL)数据,其包含经压缩的视频数据。存储到NAL单元的第二类型的数据被称为非VCL数据,其包含例如定义大量NAL单元常用的标头数据的参数集和补充增强信息(SEI)等额外信息。举例来说,参数集可以含有序列等级的标头信息(例如,在序列参数集(SPS)中)和不频繁改变的图片等级的标头信息(例如,在图片参数集(PPS)中)。参数集中含有的不频繁改变的信息不需要对每一序列或图片都重复,因而改善了译码效率。此外,使用参数集使得能够对标头信息进行带外传输,因而避免了对抗误码的冗余传输的需要。
[0135]在一些实例中,视频解码器30可以符合视频译码标准(例如,即将出现的HEVC标准或H.264/AVC)的预定简档和/或等级。举例来说,在视频译码标准的上下文中,简档对应于算法、特征或适用于其的工具和约束的子集。举例来说,如H.264标准所定义,简档是H.264标准所指定的整个位流语法的子集。等级对应于解码器资源消耗(例如,举例来说,解码器存储器和计算)的限制,这与图片的解析度、位速率和宏块(MB)处理速率有关。可以用profilejdc (简档指示符)值来发信号通知简档,同时用Ieveljdc (等级指示符)值来发信号通知等级。
[0136]在任何情况下,熵解码单元70都可以对接收到的经量化变换系数以及其它语法元素和/或符号进行熵解码。举例来说,熵解码单元70可以执行上下文自适应可变长度译码(CAVLC)、上下文自适应二进制算术译码(CABAC)、基于语法的上下文自适应二进制算术译码(SBAC)、概率区间分割熵(PIPE)译码或另一熵译码技术。
[0137]根据本发明的方面,熵解码单元70可以执行本发明的技术以确定基于变换系数扫描次序的上下文导出邻域。举例来说,并非使用基于位置的支持域来确定用于对二进制化的变换系数(例如,有效性、正负号、等级等等)的二进制数进行熵解码的上下文,熵解码单元70可以使用支持域来确定基于在解码期间对变换系数进行扫描(例如,逆扫描)所使用的次序的上下文。
[0138]以此方式,熵解码单元70可以使用支持域的滑动窗来执行上下文计算。举例来说,当熵解码单元70以扫描次序对连续变换系数进行解码时,熵解码单元70以扫描次序使用来确定上下文的支持域滑动。也就是说,对于正被解码的每一连续变换系数,熵解码单元70按照扫描次序向支持域添加变换系数。此外,熵解码单元70从支持域中移除最后变换系数(相对于扫描次序)。因此,当以扫描次序扫描变换系数时,定义支持域的窗沿着扫描次序滑动。
[0139]熵解码单元70可以确定用于计算上下文的包含按照扫描次序的预定数目个变换系数(例如,三个、四个、五个等等)的支持域。在一些实例中,熵解码单元70可以确定具有按照扫描次序的连续变换系数的支持域。
[0140]熵解码单元70可以在每一块或子块的开头使支持域复位。举例来说,熵解码单元70可以使用新的支持域开始计算块或子块的一个或多个变换系数的上下文,所述支持域在一些实例中可能不是基于扫描次序的。也就是说,在一些实例中,熵解码单元70可以使用基于位置的支持域来计算块中的一个或多个变换系数的上下文,并且可以使用基于扫描次序的支持域来计算块或子块中的一个或多个其它变换系数的上下文。在此些实例中,熵解码单元70可以通过在对块或子块的变换系数进行译码的同时向支持域添加变换系数而在支持域的滑动窗中填充变换系数。
[0141]在一些实例中,熵解码单元70可以实施上述滑动窗方法以执行并行上下文计算。举例来说,熵解码单元70可以在当前正被解码的变换系数与支持域中包含的所述组变换系数之间引入间隙以移除可能的上下文计算依赖性。也就是说,熵解码单元70可以跳过当前正被解码的变换系数与定义支持域的滑动窗中的变换系数之间的一个或多个变换系数。因此,熵解码单元70可以并行地计算当前正被解码的变换系数的上下文以及跳过的变换系数的上下文。熵解码单元70可以基于正被并行计算的上下文的数目来调整正被解码的变换系数与支持域之间的间隙(例如,增加间隙以便适应更大的并行程度)。
[0142]在确定支持域之后,熵解码单元70可以使用支持域计算用于对变换系数的二进制数进行译码的上下文。在计算了上下文之后,熵解码单元70可以应用上下文自适应二进制算术译码以基于计算出的上下文对二进制数进行解码。也就是说,熵解码单元70可以基于所确定的上下文来确定上下文模型,并且可以应用上下文模型对二进制数进行解码。
[0143]当视频切片被译码为经帧内译码(I)切片时,帧内预测单元74可以基于发信号通知的帧内预测模式和来自当前帧或图片的先前经译码块的数据产生当前视频切片的视频块的预测数据。
[0144]当视频帧被译码为经帧间译码(S卩,B、P或GPB)切片时,运动补偿单元72基于运动向量和从熵解码单元70接收到的其它语法元素产生当前视频切片的视频块的预测性块。可以从参考图片列表中的一者内的参考图片中的一者产生预测性块。视频解码器30可以基于存储在参考图片存储器82中的参考图片使用默认构造技术来构造参考帧列表,列表O和列表I。
[0145]运动补偿单元72通过剖析运动向量和其它语法元素来确定当前视频切片的视频块的预测信息,并且使用预测信息来产生正被解码的当前视频块的预测性块。举例来说,运动补偿单元72使用接收到的语法元素中的一些来确定用于对视频切片的视频块进行译码的预测模式(例如,帧内或帧间预测)、帧间预测切片类型(例如,B切片、P切片或GPB切片)、切片的参考图片列表中的一者或多者的构造信息、切片的每一经帧间编码的视频块的运动向量、切片的每一经帧间译码的视频块的帧间预测状态以及用以对当前视频切片中的视频块进行解码的其它信息。
[0146]运动补偿单元72还可以基于内插滤波器执行内插。运动补偿单元72可以使用在对视频块的解码期间视频编码器20使用的内插滤波器来计算参考块的子整数像素的经内插值。在此情况下,运动补偿单元72可以根据接收到的语法元素来确定视频编码器20使用的内插滤波器,并且使用内插滤波器来产生预测性块。
[0147]逆量化单元76对在位流中提供的并且被熵解码单元70解码的经量化变换系数进行逆量化,即,解量化。逆量化过程可以包含对视频切片中的每一视频块使用视频解码器30所计算的量化参数QPY,以确定量化程度并且同样确定应当应用的逆量化程度。
[0148]逆变换单元78对变换系数应用逆变换(例如,逆DCT、逆整数变换或概念上类似的逆变换过程)以便在像素域中产生残余块。根据本发明的方面,逆变换单元78可以使用具有与对应的不对称SDIP分区相同大小并且因此彼此不同的大小的TU。在其它实例中,TU可以各自具有彼此相等的大小,并且因此可能与不对称SDIP分区的大小不同(虽然TU中的一者可以是与对应的不对称SDIP分区相同的大小)。在一些实例中,可以使用残余四叉树(RQT)来表示TU,残余四叉树可以指示TU中的一者或多者小于当前块的最小不对称SDIP分区。
[0149]在运动补偿单元72基于运动向量和其它语法元素产生当前视频块的预测性块之后,视频解码器30通过将来自逆变换单元78的残余块与运动补偿单元72产生的对应预测性块求和而形成经解码视频块。求和器80表示执行此求和运算的组件。如果需要的话,还可以应用解块滤波器对经解码块进行滤波以便移除成块假影。还可以使用其它环路滤波器(在译码环路中或在译码环路之后)来使像素过渡变平滑,或者以其它方式改善视频质量。接着将给定帧或图片中的经解码视频块存储在参考图片存储器82中,参考图片存储器存储用于后续运动补偿的参考图片。参考图片存储器82还存储经解码视频以供以后在例如图1的显示装置32等显示装置上呈现。
[0150]以此方式,图3的视频解码器30表示经配置以在视频译码过程中对与残余视频数据相关联的变换系数进行译码的过程的视频解码器的实例,所述视频译码过程包含:基于系数扫描次序定义多个变换系数中的一者的上下文导出邻域;基于上下文导出邻域确定多个变换系数中的一者的上下文;以及基于所确定的上下文对变换系数中的一者进行译码。
[0151]图4A和4B总体上说明将与视频数据块相关联的变换系数块划分成子块形式的子集。如上所述,在一些实例中,视频译码器(例如,视频编码器20或视频解码器30)可以实施图4A和4B中所示的子块结构,以减少与处理相对大的块相关联的硬件和/或软件要求。
[0152]关于图4A,视频译码器可以在对块120进行译码的同时将块120划分成子块122A、122B、122C和122D (统称为子块122)。在图4A所示的实例中,第一子块122A包含位于块120的左上角的4x4变换系数块,第二子块122B包含位于块120的左下角的4x4变换系数块,第三子块122C包含位于块120的右上角的4x4变换系数块,并且第四子块122D包含位于块120的右下角的4x4变换系数块。
[0153]以与相对于图4A描述的类似方式,视频译码器可以在对块124进行译码的同时将图4B的块124划分成子块126A、126B、126C和126D。在图4B所示的实例中,第一子块126A包含位于块124的右下角的4x4变换系数块,第二子块226B包含位于块124的右上角的4x4变换系数块,第三子块126C包含位于块124的左下角的4x4变换系数块,并且第四子块126D包含位于块124的左上角的4x4变换系数块。
[0154]视频译码器可以循序地对子块122和126进行译码。也就是说,相对于图4A,视频译码器可以先对与一个子块的变换系数(例如,有效性、正负号和等级)相关联的所有信息进行译码,然后再对另一子块进行译码。在这个实例中,视频译码器可以先对与子块122A相关联的所有二进制数进行译码,然后再对子块122B进行译码。视频译码器可以接着对子块122C和122D进行译码。同样,相对于图4B,视频译码器可以先对与子块126A相关联的所有二进制数进行译码,然后再对子块126B、子块126C和子块126D进行译码。
[0155]在其它实例中,视频译码器可以先对整个块120和124的数据的每一二进制数进行译码,然后再对另一二进制数进行译码。举例来说,相对于图4A,视频译码器可以对子块122中的每一者的有效性图进行译码。视频译码器可以接着针对子块122中的每一者对变换系数等级的每一二进制数进行译码,以此类推。同样,相对于图4B,视频译码器可以对子块126中的每一者的有效性图进行译码,之后是子块126中的每一者的变换系数等级,以此类推。
[0156]在一些实例中,视频译码器可以使用统一扫描来扫描变换系数。举例来说,相对于图4A,视频译码器可以使用相同的对角线扫描对变换系数的有效性图和系数等级进行译码。在其它实例中,视频译码器可以使用具有不同定向的扫描对变换系数(例如,有效性、正负号、等级等等)的不同二进制数进行译码。举例来说,视频译码器可以通过使用前向对角线、垂直、水平或之字形扫描来映射每一正方形(或矩形)8x8块的变换系数等级的绝对值并且更大地映射到4x4子块的排序组(例如,向量)上。视频译码器可以接着使用具有与前向扫描相反的定向的反向对角线、垂直、水平或之字形扫描对每一 4x4子块内部的变换系数等级进行译码。为了便于图4B所示的反向(或逆)扫描,视频译码器可以首先识别块124的最后有效系数。在识别了最后有效系数之后,视频译码器可以应用图4B所示的扫描。
[0157]因此,针对每一 4x4块,视频译码器可以对coded_sub_blockflag进行译码,并且如果子块中有至少一个非零系数,那么这个旗标设置成一,否则这个旗标等于零。如果coded_sub_block_flag不是零,那么视频译码器可以扫描每一 4x4子块并且针对每个系数对指示系数的有效性的significant_coeff_flag以及变换系数等级进行译码。不是显式地发信号通知,而是可以使用相邻4x4子块旗标或者如果4x4块含有最后系数或DC那么隐式地导出 coded_sub_block_flag。
[0158]根据本发明的方面,视频译码器(例如视频编码器20或视频解码器30)可以使用基于变换系数扫描次序的上下文导出邻域对子块122和126的变换系数进行上下文自适应译码。举例来说,视频译码器可以使用用于计算上下文的包含按照扫描次序的先前经译码变换系数的滑动窗的支持域。视频译码器可以用相同的方式确定支持域,不论特定变换系数在正被译码的子块122和126中的位置如何。
[0159]举例来说,相对于图4A,视频译码器可以使用包含按照扫描次序的先前五个变换系数的支持域计算用于对子块122B的变换系数进行上下文自适应译码的上下文,所述变换系数中的一些可以位于子块122A中。同样,相对于图4B,视频译码器可以使用包含按照扫描次序的先前五个变换系数的支持域计算用于对子块126C的变换系数进行上下文自适应译码的上下文,所述变换系数中的一些可以位于子块126B中。
[0160]本发明的技术可以减少与上下文译码相关联的数据存取要求。举例来说,当使用滑动窗来确定上下文导出邻域时,视频译码器不需要确定变换系数在子块122或126中的相对位置以便确定变换系数的上下文。此外,在所描述的上下文计算窗从一个变换系数滑动到下一个变换系数时,视频译码器只检索与一个新变换系数相关联的数据。
[0161]如上所述,视频译码器可以应用相同技术使用支持域的滑动窗来确定上下文,不管正被用来扫描变换系数的扫描的定向是怎样的(例如,之字形、对角线、水平、垂直等等)。因此,虽然图4A和4B所示的实例总体上说明对角线扫描型式,但是所述技术也可应用于多种其它扫描型式,包含之字形型式、自适应扫描次序、水平型式、垂直型式等等。
[0162]此外,虽然图4A和4B中所示的实例说明具有4x4子块的8x8变换系数块,但是应理解,本发明的技术可以应用于其它大小的块,以及其它大小的子块。举例来说,上述用于上下文导出的滑动窗也可以用于2x8和/或8x2矩形子块,所述2x8和/或8x2矩形子块分别可以用于水平或垂直定向的扫描。在此些实例中,初始支持域可以是基于位置的支持域或基于扫描次序的支持域。
[0163]如果视频译码器对于帧(或切片)的所有TU使用相同的子块大小,那么由于对子块大小实现的统一性,所以可以在硬件实施方案中实现增益。然而,统一的子块大小对于实行本发明的技术并不是必须的。
[0164]图5总体上说明用于计算上下文的上下文导出邻域。举例来说,图5总体上说明使用从上下文导出邻域132A、132B、132C、132D和132E(统称为支持域132)导出的上下文对当前或“目标”变换系数130进行译码。在一个实例中,如上文相对于等式(I)所述,视频译码器(例如,视频编码器20或视频解码器30)可以基于支持域132的每个位置中的有效性旗标的总和确定上下文Ctx,其中如果对应的变换系数不是零,那么有效性旗标是“I”。图5还说明具有第二上下文导出邻域136A、136B、136C、136D和136E(统称为支持域136)的第二变换系数134。
[0165]为了使用支持域132计算上下文,视频译码器可以确定与位置132A、132B、132C、132D和132E中的变换系数中的每一者相关联的值。确定与每一系数的五个不同位置相关联的值可能在计算方面相对密集。此外,视频译码器可以识别位置132A、132B、132C、132D和132E中的变换系数是否要位于与变换系数130相同的块内。与块的外部的位置相关联的值可能必需更长的数据存取时间,或者可能被替换成其它的值。
[0166]此外,虽然按照扫描次序第二变换系数134在目标变换系数130后面,但是支持域132和136未展现出重叠。因此,使用支持域132和136计算上下文的数据存取要求可能相对较高。举例来说,按照扫描次序目标变换系数130后面紧跟着第二目标变换系数134。然而,支持域132包含与支持域136完全不同的一组变换系数。因此,视频译码器必须检索与十个变换系数相关联的数据以计算用于对两个连续变换系数进行译码的上下文。
[0167]根据本发明的方面,视频译码器可以使用基于扫描次序的支持域来确定用于对例如变换系数130和134等变换系数进行译码的上下文。因此,如相对于图7A和7B更详细地描述,视频译码器可以使用具有相同变换系数中的一者或多者的支持域来确定变换系数130和134的上下文。因此,所述技术可以减少上文相对于基于位置的支持域132和136所述的计算和数据存取花费。
[0168]图6总体上说明用于并行地计算一个以上上下文的基于位置的上下文导出邻域。在图6所示的实例中,可以使用从支持域142A、142B、142C和142D(统称为支持域142)导出的上下文对当前或“目标”变换系数140进行译码。此外,将孔144引入到支持域中以解决上下文依赖性。
[0169]举例来说,包含孔144的支持域(例如,图5所示的支持域132)可能会阻碍视频译码器(例如,视频编码器20或视频解码器30)在块的某些位置中并行地计算一个以上有效性旗标的上下文的能力,因为在计算上下文时支持域中的所有数据必须都可供使用(例如,已经经过译码)。也就是说,为了针对特定位置计算有效性上下文,可能必须剖析支持域内的所有位置的有效性旗标。如果必需并行地计算两个系数的有效性上下文,那么此剖析可能会引入延迟,因为有效性旗标可能按照扫描次序彼此邻近地定位。
[0170]在用于说明的实例中,视频译码器可以试图与按照扫描次序在前面的位置中的变换系数(即,孔144的位置中的变换系数)并行地计算用于对目标变换系数140进行译码的上下文。然而,在此实例中,视频译码器必须等待孔144的位置中的变换系数完成译码,然后才确定目标变换系数140的上下文,因为目标变换系数将依赖于孔144处的变换系数的值。也就是说,必须先知道(译码)孔144处的变换系数的值,然后才能(举例来说)在等式(I)中所示的上下文模型加总中使用所述值。与此上下文依赖性相关联的延迟会减少视频译码器高效地并行地计算上下文的能力。
[0171]因此,使用基于位置的支持域的视频译码器(例如视频编码器20或视频解码器30)可以将孔144引入到支持域142中以从支持域142中移除位置。在这个实例中,可以跳过与孔144相关联的变换系数,并且在上下文计算时不予考虑(S卩,假设是零),从而移除上下文依赖性。2013年I月10日申请的第13/738,565号美国专利申请案中描述将所谓的孔引入到支持域中的技术。
[0172]然而,针对并行上下文计算将孔引入到基于位置的支持域中,可能会给上下文确定过程引入复杂性。举例来说,如上所述,视频译码器可能必需确定正被译码的变换系数的位置以及正被并行地计算的上下文的数目以选择适当的支持域。在实施更高的并行程度时,可能会增加额外的复杂性。举例来说,两个二进制数的CABAC并行化(例如,并行地计算两个上下文)可能必需视频译码器针对每一 4x4子块中的两个位置改变支持域。增加并行度还可以增加具有孔的所必需的不同支持域的数目。
[0173]根据本发明的方面,视频译码器可以使用滑动窗执行并行上下文计算以便进行上下文导出。举例来说,视频译码器可以在正被译码的变换系数与支持域的按照扫描次序的所述组变换系数之间引入间隙。也就是说,视频译码器可以跳过正被译码的变换系数与定义支持域的滑动窗中的变换系数之间的一个或多个变换系数。正被译码的变换系数与支持域的变换系数之间的间隙可以移除上述上下文依赖性。
[0174]根据本发明的方面,正被译码的变换系数与相关联的支持域之间的间隙中的变换系数的数目可以增加,以适应额外的并行上下文计算。举例来说,两个变换系数的间隙可以允许并行计算三个上下文,以此类推。因此,视频译码器不需要根据正被并行地计算的上下文的数目来确定特殊的基于位置的支持域。
[0175]图7A和7B是说明根据本发明的方面的基于扫描次序的实例上下文导出邻域滑动窗的图。图7A的实例包含具有子块154A-154D(统称为子块154)的变换系数块150、子块154A的第一变换系数158 (变换系数15)以及用于确定第一变换系数158的上下文的初始上下文导出邻域(支持域)162。总地来说,子块154A的编号(0-15)对应于例如图6所示的反向对角线扫描次序。也就是说,视频译码器可以从第一变换系数158(变换系数15)到变换系数O依次扫描子块154A的变换系数。
[0176]根据本发明的方面,视频译码器可以使用一个或多个基于位置的支持域与基于扫描次序的支持域的组合来确定用于对子块154A的变换系数0-15进行译码的上下文。举例来说,视频译码器可以使用初始支持域162来确定第一变换系数158 (变换系数15)的上下文。初始支持域162可以是基于位置的。也就是说,视频译码器可以基于初始支持域162中包含的变换系数相对于第一变换系数158的相对位置来选择初始支持域162。
[0177]为了确定子块154A的剩余变换系数的上下文,视频译码器可以填充支持域的滑动窗。举例来说,总地来说,视频译码器可以使用依赖于先前经扫描系数(例如,从n+i到n+j,其中i是在j之前译码的)的支持域来计算给定位置η处的变换系数的上下文。假设对支持域使用五个变换系数,那么视频译码器可以使用依赖于先前经扫描变换系数η+1到η+5的支持域来计算给定位置η处的变换系数的上下文。因此,如果变换系数具有扫描次序位置η,那么上下文导出邻域可以包括在扫描次序位置η+1到η+5的变换系数。在图7Α和7Β的实例中,当η+5小于或等于15时,用于确定上下文的支持域只依赖于扫描次序。也就是说,如下面相对于图7Β更详细地描述,视频译码器可以包含来自用于计算最前五个变换系数(变换系数15-11)的上下文的初始支持域162的至少一个变换系数。然而,当视频译码器计算每一连续变换系数的上下文时,视频译码器在支持域的滑动窗中填充按照扫描次序的变换系数,并且从支持域的滑动窗的相对末端从初始支持域162移除变换系数中的一者。
[0178]举例来说,假设上述五点支持域,视频译码器可以使用来自初始支持域162的四个变换系数和来自扫描次序的一个变换系数(变换系数15)确定按照扫描次序的子块154Α的第二变换系数的上下文。同样,视频译码器可以使用来自初始支持域162的三个变换系数和来自扫描次序的两个变换系数(变换系数14和15)确定按照扫描次序的子块154Α的第三变换系数的上下文,并且以此类推,直到滑动窗中填满为止。
[0179]在一些实例中,视频译码器可以在对每一块或子块进行译码之后使支持域复位。举例来说,在对子块154C进行译码(假设是上述反向扫描)之后,视频译码器可以在对子块154Α进行译码之前使支持域复位。视频译码器可以通过确定可以是基于位置的初始支持域(例如,初始支持域162)而使支持域复位。因此,在子块开始处(即,用于子块中的第一系数的)初始窗可以使用常规上下文邻域,例如图5所示的上下文邻域。
[0180]图7Β更详细地说明上下文导出邻域滑动窗。举例来说,图7Β说明变换系数串164Α-164Ν,其对应于图7Α所示的相似编号的变换系数。串164Α说明用初始支持域162对第一变换系数158进行译码。每一连续串164Β-164Ν说明连续变换系数译码操作。也就是说,串164B说明对按照扫描次序的子块154A的第二变换系数168(变换系数14)进行译码。此外,串164C说明对按照扫描次序的子块154A的第三变换系数170 (变换系数13)进行译码,并且串164N说明对按照扫描次序的子块154A的最后变换系数172 (变换系数O)进行译码。
[0181]如图7B所示,滑动窗176定义用于计算相应串164A-164N的变换系数的上下文的支持域,例如,(当适用时)用于熵译码单元56或熵解码单元70的CABAC的有效性译码或等级译码。举例来说,如上文相对于图7A所述,视频译码器适用初始支持域162计算初始变换系数158的上下文。接下来,如串164B所指示,视频译码器处理第二变换系数168,并且确定包含变换系数15-19的支持域。也就是说,视频译码器将滑动窗176移动一个位置以在支持域中包含变换系数15 (先前经译码变换系数),同时还从支持域中移除变换系数20。
[0182]同样,如串164C所指示,视频译码器处理第三变换系数170,并且确定包含变换系数14-18的支持域。也就是说,视频译码器将滑动窗176移动一个位置以在支持域中包含变换系数14 (先前经译码变换系数),同时还从支持域中移除变换系数190。视频译码器可以以此方式继续对子块154A的变换系数进行译码,直到整个块已经经过译码为止。举例来说,如串164N所指示,视频译码器处理最后变换系数172,并且确定包含变换系数1-5的支持域。
[0183]当变换系数位置η+5小于15时,滑动窗176定义的支持域仅依赖于扫描次序,并且不包含初始支持域162的变换系数(其可以用除了通过扫描次序之外的方式选择,例如,基于空间邻域位置)。也就是说,在图7Β所示的实例中,在对变换系数11进行译码之后,滑动窗176包含仅基于扫描次序的变换系数(变换系数11-15)。
[0184]以此方式,本发明的技术包含使用滑动窗来定义用于对变换系数进行译码的支持域。本发明的技术可以提供相对于其它上下文计算方案对上下文的更简单的计算。举例来说,减少数据存取要求,因为视频译码器只针对正被译码的每一连续变换系数检索与一个新变换系数相关联的数据。此外,视频译码器不改变基于正被译码的变换系数的特定位置或扫描定向来定义支持域的方式。
[0185]此外,视频译码器还可以用相对低的计算成本增加上下文译码的支持域的大小。举例来说,即使当支持域的1-D向量的大小增加时,对每一上下文的计算也是类似的,因为在按照扫描次序的每一变换系数位置处的支持域中只考虑一个新变换系数。以此方式,支持域中包含的变换系数的数目可以从五增加到更大的数目,而计算成本相对较低。相比之下,增加基于二维位置的支持域中(例如,像在基于位置的支持域中一样)的变换系数的数目必需成本有相对显著的增加,原因在于被检验的条件的数目和存储器存取要求。
[0186]因此,虽然图7Α和7Β所示的实例总体上说明包含五个值的支持域,但是在其它实例中,支持域可以包含多于或少于五个值,而并不偏离本发明的技术。图7Α和7Β所示的数据可以用1-D次序存储和处理以便加快处理。如上所述,虽然可以使用基于位置和基于扫描次序的支持域的组合来确定上下文,但是另一实例可以包含严格基于个扫描次序的方法。在此实例中,视频译码器可以在初始支持域中填充预定义的值。
[0187]图8是说明根据本发明的方面的基于扫描次序并且支持并行导出两个二进制数的上下文的实例上下文导出邻域滑动窗的图。举例来说,图8包含变换系数块200、第一变换系数202(变换系数15)和用于确定第一变换系数202的上下文的初始上下文导出邻域(支持域)206(带阴影的变换系数17-21)。总地来说,变换系数的编号(0-15)对应于上文相对于图7A和7B所述的反向对角线扫描次序。
[0188]此外,图8包含变换系数串210A和210B,其对应于块200的相似编号的变换系数。串21A说明用初始支持域206对第一变换系数202进行译码。串21B说明对按照扫描次序的块200的第二变换系数214(变换系数14)进行译码。
[0189]滑动窗218定义用于计算相应串210A和210B的变换系数的上下文的支持域,例如,(当适用时)用于熵译码单元56或熵解码单元70的CABAC的有效性译码或等级译码。举例来说,视频译码器使用包含变换系数17-21的初始支持域206来计算第一变换系数202的上下文。接下来,如串210B所指示,视频译码器处理第二变换系数214,并且确定包含变换系数16-20的支持域。也就是说,视频译码器将滑动窗218移动一个位置以在支持域中包含变换系数16 (先前经译码变换系数),同时还从支持域中移除变换系数21。
[0190]根据本发明的方面,视频译码器可以在正被译码的变换系数与滑动窗218之间插入间隙222以移除上下文依赖性。举例来说,图8说明对两个二进制数的并行上下文计算的布置。也就是说,通过引入间隙222,视频译码器移除相对于按照扫描次序的先前变换系数的上下文依赖性。因此,视频译码器可以计算(举例来说)用于与第一变换系数202并行地对第二变换系数214进行译码的上下文,因为第二变换系数214的支持域(通过滑动窗218定义)不依赖于第一变换系数202。
[0191]因此,如图8所示,对于两个二进制数的并行化,用于对当前变换系数进行译码的支持域不包含按照扫描次序的先前经译码变换系数。视频译码器可以通过调整间隙222而调整可以并行计算的上下文的数目。举例来说,对于三个二进制数的并行化,用于对当前变换系数进行译码的支持域不包含按照扫描次序的先前两个变换系数。也就是说,视频译码器可以将间隙222的宽度从一个变换系数增加为两个变换系数。因此,视频译码器可以并行地计算当前变换系数以及按照扫描次序的先前两个变换系数(与间隙222相关联的变换系数)的上下文。通过增加间隙222中的变换系数的数目,可以增加并行上下文计算能力。
[0192]以此方式,根据本发明的方面,视频译码器不需要在执行并行上下文计算时为每一变换系数位置定义特殊的支持域。此外,在增加并行地计算的上下文的数目时,不存在与支持域导出相关联的额外计算负担。
[0193]图9是说明根据本发明的方面的实例初始上下文导出邻域的概念图。在一些实例中,如下文更详细描述的,图9所示的初始上下文导出邻域可以使与上下文译码相关联的存储器使用最小化。
[0194]图9的实例包含具有子块240A-240D(统称为子块240)的变换系数块238、子块240A的第一变换系数242 (变换系数15)以及用于确定第一变换系数242的上下文的初始上下文导出邻域(支持域)244(带阴影的变换系数16-20)。总地来说,子块240A的编号(0-15)对应于例如图6所示的反向对角线扫描次序。也就是说,视频译码器可以从第一变换系数242 (变换系数15)到变换系数O依次扫描子块240A的变换系数。
[0195]初始支持域244可以使视频译码器(例如视频编码器20或视频解码器30)存储以用于上下文译码的数据量最小化。举例来说,如图9所示,初始支持域244包含位于来自周围子块240B-240D的仅一行和一列的分区中的变换系数。因此,视频译码器仅存储来自周围子块240B-240D的仅一行和一列的数据以用于上下文导出。
[0196]以此方式,视频译码器在与使用在更多行和列中具有位置的上下文导出邻域相比时可以实现存储器节省。举例来说,图5所示的支持域132和136包含周围变换系数的两行和两列中的位置。此些支持域132和136要求存储来自这两行和这两列的数据以用于上下文导出。因此,初始支持域244说明存储器要求减少,因为只必须存储一行和一列数据。
[0197]仅作为一个实例提供图9的初始支持域244。在其它实例中,视频译码器可以进一步限制从其导出初始支持域的位置以进一步减少存储器消耗。
[0198]图10是说明根据本发明的方面的使用基于扫描次序的上下文导出邻域对变换系数进行译码的技术的流程图。图10所示的实例总体上被描述为由视频译码器执行。应理解,在一些实例中,图10的方法可以由视频编码器20(图1和2)、视频解码器(图1和3)或者多种其它处理器、处理单元、例如编码器/解码器(编解码器)等基于硬件的译码单元等等来实行。
[0199]此外,虽然图10总体上是相对于变换系数描述的,但是应理解,可以应用相对于图10(以及本发明的其它地方)所述的技术对具有多个数据二进制数的二进制化的变换系数进行译码。因此,可以递归地执行所述技术,直到变换系数的所有经上下文译码的二进制数已经经过译码为止,如上所述。此外,应理解,虽然图10是相对于上下文译码描述的,但是可以对变换系数的一个或多个二进制数进行旁路译码,如上所述。
[0200]在图10的实例中,视频译码器定义基于扫描次序的用于对变换系数进行译码的上下文导出邻域(支持域)(260)。举例来说,根据本发明的方面,视频译码器可以使用滑动窗来确定支持域。滑动窗可以包含先前被译码成当前正被译码的变换系数的按照扫描次序的预定一组变换系数。也就是说,对于在块或子块中具有位置(η)的当前正被译码的变换系数,滑动窗可以包含位置(η+1)到(n+m)中的变换系数,其中m是非零整数,并且位置(η)中的变换系数是在位置(η+1)到(n+m)中的变换系数之后译码的。
[0201]视频译码器可以接着确定用于对变换系数进行译码的上下文(262)。如上所述,在用于对有效性旗标进行译码的实例中,视频译码器可以计算上下文,方法是通过确定支持域的位置中的有效性旗标的总和。在其中视频译码器并行地计算一个以上变换系数的上下文的实例中,视频译码器也可以与当前变换系数旗标的上下文并行地计算其它变换系数的上下文。根据本发明的方面,视频译码器可以在正被译码的变换系数与支持域之间插入间隙,以使得能够进行此并行上下文计算,如上文相对于图8所述。
[0202]视频译码器也基于所确定的上下文对变换系数进行译码(264)。举例来说,视频译码器可以对变换系数进行CABAC译码。因此,视频译码器可以使用所确定的上下文来识别用于对变换系数进行熵译码的上下文模型。在视频编码器(例如,视频编码器20)处,视频编码器可以使用上下文模型对变换系数进行熵编码,从而在经编码位流中包含对变换系数的相关二进制数的值的指示。在视频解码器(例如,视频解码器30)处,视频解码器可以使用上下文模型对变换系数的二进制数进行熵解码,从而从经编码位流中剖析二进制数。
[0203]图11是说明根据本发明的方面的使用基于扫描次序的上下文导出邻域对变换系数进行译码的技术的流程图。图11所示的实例总体上被描述为由视频译码器执行。应理解,在一些实例中,图11的方法可以由视频编码器20(图1和2)、视频解码器(图1和3)或者多种其它处理器、处理单元、例如编码器/解码器(编解码器)等基于硬件的译码单元等等来实行。
[0204]在图11的实例中,视频译码器确定当前正被译码的二进制数是否与视频数据的块或子块中的初始变换系数位置相关联(282)。也就是说,视频译码器可以确定当前正被译码的二进制数是否与视频数据的块或子块中正被扫描的第一变换系数相关联。
[0205]如果二进制数不与初始变换系数相关联,那么视频译码器定义用于对二进制数进行译码的至少部分地基于扫描次序的上下文导出邻域(支持域)(284)。举例来说,根据本发明的方面,视频译码器可以使用滑动窗来确定用于对除了初始变换系数之外的变换系数的二进制数进行译码的支持域。如上所述,滑动窗可以包含按照扫描次序的预定一组变换系数(以及,在其它实例中,是来自初始预定支持域的一个或多个变换系数),所述预定一组变换系数是在当前正被译码的变换系数之前译码的。也就是说,视频译码器可以一次一个变换系数在滑动窗中填充按照扫描次序的变换系数,同时还从初始预定支持域中移除变换系数。
[0206]视频译码器可以接着确定用于对二进制数进行译码的上下文(286)。如上所述,在用于对有效性旗标进行译码的实例中,视频译码器可以计算上下文,方法是通过确定支持域的位置中的有效性旗标的总和。
[0207]如果正被译码的二进制数与块或子块中的初始变换系数相关联,那么视频译码器可以使用预定的基于位置的支持域对二进制数进行译码(288)。举例来说,视频译码器可以使用包含相对于正被译码的变换系数的相对位置在预定位置中的预定数目个变换系数的支持域。在一些实例中,可以形成这个初始支持域以最小化为预定支持域存储的数据量,如上文相对于图9所述。视频译码器可以接着确定用于对二进制数进行译码的上下文(286)。
[0208]视频译码器也基于所确定的上下文对二进制数进行译码(290)。举例来说,视频译码器可以对变换系数进行CABAC译码。因此,视频译码器可以使用所确定的上下文来识别用于对二进制数进行熵译码的上下文模型。在视频编码器(例如,视频编码器20)处,视频编码器可以使用上下文模型对二进制数进行熵编码,从而在经编码位流中包含对二进制数的值的指示。在视频解码器(例如,视频解码器30)处,视频解码器可以使用上下文模型对二进制数进行熵解码,从而从经编码位流中剖析二进制数。此外,如果二进制数是变换系数的最后二进制数,那么视频解码器可以使二进制数二进制化(重建)以确定与二进制数相关联的变换系数的值。
[0209]视频译码器还可以确定经译码二进制数是否变换系数的块或子块的最后变换系数的最后二进制数(292)。如果经译码二进制数不是块或子块中的最后变换系数的最后二进制数,那么视频译码器可以返回到确定要被译码的下一二进制数是否与块或子块中的初始变换系数位置相关联(282)。如果被译码的下一个二进制数与块或子块中的初始变换系数位置相关联,那么视频译码器可以使用上文相对于步骤288所述的预定支持域使支持域复位。如果经译码二进制数是块或子块中的最后变换系数的最后二进制数,那么视频译码器可以移动到变换系数的下一块或子块(294)。
[0210]为了进行说明,已经相对于开发HEVC标准描述了本发明的某些方面。然而,本发明中描述的技术可能可用于其它视频译码过程,例如根据H.264或尚未开发的其它标准或专有视频译码过程定义的那些视频译码过程。
[0211]此外,虽然已经相对于对变换系数(例如,正负号、有效性、等级等等)进行译码而描述了上面的某些实例,但是本发明的方面可以应用于对与其它值或符号相关联的二进制数进行译码。举例来说,可以对多种上下文自适应熵译码方案应用用于确定一组支持域的技术,以便对多种二进制数(包含与变换系数以及其它符号相关联的二进制数)进行译码。
[0212]此外,为了实例起见提供了对初始五点支持域的参考。也可以根据本文中描述的技术使用具有多于或少于五个元素的其它支持域。
[0213]本发明所述的视频译码器可以指代视频编码器或视频解码器(例如,举例来说,视频编码器20或视频解码器30)。类似地,视频译码单元可以指代视频编码器或视频解码器。同样,视频译码可以指代视频编码或视频解码。
[0214]应当认识到,依据实例,本文中所述的任何技术的某些动作或事件可以按照不同的顺序执行,可以添加、合并或者完全去掉(例如,不是所描述的所有动作或事件对于实践所述技术都是必须的)。此外,在某些实例中,动作或者事件可以并行地执行,例如,通过多线程处理、中断处理或多个处理器,而不是依次执行。
[0215]在一个或多个实例中,所描述的功能可以在硬件、软件、固件或其任何组合中实施。如果在软件中实施,那么功能可以作为一个或多个指令或代码而存储在计算机可读媒体上或者经由其传输,并且由基于硬件的处理单元来执行。计算机可读媒体可以包含计算机可读存储媒体,其对应于例如数据存储媒体等有形媒体,或者包含有助于(例如,根据通信协议)将计算机程序从一个位置传送到另一位置的任何媒体的通信媒体。以此方式,计算机可读媒体总体上可以对应于(I)有形计算机可读存储媒体,其是非瞬时的,或者(2)例如信号或载波等通信媒体。数据存储媒体可以是可以由一个或多个计算机或一个或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可以包含计算机可读媒体。
[0216]作为实例并且并非限制,此计算机可读存储媒体可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可以用于以指令或数据结构的形式存储期望的程序代码并且可以由计算机存取的任何其它媒体。此夕卜,任何连接都被恰当地称为计算机可读媒体。举例来说,使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或例如红外、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴电缆、光纤电缆、双绞线、DSL或例如红外、无线电和微波等无线技术包含在媒体的定义中。然而,应理解,计算机可读存储媒体和数据存储媒体不包含连接、载波、信号或其它瞬时媒体,但是针对非瞬时的有形存储媒体。本文中使用的磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字通用光盘(DVD)、软磁盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘使用激光光学地复制数据。上述各项的组合也应包含在计算机可读媒体的范围内。
[0217]可以通过一个或多个处理器来执行指令,所述一个或多个处理器例如是一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。因此,本文中使用的术语“处理器”可以指代任何前述结构或者任何其它适合于实施本文中描述的技术的结构。此外,在一些方面中,本文中所描述的功能性可以在经配置用于编码和解码的专用硬件和/或软件模块内提供,或者并入在组合编解码器中。此外,所述技术可以完全在一个或多个电路或逻辑元件中实施。
[0218]本发明的技术可以在多种多样的装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述了各种组件、模块或电路以强调经配置以执行所揭示的技术的装置的功能方面,但并不必然要求通过不同的硬件单元来实现。实际上,如上所述,各种单元可以在编解码器硬件单元中组合,或者由互操作性硬件单元的集合(包含上述一个或多个处理器)配合合适的软件和/或固件来提供。
[0219]已经描述了各种实例。这些和其它实例在所附权利要求书的范围内。
【权利要求】
1.一种在视频译码过程中对与残余视频数据相关联的变换系数进行译码的方法,所述方法包括: 基于变换系数扫描次序定义多个变换系数中的一者的上下文导出邻域; 基于所述上下文导出邻域确定所述多个变换系数中的所述一者的上下文;以及 基于所述确定的上下文对所述多个变换系数中的所述一者进行译码。
2.根据权利要求1所述的方法,其中定义所述上下文导出邻域包括基于滑动窗定义所述上下文导出邻域,所述滑动窗包含按照所述变换系数扫描次序在所述多个变换系数中的所述一者之前扫描的一组变换系数。
3.根据权利要求2所述的方法,其进一步包括在对所述多个变换系数中的所述一者进行译码之后按照所述变换系数扫描次序将所述滑动窗移动一个位置,使得所述滑动窗包含所述多个变换系数中的所述一者。
4.根据权利要求2所述的方法,其中所述组变换系数包括按照所述系数扫描次序的一组连续变换系数。
5.根据权利要求2所述的方法,其中所述多个变换系数中的所述一者具有扫描次序位置n,并且所述上下文导出邻域包括在扫描次序位置n+i到n+j处的变换系数,其中在扫描次序位置n+i到n+j之后扫描扫描次序位置n,并且在扫描次序位置n+i之后扫描扫描次序位置n+j。
6.根据权利要求1所述的方法,其进一步包括: 基于所述变换系数扫描次序定义所述多个变换系数中的其它变换系数的上下文导出邻域, 其中所述上下文导出邻域中的每一者对应于沿着所述扫描次序相对于要被译码的相应系数的滑动窗。
7.根据权利要求1所述的方法,其中定义所述多个变换系数中的所述一者的所述上下文导出邻域包括在所述变换系数中的所述一者与跟所述上下文导出邻域相关联的变换系数之间包含至少一个变换系数的间隙。
8.根据权利要求7所述的方法,其中所述变换系数具有扫描次序位置n,并且所述上下文导出邻域包括在扫描次序位置n+2到n+6处的变换系数,其中在扫描次序位置n+2到n+6之后扫描扫描次序位置η。
9.根据权利要求1所述的方法, 其中所述多个变换系数与变换系数子块相关联; 所述方法进一步包括为所述多个变换系数中的初始变换系数定义并非基于所述扫描次序的初始上下文导出邻域,其中按照所述变换系数扫描次序在所述子块中首先扫描所述初始变换系数;以及 基于所述初始上下文导出邻域对所述初始变换系数进行译码。
10.根据权利要求1所述的方法,其中所述上下文是CABAC上下文,并且其中译码包括使用CABAC过程对所述多个变换系数中的所述一者进行译码。
11.根据权利要求1所述的方法,其中对所述多个变换系数中的所述一者进行译码包括对所述多个变换系数中的所述一者进行解码。
12.根据权利要求1所述的方法,其中对所述多个变换系数中的所述一者进行译码包括对所述多个变换系数中的所述一者进行编码。
13.一种用于在视频译码过程中对与残余视频数据相关联的变换系数进行译码的设备,所述设备包括经配置以执行以下操作的一个或多个处理器: 基于变换系数扫描次序定义多个变换系数中的一者的上下文导出邻域; 基于所述上下文导出邻域确定所述多个变换系数中的所述一者的上下文;以及 基于所述确定的上下文对所述多个变换系数中的所述一者进行译码。
14.根据权利要求13所述的设备,其中为了定义所述上下文导出邻域,所述一个或多个处理器经配置以基于滑动窗定义所述上下文导出邻域,所述滑动窗包含按照所述变换系数扫描次序在所述多个变换系数中的所述一者之前扫描的一组变换系数。
15.根据权利要求14所述的设备,其中所述一个或多个处理器进一步经配置以在对所述多个变换系数中的所述一者进行译码之后按照所述变换系数扫描次序将所述滑动窗移动一个位置,使得所述滑动窗包含所述多个变换系数中的所述一者。
16.根据权利要求14所述的设备,其中所述组变换系数包括按照所述系数扫描次序的一组连续变换系数。
17.根据权利要求14所述的设备,其中所述多个变换系数中的所述一者具有扫描次序位置n,并且所述上下文导出邻域包括在扫描次序位置n+i到n+j处的变换系数,其中在扫描次序位置n+i到n+j之后扫描扫描次序位置n,并且在扫描次序位置n+i之后扫描扫描次序位置n+j。
18.根据权利要求13所述的设备,其中所述一个或多个处理器进一步经配置以执行以下操作: 基于所述变换系数扫描次序定义所述多个变换系数中的其它变换系数的上下文导出邻域, 其中所述上下文导出邻域中的每一者对应于沿着所述扫描次序相对于要被译码的相应系数的滑动窗。
19.根据权利要求13所述的设备,其中为了定义所述多个变换系数中的所述一者的所述上下文导出邻域,所述一个或多个处理器经配置以在所述变换系数中的所述一者与跟所述上下文导出邻域相关联的变换系数之间包含至少一个变换系数的间隙。
20.根据权利要求19所述的设备,其中所述变换系数具有扫描次序位置n,并且所述上下文导出邻域包括在扫描次序位置n+2到n+6处的变换系数,其中在扫描次序位置n+2到n+6之后扫描扫描次序位置η。
21.根据权利要求13所述的设备, 其中所述多个变换系数与变换系数子块相关联; 其中所述一个或多个处理器进一步经配置以为所述多个变换系数中的初始变换系数定义并非基于所述扫描次序的初始上下文导出邻域,其中按照所述变换系数扫描次序在所述子块中首先扫描所述初始变换系数;以及 基于所述初始上下文导出邻域对所述初始变换系数进行译码。
22.根据权利要求13所述的设备,其中所述上下文是CABAC上下文,并且其中为了译码,所述一个或多个处理器经配置以使用CABAC过程对所述多个变换系数中的所述一者进行译码。
23.根据权利要求13所述的设备,其中为了对所述多个变换系数中的所述一者进行译码,所述一个或多个处理器经配置以对所述多个变换系数中的所述一者进行解码。
24.根据权利要求13所述的设备,其中为了对所述多个变换系数中的所述一者进行译码,所述一个或多个处理器经配置以对所述多个变换系数中的所述一者进行编码。
25.一种用于在视频译码过程中对与残余视频数据相关联的变换系数进行译码的设备,所述设备包括: 用于基于变换系数扫描次序定义多个变换系数中的一者的上下文导出邻域的装置; 用于基于所述上下文导出邻域确定所述多个变换系数中的所述一者的上下文的装置;以及 用于基于所述确定的上下文对所述多个变换系数中的所述一者进行译码的装置。
26.根据权利要求25所述的设备,其中所述用于定义所述上下文导出邻域的装置包括用于基于滑动窗定义所述上下文导出邻域的装置,所述滑动窗包含按照所述变换系数扫描次序在所述多个变换系数中的所述一者之前扫描的一组变换系数。
27.根据权利要求26所述的设备,其进一步包括用于在对所述多个变换系数中的所述一者进行译码之后按照所述变换系数扫描次序将所述滑动窗移动一个位置使得所述滑动窗包含所述多个变换系数中的所述一者的装置。
28.根据权利要求26所述的设备,其中所述组变换系数包括按照所述系数扫描次序的一组连续变换系数。
29.根据权利要求26所述的设备,其中所述多个变换系数中的所述一者具有扫描次序位置n,并且所述上下文导出邻域包括在扫描次序位置n+i到n+j处的变换系数,其中在扫描次序位置n+i到n+j之后扫描扫描次序位置n,并且在扫描次序位置n+i之后扫描扫描次序位置n+j。
30.根据权利要求25所述的设备,其进一步包括: 用于基于所述变换系数扫描次序定义所述多个变换系数中的其它变换系数的上下文导出邻域的装置, 其中所述上下文导出邻域中的每一者对应于沿着所述扫描次序相对于要被译码的相应系数的滑动窗。
31.根据权利要求25所述的设备,其中所述用于定义所述多个变换系数中的所述一者的所述上下文导出邻域的装置包括用于在所述变换系数中的所述一者与跟所述上下文导出邻域相关联的变换系数之间包含至少一个变换系数的间隙的装置。
32.根据权利要求31所述的设备,其中所述变换系数具有扫描次序位置n,并且所述上下文导出邻域包括在扫描次序位置n+2到n+6处的变换系数,其中在扫描次序位置n+2到n+6之后扫描扫描次序位置η。
33.根据权利要求25所述的设备, 其中所述多个变换系数与变换系数子块相关联; 所述设备进一步包括用于为所述多个变换系数中的初始变换系数定义并非基于所述扫描次序的初始上下文导出邻域的装置,其中按照所述变换系数扫描次序在所述子块中首先扫描所述初始变换系数;以及 用于基于所述初始上下文导出邻域对所述初始变换系数进行译码的装置。
34.根据权利要求25所述的设备,其中所述用于对所述多个变换系数中的所述一者进行译码的装置包括用于对所述多个变换系数中的所述一者进行解码的装置。
35.根据权利要求25所述的设备,其中所述用于对所述多个变换系数中的所述一者进行译码的装置包括用于对所述多个变换系数中的所述一者进行编码的装置。
36.一种非暂时性计算机可读媒体,其包括在被执行时使得一个或多个处理器执行以下操作的指令: 基于变换系数扫描次序定义多个变换系数中的一者的上下文导出邻域; 基于所述上下文导出邻域确定所述多个变换系数中的所述一者的上下文;以及 基于所述确定的上下文对所述多个变换系数中的所述一者进行译码。
37.根据权利要求36所述的计算机可读媒体,其中为了定义所述上下文导出邻域,所述指令使得所述一个或多个处理器基于滑动窗定义所述上下文导出邻域,所述滑动窗包含按照所述变换系数扫描次序在所述多个变换系数中的所述一者之前扫描的一组变换系数。
38.根据权利要求37所述的计算机可读媒体,其进一步包括使得所述一个或多个处理器执行以下操作的指令:在对所述多个变换系数中的所述一者进行译码之后按照所述变换系数扫描次序将所述滑动窗移动一个位置,使得所述滑动窗包含所述多个变换系数中的所述一者。
39.根据权利要求37所述的计算机可读媒体,其中所述组变换系数包括按照所述系数扫描次序的一组连续变换系数。
40.根据权利要求37所述的计算机可读媒体,其中所述多个变换系数中的所述一者具有扫描次序位置n,并且所述上下文导出邻域包括在扫描次序位置n+i到n+j处的变换系数,其中在扫描次序位置n+i到n+j之后扫描扫描次序位置n,并且在扫描次序位置n+i之后扫描扫描次序位置n+j。
41.根据权利要求36所述的计算机可读媒体,其进一步包括使得所述一个或多个处理器执行以下操作的指令: 基于所述变换系数扫描次序定义所述多个变换系数中的其它变换系数的上下文导出邻域, 其中所述上下文导出邻域中的每一者对应于沿着所述扫描次序相对于要被译码的相应系数的滑动窗。
42.根据权利要求36所述的计算机可读媒体,其中为了定义所述多个变换系数中的所述一者的所述上下文导出邻域,所述指令使得所述一个或多个处理器在所述变换系数中的所述一者与跟所述上下文导出邻域相关联的变换系数之间包含至少一个变换系数的间隙。
43.根据权利要求42所述的计算机可读媒体,其中所述变换系数具有扫描次序位置n,并且所述上下文导出邻域包括在扫描次序位置n+2到n+6处的变换系数,其中在扫描次序位置n+2到n+6之后扫描扫描次序位置η。
44.根据权利要求36所述的计算机可读媒体, 其中所述多个变换系数与变换系数子块相关联; 所述计算机可读媒体进一步包括使得所述一个或多个处理器执行以下操作的指令:为所述多个变换系数中的初始变换系数定义并非基于所述扫描次序的初始上下文导出邻域,其中按照所述变换系数扫描次序在所述子块中首先扫描所述初始变换系数;以及 基于所述初始上下文导出邻域对所述初始变换系数进行译码。
45.根据权利要求36所述的计算机可读媒体,其中为了对所述多个变换系数中的所述一者进行译码,所述指令使得所述一个或多个处理器对所述多个变换系数中的所述一者进行解码。
46.根据权利要求36所述的计算机可读媒体,其中为了对所述多个变换系数中的所述一者进行译码,所述指令使得所述一个或多个处理器对所述多个变换系数中的所述一者进行编码。
【文档编号】H04N19/129GK104137542SQ201380011137
【公开日】2014年11月5日 申请日期:2013年3月1日 优先权日:2012年3月2日
【发明者】霍埃尔·索赖罗哈斯, 瑞珍·雷克斯曼·乔许, 钱威俊, 瓦迪姆·谢廖金, 陈建乐, 马尔塔·卡切维奇 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1