使用vlc码字来译码语法元素的制作方法
【专利摘要】本发明描述用于译码视频数据块的变换系数的技术。根据这些技术,视频译码器(视频编码器或视频解码器)在存储器中存储第一VLC表阵列选择表,以及所述第一VLC表阵列选择表与第二VLC表阵列选择表之间的至少一个差异的指示。所述视频译码器使用所述第一VLC表阵列选择表与第二VLC表阵列选择表之间的所述差异的所述所存储指示,基于所述第一VLC表阵列选择表来重构所述第二VLC表阵列选择表的至少一个条目。所述视频译码器使用所述第二VLC表阵列选择表的所述经重构的至少一个条目来译码至少一个视频数据块。
【专利说明】使用VLC码字来译码语法元素
[0001]本申请案主张以下美国临时申请案的优先权,所述申请案各自的完整内容以引用的方式并入本文中:
[0002]2011年7月11日申请的第61/506,542号美国临时申请案;以及2011年10月27日申请的第61/552,367号美国临时申请案。
【技术领域】
[0003]本发明涉及视频译码和压缩。更具体地说,本发明是针对使用可变长度译码(VLC)来编码一个或一个以上视频数据块的变换系数的技术。
【背景技术】
[0004]熵编码是一种广泛用于视频译码中以压缩视频数据的方法。在实例熵编码方法中,视频编码器扫描表示图像的像素的经量化变换系数的二维矩阵,以产生所述变换系数的一维向量。视频解码器解码所述视频数据。作为解码过程的一部分,视频编码器扫描变换系数的一维向量,以重构变换系数的二维矩阵。
【发明内容】
[0005]在附图及下文描述中陈述一个或一个以上实例的细节。将从描述和图式且从所附权利要求书明白本发明的其它特征、目标和优点。
[0006]实例包含一种译码视频数据块的方法,其中将第一 VLC表阵列选择表以及所述第一 VLC表阵列选择表与第二 VLC表阵列选择表之间的至少一个差异的指示存储在存储器中,且使用第一 VLC表阵列选择表与第二 VLC表阵列选择表之间的差异的所存储指不,基于第一 VLC表阵列选择表来重构第二 VLC表阵列选择表的至少一个条目。使用所述第二 VLC表阵列选择表的所述经重构的至少一个条目来译码至少一个视频数据块。
[0007]在另一实例中,一种处理器经配置以通过将第一 VLC表阵列选择表以及所述第一VLC表阵列选择表与第二 VLC表阵列选择表之间的至少一个差异的指示存储在存储器中,来译码至少一个视频数据块,且使用第一 VLC表阵列选择表与第二 VLC表阵列选择表之间的差异的所存储指不,基于第一 VLC表阵列选择表来重构第二 VLC表阵列选择表的至少一个条目。使用所述第二 VLC表阵列选择表的所述经重构的至少一个条目来译码至少一个视频数据块。
[0008]另一实施例包含计算装置的处理器,或具体地说编码器或解码器,其可用以执行以上实例的方法或本文所揭示的其它技术。其它实施例包含存储用于致使处理器执行此些方法的指令的计算机可读媒体。
【专利附图】
【附图说明】
[0009]图1是说明经配置以根据本发明的技术操作的视频编码和解码系统的一个实例的框图。[0010]图2是说明经配置以根据本发明的技术操作的视频编码器的一个实例的框图。
[0011]图3是说明经配置以根据本发明的技术操作的视频解码器的一个实例的框图。
[0012]图4是说明根据本发明的技术的视频编码和解码方法的两个表。
[0013]图5是说明根据本发明的技术的视频编码和解码方法的实例的流程图。
【具体实施方式】
[0014]一般来说,本发明描述用于译码视频数据的技术。更具体地说,本文所描述的技术是针对减少译码器用来存储可用于执行语法元素的熵译码的VLC表阵列选择表的存储器的量。
[0015]在典型应用中,经编码视频数据包含预测数据和残余数据。在此些例子中,视频编码器使用帧内预测模式或帧间预测模式产生预测数据。帧内预测通常涉及相对于图片的相邻、先前经译码块来预测同一图片的块。帧间预测通常涉及相对于先前经译码图片的数据来预测图片的块。
[0016]在帧内或帧间预测之后,视频编码器计算所述块的残余值。残余值通常对应于块的所预测数据与所述块的真实值之间的差异。为了进一步压缩块的残余值,可将残余值变换为一组变换系数,其将尽可能多的数据(也称为“能量”)压到尽可能少的系数中。变换系数对应于与原始块相同大小的二维系数矩阵。换句话说,仅存在与原始块中的像素一样多的变换系数。然而,归因于变换,变换系数中的许多通常具有等于零的值。
[0017]视频编码器通常量化变换系数以进一步压缩视频数据,以减少表示所述经量化变换系数所需的数据量。在量化之后,视频编码器扫描变换系数,从而从包含经量化变换系数的二维矩阵产生一维向量。视频编码器任选地在扫描之前或之后,将某些系数设置为等于零。
[0018]视频编码器对所得阵列进行熵编码以更进一步压缩数据。在一些实例中,视频编码器经配置以使用可变长度代码(VLC)来表示阵列的各种可能经量化变换系数,例如使用上下文自适应可变长度译码(CAVLC)。在其它实例中,视频编码器经配置以使用二进制算术译码来编码所得经量化系数,例如使用上下文自适应二进制算术译码(CABAC)。在其它实例中,视频编码器经配置以使用概率间隔分区熵代码(PIPE)来编码所得经量化系数。
[0019]本发明描述与在视频译码过程期间扫描变换系数有关的技术。所述技术适用于视频编码单元和解码单元两者,包含经配置以执行视频编码和/或解码的视频编码器/解码器(CODEC)和处理单元。对“视频译码单元”或“视频译码装置”的参考应被理解为指代能够编码、解码或编码和解码视频数据的单元或装置。
[0020]所描述的技术是针对视频译码,具体地说,是针对减少译码器用来存储VLC表阵列选择表的存储器的量。如本文所使用,例如“代码”、“译码器”、“译码”、“经译码”等术语指代本发明的适用于编码和/或解码的方面。
[0021]图1是说明可经配置以实施本发明的技术的示范性视频编码和解码系统100的框图。如图1中所示,系统100包含源装置102,其经由通信信道115将经编码视频发射到目的装置106。源装置102和目的装置106包括各种各样装置中的任一者。在一些情况下,源装置102和目的装置106包括无线通信装置手机,例如所谓的蜂窝式或卫星无线电电话。然而,本发明的通常应用于编码和解码视频数据的变换系数的技术不一定限于无线应用或设置,且潜在地适用于各种各样的非无线装置,包含视频编码和/或解码能力。
[0022]在图1的实例中,源装置102包含视频源120、视频编码器122、调制器/解调器(调制解调器)124和发射器126。目的装置106包含接收器128、调制解调器130、视频解码器132以及显示装置134。根据本发明,源装置102的视频编码器122将包含变换系数(例如,其各自对应于所显示图像的像素)的二维矩阵的视频数据块的变换系数扫描到表示所述变换系数的一维向量中。根据本发明的一些实施例,视频编码器122自适应地扫描视频数据块的第一多个系数,且对所述块的第二多个系数使用固定扫描。举例来说,对于第一多个变换系数,视频编码器122相对于曾扫描至少一个先前经编码视频数据块的变换系数的次序,自适应地修改扫描第一多个变换系数的次序。举例来说,视频编码器122基于其它先前经编码块中同一位置处的系数多久一次为非零系数而修改扫描变换系数的次序。对于第二多个变换系数,视频编码器122不相对于至少一个先前经编码视频数据块的扫描次序而自适应地修改扫描第二多个变换系数的次序。事实上,对于由编码器编码的多个视频数据块,视频编码器122使用同一扫描次序来扫描第二多个系数。
[0023]目的装置106的视频解码器132还可经配置以执行互逆变换系数解码。在那些情况下,视频解码器132将表示视频数据块的变换系数的一维向量的系数映射到变换系数的二维矩阵内的位置,以重构变换系数的二维矩阵。
[0024]图1所说明的系统100仅为示范性的。本发明的变换系数编码和解码技术可由任何编码或解码装置执行。源装置102和目的装置106仅为可支持此些技术的译码装置的实例。
[0025]在此实例中,源装置102的视频编码器122编码从视频源120接收到的视频数据。视频源120包括视频捕获装置,例如视频摄像机、含有先前所捕获视频的视频存档,或从视频内容提供者馈送的视频。作为另一替代方案,视频源120任选地产生基于计算机图形的数据作为源视频,或现场视频(live video)、存档视频与计算机产生的视频的组合。在一些情况下,如果视频源120为视频摄像机,那么源装置102和目的装置106可形成所谓的摄像机电话或视频电话。在每一情况下,由视频编码器122来编码所捕获的、预先捕获的或计算机产生的视频。
[0026]在示范性系统100中,一旦视频数据由视频编码器122编码,经编码的视频信息就由调制解调器124根据通信标准(例如,码分多址(CDMA)或任何其它通信标准或技术)来调制,且经由发射器126发射到目的装置106。调制解调器124包含为信号调制设计的各种混频器、滤波器、放大器或其它组件。此实例的发射器126包含经设计以用于发射数据的电路,包含放大器、滤波器及一个或一个以上天线。目的装置106的接收器128经由信道115接收信息,且调制解调器130对所述信息进行解调。并且,由视频解码器132执行的视频解码过程包含与视频编码器122所执行的编码技术类似(例如,互逆)的解码技术。
[0027]根据本发明的一些方面,通信信道115包括任何无线或有线通信媒体,例如,射频(RF)频谱或一个或一个以上物理传输线、或无线和有线媒体的任何组合。在此些例子中,通信信道115形成例如局域网、广域网或例如因特网等全局网络等基于包的网络的部分。通信信道115通常表示任何合适通信媒体,或不同通信媒体的集合,用于将视频数据从源装置102发射到目的装置106。
[0028]并且,图1仅为示范性的,且本发明的技术适用于不一定包含编码装置与解码装置之间的任何数据通信的视频译码设置(例如,视频编码或视频解码)。在其它实例中,数据可从本地存储器检索、经由网络流式传输等。编码装置编码数据并将其存储到存储器,且/或解码装置从存储器检索数据并对其进行解码。在许多情况下,编码和解码由不相关装置执行,所述装置不与彼此通信,而是仅将数据编码到存储器和/或从存储器检索数据并对其进行解码。
[0029]尽管图1中未展示,但在一些方面中,视频编码器122和视频解码器132可各自与音频编码器和解码器集成,且任选地包含适当的多路复用器-多路分用器(MUX-DEMUX)单元或其它硬件及软件,以处置对共同数据流或单独数据流中的音频与视频两者的编码。如果适用,MUX-DEMUX单元可符合ITU H.223多路复用器协议或例如用户数据报协议(UDP)等其它协议。
[0030]视频编码器122和视频解码器132中的任一者或两者可实施为一个或一个以上微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。视频编码器122和视频解码器132中的每一者潜在地包含于一个或一个以上编码器或解码器中,视频编码器和视频解码器中的任一者潜在地作为组合式编码器/解码器(CODEC)的一部分而集成于相应的移动装置、订户装置、广播装置、服务器等中。
[0031]在一些情况下,装置102、106可经配置以便以大体上对称的方式操作。举例来说,装置102、106中的每一者任选地包含视频编码和解码组件。因此,系统100可支持视频装置102、106之间的单向或双向视频发射,例如用于视频流式传输、视频播放、视频广播或视频电话。
[0032]在编码过程期间,视频编码器122执行若干译码技术或操作。一般来说,视频编码器122对个别视频帧内的视频块(或其它独立译码的单元,例如切片)进行操作,以便编码视频块。可将帧、切片、帧的部分、图片群组或其它数据结构定义为包含多个视频块的独立数据单元,且可将语法元素包含在此些不同独立数据单元处。独立数据单元内的视频块可具有固定的或变化的大小,且可根据指定的译码标准而在大小上不同。在一些情况下,每一视频帧包含一系列可独立解码的切片,且每一切片可另外包含一个或一个以上宏块或IXU。
[0033]再次参看图1,视频编码器122通常执行预测性译码,其中将正译码的视频块与另一视频数据块进行比较,以便识别预测性块。此预测性译码过程通常称为运动估计和运动补偿。运动估计相对于一个或一个以上预测性帧(或其它译码单元)的一个或一个以上预测性视频块而估计视频块运动。运动补偿从一个或一个以上预测性帧或其它译码单元产生所要的预测性视频块。运动补偿包含其中执行内插滤波以在分数像素精度下产生预测性数据的内插过程。
[0034]在产生预测性块之后,将正译码的当前视频块与预测性块之间的差译码为残余块,且使用预测语法(例如运动向量)来识别预测性块。变换并量化残余块。变换技术任选地包括DCT过程或概念上类似的过程、整数变换、小波变换或其它类型的变换。在DCT或类似DCT的过程中,作为实例,变换过程将一组像素值(例如,残余值)转换为变换系数,其例如表示像素值在频域中的能量。量化通常被应用于变换系数上,且通常涉及限制与任何给定变换系数相关联的位数目的过程。
[0035]在许多实施例中,在变换和量化之后,对经变换且经量化的残余视频块执行熵译码。在编码期间界定的语法元素、各种滤波语法信息和预测向量包含于经熵译码的位流中。一般来说,熵译码包括一个或一个以上过程,其共同压缩经量化变换系数和/或其它语法信息的序列。对经量化变换系数执行例如固定或自适应扫描次序等扫描技术,以便界定来自二维视频块的系数的一个或一个以上串行化一维向量。举例来说,根据本文所述的技术,对于视频块的不同系数,可使用固定和自适应扫描技术两者。一旦经扫描以产生一个或一个以上串行化一维向量,就接着连同任何语法信息对所扫描的系数进行熵译码。
[0036]作为编码过程的一部分,解码经编码视频块,以产生用于后续视频块的后续基于预测的译码的视频数据。在此阶段,可使用滤波,以便改进视频质量,且例如去除来自经解码视频的成块性或其它假象。此滤波任选地在环路中或环路后。对于环路中滤波,经重构视频数据的滤波在译码环路中发生,这意味着经滤波的数据由编码器或解码器存储,以供后续用于预测后续图像数据。相比而言,对于环路后滤波,经重构视频数据的滤波在译码环路外发生,这意味着所述数据的未经滤波版本由编码器或解码器存储,以供后续用于预测后续图像数据。
[0037]图2是说明与本发明一致的实例视频编码器250的框图。视频编码器250可对应于源装置100的视频编码器122,或不同装置的视频编码器。如图2中所示,视频编码器250包含预测模块240、加法器241和246以及存储器245。视频编码器250还包含变换模块242和量化模块243,以及逆量化模块248和逆变换模块247。视频编码器250还包含熵译码模块244。熵译码模块244包含扫描模块260。
[0038]在编码过程期间,视频编码器250接收待译码的视频块,且预测模块240执行预测性译码技术。对于帧间译码,预测模块240将待编码的视频块与一个或一个以上视频参考帧或切片中的各种块进行比较,以便界定预测性块。对于帧内译码,预测模块240基于同一帧、切片或其它视频数据单元内的相邻数据而产生预测性块。预测模块240输出预测块,且加法器241将预测块从正被译码的视频块减去,以便产生残余块。
[0039]根据本发明的一些方面,对于帧间译码,预测模块240包括运动估计和运动补偿模块(图2中未描绘),其识别指向预测块的运动向量,且基于所述运动向量产生预测块。通常,将运动估计视为产生估计运动的运动向量的过程。举例来说,运动向量可指示预测性帧内的预测性块相对于当前帧内正被译码的当前块的移位。运动补偿通常被视为基于运动估计所确定的运动向量来提取或产生预测性块的过程。对于帧内译码,预测模块240基于同一帧、切片或其它视频数据单元内的相邻数据而产生预测性块。一个或一个以上帧内预测模式可潜在地界定可如何界定帧内预测块。
[0040]在一些实例中,用于帧间译码的运动补偿包含向子像素分辨率的内插。举例来说,将由预测模块240产生的经内插预测性数据内插到半像素分辨率、四分之一像素分辨率或甚至更精细的分辨率。这准许运动估计将视频块的运动估计到此子像素分辨率。
[0041]在预测模块240输出预测块之后,且在加法器241将预测块从正被译码的视频块减去以便产生残余块之后,变换模块242将变换应用于残余块。变换任选地包括离散余弦变换(DCT)、整数变换或概念上类似的变换,例如由ITU H.264标准或HVEC标准界定的变换等。在一些实例中,变换模块242执行不同大小的变换,且选择不同大小的变换用于译码效率和改进的压缩。也可使用小波变换、整数变换、子带变换或其它类型的变换。在任何情况下,变换模块242将特定变换应用于残余像素值的残余块,从而产生残余变换系数块。所述变换将残余像素值信息从像素域转换为频域。
[0042]逆量化模块248和逆变换模块247分别应用逆量化和逆变换,以在像素域中重构残余块。求和器246将经重构的残余块与预测模块240所产生的预测块相加,以产生经重构视频块以供存储在存储器245中。滤波器模块249可能对经重构的视频块执行环路中或环路后滤波。
[0043]在一些实例中,存储器245相对于待编码的其它帧的块而存储供运动估计中使用的块的帧或切片。在此存储之前,在环路中滤波的情况下,滤波器模块249将滤波应用于视频块以改进视频质量。滤波器模块249的此滤波减少成块性或其它假象。此外,滤波通过产生包括与正被译码的视频块的紧密匹配的预测性视频块来改进压缩。滤波还可在环路后执行,使得经滤波数据作为经解码数据输出,但未经滤波的数据由预测模块240使用。
[0044]在某些实例中,量化模块243量化残余变换系数(例如,来自变换模块242)以进一步降低位速率。举例来说,量化模块243限制用以译码系数中的每一者的位数。在量化之后,熵编码模块244扫描并熵编码所述数据。举例来说,熵编码模块244可从二维表示扫描经量化系数块以产生一个或一个以上串行化一维向量。举例来说,扫描模块260可执行表示经量化系数块的二维矩阵的扫描。
[0045]在此扫描过程之后,熵译码模块244根据如本文所述的熵译码方法对经量化变换系数(连同任何语法元素)进行编码,以进一步压缩数据。在此实例中,包含于经熵编码位流中的语法信息包含来自预测模块240的预测语法,例如用于帧间译码的运动向量或用于帧内译码的预测模式。包含于经熵编码的位流中的语法信息可能还包含滤波器信息,例如由预测模块240应用用于内插的滤波器信息,或由滤波器模块249应用的滤波器。另外,包含于经熵译码的位流中的语法信息还可包含表示语法元素(或其它信息)中的一者或一者以上的一个或一个以上VLC码字。
[0046]在熵译码模块244进行的熵译码之后,可将经编码视频发射到另一装置或加以存档以用于稍后发射或检索。举例来说,解码器可使用由熵编码模块244产生的经编码视频的变换系数的一维向量来重构表示视频数据块的二维矩阵。
[0047]图3是说明视频解码器350的实例的框图,视频解码器350解码以本文所述方式编码的视频序列。接收到的视频序列任选地包括经编码的一组图像帧、一组帧切片、常见译码的图片群组(GOP),或各种各样的经译码视频单元,其包含经编码视频块和语法信息,以界定如何解码此些视频块。
[0048]图3中所表示的视频解码器350并入有熵解码模块344,其执行与图2的熵编码模块244所执行的编码互逆的解码功能。在一些实例中,熵解码模块344将一维串行化格式的经熵编码的视频块转换回到二维块格式中。向量的数目和大小,以及针对视频块界定的扫描次序界定如何重构二维块。
[0049]如图3中所描绘,视频解码器包含滤波器模块349。滤波器模块349可对经重构的视频块执行环路中或环路后滤波。视频解码器350还包含预测模块340、逆量化单元343、逆变换模块342、存储器345和求和器346。
[0050]各种各样的视频压缩技术和标准执行空间和时间预测,以减少或去除输入视频信号中固有的冗余。如上文所阐释,使用空间预测(即,帧内预测)和/或时间预测(即,中贞间预测或运动估计)来预测输入视频块。本文所述的预测模块通常包含模式决策模块(未图示),以便为给定输入视频块选择合意的预测模式。模式选择考虑多种因素,例如块是经帧内译码还是帧间译码、在使用帧内译码的情况下的预测块大小和预测模式,以及在使用帧间译码的情况下的运动分区大小和运动向量。从输入视频块减去预测块,且接着对残余视频块应用变换和量化,如上文所述。
[0051]可对经量化的系数连同模式信息进行熵编码以形成视频位流。经量化的系数还可经逆量化和逆变换,以形成经重构残余块,其可加回到预测视频块(经帧内预测的块或经运动补偿的块,视所选的译码模式而定),以形成经重构视频块。环路中或环路后滤波方法适用于减少经重构视频信号中的视觉假象。经重构的视频块最终存储在参考帧缓冲器(即,存储器)中,以用于译码未来的视频块。
[0052]在一些实例中,根据Z字形扫描技术来对视频帧的给定叶等级块的系数进行排序(扫描)。此技术由编码器250用来产生一维经排序系数向量。Z字形扫描技术包括以块的最左上系数开始,且继续以Z字形图案扫描到块的最左下系数。
[0053]根据Z字形扫描技术,假定具有最大能量(例如,最大系数值)的变换系数对应于低频变换函数,且朝着块的左上定位。由此,对于基于Z字形扫描而产生的系数向量(例如,一维系数向量),假定较高量值系数最可能朝着向量的开始出现。还假定,在系数向量已量化之后,最低能量系数将等于O。在一些实例中,系数扫描在系数译码期间自适应。举例来说,将扫描中的较低数目指派给较经常出现非零系数的位置。
[0054]根据一些实例,编码器250执行变换系数的逆Z字形扫描。为了执行逆Z字形扫描,编码器250开始在对应于最后非零系数(例如,离块的左上位置最远的非零系数)的位置处开始编码。不同于上文所述的Z字形扫描的实例,根据逆Z字形扫描的实例,编码器250以从最后的非零系数(即,在块的右下位置中)到块的左上位置的Z字形图案进行译码。在一些实例中,编码器250经配置以基于一个或一个以上已经译码的系数的量值在译码的游程译码模式与等级模式之间切换。
[0055]根据变换系数的逆Z字形扫描,编码器250通过首先编码指示最后非零系数(即,逆扫描次序的第一非零系数)的last_p0s语法元素来扫描视频数据块。在一些实例中,编码器250还编码level_ID语法元素,其指示所述最后非零系数的量值是一还是大于一。在一些实例中,编码器250将last_p0s和level_ID语法元素一起编码为VLC码字。
[0056]根据游程编码模式实例,如果系数具有大于零的量值,那么编码器250用信号通知所扫描系数的level_ID语法元素。level_ID语法元素可指示所述系数是具有幅度I还是大于I。举例来说,如果系数具有等于一(I)的量值,那么编码器250可为level_ID指派值零(O)。然而,如果系数具有大于一(I)的值,那么编码器250可为level_ID指派值一
(I)。在一些实例中,如果level_ID具有值一,那么编码器还可用信号通知等级语法元素,其指示变换系数的量值。
[0057]为了开始使用游程译码模式对视频数据块进行译码,编码器250可首先用信号通知last_p0s语法元素,其指示扫描的最后非零系数(根据Z字形扫描次序,逆Z字形扫描次序的第一系数)的位置。编码器250还可用信号通知level_ID语法元素,其指示扫描的最后非零系数具有值一(I)还是大于一,如上文所述。在编码器250已用信号通知last_pos语法元素以及与所述last_p0s语法元素相关联的level_ID语法元素之后,编码器250可用信号通知与扫描的一个或一个以上其它系数相关联的游程语法元素和level_ID语法元素。
[0058]游程语法元素指示扫描次序中当前(经编码)系数与下一非零系数之间幅度接近或等于零的系数的数目。根据一个实例,游程语法元素可具有在从零到k+1的范围内的值,其中k为当前非零系数的位置。
[0059]在一些实例中,为了确定表示游程和level_ID语法元素的VLC码字,编码器250首先确定游程和level_ID语法元素的值,且使用所确定的值来确定代码数目cn。编码器250接着使用所确定的代码数目cn来确定VLC码字。
[0060]在一些实例中,为了基于level_ID和游程语法元素的所确定值来确定代码数目cn,编码器250使用存储在存储器中的多个映射表中界定level_ID与游程语法元素之间的关系的一映射表,以及代码数目cn。此映射表为level_ID和游程语法元素的值的每一可能组合界定对应于相应level_ID和游程语法元素中的每一者的代码数目。根据这些实例,编码器250将所确定的level_ID和游程语法元素值输入到选定映射表中,以确定代码数目cn。
[0061]在一些实例中,为了译码level_ID和last_pos语法兀素,编码器250确定last_pos和level_ID语法元素的值,且使用所确定的值来确定代码数目cn。代码数目cn包括可输入到多个VLC表的选定VLC表中的条目值,以确定表示level_ID和last_p0s语法元素的VLC码字。在一些实例中,编码器250基于使用存储在存储器中的多个映射表中界定level_ID和last_p0s语法元素与代码数目cn之间的关系的一映射表来确定代码数目cn。在其它实例中,编码器250基于界定level_ID和last_p0s语法元素与代码数目cn之间的关系的结构化映射来确定代码数目cn。
[0062]如上文所述的实例中所陈述,为了确定此表示level_ID和last_p0s语法元素的VLC码字,编码器250选择存储在存储器中的多个VLC表中的一 VLC表,且将所确定的代码数目cn输入到选定VLC表中,以确定VLC码字。在一些实例中,编码器250基于VLC表索引值来选择所述多个VLC表中的所述VLC表。VLC表索引值指示编码器250应使用多个VLC表中的哪一者,以输入代码数目cn以确定表不level_ID和last_pos语法兀素的VLC码字。
[0063]如前面的实例中所描述,译码器(例如,编码器250和/或解码器350)经配置以存储专用于视频数据块的特性(例如,视频数据块的预测类型(例如,帧内、帧间)和/或大小)的多个不同VLC表阵列选择表。举例来说,编码器250存储专用于具有大小8x8的帧内预测模式块的第一 VLC表阵列选择表,以及专用于具有大小16x16的帧内预测模式的第二 VLC表阵列选择表。选定表阵列产生VLC码字cn,其又用以产生可用以译码与视频数据块相关联的语法元素的码字。
[0064]图4中展示此些表的一个实例。考虑用于大小为8x8的变换块的帧内译码的第一VLC表阵列选择表
[0065]g_auiVlcTable8 X 8Intra[29]
[0066]以及用于大小为16X 16或以上的变换块的帧内译码的第二 VLC表阵列选择表
[0067]g_auiVlcTabIe16x16Intra[29]。
[0068]两个VLC表阵列选择表之间的差异表不为图4中的向量。
[0069]根据图4的实例,第一和第二 VLC表阵列选择表中的每一者界定可用于视频数据块内的多个不同系数位置的VLC阵列。举例来说,第一 VLC表具有值8,指示多个表阵列中的第九VLC表阵列将用于8x8经帧内译码块的第一系数。如上文还展示,第一 VLC表阵列选择表中的接下来四个条目具有值零(O),指示多个VLC表阵列中的第一 VLC表阵列将用于8x8经帧内译码块的第二到第五系数位置。如图4中还展示,第一 VLC表阵列包含其它条目,其值指示应用于8x8经帧内译码块的其它系数位置的不同VLC表阵列。
[0070]与图4的实例一致,第一和第二 VLC表阵列选择表各自包含二十九(29)个条目。因此,为了存储上文所示的第一和第二 VLC表阵列选择表,译码器250、350各自存储58个条目。在一些实例中,译码器250、350还可存储专用于预测类型(帧内、帧间)和/或块大小的不同可能值的其它VLC表阵列选择表。由此,在一些实例中,译码器250、350存储多个VLC表阵列选择表是不合意的,尤其是在可用于译码器250、350的存储器的量为有限的情况下。
[0071]本文所述的技术是针对减少译码器250、350存储VLC表阵列选择表所使用的存储器的量,如上文所述。根据这些技术,代替于存储专用于第一视频块特性(例如,经帧内译码的8x8)的第一 VLC表阵列选择表和专用于第二视频块特性(例如,经帧内译码的16x16)的第二 VLC表阵列选择表,编码器仅存储相应表中的一者。根据这些技术,代替于如上文所述存储第二 VLC表阵列选择表,译码器250、350存储如由图4中的向量表示的第一 VLC表阵列选择表与第二 VLC表阵列选择表之间的差异的指示。译码器250、350使用所述表之间的差异的所存储指不,来从第一 VLC表阵列选择表重构第二 VLC表阵列选择表的至少一部分。以此方式,用以存储第一和第二 VLC表阵列选择表(以及其它VLC表阵列选择表)的存储器的量可与其它技术相比有利地减少。
[0072]再次参考图4的实例,第二 VLC表阵列选择表的仅单个条目(最后条目)与第一VLC表阵列选择表不同。根据本文所述的技术,译码器250、350存储第二 VLC表的最后条目的替代值的指示和/或第一 VLC表阵列选择表的最后条目与第二 VLC表的最后条目之间的差异,例如图4的向量。译码器250、350基于此指示而使用所存储的第一 VLC表阵列选择表来重构第二 VLC表选择表。在其它实例中,在两个VLC表阵列选择表之间有一个以上条目不同时,应用同一技术。
[0073]在一些实例中,上文所述的第一 VLC表阵列选择表与第二 VLC表阵列选择表之间的差异的此指示包含相应表之间的一个或一个以上差异的位置的指示,以及指示所述差异的值。举例来说,根据上文所述的第一和第二 VLC表阵列选择表,译码器250、350存储第二VLC表阵列选择表的位置27不同于第一 VLC表阵列选择表的位置27的指不。译码器250、350还存储所述差异的量值的指示。举例来说,译码器250、350存储第二 VLC表阵列选择表中的第28条目(位置27)的值具有值二(2)的指示。根据另一实例,译码器250、350存储相应表中的第28条目之间的差异的指示。接着可以数学方式从第一表重构第二表。举例来说,在图4中,译码器存储相应的第29条目之间的差异为一(1+1 = 2)的指示。
[0074]举例来说,图5进一步说明使用编码器应用的上文所述的方法。将视频数据块502输入到编码器250,其确定块类型。如果输入的块502为经帧内译码的8x8块,那么编码器使用所存储的第一表504(g_auiVlcTable8x8Intra)来选择VLC阵列表。如果输入的块502为经巾贞内译码的16x16块,那么编码器使用从第一表504重构的第二表506 (g_auiVlcTablel6xl6Intra)来选择VLC阵列表。在任一例子中,表阵列产生VLC码字cn,其又用以产生可用以译码与视频数据块相关联的语法元素的码字。经译码语法元素包括编码器输出508。
[0075]根据本文所述的技术,如果译码器250、350译码8x8帧内预测模式视频数据块,那么译码器250、350使用上文所述的第一 VLC表阵列选择表。然而,如果译码器250、350译码16x16帧内预测模式数据块,那么译码器存取如上文所述的相应第一 VLC表阵列选择表与第二 VLC表阵列选择表之间的差异的指不,以重构第二 VLC表阵列选择表。如上文还描述,译码器250、350使用经重构的第二 VLC表阵列选择表来选择存储在存储器中的多个VLC表阵列中的一 VLC表阵列,以译码视频数据块的至少一个变换系数。
[0076]与本文所述的技术一致,以下是解码器350用来选择存储在存储器中的多个VLC表阵列中的一 VLC表阵列的伪码的一个实例。以下伪码仅为此技术的一个实例,且仅为示
范性目的而提供。在其它实例中,使用差异伪码来实施本文所述的技术。
[0077]
if (inlra ) {
vie = g_aui VlcTablcSxS Inlra;
if (blsizc==8 Il (blsizo= 16&& 1?=27)) {
xWrit.cVlc( vie, cn );
}
else if (blsizo= 16&&k=28)) {
xWrileVlc(2.cn);
}
}
[0078]根据以上伪码,译码器250、350首先确定视频数据块的预测类型。如上文所示,如果预测类型为帧内预测类型,那么译码器250、350选择VLC表阵列选择表g_auiVlcTable8x8Intra,其是针对经帧内预测的8x8视频数据块。译码器250、350还确定正被译码的视频数据块的大小,以及所述块的当前系数的位置。译码器250、350进一步将块的大小和系数位置与至少一个值进行比较。举例来说,如上文的伪码中所示,译码器250,350确定视频数据块的大小是等于8 (即,4x4块大小)还是大于或等于16,其中位置小于或等于27。如果这些条件中的任一者为真,那么译码器250、350使用先前所识别的g_auiVlcTable8x8Intra VLC表选择表来确定VLC表阵列。译码器250、350进一步选择所确定的VLC表阵列的VLC表,且将代码数目cn输入到选定VLC表中(在编码器259的情况下,解码器350输入VLC码字以确定代码数目cn)。
[0079]如上文的实例伪码中还展示,如果上文所述的条件不为真,那么译码器250、350确定视频数据块的大小是否大于或等于块大小16x16,且位置k是否等于28。如果这两个条件均为真,那么译码器250、350使用第29条目(位置28)处的值2来选择VLC表阵列,而不是基于表g_auiVlcTable8x8Intra来选择VLC表阵列。
[0080]因此,译码器250、350基于相应表之间的差异的所存储指示(即,值2)从所存储的第一 VLC表阵列选择表重构第二 VLC表阵列选择表g_auiVlcTablel6xl6Intra。以此方式,第二 VLC表阵列选择表g_aui VlcTablel6xl6Intra无需由译码器250、350存储,从而减少译码器250、350用来译码视频数据块的存储器的量。[0081]在一个或一个以上实例中,本文所述的功能至少部分地在硬件(例如专用硬件组件或处理器)中实施。更大体来说,所述技术实施于硬件、处理器、软件、固件或其任何组合中。如果实施于软件中,那么所述功能作为一个或一个以上指令或代码存储在计算机可读媒体上或经由计算机可读媒体而传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于例如数据存储媒体等有形媒体,或包含例如根据通信协议促进计算机程序从一处到另一处的传送的任何媒体的通信媒体。以此方式,计算机可读媒体通常对应于(I)非暂时性的有形计算机可读存储媒体,或(2)例如信号或载波的通信媒体。数据存储媒体潜在地为可由一个或一个以上计算机或一个或一个以上处理器存取以检索指令、代码和/或数据结构以供实施本发明中所描述的技术的任何可用媒体。计算机程序产品任选地包含计算机可读媒体。
[0082]作为实例(而非限制),此些计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-R0M或其它光盘存储装置、磁盘存储装置,或其它磁性存储装置,快闪存储器,或可用于存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。并且,恰当地将任何连接称为计算机可读媒体,即计算机可读传输媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字订户线(DSL)或例如红外线、无线电及微波等无线技术从网站、月艮务器或其它远程源传输指令,那么同轴缆线、光纤缆线、双绞线、DSL或例如红外线、无线电及微波等无线技术包含于媒体的定义中。然而,应理解,计算机可读存储媒体和数据存储媒体不包含连接、载波、信号或其它瞬态媒体,而是针对非瞬态有形存储媒体。如本文中所使用,磁盘及光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘使用激光以光学方式再现数据。上文的组合也应包含在计算机可读媒体的范围内。
[0083]指令可由一个或一个以上处理器执行,例如一个或一个以上中央处理单元(CPU)、数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA),或其它等效集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指上述结构或适合于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文所述的功能性提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或并入在组合式编解码器中。并且,可将所述技术完全实施于一个或一个以上电路或逻辑元件中。
[0084]本发明的技术可潜在地在各种各样的装置或设备中实施,包含无线手机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述各种组件、模块或单元,以强调经配置以执行所揭示技术的装置的功能方面,但不一定要求通过不同硬件单元来实现。相反,如上文所述,各种单元可组合在编解码器硬件单元中,或由互操作硬件单元的集合提供,包含如上文所述的一个或一个以上处理器,结合合适的软件和/或固件。
[0085]已描述了各种实例。这些和其它实例在所附权利要求书的范围内。
【权利要求】
1.一种译码视频数据块的方法,其包括: 将第一 VLC表阵列选择表存储在存储器中; 存储所述第一 VLC表阵列选择表与第二 VLC表阵列选择表之间的至少一个差异的指示; 使用所述第一 VLC表阵列选择表与第二 VLC表阵列选择表之间的所述差异的所述所存储指不,基于所述第一 VLC表阵列选择表来重构所述第二 VLC表阵列选择表的至少一个条目;以及 使用所述第二 VLC表阵列选择表的所述经重构的至少一个条目来译码至少一个视频数据块。
2.根据权利要求1所述的方法,其中使用所述第二VLC表阵列选择表的所述经重构的至少一个条目来译码所述至少一个视频数据块包括:使用所述经重构的至少一个条目来选择多个VLC表阵列中的一 VLC表阵列,以译码与所述至少一个视频数据块相关联的至少一个语法元素。
3.根据权利要求1所述的方法,其中存储所述第一VLC表阵列选择表与第二 VLC表阵列选择表之间的至少一个差异的所述指示包括:存储所述第二 VLC表阵列选择表中不同于所述第一 VLC表阵列选择表中的对应条目的所述至少一个条目的值。
4.根据权利要求3所述的方法,其中重构所述第二VLC表阵列选择表的所述至少一个条目包括用所述第二 VLC表阵列选择表的所述至少一个条目来代替所述第一 VLC表阵列选择表中的所述对应条目。
5.根据权利要求1所述的方法,其中存储所述第一VLC表阵列选择表与第二 VLC表阵列选择表之间的至少一个差异的所述指示包括:存储所述第二 VLC表阵列选择中的所述至少一个条目与所述第一 VLC表阵列选择表中的至少一个对应条目之间的差异的值。
6.根据权利要求5所述的方法,其中重构所述第二VLC表阵列选择表包括从所述第一VLC表阵列选择表中的所述对应条目添加或减去所述差异的所述值。
7.根据权利要求1所述的方法,其中由计算装置的处理器执行所述方法。
8.根据权利要求1所述的方法,其中由视频编码器执行所述方法。
9.根据权利要求1所述的方法,其中由视频解码器执行所述方法。
10.一种经配置以译码至少一个视频数据块的装置,其包括: 处理器,其经配置以: 将第一 VLC表阵列选择表存储在存储器中; 存储所述第一 VLC表阵列选择表与第二 VLC表阵列选择表之间的至少一个差异的指示; 使用所述第一 VLC表阵列选择表与第二 VLC表阵列选择表之间的所述差异的所述所存储指不,基于所述第一 VLC表阵列选择表来重构所述第二 VLC表阵列选择表的至少一个条目;以及 使用所述第二 VLC表阵列选择表的所述经重构的至少一个条目来译码至少一个视频数据块。
11.根据权利要求10所述的装置,其中使用所述第二VLC表阵列选择表的所述经重构的至少一个条目来译码所述至少一个视频数据块包括:使用所述经重构的至少一个条目来选择多个VLC表阵列中的一 VLC表阵列,以译码与所述至少一个视频数据块相关联的至少一个语法元素。
12.根据权利要求10所述的装置,其中存储所述第一VLC表阵列选择表与第二 VLC表阵列选择表之间的至少一个差异的所述指示包括存储所述第二 VLC表阵列选择表中不同于所述第一 VLC表阵列选择表中的对应条目的所述至少一个条目的值。
13.根据权利要求12所述的装置,其中重构所述第二VLC表阵列选择表的所述至少一个条目包括用所述第二 VLC表阵列选择表的所述至少一个条目来代替所述第一 VLC表阵列选择表中的所述对应条目。
14.根据权利要求10所述的装置,其中存储所述第一VLC表阵列选择表与第二 VLC表阵列选择表之间的至少一个差异的所述指示包括:存储所述第二 VLC表阵列选择中的所述至少一个条目与所述第一 VLC表阵列选择表中的至少一个对应条目之间的差异的值。
15.根据权利要求14所述的装置,其中重构所述第二VLC表阵列选择表包括从所述第一 VLC表阵列选择表中的所述对应条目添加或减去所述差异的所述值。
16.根据权利要求10所述的装置,其中所述处理器包括视频编码器。
17.根据权利要求10所述的装置,其中所述处理器包括视频解码器。
18.一种计算机可读存储媒体,其存储经配置以致使计算装置进行以下操作的指令: 将第一 VLC表阵列选择表存储在存储器中;存储所述第一 VLC表阵列选择表与第二 VLC表阵列选择表之间的至少一个差异的指示; 使用所述第一 VLC表阵 列选择表与第二 VLC表阵列选择表之间的所述差异的所述所存储指不,基于所述第一 VLC表阵列选择表来重构所述第二 VLC表阵列选择表的至少一个条目;以及 使用所述第二 VLC表阵列选择表的所述经重构的至少一个条目来译码至少一个视频数据块。
19.一种经配置以译码至少一个视频数据块的装置,其包括: 用于将第一 VLC表阵列选择表存储在存储器中的装置; 用于存储所述第一 VLC表阵列选择表与第二 VLC表阵列选择表之间的至少一个差异的指示的装置; 用于使用所述第一 VLC表阵列选择表与第二 VLC表阵列选择表之间的所述差异的所述所存储指示而基于所述第一 VLC表阵列选择表来重构所述第二 VLC表阵列选择表的至少一个条目的装置;以及 用于使用所述第二 VLC表阵列选择表的所述经重构的至少一个条目来译码至少一个视频数据块的装置。
【文档编号】H04N19/82GK103650514SQ201280033876
【公开日】2014年3月19日 申请日期:2012年7月11日 优先权日:2011年7月11日
【发明者】马尔塔·卡切维奇, 郭立威, 翔林·王 申请人:高通股份有限公司