本申请案主张2010年12月22日申请的第61/426,431号美国临时申请案、2010年12月22日申请的第61/426,426号美国临时申请案和2011年10月14日申请的第61/547,530号美国临时申请案的权益,以上每一美国临时申请案的全部内容以引用方式并入本文。
具体实施方式
本发明描述用于在视频译码过程期间对与视频数据块相关联的系数进行译码的技术,包含用于对识别与块相关联的扫描次序的信息(即,用于块的扫描次序信息)进行译码的技术。本发明的技术可通过使用识别用于块的最可能扫描次序的信息对用于特定块的扫描次序信息进行译码,而改善对用以对块进行译码的用于视频数据块的扫描次序信息的译码的效率。换句话说,所述技术可在对扫描次序信息进行译码时改善对用于块的扫描次序信息的压缩。
在本发明中,术语“译码”指代在编码器处发生的编码或在解码器处发生的解码。类似地,术语译码器指代编码器、解码器或组合式编码器/解码器(CODEC)。术语译码器、编码器、解码器和CODEC全部指代与本发明一致的经设计以用于视频数据的译码(编码和/或解码)的特定机器。
一般来说,在这些技术的开发中执行的经验测试已证明同视频数据块相关联的预测模式和大小与同所述块相关联的扫描次序(即,用以对块进行译码的扫描次序)之间的相关。举例来说,与块相关联的扫描次序可取决于用以产生块的预测数据的预测模式和块的大小。换句话说,取决于与块相关联的预测模式和大小,可使用特定扫描次序来比也可用以对块进行译码的任何其它扫描次序更频繁地对块进行译码。
通过利用上述相关,可改善对用以对块进行译码的用于视频数据块的扫描次序信息的译码的译码效率。具体来说,通过使用识别用于块的最可能扫描次序的信息对用于特定块的扫描次序信息进行译码,可改善译码效率。在一些实例中,可基于与块相关联的帧内预测模式和大小来确定用于特定块的最可能扫描次序。举例来说,编码器和解码器可均经编程以基于与块相关联的帧内预测模式和大小来界定用于块的最可能扫描次序,且编码器可以信号表示信息以向解码器指示最可能扫描次序是否曾实际上由编码器用来对块进行编码。
在一个实例中,通过确定用于视频数据块的最可能扫描次序且对与块相关联的扫描次序(即,用以对块进行译码的扫描次序)是否为最可能扫描次序的指示进行译码,可改善译码效率。在此实例中,在与块相关联的扫描次序是最可能扫描次序的情况下,可不对用于所述块的其它扫描次序信息进行译码。然而在与块相关联的扫描次序不是最可能扫描次序的情况下,所述技术可进一步包含对与块相关联的扫描次序的指示进行译码。因为根据定义,用于特定视频数据块的最可能扫描次序将平均上用以比也可用以对块进行译码的任何其它扫描次序更频繁地对块进行译码,所以在许多情况下,将不对与块相关联的扫描次序的额外指示进行译码。因此,与当使用其它技术时,例如当总是完整地对用于块的扫描次序信息进行译码时相比,可使用较少信息对用于块的扫描次序信息进行译码。
作为另一实例,在与块相关联的扫描次序不是最可能扫描次序的情况下,通过使用Z形扫描次序对与块相关联的系数进行译码,可改善译码效率。再次,因为根据定义,用于特定视频数据块的最可能扫描次序将平均上用以比也可用以对块进行译码的任何其它扫描次序更频繁地对块进行译码,所以与块相关联的扫描次序是否为最可能扫描次序的初始指示将在许多情况下完整地指示用于块的扫描次序信息,从而不需要对任何其它扫描次序信息进行译码。此外,在与块相关联的扫描次序不是最可能扫描次序的情况下,不对与块相关联的扫描次序的指示进行译码而是使用Z形扫描次序对与块相关联的系数进行译码可足以有效地对块进行译码。举例来说,上述对用于块的扫描次序信息的减少的译码可超过使用Z形扫描次序对系数进行译码而不是使用可较有效地扫描系数的另一扫描次序的任何不利影响。
作为再一实例,通过将Z形扫描次序指定为用于块的最可能扫描次序,可改善译码效率。在此实例中,因为Z形扫描次序可平均上用以比也可用以对块进行译码的任何其它扫描次序更频繁地对块进行译码,所以在许多情况下可不对与块相关联的扫描次序的额外指示进行译码。此外,通过将Z形扫描次序指定为最可能扫描次序,通过避免如上所述确定块的实际最可能扫描次序,可改善译码效率。
在上述实例中的每一者中,通过对用于块的扫描次序信息(即,与块相关联的扫描次序是否为最可能扫描次序的指示以及与块相关联的扫描次序的指示中的一者或一者以上)进行熵译码,可进一步改善译码效率。举例来说,可通过执行上下文自适应熵译码过程来对扫描次序信息进行熵译码,所述过程例如包含基于至少一个上下文应用上下文模型的上下文自适应二进制算术译码(CABAC)过程。在上述实例中,所述至少一个上下文可包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者,其可导致上下文模型内包含的概率估计相对于使用其它技术确定的概率估计来说更准确。因此,可更有效地对用于块的扫描次序信息进行译码。举例来说,与当使用其它技术时,例如当使用其它较不准确的概率估计对信息进行译码时相比,可使用较少的位对信息进行译码。
以上述方式对用于一个或一个以上视频数据块的扫描次序信息进行译码可使得能够使用相对于其它方法更有效的译码方法。以此方式,当使用本发明的技术时,对于包含信息的经译码位流可存在相对位节省。
在一些实例中,本发明的技术可与任何上下文自适应熵译码方法一起使用,包含CABAC、概率区间分割熵译码(PIPE)或另一上下文自适应熵译码方法。本发明中为了说明目的而描述CABAC,但在本发明中广泛描述的技术方面不受限制。而且,例如除了视频数据外,通常还可应用所述技术对其它类型的数据进行译码。
图1是说明视频编码和解码系统10的一实例的框图,视频编码和解码系统10可实施与本发明的技术一致的用于使用最可能扫描次序对用于视频数据块的扫描次序信息进行有效译码的技术。如图1中所示,系统10包含源装置12,源装置12经由通信信道16将经编码视频发射到目的地装置14。源装置12和目的地装置14可包括各种各样的装置中的任一者。在一些情况下,源装置12和目的地装置14可包括无线通信装置,例如无线手持机、所谓的蜂窝式或卫星无线电电话,或可在通信信道16上(在此情况下,通信信道16为无线的)传送视频信息的任何无线装置。
然而,涉及使用最可能扫描次序对用于视频数据块的扫描次序信息进行有效译码的本发明的技术不一定限于无线应用或环境。这些技术一般可应用于其中执行编码或解码的任何情形,包含空中电视广播、有线电视发射、卫星电视发射、流式传输因特网视频发射、被编码到存储媒体中或从存储媒体检索和解码的经编码数字视频,或其它情形。因此,不需要通信信道16,且本发明的技术可应用于其中应用编码的环境或者其中应用解码的环境,(例如)而不需要编码与解码装置之间的任何数据通信。
在图1的实例中,源装置12包含视频源18、视频编码器20、调制器/解调器(调制解调器)22和发射器24。目的地装置14包含接收器26、调制解调器28、视频解码器30,和显示装置32。根据本发明,源装置12的视频编码器20和/或目的地装置14的视频解码器30可经配置以应用用于使用最可能扫描次序对用于视频数据块的扫描次序信息进行有效译码的技术。在其它实例中,源装置和目的地装置可包含其它组件或布置。举例来说,源装置12可从外部视频源18(例如,外部相机)接收视频数据。同样,目的地装置14可与外部显示装置介接,而不是包含集成式显示装置。
图1的所说明的系统10仅是一个实例。用于使用最可能扫描次序对用于视频数据块的扫描次序信息进行有效译码的技术可由任何数字视频编码和/或解码装置执行。尽管一般来说,本发明的技术是由视频编码装置来执行,但所述技术还可由视频编码器/解码器(通常被称作“CODEC”)来执行。另外,本发明的技术还可由视频预处理器来执行。源装置12及目的地装置14仅为此些译码装置的实例,其中源装置12产生用于发射到目的地装置14的经译码视频数据。在一些实例中,装置12、14可以大体上对称的方式操作,以使得装置12、14中的每一者包含视频编码和解码组件。因此,系统10可支持视频装置12、14之间的单向或双向视频发射,例如用于视频流式传输、视频回放、视频广播或视频电话。
源装置12的视频源18可包含视频俘获装置,例如摄像机、含有先前所俘获的视频的视频存档,和/或来自视频内容提供者的视频馈送。作为另一替代方案,视频源18可产生基于计算机图形的数据作为源视频,或直播视频(livevideo)、存档视频与计算机产生的视频的组合。在一些情况下,如果视频源18为摄像机,那么源装置12及目的地装置14可形成所谓的相机电话或视频电话。然而,如上文所提及,一般来说,本发明中所描述的技术可适用于视频译码,且可适用于无线及/或有线应用。在每一情况下,可由视频编码器20来编码经俘获的、经预先俘获的或计算机产生的视频。经编码视频信息可接着由调制解调器22根据通信标准来调制,且经由发射器24而发射到目的地装置14。调制解调器22可包含各种混频器、滤波器、放大器或经设计以用于信号调制的其它组件。发射器24可包含经设计以用于发射数据的电路,包含放大器、滤波器及一个或一个以上天线。
目的地装置14的接收器26在信道16上接收信息,且调制解调器28解调所述信息。同样,上文所描述的视频编码过程可实施本文中所描述的用以使用最可能扫描次序对用于视频数据块的扫描次序信息进行有效译码的技术中的一者或一者以上。在信道16上传送的信息可包含由视频编码器20界定的语法信息,所述语法信息还被视频解码器30使用,所述语法信息包含描述视频数据块(例如,宏块或译码单元)的特性和/或处理的语法元素(例如,所述块的扫描次序信息以及其它信息)。显示装置32向用户显示经解码的视频数据,且可包括多种显示装置中的任一者,例如阴极射线管(CRT)、液晶显示器(LCD)、等离子体显示器、有机发光二极管(OLED)显示器或另一类型的显示装置。
在图1的实例中,通信信道16可包括任一无线或有线通信媒体,例如,射频(RF)频谱或一个或一个以上物理传输线、或无线和有线媒体的任一组合。通信信道16可形成例如局域网、广域网或例如因特网等全球网络的基于包的网络的部分。通信信道16一般表示用于将视频数据从源装置12发射到目的地装置14的任何合适的通信媒体或不同通信媒体的集合,包含有线或无线媒体的任何合适组合。通信信道16可包含可用于促进从源装置12到目的地装置14的通信的路由器、交换器、基站或任何其它设备。在其它实例中,编码或解码装置可实施本发明的技术而不需要此些装置之间的任何通信。举例来说,编码装置可与本发明的技术一致地对经编码位流进行编码和存储。或者,解码装置可与本发明的技术一致地接收或检索经编码位流,且对所述位流进行解码。
视频编码器20和视频解码器30可根据例如ITU-TH.264标准(或者被称作MPEG-4第10部分,高级视频译码(AVC))的视频压缩标准而操作。然而,本发明的技术不限于任何特定译码标准。其它实例包含MPEG-2、ITU-TH.263以及目前在开发中的高效视频译码(HEVC)标准。一般来说,本发明的技术是相对于HEVC来描述,但应理解,这些技术还可结合其它视频译码标准而使用。尽管图1中未展示,但在一些方面中,视频编码器20及视频解码器30可各自与音频编码器及解码器一起集成,且可包含适当的MUX-DEMUX单元或其它硬件和软件,以处置对共同数据流或单独数据流中的音频与视频两者的编码。如果可适用,MUX-DEMUX单元可符合ITUH.223多路复用器协议或例如用户数据报协议(UDP)等其它协议。
视频编码器20和视频解码器30各自可经实施为例如一个或一个以上微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合等多种合适编码器和解码器电路中的任一者。视频编码器20和视频解码器30中的每一者可包含于一个或一个以上编码器或解码器中,视频编码器20和视频解码器30中的任一者可作为组合式编码器/解码器(CODEC)的一部分而集成于相应相机、计算机、移动装置、订户装置、广播装置、机顶盒、服务器等中。
视频序列通常包含一系列视频帧。图片群组(GOP)一般包括一系列一个或一个以上视频帧。GOP可在GOP的标头、GOP的一个或一个以上帧的标头或其它地方中包含语法数据,所述语法数据描述包含于GOP中的帧的数目。每一帧可包含帧语法数据,所述帧语法数据描述相应帧的编码模式。视频编码器(例如,视频编码器20)通常对个别视频帧内的视频块进行操作以便对视频数据进行编码。根据ITU-TH.264标准,视频块可对应于宏块或宏块的分区。根据其它标准(例如,下文更详细地描述的HEVC),视频块可对应于译码单元(例如,最大译码单元)或译码单元的分区。所述视频块可具有固定的或不同的大小,且可根据指定的译码标准而大小不同。每一视频帧可包含多个切片,即视频帧的若干部分。每一切片可包含多个视频块,所述多个视频块可布置在若干分区(还被称作子块)中。
取决于指定的译码标准,视频块可被分割为各种“N×N”子块大小,例如16×16、8×8、4×4、2×2等等。在本发明中,“N×N”与“N乘N”可以可互换地使用,以在垂直和水平尺寸方面指代块的像素尺寸,例如16×16像素或16乘16像素。一般来说,16×16块将具有在垂直方向上的16个像素(y=16)和在水平方向上的16个像素(x=16)。同样地,N×N块一般具有在垂直方向上的N个像素和在水平方向上的N个像素,其中N表示非负整数值。一块中的像素可布置在若干行和若干列中。此外,块无需一定在水平方向上具有与在垂直方向上相同数目的像素。举例来说,块可包括N×M个像素,其中M不一定等于N。作为一个实例,在ITU-TH.264标准中,可将大小为16乘16个像素的块称作宏块,且将小于16乘16个像素的块称作16乘16宏块的分区。在其它标准(例如,HEVC)中,可相对于其大小更一般地将块界定为译码单元和其分区,各自具有不同的而非固定的大小。
视频块可包括像素域中的若干像素数据块,或(例如)在对给定视频块的残余数据应用例如离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换等变换之后的在变换域中的若干变换系数块,其中残余数据表示块的视频数据与针对所述块而产生的预测性数据之间的像素差。在一些情况下,视频块可包括变换域中的若干经量化变换系数块,其中在对给定视频块的残余数据应用变换之后,所得的变换系数也被量化。
块分割用作基于块的视频译码技术中的重要目的。使用较小的块对视频数据进行译码可导致对包含高水平细节的视频帧的位置的数据的更好预测,且可因此减少表示为残余数据的所得误差(即,预测数据与源视频数据的偏差)。然而,虽然潜在地减少残余数据,但此些技术可需要额外的语法信息来指示相对于视频帧如何分割较小的块,且可导致增加的经译码视频位速率。因此,在一些技术中,块分割可取决于对照归因于额外的语法信息而引起的经译码视频数据的位速率的所得增加来平衡残余数据的合意的减少。
一般来说,块及其各种分区(即,子块)可被视为视频块。另外,可将切片视为多个视频块(例如,宏块或译码单元),和/或子块(宏块的分区,或子译码单元)。每一切片可为视频帧的可独立解码单元。或者,帧自身可为可解码单元,或可将帧的其它部分界定为可解码单元。此外,可将GOP(还被称作序列)界定为可解码单元。
当前正在努力开发新的视频译码标准(当前被称作高效视频译码(HEVC))。新兴的HEVC标准还可被称作H.265。标准化工作是基于被称作HEVC测试模型(HM)的视频译码装置模型。HM假设优于根据(例如)ITU-TH.264/AVC的装置的视频译码装置的若干能力。举例来说,H.264提供九个帧内预测编码模式,而HM(例如)基于正被帧内预测译码的块的大小而提供多达三十五个帧内预测编码模式。
HM将视频数据块称作译码单元(CU)。CU可指代用作向其应用各种译码工具以进行压缩的基本单元的矩形图像区。在H.264中,其还可被称为宏块。位流内的语法数据可界定最大译码单元(LCU),其为在像素数目方面的最大CU。一般来说,CU具有与H.264的宏块类似的目的,只不过CU不具有大小区别。因此,CU可被分割或“分裂”为若干子CU。
LCU可与指示如何分割LCU的四叉树数据结构相关联。一般来说,四叉树数据结构中的LCU的每个CU包含一个节点,其中根节点对应于LCU,且其它节点对应于LCU的子CU。如果将给定CU分裂为四个子CU,那么四叉树中的对应于分裂的CU的节点包含四个子节点,所述四个子节点中的每一者对应于子CU中的一者。所述四叉树数据结构的每一节点可提供对应CU的语法信息。举例来说,四叉树中的节点可包含CU的分裂旗标,从而指示对应于所述节点的CU是否被分裂为四个子CU。可递归地界定给定CU的语法信息,且所述语法信息可取决于CU是否被分裂为子CU。
未分裂的CU(即,对应于终端的CU,或给定四叉树中的叶节点)可包含一个或一个以上预测单元(PU)。一般来说,PU表示对应CU的全部或一部分,且包含用于检索PU的参考样本的数据以用于执行对所述CU的预测的目的。举例来说,在对CU进行帧内模式编码时,PU可包含描述PU的帧内预测模式的数据。作为另一实例,在对CU进行帧间模式编码时,PU可包含界定PU的运动向量的数据。界定运动向量的数据可描述(例如)运动向量的水平分量、运动向量的垂直分量、运动向量的分辨率(例如,四分之一像素精度或八分之一像素精度)、运动向量指向的参考帧,和/或运动向量的参考列表(例如,列表0或列表1)。界定CU的一个或一个以上PU的CU的数据还可描述(例如)将CU分割为一个或一个以上PU。分割模式在CU未被译码、被帧内预测模式编码还是被帧间预测模式编码之间可不同。
具有一个或一个以上PU的CU还可包含一个或一个以上变换单元(TU)。如上文所描述,在使用一个或一个以上PU对CU进行预测之后,视频编码器可针对CU的对应于所述一个或一个以上PU的相应部分计算一个或一个以上残余块。所述残余块可表示用于CU的视频数据与用于所述一个或一个以上PU的所预测数据之间的像素差。可变换、扫描并量化一组残余值以界定一组经量化变换系数。TU可界定大体上类似于上文参考CU所描述的四叉树数据结构的分割数据结构,所述分割数据结构指示变换系数的分割信息。TU不一定受限于PU的大小。因此,TU可比同一CU的对应PU更大或更小。在一些实例中,TU的最大大小可对应于对应CU的大小。在一个实例中,可使用被称为“残余四叉树”(RQT)的四叉树结构将对应于CU的残余样本细分为更小的单元。在此情况下,RQT的叶节点可被称作TU,可针对所述TU变换并量化对应的残余样本。
在用以产生预测性数据和残余数据的帧内预测或帧间预测编码之后,以及在用以产生变换系数的任何变换(例如,用于H.264/AVC中的4×4或8×8整数变换或离散余弦变换DCT)之后,可执行对变换系数的量化。量化一般指代将变换系数量化以可能地减少用于表示系数的数据量的过程。量化过程可减少与系数中的一些或全部相关联的位深度。举例来说,n位值可在量化期间下舍入到m位值,其中n大于m。
在量化之后,可执行对经量化数据(即,经量化变换系数)的熵译码。所述熵译码可符合本发明的关于使用最可能扫描次序对用于视频数据块的扫描次序信息进行有效译码的技术,且还可使用其它熵译码技术,例如上下文自适应可变长度译码(CAVLC)、CABAC、PIPE或另一熵译码方法。举例来说,可使用熵译码技术对经量化变换系数的被表示为量值和对应正负号(例如,“+1”或“-1”)的系数值进行编码。
应注意,取决于指定的译码标准,可针对任何视频数据块执行上文所描述的预测、变换和量化,例如对CU的PU和/或TU,或对宏块。因此,本发明的与使用最可能扫描次序对用于视频数据块的扫描次序信息进行有效译码相关的技术可应用于任何视频数据块,例如,应用于任何经量化变换系数块,包含宏块,或CU的TU。此外,视频数据块(例如,宏块,或CU的TU)可包含对应视频数据的亮度分量(Y)、第一色度分量(U)和第二色度分量(V)中的每一者。因此,可针对给定视频数据块的Y、U和V分量中的每一者执行本发明的技术。
为了如上文所描述对视频数据块进行编码,还可产生关于给定块内的有效系数的位置的信息并对所述信息进行编码。随后,可如上文所描述对有效系数的值进行编码。在H.264/AVC和新兴的HEVC标准中,当使用上下文自适应熵译码过程(例如,CABAC过程)时,可在对有效系数的值进行编码之前对视频数据块内的有效系数的位置进行编码。可将对块内的全部有效系数的位置进行编码的过程称作有效性图(SM)编码。下文更详细地描述的图4A到4C是说明4×4经量化变换系数块和对应的SM数据的实例的概念图。
可如下描述典型的SM编码程序。对于给定的视频数据块,仅在所述块内存在至少一个有效系数的情况下才对SM进行编码。可在经译码块模式中指示给定视频数据块内的有效系数的存在(例如,使用语法元素“coded_block_pattern”,或CBP),其为针对与视频数据中的像素区域相关联的一组块(例如,亮度和色度块)而译码的二进制值。CBP中的每一位被称作经译码块旗标(例如,对应于语法元素“coded_block_flag”),且用于指示在其对应块内是否存在至少一个有效系数。换句话说,经译码块旗标是指示在单一变换系数块内是否存在任何有效系数的一位符号,且CBP是用于一组相关视频数据块的一组经译码块旗标。
如果经译码块旗标指示在对应块内不存在有效系数(例如,旗标等于“0”),那么不针对所述块编码进一步的信息。然而,如果经译码块旗标指示在对应块内存在至少一个有效系数(例如,旗标等于“1”),那么可通过遵循与所述块相关联的系数扫描次序针对所述块对SM进行编码。所述扫描次序可界定其中将块内的每一系数的有效性编码为SM编码的部分的次序。换句话说,扫描可使二维系数块串行化为一维表示以确定系数的有效性。可使用不同的扫描次序(例如,Z形、水平和垂直)。下文也更详细地描述的图5A到5C说明可针对8×8视频数据块使用的各种扫描次序中的一些的实例。然而,本发明的技术还可相对于广泛多种其它扫描次序进行应用,包含对角扫描次序、作为Z形、水平、垂直和/或对角扫描次序的组合的扫描次序,以及部分Z形、部分水平、部分垂直和/或部分对角的扫描次序。另外,本发明的技术还可考虑自身基于与先前经译码的视频数据块(例如,具有与正被译码的当前块相同的块大小或译码模式的块)相关联的统计数据是自适应的扫描次序。举例来说,自适应扫描次序在一些情况下可为最可能扫描次序。
给定指示在给定块内存在至少一个有效系数的经译码块旗标,以及用于所述块的扫描次序,可如下对所述块的SM进行编码。可首先使用所述扫描次序将二维经量化变换系数块映射到一维阵列中。对于所述阵列中的每一系数,遵循所述扫描次序,可对一位有效系数旗标(例如,对应于语法元素“significant_coeff_flag”)进行编码。也就是说,可向所述阵列中的每一位置指派一二进制值,所述二进制值在对应系数是有效的情况下可被设定为“1”,且在对应系数是非有效(即,零)的情况下可被设定为“0”。
如果给定有效系数旗标等于“1”,从而指示对应系数是有效的,那么还可对额外的一位最后有效系数旗标(例如,对应于语法元素“last_significant_coeff_flag”)进行编码,其可指示所述对应系数是否为所述阵列内(即,给定扫描次序的块内)的最后有效系数。具体来说,如果对应系数是所述阵列内的最后有效系数,那么每一最后有效系数旗标可被设定为“1”,且否则会被设定为“0”。如果以此方式到达最后阵列位置,且SM编码过程未由等于“1”的最后有效系数旗标终止,那么可推断出所述阵列(且进而给定扫描次序的块)中的最后系数是有效的,且针对最后阵列位置没有最后有效系数旗标可被编码。
图4B到4C是分别说明对应于图4A中所描绘的呈现在图中而非阵列形式的块的SM数据的若干组有效系数旗标和最后有效系数旗标的实例的概念图。应注意,在其它实例中,可将如上文所描述的有效系数旗标和最后有效系数旗标设定为不同值(例如,在对应系数是有效的情况下可将有效系数旗标设定为“0”,且在对应系数是非有效的情况下可将有效系数旗标设定为“1”,且在对应系数是最后有效系数的情况下可将最后有效系数旗标设定为“0”,且在对应系数不是最后有效系数的情况下可将最后有效系数旗标设定为“1”)。
在对SM进行编码之后,如上文所描述,还可对所述块中的每一有效系数的值(即,例如分别由语法元素“coeff_abs_level_minus1”和“coeff_sign_flag”指示的每一有效系数的量值和正负号)进行编码。
根据一些技术,如上文所描述,可使用固定扫描次序对视频数据块进行译码,例如,Z形扫描次序。根据其它技术,可使用多个扫描次序对所述块进行译码。在一些实例中,可使用“自适应系数扫描(ACS)”,其中扫描次序随时间调适,且在任何给定时间使用当前调适的扫描次序对特定系数块进行译码。在又其它技术中,视频编码器20可基于一个或一个以上压缩效率度量来测试若干扫描次序,且选择最佳扫描次序对所述块进行编码。另外,视频编码器20可通过对ACS索引进行编码来向视频解码器30指示扫描次序,所述ACS索引可表示若干扫描次序中的任一者(例如,针对Z形扫描次序使用索引0,针对水平扫描次序使用索引1,且针对垂直扫描次序使用索引2)。
根据一些技术,视频编码器20可仅在最后有效系数不位于扫描次序中的第一位置(对应于块内的通常被称作“DC”位置的左上位置)中时才对ACS索引进行编码。视频编码器20之所以可以此方式对ACS索引进行编码是因为在块内的最后(且唯一)有效系数位于DC位置中的情况下,视频解码器30不需要由视频编码器20使用的扫描次序的指示,因为所有可能的扫描次序均可开始于DC位置,如图5中所示,也在下文更详细地描述。
在块内的最后有效系数不位于DC位置中的情况下,视频编码器20可以以下方式对ACS索引进行编码。视频编码器20可对指示扫描次序是Z形扫描次序(例如,bin1="0")或不是Z形扫描次序(例如,bin1="1")的第一信号(例如,“bin1”)进行编码。在扫描次序不是Z形扫描次序的情况下,视频编码器20可对指示扫描次序是水平扫描次序(例如,bin2="0")还是垂直扫描次序(例如,bin2="1")的第二信号(例如,“bin2”)进行编码。类似地,视频解码器30可接收第一信号和第二信号并对其进行解码以确定ACS索引。因此,并非始终对ACS索引进行译码,视频编码器20和/或视频解码器30可仅在最后有效系数不位于DC位置中时才对ACS索引进行译码。
上述技术的一个缺点在于,当对用于视频数据块的扫描次序信息进行译码时,视频编码器20和/或视频解码器30可能总是完整地对信息进行译码。换句话说,视频编码器20和/或视频解码器30可能取决于与块相关联的扫描次序(即,用以对块进行译码的扫描次序)例如使用一个到两个位或“二进位”总是对用于块的整个扫描次序信息进行译码。此外,当视频编码器20和/或视频解码器30对用于块的扫描次序信息进行译码时,上文描述的技术未能利用与块相关联的预测模式和大小和与块相关联的扫描次序(即,用以对块进行译码的扫描次序)之间的相关。在这些情况下,总是完整地对用于块的扫描次序信息进行译码以及在不利用上述相关的情况下对信息进行译码可导致较低效地对信息进行译码,例如比当使用其它技术对信息进行译码时使用更多的二进位。
上述技术的另一缺点在于,当视频编码器20和/或视频解码器30进一步通过执行上下文自适应熵译码过程(例如,CABAC过程)对例如使用一个到两个二进位表示的用于块的扫描次序信息进行熵译码时,所述技术可使用含有与使用其它方法确定的概率估计相比较不准确的概率估计的上下文模型。使用此些概率估计对用于块的扫描次序信息进行熵译码可再次导致较低效地对信息进行译码,例如比当使用其它技术(例如使用较准确的概率估计来对信息进行熵译码)时使用更多的位。
因此,本发明描述可使得能够相对于其它技术更有效地对用于视频数据块的扫描次序信息进行译码的技术。作为一个实例,通过确定用于块的最可能扫描次序且对与块相关联的扫描次序(即,用以对块进行译码的扫描次序)是否为最可能扫描次序的指示进行译码,可较有效地对扫描次序信息进行译码。在与块相关联的扫描次序是最可能扫描次序的情况下,可不对用于所述块的其它扫描次序信息进行译码。然而在与块相关联的扫描次序不是最可能扫描次序的情况下,所述技术可进一步包含对与块相关联的扫描次序的指示进行译码。因为根据定义,用于特定视频数据块的最可能扫描次序将平均比也可用以对块进行译码的任何其它扫描次序更频繁地用以对块进行译码,所以在许多情况下将不对与块相关联的扫描次序的额外指示进行译码。因此,可使用比当使用其它技术时更少的信息来对用于块的扫描次序信息进行译码。
作为另一实例,通过在与块相关联的扫描次序不是最可能扫描次序的情况下,使用Z形扫描次序对与块相关联的系数进行译码,可较有效地对扫描次序信息进行译码。再次,因为根据定义,用于特定视频数据块的最可能扫描次序将平均上用以比也可用以对块进行译码的任何其它扫描次序更频繁地对块进行译码,所以与块相关联的扫描次序是否为最可能扫描次序的初始指示将在许多情况下完整地指示用于块的扫描次序信息,从而不需要对任何另外扫描次序信息进行译码。此外,在与块相关联的扫描次序不是最可能扫描次序的情况下,不对与块相关联的扫描次序的指示进行译码而是使用Z形扫描次序对与块相关联的系数进行译码可足以有效地对块进行译码。举例来说,上述对用于块的扫描次序信息的减少的译码可超过使用Z形扫描次序对系数进行译码而不是使用可较有效地扫描系数的另一扫描次序的任何不利影响。
作为再一实例,通过将Z形扫描次序指定为用于块的最可能扫描次序,可较有效地对扫描次序信息进行译码。在此实例中,因为Z形扫描次序可平均上用以比也可用以对块进行译码的任何其它扫描次序更频繁地对块进行译码,所以在许多情况下可不对与块相关联的扫描次序的额外指示进行译码。此外,通过将Z形扫描次序指定为最可能扫描次序,通过避免如上所述确定块的实际最可能扫描次序,可改善译码效率。
在上述实例中的每一者中,通过对用于块的扫描次序信息(即,与块相关联的扫描次序是否为最可能扫描次序的指示以及与块相关联的扫描次序的指示中的一者或一者以上)进一步进行熵译码,可较有效地对扫描次序信息进行译码。举例来说,可通过执行包含基于至少一个上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)来对扫描次序信息进行熵译码。在上述实例中,所述至少一个上下文可包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者,其可导致上下文模型内包含的概率估计相对于使用其它技术确定的概率估计来说更准确。因此,可更有效地对用于块的扫描次序信息进行译码。举例来说,与当使用其它技术时,例如当使用其它较不准确的概率估计对信息进行译码时相比,可使用较少的位对信息进行译码。
在上述实例中,可基于用以对块进行译码的译码模式和与块相关联的大小在编码器和解码器处界定最可能扫描次序。译码模式可为帧内预测模式和帧间预测模式中的一者,但这些技术可能最适用于使用帧内预测模式译码的块。因此,在一些实例中,对最可能扫描次序的确定可基于使用多种帧内预测模式中的哪一者来对块进行译码。与块相关联的大小可涉及CU大小、PU大小、TU大小或可能甚至是与块相关联的CU、PU和/或TU大小的某种组合。
应注意,本发明的技术适用于对用于视频数据块的扫描次序信息进行译码的任何方法,包含上述的用于SM译码的技术,以及用于对扫描次序信息进行译码的其它技术。举例来说,本发明的技术可包含独立于块的SM数据(即,最后有效系数位置信息和有效系数位置信息)以本文描述的方式对用于视频数据块的扫描次序信息进行译码。作为一个实例,所述技术可包含在对块的最后有效系数位置信息进行译码之后且在对块的有效系数位置信息进行译码之前对扫描次序信息进行译码。
在一些实例中,源装置12的视频编码器20可经配置以对某些视频数据块(例如,一个或一个以上宏块或CU的TU)进行编码,且目的地装置14的视频解码器30可经配置以从视频编码器20(例如,从调制解调器28和接收器26)接收经编码视频数据。根据本发明的技术,作为一个实例,视频编码器20和/或视频解码器30可经配置以对识别与块相关联的扫描次序的信息(即,用于块的扫描次序信息)进行译码。举例来说,视频编码器20和/或视频解码器30可经配置以确定用于块的最可能扫描次序,且对与块相关联的扫描次序是否为最可能扫描次序的指示进行译码。在此实例中,与块相关联的扫描次序和最可能扫描次序中的每一者可包括Z形扫描次序、水平扫描次序和垂直扫描次序中的一者。同样,Z形、水平和垂直扫描次序仅为实例,且还可与本发明的技术一致地界定或使用其它扫描次序。
为了确定用于块的最可能扫描次序,视频编码器20和/或视频解码器30可经配置以基于与块相关联的预测模式和大小而确定用于块的最可能扫描次序,如下文参考图6A到6B更详细描述。
此外,为了对与块相关联的扫描次序是否为最可能扫描次序的指示进行译码,视频编码器20和/或视频解码器30可经配置以执行包含基于至少一个上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)。举例来说,所述至少一个上下文可包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者。
在另一实例中,为了对用于块的扫描次序信息进行译码,视频编码器20和/或视频解码器30可进一步经配置以在与所述块相关联的所述扫描次序不是最可能扫描次序的情况下,对与所述块相关联的所述扫描次序的指示进行译码。
在此实例中,为了对与块相关联的扫描次序的指示进行译码,视频编码器20和/或视频解码器30可再次经配置以执行包含视频编码器20和/或视频解码器30基于至少一个上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)。举例来说,所述至少一个上下文可再次包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者。
因此,在此实例中,视频编码器20和/或视频解码器30可经配置以通过对与块相关联的扫描次序是否为最可能扫描次序的指示进行译码,且在一些情况下对与块相关联的扫描次序的指示进行译码,来对用于块的扫描次序信息进行译码。
在另一实例中,为了对用于块的扫描次序信息进行译码,视频编码器20和/或视频解码器30可进一步经配置以在与所述块相关联的所述扫描次序不是最可能扫描次序的情况下,使用Z形扫描次序对与所述块相关联的系数进行译码。因此,在此实例中,在确定用于块的最可能扫描次序且对与块相关联的扫描次序是否为最可能扫描次序的指示进行译码之后,视频编码器20和/或视频解码器30可经配置以不对用于块的任何额外扫描次序信息进行译码。
在再一实例中,为了确定用于块的最可能扫描次序,视频编码器20和/或视频解码器30可经配置以将Z形扫描次序指定为用于块的最可能扫描次序。在此实例中,以与上文所述类似的方式,为了对用于块的扫描次序信息进行译码,视频编码器20和/或视频解码器30可进一步经配置以在与块相关联的扫描次序不是最可能扫描次序(即,在此特定实例中,Z形扫描次序)的情况下,对与所述块相关联的扫描次序的指示进行译码。换句话说,在此实例中,视频编码器20和/或视频解码器30可经配置以将Z形扫描次序假定为用于块的最可能扫描次序,而不是例如使用用于先前经译码块的扫描次序信息执行对用于块的最可能扫描次序的实际确定。
在此实例中,为了对与块相关联的扫描次序的指示进行译码,视频编码器20和/或视频解码器30可再次经配置以执行包含视频编码器20和/或视频解码器30基于至少一个上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)。举例来说,所述至少一个上下文可再次包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者。
因此,在此实例中,视频编码器20和/或视频解码器30可经配置以通过对与块相关联的扫描次序是否为Z形扫描次序的指示进行译码,且在一些情况下对与块相关联的扫描次序的指示进行译码,来对用于块的扫描次序信息进行译码。
在此实例中,视频编码器20和/或视频解码器30可进一步经配置以对根据与块相关联的扫描次序识别所述块内的最后非零系数的位置的信息(即,块的最后有效系数位置信息)进行译码。另外,视频编码器20和/或视频解码器30可进一步经配置以对识别块内的所有其它非零系数的位置的信息(即,块的有效系数位置信息)进行译码。如先前描述,用于块的最后有效系数位置信息和有效系数位置信息可统称为用于块的SM数据。
在任一情况下,在以上述方式对用于块的扫描次序信息以及最后有效系数位置信息和有效系数位置信息(即,SM数据)进行译码之后,视频编码器20和/或视频解码器30还可对块内的每一有效系数的值(例如,分别由语法元素“coeff_abs_level_minus1”和“coeff_sign_flag”指示的每一有效系数的量值和正负号)进行译码。
因此,本发明的技术可使得视频编码器20和/或视频解码器30能够比使用其它方法时更有效地对用于块的扫描次序信息进行译码。以此方式,当使用本发明的技术时,对于包含扫描次序信息的经译码位流可存在相对位节省。
视频编码器20和视频解码器30各自可在可适用时经实施为例如一个或一个以上微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑电路、软件、硬件、固件或其任何组合等多种合适编码器或解码器电路中的任一者。视频编码器20和视频解码器30中的每一者可包含于一个或一个以上编码器或解码器中,视频编码器20和视频解码器30中的任一者可被集成为组合式视频编码器/解码器(CODEC)的一部分。包含视频编码器20和/或视频解码器30的设备可包括集成电路、微处理器和/或无线通信装置,例如蜂窝式电话。
图2是说明视频编码器20的一实例的框图,视频编码器20可实施与本发明的技术一致的用于使用最可能扫描次序对用于视频数据块的扫描次序信息进行有效编码的技术。视频编码器20可执行对视频帧内的块(包含宏块、CU以及其分区或子分区)的帧内译码和帧间译码。帧内译码依赖于空间预测以减少或移除给定视频帧内的视频中的空间冗余。帧间译码依赖于时间预测以减少或移除视频序列的邻近帧内的视频中的时间冗余。帧内模式(I模式)可指代若干基于空间的压缩模式中的任一者,且帧间模式(例如,单向预测(P模式)或双向预测(B模式))可指代若干基于时间的压缩模式中的任一者。
如图2中所示,视频编码器20接收待编码视频帧内的当前视频数据块。在图2的实例中,视频编码器20包含运动补偿单元44、运动估计单元42、存储器64、求和器50、变换模块52、量化单元54以及熵编码单元56。对于视频块重构,视频编码器20还包含逆量化单元58、逆变换模块60以及求和器62。还可包含解块滤波器(图2中未展示)以对块边界滤波,以从经重构的视频移除成块性假影。在需要时,解块滤波器将通常对求和器62的输出进行滤波。
在编码过程期间,视频编码器20接收待译码的视频帧或切片。可将帧或切片划分为多个视频块。运动估计单元42和运动补偿单元44可相对于一个或一个以上参考帧中的一个或一个以上块执行对给定的所接收视频块的帧间预测译码以提供时间压缩。帧内预测模块46可相对于在与待译码的块相同的帧或切片中的一个或一个以上相邻块执行对给定的所接收视频块的帧内预测译码,以提供空间压缩。
模式选择单元40可基于译码结果(例如,所得的译码率以及失真水平)且基于包含正被译码的给定所接收块的帧或切片的帧或切片类型来选择译码模式中的一者(即,一个模式或多个帧内或帧间译码模式),且将所得的经帧内或帧间译码的块提供给求和器50以产生残余块数据,且提供给求和器62以重构经编码块,以在参考帧或参考切片中使用。一般来说,帧内预测涉及相对于相邻的先前经译码的块来预测当前块,而帧间预测涉及用以在时间上预测当前块的运动估计和运动补偿。
运动估计单元42与运动补偿单元44代表视频编码器20的帧间预测元件。运动估计单元42与运动补偿单元44可高度集成,但出于概念上的目的而分开予以说明。运动估计是产生估计视频块的运动的运动向量的过程。运动向量(例如)可指示预测性参考帧(或其它经译码单元)内的预测块相对于当前帧(或其它经译码单元)内正被译码的当前块的位移。预测块是被发现在像素差异方面与待译码的块紧密匹配的块,其可通过绝对差总和(SAD)、平方差总和(SSD)或其它差异度量来确定。运动向量还可指示块的分区的移位。运动补偿可涉及基于运动估计所确定的运动向量来获取或产生预测块。再次,在一些实例中,运动估计单元42与运动补偿单元44可在功能上集成。
运动估计单元42可通过将经帧间译码帧的视频块与存储器64中的参考帧的视频块进行比较来计算所述视频块的运动向量。运动补偿单元44还可出于此比较的目的而内插参考帧(例如,I帧或P帧)的子整数像素。作为一实例,ITUH.264标准描述了两个列表:列表0,其包含具有比正被编码的当前帧早的显示次序的参考帧;以及列表1,其包含具有比正被编码的当前帧晚的显示次序的参考帧。因此,存储于存储器64中的数据可根据这些列表进行组织。
运动估计单元42可将来自存储器64的一个或一个以上参考帧的块与当前帧(例如,P帧或B帧)的待编码的块进行比较。当存储器64中的参考帧包含子整数像素的值时,由运动估计单元42计算出的运动向量可指代参考帧的子整数像素位置。运动估计单元42和/或运动补偿单元44还可经配置以在没有子整数像素位置的值存储于存储器64中时计算存储于存储器64中的参考帧的子整数像素位置的值。运动估计单元42可将所计算的运动向量发送到熵编码单元56和运动补偿单元44。可将由运动向量识别的参考帧块称作帧间预测块,或更一般地,称作预测块。运动补偿单元44可基于预测块计算预测数据。
帧内预测模块46可对当前块进行帧内预测,以作为如上文所描述的由运动估计单元42和运动补偿单元44执行的帧间预测的替代方案。具体来说,帧内预测模块46可确定用以对当前块进行编码的帧内预测模式。在一些实例中,帧内预测模块46可(例如)在单独编码回合期间使用各种帧内预测模式对当前块进行编码,且帧内预测模块46(在一些实例中,或为模式选择单元40)可从所测试的模式中选择将使用的适当的帧内预测模式。举例来说,帧内预测模块46可使用对各种所测试的帧内预测模式的速率-失真分析来计算速率-失真值,且在所测试的模式中选择具有最佳速率-失真特性的帧内预测模式。速率-失真分析一般确定经编码块与曾被编码以产生所述经编码块的原始未经编码块之间的失真(或误差)量,以及用于产生所述经编码块的位速率(即,位数目)。帧内预测模块46可根据各种经编码块的失真和速率计算比率,以确定哪一帧内预测模式展现出用于所述块的最佳的速率-失真值。
在(例如)使用帧内预测或帧间预测对当前块进行预测之后,视频编码器20可通过从正被译码的原始视频块减去由运动补偿单元44或帧内预测模块46计算的预测数据而形成残余视频块。求和器50代表可执行此减法操作的组件。变换模块52可对残余块应用变换(例如,离散余弦变换(DCT)或概念上类似的变换),从而产生包括残余变换系数值的视频块。变换模块52可执行概念上类似于DCT的其它变换,例如由H.264标准界定的变换。也可使用小波变换、整数变换、子带变换或其它类型的变换。在任何情况下,变换模块52可对残余块应用所述变换,从而产生残余变换系数块。所述变换可将残余信息从像素域转换到变换域(例如,频域)。量化单元54可量化残余变换系数以进一步减少位速率。量化过程可减少与系数中的一些或全部相关联的位深度。可通过调整量化参数来修改量化程度。
在量化之后,熵编码单元56可对经量化变换系数进行熵编码,其可包含CAVLC、CABAC、PIPE或另一熵译码技术。在由熵编码单元56熵译码之后,可将经编码的视频发射到另一装置或存档以供稍后发射或检索。
在一些情况下,视频编码器20的熵编码单元56或另一单元可经配置以执行除了上文所描述的对经量化变换系数进行熵译码之外的其它译码功能。举例来说,熵编码单元56可用适当的语法元素建构所述块(例如,宏块、CU或LCU)或含有所述块的视频帧的标头信息,以用于在经编码视频位流中发射。根据一些译码标准,此些语法元素可包含用于所述块的扫描次序信息,如先前所描述。还如先前所描述,在被低效译码的情况下,所述扫描次序信息可消耗较高百分比的总经压缩视频位速率。因此,本发明描述可使得能够比在使用其它方法时对用于块的扫描次序信息进行更有效译码的技术。
在一些实例中,视频编码器20的熵编码单元56可经配置以对某些视频数据块(例如,一个或一个以上宏块或CU的TU)进行编码。根据本发明的技术,作为一个实例,熵编码单元56可经配置以对识别与块相关联的扫描次序的信息(即,用于块的扫描次序信息)进行编码。举例来说,熵编码单元56可经配置以确定用于块的最可能扫描次序,且对与块相关联的扫描次序是否为最可能扫描次序的指示进行编码。在此实例中,与块相关联的扫描次序和最可能扫描次序中的每一者可包括Z形扫描次序、水平扫描次序和垂直扫描次序中的一者。同样,Z形、水平和垂直扫描次序仅为实例,且还可与本发明的技术一致地界定或使用其它扫描次序。
为了确定用于块的最可能扫描次序,熵编码单元56可经配置以如下文参考图6A到6B更详细描述基于与块相关联的预测模式和大小而确定用于块的最可能扫描次序。举例来说,熵编码单元56可使用先前经编码块(例如,具有与当前经编码块相同的相关联预测模式和大小的块)的扫描次序信息确定最可能扫描次序。
此外,为了对与块相关联的扫描次序是否为最可能扫描次序的指示进行编码,熵编码单元56可经配置以执行包含基于至少一个上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)。举例来说,所述至少一个上下文可包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者。
另外,所述指示可包括单个位或“二进位”。举例来说,熵编码单元56可对用以指示扫描次序是最可能扫描次序(例如,bin=“0”)或不是最可能扫描次序(例如,bin=“1”)的二进位进行编码。
在另一实例中,为了对用于块的扫描次序信息进行编码,熵编码单元56可进一步经配置以在与所述块相关联的所述扫描次序不是最可能扫描次序的情况下,对与所述块相关联的所述扫描次序的指示进行编码。
在此实例中,为了对与块相关联的扫描次序的指示进行编码,熵编码单元56可经配置以执行包含熵编码单元56基于至少一个上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)。举例来说,所述至少一个上下文可包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者。
此外,与块相关联的扫描次序的指示也可包括单个二进位。举例来说,熵编码单元56可经配置以对用以指示扫描次序是第一扫描次序(例如,bin=“0”)还是第二扫描次序(例如,bin=“1”)的二进位进行编码。在此实例中,第一和第二扫描次序可包括也用以在包括视频编码器20和视频解码器30的对应译码系统10内对视频数据块进行译码的除了最可能扫描次序除之外的扫描次序。应注意,在其它实例中,与块相关联的扫描次序可包括也用以在系统10内对视频数据块进行译码的除了最可能扫描次序除之外的较大数目(例如,3、4、5、…等)的扫描次序中的一者。因此,在其它实例中,熵编码单元56可经配置以使用其它技术(例如使用多个二进位)对与块相关联的扫描次序的指示进行编码。
因此,在此实例中,熵编码单元56可经配置以通过对与块相关联的扫描次序是否为最可能扫描次序的指示进行编码,且在一些情况下对与块相关联的扫描次序的指示进行编码,来对用于块的扫描次序信息进行编码。
以下是与上述实例一致的可用以执行本发明的技术的计算机代码的一个实例。举例来说,所述计算机代码包含用于配置扫描次序索引的二维阵列的算法,所述扫描次序索引对应于用于视频数据块的最可能扫描次序。在此实例中,基于与块相关联的帧内预测模式和大小来确定用于特定块的最可能扫描次序。因此,所述二维阵列的每一行对应于与视频数据块相关联的大小,且阵列的每一列对应于与块相关联的帧内预测模式。换句话说,所述二维阵列内的每一位置指示用于视频数据块的最可能扫描次序与特定帧内预测模式和大小相关联。举例来说,由二维阵列指示的用于块的最可能扫描次序可使用对应于先前经编码块的扫描次序信息来确定。
在此实例中,使用三个扫描次序索引(即,“0”、“1”和“2”)中的一者来确定用于特定块的最可能扫描次序。作为一个实例,扫描次序索引可各自表示Z形扫描次序、水平扫描次序和垂直扫描次序中的一者。在其它实例中,扫描次序索引可表示其它扫描次序,且可包含较多或较少索引。
所述计算机代码还包含使用用于特定块的最可能扫描次序(使用上述二维阵列基于与块相关联的帧内预测模式和大小而确定)来对用于块的扫描次序信息进行编码的编码算法。举例来说,所述算法使用一个到两个二进位对用于块的扫描次序信息进行编码,其中每一二进位是通过执行包含基于上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)来编码,所述上下文包含最可能扫描次序、帧内预测模式和大小。如先前描述,使用所述上下文在上下文模型内选择用于对特定二进位进行编码的概率估计。具体来说,概率估计指示二进位具有给定值(例如,“0”或“1”)的可能性。
constUCharmostProbableScan[4][34]=
{{1,2,0,0,0,1,0,2,2,0,0,1,1,0,2,2,2,2,0,1,1,1,1,1,0,0,2,2,2,2,2,2,2,2},
{1,2,0,0,0,0,0,2,2,0,0,0,0,0,0,2,2,0,0,0,0,1,1,0,0,0,0,0,2,2,2,2,2,0},
{1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,1,0,0,0,0,0,0,0,2,2,0,0,0},
{1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0}};
在另一实例中,为了对用于块的扫描次序信息进行编码,熵编码单元56可进一步经配置以在与块相关联的扫描次序不是最可能扫描次序的情况下,使用Z形扫描次序对与块相关联的系数进行编码。因此,在此实例中,在确定用于块的最可能扫描次序且对与块相关联的扫描次序是否为最可能扫描次序的指示进行编码之后,熵编码单元56可经配置以不对块的任何额外扫描次序信息进行编码。
在再一实例中,为了确定用于块的最可能扫描次序,熵编码单元56可经配置以将Z形扫描次序指定为用于块的最可能扫描次序。在此实例中,以与上文所述类似的方式,为了对用于块的扫描次序信息进行编码,熵编码单元56可进一步经配置以在与块相关联的扫描次序不是最可能扫描次序(即,在此特定实例中,Z形扫描次序)的情况下,对与所述块相关联的扫描次序的指示进行编码。换句话说,在此实例中,熵编码单元56可经配置以将Z形扫描次序假定为用于块的最可能扫描次序,而不是例如使用用于先前经编码块的扫描次序信息执行对用于块的最可能扫描次序的实际确定。
在此实例中,为了对与块相关联的扫描次序的指示进行编码,熵编码单元56可经配置以执行包含熵编码单元56基于至少一个上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)。举例来说,所述至少一个上下文可包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者。
与块相关联的扫描次序的指示可再次包括单个二进位。举例来说,熵编码单元56可对用以指示扫描次序是第一扫描次序(例如,bin=“0”)还是第二扫描次序(例如,bin=“1”)的二进位进行编码。在此实例中,第一和第二扫描次序可包括也用以在系统10内对视频数据块进行译码的除了最可能扫描次序(即,在此特定实例中,Z形扫描次序)之外的扫描次序。应注意,在其它实例中,与块相关联的扫描次序可包括也用以在系统10内对视频数据块进行译码的除了最可能扫描次序(即,在此特定实例中,Z形扫描次序)之外的较大数目(例如,3、4、5、…等)的扫描次序中的一者。因此,在其它实例中,熵编码单元56可使用其它技术(例如使用多个二进位)对与块相关联的扫描次序的指示进行编码。
因此,在此实例中,熵编码单元56可经配置以通过对与块相关联的扫描次序是否为最可能扫描次序(即,在此特定实例中,Z形扫描次序)的指示进行编码,且在一些情况下对与块相关联的扫描次序的指示进行编码,来对用于块的扫描次序信息进行编码。
以下是与上述实例一致的用以执行本发明的技术的计算机代码的另一实例。举例来说,所述计算机代码包含用于配置视频数据块的上下文索引的二维阵列的算法。在此实例中,基于与块相关联的帧内预测模式和大小来确定特定块的每一上下文索引。因此,所述二维阵列的每一行对应于与视频数据块相关联的大小,且阵列的每一列对应于与块相关联的帧内预测模式。换句话说,所述二维阵列内的每一位置包含与特定帧内预测模式和大小相关联的视频数据块的上下文索引。
在此实例中,特定块的每一上下文索引包括三个索引(即,“0”、“1”和“2”)中的一者。在其它实例中,上下文索引可包括较多或较少索引。
所述计算机代码还包含使用特定块的上下文索引(使用上述二维阵列基于与块相关联的帧内预测模式和大小而确定)来对用于块的扫描次序信息进行编码的编码算法。举例来说,所述算法使用一个到两个二进位对用于块的扫描次序信息进行编码,其中每一二进位是通过执行包含基于上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)来编码,所述上下文包含上下文索引、帧内预测模式和大小。如先前描述,使用所述上下文在上下文模型内选择用于对特定二进位进行编码的概率估计。具体来说,概率估计指示二进位具有给定值(例如,“0”或“1”)的可能性。
constUCharscanContext[7][34]=
{
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,},
{1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,},
{1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,1,0,0,0,0,0,0,0,2,2,0,0,0,},
{1,2,0,0,0,0,0,2,2,0,0,0,0,0,0,2,2,0,0,0,0,1,1,0,0,0,0,0,2,2,2,2,2,0,},
{1,2,0,0,0,1,0,2,2,0,0,1,1,0,2,2,2,2,0,1,1,1,1,1,0,0,2,2,2,2,2,2,2,2,},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}
};
为了使用上述上下文自适应熵译码过程对每一二进位(即,用以表示与块相关联的扫描次序是否为最可能扫描次序的指示以及与块相关联的扫描次序的指示的每一二进位)进行编码,对应上下文模型可包含指示二进位包括给定值(例如,“0”或“1”)的概率的概率估计。熵编码单元56可使用二进位的所述概率估计以通过执行上下文自适应熵译码过程对二进位进行编码。在一些实例中,熵编码单元56可使用先前经编码视频数据块(例如,具有与当前经编码块相同的相关联预测模式和大小的块)的对应二进位的值确定所述概率估计。在其它实例中,熵编码单元56还可使用二进位的值来更新所述概率估计以反映二进位包括给定值的概率。举例来说,熵编码单元56可使用经更新概率估计以上文描述的方式对用于后续经编码视频数据块的扫描次序信息进行编码。
在此实例中,熵编码单元56可进一步经配置以对根据与块相关联的扫描次序识别所述块内的最后有效系数的位置的信息(即,块的最后有效系数位置信息)进行编码。举例来说,可使用如先前描述的最后有效系数旗标序列来表示块的最后有效系数位置信息。另外,熵编码单元56可进一步经配置以对识别块内的所有其它有效系数的位置的信息(即,块的有效系数位置信息)进行编码。举例来说,也可使用如先前描述的有效系数旗标序列来表示块的有效系数位置信息。也如先前描述,熵编码单元56可通过执行包含基于上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)对相应序列的每一旗标进行编码,来对最后有效系数位置信息和有效系数位置信息进行编码。举例来说,上下文可包含根据与块相关联的扫描次序的旗标在块内的位置。
在这些实例中,上下文模型可包含指示每一旗标包括给定值(例如,“0”或“1”)的概率的概率估计。在一些实例中,熵编码单元56可使用用于先前经编码视频数据块的对应最后有效系数旗标和有效系数旗标的值来确定所述概率估计。在其它实例中,熵编码单元56还可使用每一旗标的值来更新所述概率估计以反映旗标包括给定值的概率。举例来说,熵编码单元56可使用经更新概率估计以上文描述的方式对用于后续经编码视频数据块的最后有效系数位置信息和有效系数位置信息进行编码。应注意,在其它实例中,熵编码单元56可使用其它技术对用于块的最后有效系数位置信息和有效系数位置信息进行编码。
在任一情况下,在以上述方式对用于块的扫描次序信息以及最后有效系数位置信息和有效系数位置信息(即,SM数据)进行编码之后,熵编码单元56还可对块内的每一有效系数的值(例如,分别由语法元素“coeff_abs_level_minus1”和“coeff_sign_flag”指示的每一有效系数的量值和正负号)进行编码。
因此,本发明的技术可使得熵编码单元56能够比使用其它方法时更有效地对用于块的扫描次序信息进行编码。以此方式,当使用本发明的技术时,对于包含扫描次序信息的经译码位流可存在相对位节省。
逆量化单元58和逆变换模块60分别应用逆量化和逆变换以重构像素域中的残余块,例如用于稍后用作参考块。运动补偿单元44可通过将残余块加到存储器64的帧中的一者的预测块来计算参考块。运动补偿单元44还可将一个或一个以上内插滤波器应用于经重构残余块以计算子整数像素值以用于运动估计。求和器62将经重构残余块加到由运动补偿单元44产生的经运动补偿预测块以产生经重构视频块以存储在存储器64中。经重构视频块可由运动估计单元42和运动补偿单元44用作参考块以对后续视频帧中的块进行帧间译码。
以此方式,视频编码器20表示经配置以对识别与视频数据块相关联的扫描次序的信息进行译码的视频译码器的实例,其中为了对识别与所述块相关联的扫描次序的所述信息进行译码,所述视频译码器经配置以确定用于所述块的最可能扫描次序,且对与所述块相关联的扫描次序是否为所述最可能扫描次序的指示进行译码。
图3是说明视频解码器30的一实例的框图,视频解码器30可实施与本发明的技术一致的用于使用最可能扫描次序对用于视频数据块的经编码扫描次序信息进行有效解码的技术。在图3的实例中,视频解码器30包含熵解码单元70、运动补偿单元72、帧内预测模块74、逆量化单元76、逆变换模块78、存储器82以及求和器80。视频解码器30在一些实例中可执行一般与关于视频编码器20(图2)所描述的编码回合互逆的解码回合。运动补偿单元72可基于从熵解码单元70接收的运动向量产生预测数据。
在一些实例中,视频解码器30可经配置以从视频编码器20接收经编码视频数据(例如,一个或一个以上宏块,或CU的TU)。根据本发明的技术,作为一个实例,熵解码单元70可经配置以对识别与块相关联的扫描次序的信息(即,用于所述块的扫描次序信息)进行解码。举例来说,熵解码单元70可经配置以确定用于所述块的最可能扫描次序,且对与所述块相关联的扫描次序是否为最可能扫描次序的指示进行解码。在此实例中,与所述块相关联的扫描次序以及最可能扫描次序中的每一者可包括Z形扫描次序、水平扫描次序以及垂直扫描次序中的一者。同样,Z形、水平和垂直扫描次序仅是实例,且还可界定或使用与本发明的技术一致的其它扫描次序。
为了确定用于所述块的最可能扫描次序,熵解码单元70可经配置以基于与所述块相关联的预测模式和大小而确定用于所述块的最可能扫描次序,如下文参考图6A到6B更详细地描述。
此外,为了对与所述块相关联的扫描次序是否为最可能扫描次序的指示进行解码,熵解码单元70可经配置以执行上下文自适应熵译码过程(例如,CABAC过程),所述上下文自适应熵译码过程包含基于至少一个上下文应用上下文模型。举例来说,所述至少一个上下文可包含最可能扫描次序、与所述块相关联的预测模式以及与所述块相关联的大小中的一者。
另外,所述指示可包括单一二进位。举例来说,熵解码单元70可接收经编码扫描次序数据,且对所述扫描次序数据进行解码以确定二进位,使得所述二进位指示所述扫描次序是最可能扫描次序(例如,bin=“0”)或不是最可能扫描次序(例如,bin=“1”)。
在另一实例中,为了对用于所述块的扫描次序信息进行解码,熵解码单元70可进一步经配置以在与所述块相关联的扫描次序不是最可能扫描次序的情况下对与所述块相关联的扫描次序的指示进行解码。
在此实例中,为了对与所述块相关联的扫描次序的指示进行解码,熵解码单元70可经配置以执行上下文自适应熵译码过程(例如,CABAC过程),所述上下文自适应熵译码过程包含熵解码单元70基于至少一个上下文应用上下文模型。举例来说,所述至少一个上下文可包含最可能扫描次序、与所述块相关联的预测模式以及与所述块相关联的大小中的一者。
此外,与所述块相关联的扫描次序的指示还可包括单一二进位。举例来说,熵解码单元70可经配置以接收额外的经编码扫描次序数据,且对所述额外的扫描次序数据进行解码以确定二进位,使得所述二进位指示所述扫描次序是第一扫描次序(例如,bin=“0”)还是第二扫描次序(例如,bin=“1”)。在此实例中,所述第一和第二扫描次序可包括除了最可能扫描次序之外的扫描次序,所述扫描次序也用于在包括视频编码器20和视频解码器30的对应译码系统10内对视频数据块进行译码。还应注意,在其它实例中,与所述块相关联的扫描次序可包括除了最可能扫描次序之外的也用于在系统10内对视频数据块进行译码的更大数目(例如,3、4、5等)的扫描次序中的一者。因此,在其它实例中,熵解码单元70可经配置以使用其它技术对与所述块相关联的扫描次序的指示进行解码,例如对额外的扫描次序数据进行解码以确定多个二进位。
因此,在此实例中,熵解码单元70可经配置以通过对与所述块相关联的扫描次序是否为最可能扫描次序的指示以及(在一些情况下)与所述块相关联的扫描次序的指示进行解码,而对用于所述块的扫描次序信息进行解码。
在另一实例中,为了对用于所述块的扫描次序信息进行解码,熵解码单元70可进一步经配置以在与所述块相关联的扫描次序不是最可能扫描次序的情况下使用Z形扫描次序对与所述块相关联的系数进行解码。因此,在此实例中,在确定用于所述块的最可能扫描次序且对与所述块相关联的扫描次序是否为最可能扫描次序的指示进行解码之后,熵解码单元70可经配置以不对用于所述块的任何额外扫描次序信息进行解码。
在又一实例中,为了确定用于所述块的最可能扫描次序,熵解码单元70可经配置以将Z形扫描次序指定为用于所述块的最可能扫描次序。在此实例中,以与上文所描述的方式类似的方式,为了对用于所述块的扫描次序信息进行解码,熵解码单元70可进一步经配置以在与所述块相关联的扫描次序不是最可能扫描次序(即,在此特定实例中,Z形扫描次序)的情况下,对与所述块相关联的扫描次序的指示进行解码。换句话说,在此实例中,熵解码单元70可经配置以假定Z形扫描次序是用于所述块的最可能扫描次序,而不是(例如)使用用于先前经解码块的扫描次序信息来执行对用于所述块的最可能扫描次序的实际确定。
在此实例中,为了对与所述块相关联的扫描次序的指示进行解码,熵解码单元70可经配置以执行上下文自适应熵译码过程(例如,CABAC过程),所述上下文自适应熵译码过程包含熵解码单元70基于至少一个上下文应用上下文模型。举例来说,所述至少一个上下文可包含最可能扫描次序、与所述块相关联的预测模式以及与所述块相关联的大小中的一者。
与所述块相关联的扫描次序的指示可再次包括单一二进位。举例来说,熵解码单元70可接收额外的经编码扫描次序数据,且对所述额外的扫描次序数据进行解码以确定二进位,使得所述二进位指示所述扫描次序是第一扫描次序(例如,bin=“0”)还是第二扫描次序(例如,bin=“1”)。在此实例中,第一和第二扫描次序可包括除了最可能扫描次序(即,在此特定实例中,Z形扫描次序)之外的也用于在系统10内对视频数据块进行译码的扫描次序。还应注意,在其它实例中,与所述块相关联的扫描次序可包括除了最可能扫描次序(即,在此特定实例中,Z形扫描次序)之外的也用于在系统10内对视频数据块进行译码的更大数目(例如,3、4、5等)的扫描次序中的一者。因此,在其它实例中,熵解码单元70可使用其它技术对与所述块相关联的扫描次序的指示进行解码,例如对额外的扫描次序数据进行解码以确定多个二进位。
因此,在此实例中,熵解码单元70可经配置以通过对与所述块相关联的扫描次序是否为最可能扫描次序(即,在此特定实例中,Z形扫描次序)的指示以及(在一些情况下)与所述块相关联的扫描次序的指示进行解码,而对用于所述块的扫描次序信息进行解码。
为了使用上文所描述的上下文自适应熵译码过程对每一二进位(即,用于表示与所述块相关联的扫描次序是否为最可能扫描次序的指示以及与所述块相关联的扫描次序的指示的每一二进位)进行解码,对应的上下文模型可包含指示二进位包括给定值(例如,“0”或“1”)的概率的概率估计。熵解码单元70可使用所述二进位的所述概率估计通过执行上下文自适应熵译码过程对所述二进位进行解码。在一些实例中,熵解码单元70可使用用于先前经解码的视频数据块(例如,具有与当前经解码块相同的相关联预测模式和大小的块)的对应二进位的值来确定所述概率估计。在其它实例中,熵解码单元70还可使用二进位的值来更新所述概率估计以反映二进位包括给定值的概率。举例来说,熵解码单元70可使用经更新概率估计以上文所描述的方式对用于随后经解码的视频数据块的扫描次序信息进行解码。
在此实例中,熵解码单元70可进一步经配置以对根据与所述块相关联的扫描次序识别所述块内的最后有效系数的位置的信息(即,所述块的最后有效系数位置信息)进行解码。举例来说,所述块的最后有效系数位置信息可使用最后有效系数旗标序列来表示,如先前所描述。另外,熵解码单元70可进一步经配置以对识别所述块内的所有其它有效系数的位置的信息(即,所述块的有效系数位置信息)进行解码。举例来说,所述块的有效系数位置信息也可使用有效系数旗标序列来表示,如先前所描述。还如先前所描述,熵解码单元70可通过借助执行上下文自适应熵译码过程(例如,CABAC过程)对相应序列的每一旗标进行解码,而对最后有效系数位置信息和有效系数位置信息进行解码,所述上下文自适应熵译码过程包含基于上下文应用上下文模型。举例来说,所述上下文可包含根据与所述块相关联的扫描次序的所述块内的旗标的位置。
在这些实例中,所述上下文模型可包含指示每一旗标包括给定值(例如,“0”或“1”)的概率的概率估计。在一些实例中,熵解码单元70可使用先前经解码的视频数据块的对应最后有效系数旗标和有效系数旗标的值来确定概率估计。在其它实例中,熵解码单元70还可使用每一旗标的值来更新所述概率估计以反映旗标包括给定值的概率。举例来说,熵解码单元70可使用经更新概率估计以上文所描述的方式对用于随后经解码的视频数据块的最后有效系数位置信息和有效系数位置信息进行解码。应注意,在其它实例中,熵解码单元70可使用其它技术对所述块的最后有效系数位置信息和有效系数位置信息进行解码。
在任何情况下,在以上文所描述的方式对所述块的扫描次序信息以及最后有效系数位置信息和有效系数位置信息(即,SM数据)进行解码之后,熵解码单元70还可对所述块内的每一有效系数的值(例如,分别由语法元素“coeff_abs_level_minus1”和“coeff_sign_flag”指示的每一有效系数的量值和正负号)进行解码。
因此,本发明的技术可使得熵解码单元70能够比在使用其它方法时对用于所述块的扫描次序信息进行更有效地解码。以此方式,在使用本发明的技术时,可存在对包含扫描次序信息的经译码位流的相对位节省。
运动补偿单元72可使用在位流中接收的运动向量来识别存储器82中的参考帧中的预测块。帧内预测模块74可使用在位流中接收的帧内预测模式以从空间上邻近的块形成预测块。
帧内预测模块74可(例如)使用相邻的先前经解码的块的像素使用用于经编码块的帧内预测模式的指示来对经编码块进行帧内预测。对于其中所述块被帧间预测模式编码的实例,运动补偿单元72可接收界定运动向量的信息,以便检索用于经编码块的经运动补偿预测数据。在任何情况下,运动补偿单元72或帧内预测模块74可将界定预测块的信息提供给求和器80。
逆量化单元76将在位流中提供且由熵解码单元70解码的经量化块系数逆量化(即,解量化)。逆量化过程可包含(例如)如由H.264解码标准界定或如由HEVC测试模型执行的常规过程。逆量化过程还可包含使用由视频编码器20针对每一块计算的量化参数QPY,以确定应当应用的量化程度以及同样的逆量化程度。
逆变换模块78对变换系数应用逆变换,例如,逆DCT、逆整数变换,或概念上类似的逆变换过程,以便在像素域中产生残余块。运动补偿单元72产生经运动补偿的块,可能执行基于内插滤波器的内插。待用于具有子像素精度的运动估计的内插滤波器的识别符可包含于语法元素中。运动补偿单元72可使用如由视频编码器20在视频块的编码期间所使用的内插滤波器来计算参考块的子整数像素的内插值。运动补偿单元72可根据所接收的语法信息来确定由视频编码器20使用的内插滤波器且使用所述内插滤波器来产生预测块。
运动补偿单元72使用经编码块的语法信息中的一些来确定用于对经编码视频序列的帧进行编码的块的大小、描述经编码视频序列的帧或切片的每一块如何被分割的分区信息、指示如何对每一分区进行编码的模式、用于每一经帧间编码块或分区的一个或一个以上参考帧(以及参考帧列表),以及用以对经编码视频序列进行解码的其它信息。帧内预测模块74也可例如使用相邻的先前经解码的块的像素使用用于经编码块的语法信息来对经编码块进行帧内预测,如上文所描述。
求和器80对残余块与由运动补偿单元72或帧内预测模块74产生的对应预测块进行求和以形成经解码块。如果需要,还可应用解块滤波器以对经解码块进行滤波,以便移除成块性假影。经解码视频块随后被存储在存储器82中,存储器82提供用于后续运动补偿的参考块且还产生经解码视频以用于在显示装置(例如,图1的显示装置32)上呈现。
以此方式,视频解码器30表示经配置以对识别与视频数据块相关联的扫描次序的信息进行译码的视频译码器的实例,其中为了对识别与块相关联的扫描次序的信息进行译码,所述视频译码器经配置以确定用于所述块的最可能扫描次序,且对与所述块相关联的扫描次序是否为最可能扫描次序的指示进行译码。
图4A到4C是说明视频数据块以及对应的有效系数位置信息和最后有效系数位置信息的实例的概念图。如图4A所示,视频数据块(例如,宏块或CU的TU)可包含经量化变换系数。举例来说,如图4A所示,块400可包含使用先前描述的预测、变换和量化技术产生的经量化变换系数。对于此实例,假定块400具有2N×2N的大小,其中N等于二。因此,块400具有4×4的大小,且包含十六个经量化变换系数,也如图4A所示。进一步假定与块400相关联的扫描次序是Z形扫描次序,如下文更详细描述的图5A中所示。
在此实例中,根据Z形扫描次序的块400内的最后有效系数是位于块400内的位置406中的等于“1”的经量化变换系数。在其它实例中,如上所述,块可具有小于或大于块400的大小的大小,且可包含比块400多或少的经量化变换系数。在再其它实例中,与块400相关联的扫描次序可为不同扫描次序,例如水平扫描次序、垂直扫描次序、对角扫描次序或另一扫描次序。
图4B说明如先前描述的有效系数旗标数据(即,以图或块形式表示的有效系数旗标)的实例。在图4B的实例中,块402可对应于图4A中描绘的块400。换句话说,块402的有效系数旗标可对应于块400的经量化变换系数。如图4B所示,块402的等于“1”的有效系数旗标对应于块400的有效系数。类似地,块402的等于“0”的有效系数旗标对应于零或块400的非有效系数。
在此实例中,对应于根据Z形扫描次序的块400内的最后有效系数的块402的有效系数旗标是位于块402内的位置408中的等于“1”的有效系数。在其它实例中,用以指示有效或非有效系数的有效系数旗标的值可变化(例如,等于“0”的有效系数旗标可对应于有效系数,且等于“1”的有效系数旗标可对应于非有效系数)。
图4C说明也如先前描述的最后有效系数旗标数据(即,以图或块形式表示的最后有效系数旗标)的实例。在图4C的实例中,块404可对应于分别在图4A和图4B中描绘的块400和块402。换句话说,块404的最后有效系数旗标可对应于块400的经量化变换系数和块402的有效系数旗标。
如图4C所示,根据Z形扫描次序,位于块404内的位置410中的等于“1”的块404的最后有效系数旗标对应于块400的最后有效系数且对应于块402的等于“1”的有效系数旗标中的最后一者。类似地,根据Z形扫描次序,块404的等于“0”的最后有效系数旗标(即,所有剩余最后有效系数旗标)对应于零或块400的非有效系数,且对应于除了此些有效系数旗标中的最后一者之外的块402的等于“1”的所有有效系数旗标。
用以指示根据扫描次序的最后有效系数的最后有效系数旗标的值可变化(例如,等于“0”的最后有效系数旗标可对应于根据扫描次序的最后有效系数,且等于“1”的最后有效系数旗标可对应于所有剩余系数)。在任一情况下,块402的有效系数旗标和块404的最后有效系数旗标可统称为块400的SM数据。
如上所述,可通过使用与块相关联的扫描次序将块的有效系数旗标从如图4B所示的块402中描绘的二维块表示串行化为一维阵列,来指示视频数据块的有效系数位置信息。在图4A到4B所示的块400到402的实例中,再次假定Z形扫描次序,可通过将块402的有效系数旗标串行化为一维阵列来指示块400的有效系数位置信息。也就是说,可通过根据Z形扫描次序产生块402的有效系数旗标序列来指示块400的有效系数位置信息。
在此实例中,所产生的序列可对应于值“111111”,其表示根据Z形扫描次序的块402的前6个有效系数旗标。应注意,所产生的序列可含有对应于块400内的某一范围的块位置的有效系数旗标,从Z形扫描次序中的第一块位置(即,DC位置)开始且以对应于根据Z形扫描次序的块400的最后有效系数(即,对应于块404的等于“1”的最后有效系数旗标)的块位置结束。
还如上所述,可通过使用与块相关联的扫描次序将块的最后有效系数旗标从如图4C所示的块404中描绘的二维块表示串行化为一维阵列,来指示块的最后有效系数位置信息。在图4A到4C所示的块400到404的实例中,再次假定Z形扫描次序,可通过将块404的最后有效系数旗标串行化为一维阵列来指示块400的最后有效系数位置信息。也就是说,可通过根据Z形扫描次序产生块404的最后有效系数旗标序列来指示块400的最后有效系数位置信息。在此实例中,所产生的序列可对应于值“000001”,其表示根据Z形扫描次序的块404的前6个最后有效系数旗标。
再次,应注意,所产生的序列可含有对应于块400内的某一范围的块位置的最后有效系数旗标,从Z形扫描次序中的第一块位置开始且以对应于根据Z形扫描次序的块400的最后有效系数(即,对应于块404的等于“1”的最后有效系数旗标)的块位置结束。因此,在此实例中,根据Z形扫描次序在等于“1”的最后有效系数旗标后没有最后有效系数旗标包含在序列中。大体来说,不需要根据与视频数据块相关联的扫描次序在等于“1”的最后有效系数旗标后的最后有效系数旗标来指示块的最后有效系数位置信息。因此,在一些实例中,从用以指示所述信息的最后有效系数旗标的所产生序列中省略这些旗标。
还应注意到,如上所述,如果最后有效系数位于根据扫描次序的最后块位置(例如,右下块位置)内,则所产生的序列可不包含对应于所述最后块位置的最后有效系数旗标,因为可推断出所述位置含有块的最后有效系数。因此,在此实例中,所产生的序列可对应于值“000000000000000”,其中对应于最后块位置的最后有效系数旗标不包含于序列中且经推断为等于“1”。
图5A到5C是说明分别使用Z形扫描次序、水平扫描次序和垂直扫描次序扫描的视频数据块的实例的概念图。如图5A到5C所示,8×8视频数据块(例如,宏块或CU的TU)可包含以圆圈表示的对应块位置中的64个经量化变换系数。举例来说,块500到504可各自包含再次使用先前描述的预测、变换和量化技术产生的64个经量化变换系数,其中每一对应块位置以圆圈表示。对于此实例,假定块500到504具有2N×2N的大小,其中N等于四。因此,块500到504具有8×8的大小。
如图5A所示,与块500相关联的扫描次序是Z形扫描次序。Z形扫描次序以如图5A的箭头指示的对角方式扫描块500的经量化变换系数。类似地,如图5B和5C所示,与块502和504相关联的扫描次序分别是水平扫描次序和垂直扫描次序。水平扫描次序以水平逐行或“光栅”方式扫描块502的经量化变换系数,而垂直扫描次序以垂直逐行或“经旋转光栅”方式扫描块504的经量化变换系数,同样如图5B和5C的箭头指示。
在其它实例中,如上所述,块可具有小于或大于块500到504的大小的大小,且可包含较多或较少的经量化变换系数和对应块位置。在这些实例中,与块相关联的扫描次序可以与图5A到5C的8×8块500到504的实例中所示大体上类似的方式扫描块的经量化变换系数,例如可遵循先前描述的扫描次序中的任一者来扫描4×4块或16×16块。
如先前描述,本发明的技术还可应用于广泛多种其它扫描次序,包含对角扫描次序、作为Z形、水平、垂直和/或对角扫描次序的组合的扫描次序,以及部分Z形、部分水平、部分垂直和/或部分对角的扫描次序。
图6A到6B是说明与本发明的技术一致的具有各种大小的视频数据块的实例和使用各种预测模式来产生预测数据的视频数据块的实例的概念图。如图6A所示,视频数据的块600(例如,宏块或CU的TU)可具有特定大小。对于此实例,假定块600的大小为2N×2N,其中N等于32。因此,块600具有64×64的大小。进一步假定块600经递归地分割或分裂为较小的块,包含也在图6A中所示的块602到608,如先前参考图1描述。举例来说,假定块602具有32×32的大小,块604具有16×16的大小,块606具有8×8的大小,且块608具有4×4的大小。在其它实例中,块600可被分割为较多或较少的比块602到608小的块。在再其它实例中,块600及其任何分区可具有与块600到608的大小不同的大小。
如图6B所示,块610A到610I可各自使用多种预测模式中的一者来译码。图6B的不同说明展示不同的方向预测模式,其中可根据不同说明中所示的方向箭头从相邻像素数据获得或导出预测数据。也可使用其它帧内预测模式,例如DC模式、平面模式或其它方向预测模式。在一些情况下,可支持32种不同的帧内预测模式。在任一情况下,如图6B所示,块610A到610I中的每一者可使用唯一帧内预测模式来译码,如针对块610A到610I中的每一者所说明,其中使用相邻视频数据块的像素来预测相应块的像素。在其它实例中,块610A到610I可使用图6B中未图示的其它预测模式来译码。
因此,根据本发明的技术,与图6A中描绘的块600到608相关联的块大小以及与图6B中描绘的块610A到610I相关联的预测模式中的至少一者可各自在执行上下文自适应熵译码过程(例如,CABAC过程)以对块600到608和610A到610I中的特定一者的扫描次序信息进行译码时用作上下文,如先前所述。
图7是说明与本发明的技术一致的用于使用最可能扫描次序对用于视频数据块的扫描次序信息进行有效译码的实例方法的流程图。图7的技术可通常由任一处理单元或处理器执行,无论是以硬件、软件、固件还是其组合来实施,且当以软件或固件实施时,可提供对应硬件以执行用于所述软件或固件的指令。为了实例目的,关于视频编码器20(图1和2)和/或视频解码器30(图1和3)描述图7的技术,但应了解,其它装置可经配置以执行类似技术。而且,图7中说明的步骤可以不同次序或并行地执行,且可添加额外步骤和省略某些步骤而不脱离本发明的技术。
起初,在一些实例中,视频编码器20和/或视频解码器30可对根据与视频数据块相关联的扫描次序指示所述块内的最后有效系数的位置的信息(即,块的最后有效系数位置信息)进行译码(700)。举例来说,所述块可为宏块或CU的TU,如先前描述。此外,与块相关联的扫描次序可包括Z形扫描次序、水平扫描次序和垂直扫描次序中的一者。以此方式,图7的实例方法可适用于使用多种扫描次序对视频数据块进行译码的任何译码系统。
在一些实例中,可使用如先前描述的最后有效系数旗标序列来表示块的最后有效系数位置信息。也如先前描述,视频编码器20和/或视频解码器30可通过执行包含基于上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)对序列的每一最后有效系数旗标进行译码,来对最后有效系数位置信息进行译码。举例来说,上下文可包含根据与块相关联的扫描次序的旗标在块内的位置。
在这些实例中,上下文模型可包含指示每一旗标包括给定值(例如,“0”或“1”)的概率的概率估计。在一些实例中,视频编码器20和/或视频解码器30可使用先前经译码视频数据块的对应最后有效系数旗标的值来确定所述概率估计。在其它实例中,视频编码器20和/或视频解码器30还可使用每一旗标的值来更新所述概率估计以反映旗标包括给定值的概率。举例来说,视频编码器20和/或视频解码器30可使用经更新概率估计以上文描述的方式对后续经译码视频数据块的最后有效系数位置信息进行译码。应注意,在其它实例中,视频编码器20和/或视频解码器30可使用其它技术对块的最后有效系数位置信息进行译码。
视频编码器20和/或视频解码器30可进一步确定用于块的最可能扫描次序(702)。举例来说,为了确定用于块的最可能扫描次序,视频编码器20和/或视频解码器30可如先前参考图6A到6B所述基于与块相关联的预测模式和大小而确定用于块的最可能扫描次序。作为一个实例,视频编码器20和/或视频解码器30可使用用于先前经译码块(例如,具有与当前经译码块相同的相关联预测模式和大小的块)的扫描次序信息做出此确定。最可能扫描次序也可包括Z形扫描次序、水平扫描次序和垂直扫描次序中的一者。
视频编码器20和/或视频解码器30可进一步对与块相关联的扫描次序是否为最可能扫描次序的指示进行译码(704)。举例来说,视频编码器20可如图8的实例方法中更详细描述对所述指示进行编码,且视频解码器30可如图9的实例方法中更详细描述对所述指示进行解码。视频编码器20和/或视频解码器30可通过执行包含基于至少一个上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)来对所述指示进行译码。举例来说,所述至少一个上下文可包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者。所述指示可包括单个位或“二进位”。举例来说,视频编码器20和/或视频解码器30可对用以指示扫描次序是最可能扫描次序(例如,bin=“0”)或不是最可能扫描次序(例如,bin=“1”)的二进位进行译码。
在与块相关联的扫描次序是最可能扫描次序的情况下(706),视频编码器20和/或视频解码器30可停止对识别与块相关联的扫描次序的信息(即,用于块的扫描次序信息)进行译码(710)。举例来说,视频编码器20和/或视频解码器30可继续到其它译码任务,例如对块或后续块的其它语法元素的译码,如上所述。
然而,在与块相关联的扫描次序不是最可能扫描次序的情况下(706),视频编码器20和/或视频解码器30可进一步对与块相关联的扫描次序的指示进行译码(708)。再次,视频编码器20和/或视频解码器30可通过执行包含基于至少一个上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)来对所述指示进行译码。举例来说,所述至少一个上下文可包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者。与块相关联的扫描次序的指示也可包括单个二进位。举例来说,视频编码器20和/或视频解码器30可对用以指示扫描次序是第一扫描次序(例如,bin=“0”)还是第二扫描次序(例如,bin=“1”)的二进位进行译码。在此实例中,第一和第二扫描次序可包括也用以在包括视频编码器20和视频解码器30的对应译码系统10内对视频数据块进行译码的除了最可能扫描次序之外的扫描次序。应注意,在其它实例中,与块相关联的扫描次序可包括也用以在系统10内对视频数据块进行译码的除了最可能扫描次序之外的较大数目(例如,3、4、5、…等)的扫描次序中的一者。因此,在其它实例中,视频编码器20和/或视频解码器30可使用其它技术(例如使用多个二进位)对与块相关联的扫描次序的指示进行译码。
为了使用上述上下文自适应熵译码过程对每一二进位(即,用以表示与块相关联的扫描次序是否为最可能扫描次序的指示以及与块相关联的扫描次序的指示的每一二进位)进行译码,对应上下文模型可包含指示二进位包括给定值(例如,“0”或“1”)的概率的概率估计。视频编码器20和/或视频解码器30可使用二进位的所述概率估计以通过执行上下文自适应熵译码过程对二进位进行译码。在一些实例中,视频编码器20和/或视频解码器30可使用先前经译码视频数据块(例如,具有与当前经译码块相同的相关联预测模式和大小的块)的对应二进位的值确定所述概率估计。在其它实例中,视频编码器20和/或视频解码器30还可使用二进位的值来更新所述概率估计以反映二进位包括给定值的概率。举例来说,视频编码器20和/或视频解码器30可使用经更新概率估计以上文描述的方式对用于后续经译码视频数据块的扫描次序信息进行译码。
在任一情况下,在对与块相关联的扫描次序的指示进行译码之后(708),视频编码器20和/或视频解码器30可停止对识别与块相关联的扫描次序的信息(即,用于块的扫描次序信息)进行译码(710)。再次,举例来说,视频编码器20和/或视频解码器30可继续到其它译码任务,例如对块或后续块的其它语法元素的译码,如上所述。
在一些实例中,视频编码器20和/或视频解码器30可进一步对指示块内的所有其它有效系数的位置的信息(即,块的有效系数位置信息)进行译码(712)。举例来说,可使用如先前描述的有效系数旗标序列来表示块的有效系数位置信息。也如先前描述,视频编码器20和/或视频解码器30可通过执行包含基于上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)对序列的每一有效系数旗标进行译码,来对有效系数位置信息进行译码。举例来说,上下文可包含根据与块相关联的扫描次序的旗标在块内的位置。
在这些实例中,上下文模型可包含指示每一旗标包括给定值(例如,“0”或“1”)的概率的概率估计。在一些实例中,视频编码器20和/或视频解码器30可使用先前经译码视频数据块的对应有效系数旗标的值来确定所述概率估计。在其它实例中,视频编码器20和/或视频解码器30还可使用每一旗标的值来更新所述概率估计以反映旗标包括给定值的概率。举例来说,视频编码器20和/或视频解码器30可使用经更新概率估计以上文描述的方式对后续经译码视频数据块的有效系数位置信息进行译码。应注意,在其它实例中,视频编码器20和/或视频解码器30可使用其它技术对块的有效系数位置信息进行译码。
以此方式,图7的方法表示对识别与视频数据块相关联的扫描次序的信息进行译码的方法的实例,包含确定用于块的最可能扫描次序且对与块相关联的扫描次序是否为最可能扫描次序的指示进行译码。
图8是说明与本发明的技术一致的用于使用最可能扫描次序对用于视频数据块的扫描次序信息进行有效编码的实例方法的流程图。图8的技术可通常由任一处理单元或处理器执行,无论是以硬件、软件、固件还是其组合来实施,且当以软件或固件实施时,可提供对应硬件以执行用于所述软件或固件的指令。为了实例目的,关于熵编码单元56(图2)描述图8的技术,但应了解,其它装置可经配置以执行类似技术。而且,图8中说明的步骤可以不同次序或并行地执行,且可添加额外步骤和省略某些步骤而不脱离本发明的技术。
起初,熵编码单元56可接收视频数据块(800)。举例来说,所述块可为宏块或CU的TU,如先前描述。在一些实例中,熵编码单元56可进一步对根据与块相关联的扫描次序指示所述块内的最后有效系数的位置的信息(即,块的最后有效系数位置信息)进行编码(802)。举例来说,与块相关联的扫描次序可包括Z形扫描次序、水平扫描次序和垂直扫描次序中的一者。以此方式,图8的实例方法可适用于使用多种扫描次序对视频数据块进行译码的任何译码系统。
在一些实例中,可使用如先前描述的最后有效系数旗标序列来表示块的最后有效系数位置信息。也如先前描述,熵编码单元56可通过执行包含基于上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)对序列的每一最后有效系数旗标进行编码,来对最后有效系数位置信息进行编码。举例来说,上下文可包含根据与块相关联的扫描次序的旗标在块内的位置。
在这些实例中,上下文模型可包含指示每一旗标包括给定值(例如,“0”或“1”)的概率的概率估计。在一些实例中,熵编码单元56可使用先前经编码视频数据块的对应最后有效系数旗标的值来确定所述概率估计。在其它实例中,熵编码单元56还可使用每一旗标的值来更新所述概率估计以反映旗标包括给定值的概率。举例来说,熵编码单元56可使用经更新概率估计以上文描述的方式对后续经编码视频数据块的最后有效系数位置信息进行编码。应注意,在其它实例中,熵编码单元56可使用其它技术对块的最后有效系数位置信息进行编码。
熵编码单元56可进一步确定用于块的最可能扫描次序(804)。举例来说,为了确定用于块的最可能扫描次序,熵编码单元56可如先前参考图6A到6B所述基于与块相关联的预测模式和大小而确定用于块的最可能扫描次序。作为一个实例,熵编码单元56可使用用于先前经编码块(例如,具有与当前经编码块相同的相关联预测模式和大小的块)的扫描次序信息做出此确定。最可能扫描次序也可包括Z形扫描次序、水平扫描次序和垂直扫描次序中的一者。
熵编码单元56可进一步对与块相关联的扫描次序是否为最可能扫描次序的指示进行编码(806)。熵编码单元56可通过执行包含基于至少一个上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)来对所述指示进行编码。举例来说,所述至少一个上下文可包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者。所述指示可包括单个二进位。举例来说,熵编码单元56可对用以指示扫描次序是最可能扫描次序(例如,bin=“0”)或不是最可能扫描次序(例如,bin=“1”)的二进位进行编码。
在与块相关联的扫描次序是最可能扫描次序的情况下(808),熵编码单元56可停止对识别与块相关联的扫描次序的信息(即,用于块的扫描次序信息)进行编码(816)。举例来说,熵编码单元56可继续到其它译码任务,例如对块或后续块的其它语法元素的编码,如上所述。
然而,在与块相关联的扫描次序不是最可能扫描次序的情况下(808),熵编码单元56可进一步对与块相关联的扫描次序的指示进行编码(810)。再次,熵编码单元56可通过执行包含基于至少一个上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)来对所述指示进行译码。举例来说,所述至少一个上下文可包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者。与块相关联的扫描次序的指示也可包括单个二进位。举例来说,熵编码单元56可对用以指示扫描次序是第一扫描次序(例如,bin=“0”)还是第二扫描次序(例如,bin=“1”)的二进位进行编码,其中第一和第二扫描次序包括也用以在包括视频编码器20和视频解码器30的对应译码系统10内对视频数据块进行译码的除了最可能扫描次序之外的扫描次序。应注意,在其它实例中,与块相关联的扫描次序可包括也用以在系统10内对视频数据块进行译码的除了最可能扫描次序之外的较大数目(例如,3、4、5、…等)的扫描次序中的一者。因此,在其它实例中,熵编码单元56可使用其它技术(例如使用多个二进位)对与块相关联的扫描次序的指示进行编码。
为了使用上述上下文自适应熵译码过程对每一二进位(即,用以表示与块相关联的扫描次序是否为最可能扫描次序的指示以及与块相关联的扫描次序的指示的每一二进位)进行编码,对应上下文模型可包含指示二进位包括给定值(例如,“0”或“1”)的概率的概率估计。熵编码单元56可使用二进位的所述概率估计以通过执行上下文自适应熵译码过程对二进位进行编码。在一些实例中,熵编码单元56可使用先前经编码视频数据块(例如,具有与当前经译码块相同的相关联预测模式和大小的块)的对应二进位的值确定所述概率估计。在其它实例中,熵编码单元56还可使用二进位的值来更新所述概率估计以反映二进位包括给定值的概率。举例来说,熵编码单元56可使用经更新概率估计以上文描述的方式对用于后续经编码视频数据块的扫描次序信息进行编码。
在任一情况下,在对与块相关联的扫描次序的指示进行编码之后(810),熵编码单元56可停止对识别与块相关联的扫描次序的信息(即,用于块的扫描次序信息)进行编码(812)。再次,举例来说,熵编码单元56可继续到其它译码任务,例如对块或后续块的其它语法元素的编码,如上所述。
在一些实例中,熵编码单元56可进一步对指示块内的所有其它有效系数的位置的信息(即,块的有效系数位置信息)进行编码(814)。举例来说,可使用如先前描述的有效系数旗标序列来表示块的有效系数位置信息。也如先前描述,熵编码单元56可通过执行包含基于上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)对序列的每一有效系数旗标进行编码,来对有效系数位置信息进行编码。举例来说,上下文可包含根据与块相关联的扫描次序的旗标在块内的位置。
在这些实例中,上下文模型可包含指示每一旗标包括给定值(例如,“0”或“1”)的概率的概率估计。在一些实例中,熵编码单元56可使用先前经编码视频数据块的对应有效系数旗标的值来确定所述概率估计。在其它实例中,熵编码单元56还可使用每一旗标的值来更新所述概率估计以反映旗标包括给定值的概率。举例来说,熵编码单元56可使用经更新概率估计以上文描述的方式对后续经编码视频数据块的有效系数位置信息进行编码。应注意,在其它实例中,熵编码单元56可使用其它技术对块的有效系数位置信息进行编码。
最终,熵编码单元56可停止对块进行编码(816)。举例来说,熵编码单元56可继续到其它译码任务,例如对后续块进行编码,如上所述。
以此方式,图8的方法表示对识别与视频数据块相关联的扫描次序的信息进行编码的方法的实例,包含确定用于块的最可能扫描次序且对与块相关联的扫描次序是否为最可能扫描次序的指示进行译码。
图9是说明与本发明的技术一致的用于使用最可能扫描次序对用于视频数据块的经编码扫描次序信息进行有效解码的实例方法的流程图。图9的技术可通常由任一处理单元或处理器执行,无论是以硬件、软件、固件还是其组合来实施,且当以软件或固件实施时,可提供对应硬件以执行用于所述软件或固件的指令。为了实例目的,关于熵解码单元70(图3)描述图9的技术,但应了解,其它装置可经配置以执行类似技术。而且,图9中说明的步骤可以不同次序或并行地执行,且可添加额外步骤和省略某些步骤而不脱离本发明的技术。
起初,熵解码单元70可接收视频数据块的经编码有效性数据(900)。举例来说,所述块可为宏块或CU的TU,如先前描述。熵解码单元70可进一步对有效性数据进行解码以确定根据与块相关联的扫描次序指示所述块内的最后有效系数的位置的信息(即,块的最后有效系数位置信息)(902)。举例来说,与块相关联的扫描次序可包括Z形扫描次序、水平扫描次序和垂直扫描次序中的一者。以此方式,图9的实例方法可适用于使用多种扫描次序对视频数据块进行译码的任何译码系统。
在一些实例中,可使用如先前描述的最后有效系数旗标序列来表示块的最后有效系数位置信息。还如先前描述,熵解码单元70可通过对有效性数据进行解码以产生序列的每一最后有效系数旗标,来对有效性数据进行解码以确定最后有效系数位置信息。举例来说,熵解码单元70可执行包含基于上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程),其中所述上下文可包含根据与块相关联的扫描次序的旗标在块内的位置。
在这些实例中,上下文模型可包含指示每一旗标包括给定值(例如,“0”或“1”)的概率的概率估计。在一些实例中,熵解码单元70可使用先前经解码视频数据块的对应最后有效系数旗标的值来确定所述概率估计。在其它实例中,熵解码单元70还可使用每一旗标的值来更新所述概率估计以反映旗标包括给定值的概率。举例来说,熵解码单元70可使用经更新概率估计以上文描述的方式对后续经解码视频数据块的最后有效系数位置信息进行解码。应注意,在其它实例中,熵解码单元70可使用其它技术对块的最后有效系数位置信息进行解码。
熵解码单元70可进一步确定用于块的最可能扫描次序(904)。举例来说,为了确定用于块的最可能扫描次序,熵解码单元70可如先前参考图6A到6B所述基于与块相关联的预测模式和大小而确定用于块的最可能扫描次序。作为一个实例,熵解码单元70可使用先前经解码块(例如,具有与当前经解码块相同的相关联预测模式和大小的块)的扫描次序信息做出此确定。最可能扫描次序也可包括Z形扫描次序、水平扫描次序和垂直扫描次序中的一者。
熵解码单元70可进一步接收块的经编码扫描次序数据(906)。熵解码单元70可进一步对扫描次序数据进行解码以确定与块相关联的扫描次序是否为最可能扫描次序的指示(908)。熵解码单元70可通过执行包含基于至少一个上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)来对扫描次序数据进行解码以确定所述指示。举例来说,所述至少一个上下文可包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者。所述指示可包括单个二进位。举例来说,熵解码单元70可对扫描次序数据进行解码以确定二进位,使得所述二进位指示扫描次序是最可能扫描次序(例如,bin=“0”)或不是最可能扫描次序(例如,bin=“1”)。
在与块相关联的扫描次序是最可能扫描次序的情况下(910),熵解码单元70可停止对识别与块相关联的扫描次序的信息(即,用于块的扫描次序信息)进行解码(916)。举例来说,熵解码单元70可继续到其它译码任务,例如对块或后续块的其它语法元素的解码,如上所述。
然而,在与块相关联的扫描次序不是最可能扫描次序的情况下(910),熵解码单元70可进一步接收块的额外经编码扫描次序数据(912)。熵解码单元70可进一步对额外扫描次序数据进行解码以确定与块相关联的扫描次序的指示(914)。再次,熵解码单元70可通过执行包含基于至少一个上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程)来对额外扫描次序数据进行解码以确定所述指示。举例来说,所述至少一个上下文可包含最可能扫描次序、与块相关联的预测模式以及与块相关联的大小中的一者。与块相关联的扫描次序的指示也可包括单个二进位。举例来说,熵解码单元70可对额外扫描次序数据进行解码以确定二进位,使得所述二进位指示扫描次序是第一扫描次序(例如,bin=“0”)还是第二扫描次序(例如,bin=“1”)。在此实例中,第一和第二扫描次序可包括也用以在包括视频编码器20和视频解码器30的对应译码系统10内对视频数据块进行译码的除了最可能扫描次序之外的扫描次序。应注意,在其它实例中,与块相关联的扫描次序可包括也用以在系统10内对视频数据块进行译码的除了最可能扫描次序之外的较大数目(例如,3、4、5、…等)的扫描次序中的一者。因此,在其它实例中,熵解码单元70可使用其它技术(例如使用多个二进位)对额外扫描次序数据进行解码以确定与块相关联的扫描次序的指示。
为了确定使用上述上下文自适应熵译码过程对每一二进位(即,用以表示与块相关联的扫描次序是否为最可能扫描次序的指示以及与块相关联的扫描次序的指示的每一二进位),对应上下文模型可包含指示二进位包括给定值(例如,“0”或“1”)的概率的概率估计。熵解码单元70可使用二进位的所述概率估计以通过执行上下文自适应熵译码过程确定二进位。在一些实例中,熵解码单元70可使用先前经解码视频数据块(例如,具有与当前经译码块相同的相关联预测模式和大小的块)的对应二进位的值确定所述概率估计。在其它实例中,熵解码单元70还可使用二进位的值来更新所述概率估计以反映二进位包括给定值的概率。举例来说,熵解码单元70可使用经更新概率估计以上文描述的方式对用于后续经解码视频数据块的扫描次序信息进行解码。
在任一情况下,在对额外扫描次序数据进行解码以确定与块相关联的扫描次序的指示之后(914),熵解码单元70可停止对识别与块相关联的扫描次序的信息(即,用于块的扫描次序信息)进行解码(916)。再次,举例来说,熵解码单元70可继续到其它译码任务,例如对块或后续块的其它语法元素的解码,如上所述。
在一些实例中,熵解码单元70可进一步接收块的剩余经编码有效性数据(918)。熵解码单元70可进一步对剩余有效性数据进行解码以确定指示块内的所有其它有效系数的位置的信息(即,块的有效系数位置信息)(920)。举例来说,可使用如先前描述的有效系数旗标序列来表示块的有效系数位置信息。还如先前描述,熵解码单元70可通过对剩余有效性数据进行解码以产生序列的每一有效系数旗标,来对剩余有效性数据进行解码以确定有效系数位置信息。举例来说,熵解码单元70可执行包含基于上下文应用上下文模型的上下文自适应熵译码过程(例如,CABAC过程),其中所述上下文可包含根据与块相关联的扫描次序的旗标在块内的位置。
在这些实例中,上下文模型可包含指示每一旗标包括给定值(例如,“0”或“1”)的概率的概率估计。在一些实例中,熵解码单元70可使用先前经解码视频数据块的对应有效系数旗标的值来确定所述概率估计。在其它实例中,熵解码单元70还可使用每一旗标的值来更新所述概率估计以反映旗标包括给定值的概率。举例来说,熵解码单元70可使用经更新概率估计以上文描述的方式对后续经解码视频数据块的有效系数位置信息进行解码。应注意,在其它实例中,熵解码单元70可使用其它技术对块的有效系数位置信息进行解码。
最终,熵解码单元70可停止对块解码(922)。举例来说,熵解码单元70可继续到其它译码任务,例如对后续块进行解码,如上所述。
以此方式,图9的方法表示对识别与视频数据块相关联的扫描次序的信息进行解码的方法的实例,包含确定用于块的最可能扫描次序且对与块相关联的扫描次序是否为最可能扫描次序的指示进行解码。
因此,根据本发明的技术,经编码位流可包括用于视频数据块的扫描次序信息,即,与块相关联的系数。特定来说,视频编码器20可对与块相关联的扫描次序是否为最可能扫描次序的指示进行编码。在一些实例中,在与块相关联的扫描次序不是最可能扫描次序的情况下,视频编码器20可进一步对与块相关联的扫描次序的指示进行编码。类似地,视频解码器30可对与块相关联的扫描次序是否为最可能扫描次序的指示进行解码。在一些实例中,在与块相关联的扫描次序不是最可能扫描次序的情况下,视频解码器30可进一步对与块相关联的扫描次序的指示进行解码。
因此,本发明还预期一种计算机可读媒体,其包括存储于其上的数据结构,所述数据结构包含经编码位流。存储在计算机可读媒体上的经编码位流可包括使用特定格式编码的视频数据,以及使用一个或一个以上指示表示的识别与视频数据块相关联的扫描次序的经编码信息(即,用于块的扫描次序信息)。用于块的扫描次序信息在位流内被编码的特定格式取决于与块相关联的扫描次序是否为用于块的最可能扫描次序。更具体来说,位流可包含与块相关联的扫描次序是否为最可能扫描次序的指示。在一些实例中,在扫描次序不包括最可能扫描次序的情况下,位流可进一步包含与块相关联的扫描次序的指示。
在一个或一个以上实例中,所描述的功能可以硬件、软件、固件或其任一组合来实施。如果以软件实施,那么功能可作为一个或一个以上指令或代码存储在计算机可读媒体上或经由计算机可读媒体传输,且由基于硬件的处理单元执行。计算机可读媒体可包含对应于例如数据存储媒体等有形媒体的计算机可读存储媒体,或包含促进例如根据通信协议将计算机程序从一处传送到另一处的任何媒体的通信媒体。以此方式,计算机可读媒体通常可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)例如信号或载波等通信媒体。数据存储媒体可为可由一个或一个以上计算机或者一个或一个以上处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
举例来说且并非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来以指令或数据结构的形式存储所要程序代码且可由计算机存取的任何其它媒体。而且,恰当地将任何连接称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电及微波等无线技术从网站、服务器或其它远程源传输指令,则同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电及微波等无线技术包含于媒体的定义中。然而应了解,计算机可读存储媒体和数据存储媒体不包含连接、载波、信号或其它瞬时媒体,而是针对非瞬时有形存储媒体。如本文中所使用,磁盘及光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软磁盘及蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘使用激光以光学方式再现数据。以上各者的组合也应包含在计算机可读媒体的范围内。
可由例如一个或一个以上数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一个或一个以上处理器来执行指令。因此,如本文中所使用的术语“处理器”可指上述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文描述的功能性可提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或并入在组合式编解码器中。并且,可将所述技术完全实施于一个或一个以上电路或逻辑元件中。
本发明的技术可在广泛多种装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述各种组件、模块或单元以强调经配置以执行所揭示技术的装置的功能方面,但不一定需要通过不同硬件单元来实现。而是,如上所述,各种单元可在编解码器硬件单元中组合或由互操作硬件单元(包含如上所述的一个或一个以上处理器)的集合结合合适的软件和/或固件来提供。
已描述了各种实例。这些和其它实例处于所附权利要求书的范围内。