首页> 中国专利> 使用自适应可变长度码的视频压缩

使用自适应可变长度码的视频压缩

摘要

自适应可变长度编码技术可用于对由预测视频编码产生的残余块系数进行熵编码。所述技术可应用于使用零游程对非零变换系数的位置进行编码的方案。可将例如块结束(EOB)移位表和VLC码簿选择表等编码参数保持为内部状态,而不是将其随同经编码的视频片数据一起发送。可基于在编码过程期间收集的统计周期性地更新表条目。针对编码条件(例如编码循环),特殊EOB移位表可使符号集中的特殊EOB符号的位置适应于具有大于一的量值的显著性系数的可能性。可使用单独的EOB移位表、特殊的EOB移位表和VLC码簿选择表以独立于亮度块的方式编码色度块。

著录项

  • 公开/公告号CN101491098A

    专利类型发明专利

  • 公开/公告日2009-07-22

    原文格式PDF

  • 申请/专利权人 高通股份有限公司;

    申请/专利号CN200780025928.3

  • 发明设计人 叶琰;鲍易亮;

    申请日2007-07-08

  • 分类号H04N7/26;

  • 代理机构北京律盟知识产权代理有限责任公司;

  • 代理人刘国伟

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 22:23:16

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-06-28

    未缴年费专利权终止 IPC(主分类):H04N7/26 授权公告日:20130424 终止日期:20180708 申请日:20070708

    专利权的终止

  • 2013-04-24

    授权

    授权

  • 2009-09-16

    实质审查的生效

    实质审查的生效

  • 2009-07-22

    公开

    公开

说明书

本申请案主张2006年7月12日申请的第60/830,491号美国临时申请案的权益,所述申请案的全部内容以引用的方式并入本文中。

技术领域

本发明涉及数字视频,且更明确地说,涉及使用可变长度码(VLC)的数字视频压缩。

背景技术

数字视频能力可并入广泛范围的装置中,包括数字电视、数字直播系统、无线通信装置、个人数字助理(PDA)、膝上型或桌上型计算机、数字相机、数字记录装置、视频游戏装置、蜂窝式或卫星无线电电话或其类似物。数字视频装置实施视频压缩技术,例如MPEG-2、MPEG-4或H.264/MPEG-4高级视频编码(AVC),以更有效地传输和接收数字视频。视频压缩技术执行空间和时间预测以减少或移除为视频信号所原来的冗余。

在视频编码中,视频压缩通常包括空间预测、运动估计和运动补偿。具体来说,帧内编码依空间预测而定以减少或移除给定视频帧内的视频中的空间冗余。帧间编码依时间预测而定以减少或移除邻近帧内的视频中的时间冗余。对于帧间编码来说,视频编码器执行运动估计以追踪两个或两个以上邻近帧之间的匹配视频块的移动。运动估计产生运动向量,其指示视频块相对于一个或一个以上参考帧中的对应视频块的位移。运动补偿使用运动向量以从参考帧产生预测视频块。在运动补偿之后,通过从原始视频块减去预测视频块来形成残余视频块。

视频编码器应用转换、量化和熵编码过程以进一步减少残余块的位速率。熵编码通常涉及应用算术码或可变长度码(VLC)以进一步压缩由转换和量化运算产生的残余系数。实例包括内容自适应二进制算术编码(CABAC)和内容自适应可变长度编码(CAVLC),其在一些编码器中可用作替代性熵编码模式。通过使用块中的每一者的运动信息和残余信息,视频解码器执行反运算以重构经编码的视频。

发明内容

大体来说,本发明针对数字视频的自适应可变长度编码(VLC)技术。具体来说,自适应VLC技术可用于由预测编码过程产生的残余系数的熵编码。所述技术可应用于使用零游程(zero run)来编码非零变换系数的位置的视频编码方案。作为一实例,所述技术可应用于用于可缩放视频编码(SVC)的细粒度可缩放性(FGS)层中的码变换系数。自适应VLC技术可自适应地调整VLC过程以促进数字视频编码器中减小的复杂性和较大的效率。

自适应VLC技术可将块结束(EOB)移位表和VLC码簿选择表保持为内部状态,而不是以经编码的视频片数据来发送其。可基于在编码通过期间收集的编码统计而周期性地更新表条目。在另一方面中,自适应VLC技术可保持特殊EOB(sEOB)移位表,所述移位表使符号集中的sEOB符号的位置适应具有在块内具有大于一的量值的非零系数的可能性,且可编码单独编码参数中的非零系数的量值信息。在一额外方面中,所述自适应VLC技术可通过使用分别调谐为色度DC块、色度AC块和亮度块的单独EOB移位表、特殊EOB移位表和VLC码簿选择表,以独立于彼此且独立于亮度块的方式来编码色度DC和AC块。

在一方面中,本发明提供一种视频编码装置,其包含可变长度码(VLC)单元,所述VLC单元经配置以使用VLC参数执行数字视频块系数的VLC编码、在数字视频块系数的VLC编码期间收集编码统计,和基于所收集的编码统计在VLC编码期间调整VLC参数中的一者或一者以上。

在另一方面中,本发明提供一种方法,其包含使用VLC参数执行数字视频块系数的VLC编码、在数字视频块系数的VLC编码期间收集编码统计,和基于所收集的编码统计在VLC编码期间调整VLC参数中的一者或一者以上。

在一额外方面中,本发明提供一种视频编码装置,其包含可变长度码(VLC)单元,所述VLC单元经配置以使用VLC参数执行数字视频块系数的VLC编码,其中VLC参数包含特殊EOB(sEOB)移位表,所述移位表针对多个不同编码条件中的每一者当块包括具有大于一的量值的一个或一个以上非零系数时基于块结束的可能性来指示包含零游程符号、块结束(EOB)符号和sEOB符号的符号集内的sEOB符号的索引。

在另一方面中,本发明提供一种方法,其包含产生可变长度码(VLC)参数,和使用VLC参数执行数字视频块系数的VLC编码,其中VLC参数包含特殊EOB(sEOB)移位表,所述移位表针对多个不同编码条件中的每一者当块包括具有大于一的量值的一个或一个以上非零系数时基于块结束的可能性来指示包含零游程符号、块结束(EOB)符号和sEOB符号的符号集内的sEOB符号的索引。

本发明中所述的技术可实施于硬件、软件、固件或其任何组合中。如果实施于软件中,则软件可执行于一个或一个以上处理器中,例如微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或数字信号处理器(DSP)。执行技术的软件可最初存储于计算机可读媒体中且加载和执行于处理器中。因此,本发明还涵盖包含计算机可读媒体的计算机程序产品,所述计算机可读媒体包含用以促使处理器执行本发明中所描述的多种技术中的任一者的指令。

在附图和以下描述内容中陈述本发明的一个或一个以上方面的细节。本发明中所描述的技术的其它特征、目标和优势将从描述内容和图式和从权利要求书变得显而易见。

附图说明

图1为说明视频编码和解码系统的框图。

图2为说明视频编码器的一实例的框图。

图3为说明视频解码器的一实例的框图。

图4为说明与可缩放视频编码(SVC)片的基础层相关联的块中的残余系数的图。

图5为说明与SVC片的细粒度可缩放性(FGS)增强层相关联的块中的残余系数分类的图。

图6为说明将非零系数编码为残余系数块中的零游程的图。

图7为说明与SVC片的FGS增强层相关联的块中的显著性系数和精化系数的基于循环的编码的图。

图8为根据本发明的一方面的经配置以应用自适应VLC过程的熵编码单元的框图。

图9为根据本发明的一方面的经配置以应用自适应VLC过程的熵解码单元的框图。

图10为说明根据本发明的一方面的自适应VLC过程的流程图。

图11为更详细地说明自适应VLC过程的流程图。

具体实施方式

图1为说明视频编码和解码系统10的框图。如图1中所示,系统10包括源装置12,源装置12经由通信信道16将经编码的视频传输到接收装置14。源装置12可包括视频源18、视频编码器20和传输器22。接收装置14可包括接收器24、视频解码器26和视频显示器装置28。系统10可经配置以应用数字视频的自适应可变长度编码(VLC)技术。具体来说,自适应VLC技术可用于由预测视频编码过程产生的残余块系数的熵编码。所述技术可应用于使用零游程来编码非零变换系数的位置的视频编码方案。作为一实例,所述技术可应用于用于可缩放视频编码(SVC)的细粒度可缩放性(FGS)层中的显著性编码的码变换系数。由系统10应用的自适应VLC技术可自适应地调整VLC过程以促进数字视频编码器中减小的复杂性和较大的效率。

在一方面中,系统10可经配置以应用自适应VLC技术,所述技术将块结束(EOB)移位表和VLC码簿选择表保持为内部状态,而不是以经编码的视频片数据来发送其。举例来说,视频编码器20可基于在编码过程期间收集的统计而周期性地更新表条目。在另一方面中,视频编码器20可保持特殊EOB移位表,所述移位表使符号集中的特殊EOB符号的位置适应在当前编码条件下具有大于一的量值的显著性系数的可能性。如下文将更详细地描述,特殊EOB参数可由两个符号(例如,sEOB和termSym)表示。在一额外方面中,视频编码器20可通过使用单独EOB移位表、特殊EOB移位表和VLC码簿选择表(例如,结合自适应VLC方案),以独立于亮度块的方式来编码DC和AC色度块。

在图1的实例中,通信信道16可包含任何无线或有线通信媒体,例如射频(RF)频谱或一个或一个以上物理传输线,或无线与有线媒体的任何组合。信道16可形成基于包的网络的部分,例如局域网络、广域网络或全球网络(例如因特网)。通信信道16通常表示任何适合的通信媒体,或不同通信媒体的集合,以用于将视频数据从源装置12传输到接收装置14。

源装置12产生视频以用于传输到目的地装置14。然而,在一些状况下,装置12、14可以大体上对称的方式来操作。举例来说,装置12、14中的每一者可包括视频编码和解码组件。因此,系统10可支持视频装置12、14之间的单向或双向视频传输,例如,以用于视频串流、视频广播或视频电话。

视频源18可包括视频俘获装置,例如一个或一个以上视频相机、含有先前所俘获的视频的视频档案或由视频内容提供者馈给的现场视频(live video)。作为另一替代,视频源18可产生基于计算机图形的数据作为源视频,或现场视频与计算机产生的视频的组合。在一些状况下,如果视频源18为相机,则源装置12和接收装置14可形成所谓的相机电话或视频电话。在每一状况下,所俘获、预先俘获或计算机产生的视频可由视频编码器20编码以用于经由传输器22、信道16和接收器24从视频源装置12传输到视频接收装置14的视频解码器26。显示器装置28可包括多种显示器装置中的任一者,例如液晶显示器(LCD)、等离子体显示器或有机发光二极管(OLED)显示器。

视频编码器20和视频解码器26可经配置以支持空间、时间和/或信噪比(SNR)可缩放性的可缩放视频编码。在一些方面中,视频编码器20和视频解码器26可经配置以支持SVC的细粒度SNR可缩放性(FGS)编码。编码器20和解码器26可通过支持基础层和一个或一个以上可缩放增强层的编码、传输和解码来支持各种程度的可缩放性。对于可缩放视频编码来说,基础层携载具有最小质量水平的视频数据。一个或一个以上增强层携载额外位流以支持较高空间、时间和/或SNR水平。

视频编码器20和视频解码器26可根据视频压缩标准如MPEG-2、MPEG-4、ITU-TH.263或ITU-T H.264/MPEG-4高级视频编码(AVC)来操作。尽管在图1中未图示,但在一些方面中,视频编码器20和视频解码器26可分别与音频编码器和解码器集成,且包括适当多路复用-解多路复用单元或其它硬件和软件,以处理共用数据流或单独数据流中的音频与视频两者的编码。如果可应用,则多路复用-解多路复用单元可遵守ITU H.223多路复用器协议,或例如用户数据报协议(UDP)的其它协议。

H.264/MPEG-4(AVC)标准由作为称作联合视频小组(JVT)的集体伙伴关系的产物的ITU-T视频编码专家组(VCEG)连同ISO/IEC动画专家组(MPEG)共同制定。H.264标准由ITU-T研究组描述于ITU-T推荐H.264的一般视听服务的高级视频编码(Advanced video coding for generic audiovisual services)中,且所注明日期为03/2005,所述标准在本文中可称作H.264标准或H.264规范,或H.264/AVC标准或规范。

联合视频小组(JVT)不断从事H.264/MPEG-4AVC的可缩放视频编码(SVC)扩展。发展的SVC扩展的规范采用联合草案(Joint Draft,JD)的形式。由JVT创立的联合可缩放视频模型(JSVM)实施用于可缩放视频中的工具,其可在系统10内用于本发明中所述的各种编码任务。关于细粒度SNR可缩放性(FGS)编码的详细信息可在联合草案文献中找到,例如,可在联合草案6(SVC JD6),托马斯维根(Thomas Wiegand),加里沙利文(Gary Sullivan),朱利安莱切尔(Julien Reichel),海科舒瓦茨(HeikoSchwarz),和马西亚斯玮恩(Mathias Wien)的“联合草案6(Joint Draft 6):可缩放视频编码(Scalable Video Coding),”JVT-S201,2006年4月,日内瓦(Geneva),且在联合草案9(SVC JD9),托马斯维根(Thomas Wiegand),加里沙利文(Gary Sullivan),朱利安莱切尔(Julien Reichel),海科舒瓦茨(Heiko Schwarz),和马西亚斯玮恩(MathiasWien)的“SVC修正的联合草案9(Joint Draft 9 of SVC Amendment),”JVT-V 201,2007年1月,摩洛哥(Morocco),马拉喀什(Marrakech)中找到。

在一些方面中,对于视频广播来说,在本发明中所述的技术可应用于增强型H.264视频编码,以用于在陆地移动多媒体多播(TM3)系统中使用仅前向链路(FLO)空中接口规范“用于陆地移动多媒体多播的仅前向链路空中接口规范(Forward Link Only AirInterface Specification for Terrestrial Mobile Multimedia Multicast),”来传递实时视频服务,所述规范将作为技术标准TIA-1099(“FLO规范”)出版。所述FLO规范包括定义位流语法和语义的实例和适于FLO空中接口的解码过程。或者,可根据其它标准如DVB-H(手持设备数字视频广播)、ISDB-T(综合服务数字地面广播)或DMB(数字媒体广播)来广播视频。因此,源装置12可为移动无线终端、视频串流服务器或视频广播服务器。然而,在本发明中所描述的技术不限于任何特定类型的广播、多播或点对点系统。在广播的状况下,源装置12可将视频数据的若干信道广播到多个接收装置,每一接收装置可类似于图1的接收装置14。

视频编码器20和视频解码器26每一者可实施为一个或一个以上微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。视频编码器20和视频解码器26中的每一者可包括于一个或一个以上编码器或解码器中,其任一者可在相应移动装置、订户装置、广播装置、服务器或其类似物中集成为组合编码器/解码器(CODEC)的部分。另外,源装置12和接收装置14每一者可包括用于传输和接收经编码的视频的适当调制、解调制、频率转换、滤波和放大器组件,在可应用时包括射频(RF)无线组件和足以支持无线通信的天线。然而为了易于说明,在图1中未图示所述组件。

视频序列包括一系列视频帧。视频编码器20对个别视频帧内的像素块进行操作以编码视频数据。视频块可具有固定或变化的大小,且大小可根据所规定的编码标准而不同。每一视频帧包括一系列片。每一片可包括一系列宏块,其可被布置成子块。作为一实例,ITU-T H.264标准支持以各种块大小的帧内预测,例如16×16、8×8、4×4(针对亮度分量),和8×8(针对色度分量),以及以各种块大小的帧间预测,例如16×16、16×8、8×16、8×8、8×4、4×8和4×4(针对亮度分量)和对应缩放大小(针对色度分量)。

较小视频块可提供较好分辨率,且可用于定位包括较高水平细节的视频帧。大体来说,宏块(MB)和各种子块可被视为视频块。另外,片可被视为一系列视频块,例如MB和/或子块。每一片可为可独立解码的单元。在预测之后,可对8×8残余块或4×4残余块执行变换,且在使用帧内16×16预测模式的情况下,额外变换可应用于色度分量或亮度分量的4×4块的DC系数。

图2为说明如图1中所示的视频编码器20的一实例的框图。视频编码器20可执行视频帧内的块的帧内编码和帧间编码。帧内编码依空间预测而定以减少或移除给定视频帧内的视频中的空间冗余。帧间编码依时间预测而定以减少或移除视频序列的邻近帧内的视频中的时间冗余。对于帧间编码来说,视频编码器20执行运动估计以追踪邻近帧之间的匹配视频块的移动。

如图2中所示,视频编码器20接收待编码的视频帧内的当前视频块30。在图2的实例中,视频编码器20包括运动估计单元32、参考帧存储器34、运动补偿单元36、块变换单元38、量化单元40、反量化单元42、反变换单元44和熵编码单元46。回路中解块滤波器(未图示)可应用于滤波器块以移除成块假影。视频编码器20还包括加法器48和加法器50。图2说明用于视频块的帧间编码的视频编码器20的时间预测组件。尽管为了易于说明起见在图2中未图示,但视频编码器20还可包括用于一些视频块的帧内编码的空间预测组件。

运动估计单元32将视频块30与一个或一个以上邻近视频帧中的块进行比较以产生一个或一个以上运动向量。可从参考帧存储器34检索邻近帧,参考帧存储器34可包含任何类型的存储器或数据存储装置以存储从先前编码的块重构的视频块。可对可变大小(例如,16×16、16×8、8×16、8×8或较小块大小)的块执行运动估计。运动估计单元32识别最精密地匹配当前视频块30的邻近帧中的一个或一个以上块(例如,基于速率失真模型),且确定邻近帧中的块与当前视频块之间的位移。以此为基础,运动估计单元32产生一个或一个以上运动向量(MV),其指示当前视频块30与来自用以编码当前视频块30的参考帧的一个或一个以上匹配块之间位移的量值和轨迹。

运动向量可具有1/2或1/4像素精度,或甚至更精细的精度,从而允许视频编码器20以比整数像素定位更高的精度追踪运动且获得较好的预测块。当使用具有分数像素值的运动向量时,在运动补偿单元36中进行内插操作。运动估计单元32为使用某一标准(例如速率失真模型)的视频块识别最佳块分割和运动向量。举例来说,在双向预测的状况下,可不仅存在运动向量。通过使用所得块分割和运动向量,运动补偿单元36形成预测视频块。

视频编码器20通过在加法器48处从原始的当前视频块30减去由运动补偿单元36产生的预测视频块来形成残余视频块。块变换单元38将变换(例如用于H.264/AVC中的4×4或8×8整数变换)应用于残余块,从而产生残余变换块系数。量化单元40量化残余变换块系数以进一步减小位速率。熵编码单元46熵编码经量化的系数以更进一步减小位速率。

熵编码单元46操作为可变长度编码(VLC)单元以将VLC编码应用于经量化的块系数。具体来说,熵编码单元46可经配置以使用可存储为内部状态的VLC参数集执行数字视频块系数的VLC编码、在数字视频块系数的VLC编码期间收集编码统计,和基于所收集的编码统计在VLC编码期间调整VLC参数中的一者或一者以上。大体来说,如将(例如)参看图3所描述,视频解码器26执行反运算(包括VLC解码),以解码和重构经编码的视频。

反量化单元42和反变换单元44分别应用反量化和反变换以重构残余块。加法器50将经重构的残余块添加到由运动补偿单元36产生的运动补偿预测块以产生存储于参考帧存储器34中的经重构的视频块。经重构的视频块由运动估计单元32和运动补偿单元36使用以编码随后视频帧中的块。

图3为说明视频解码器26的一实例的框图。视频解码器26可执行视频帧内的块的帧内解码和帧间解码。如图3中所示,视频解码器26接收已由视频编码器20编码的经编码的视频位流。在图3的实例中,视频解码器26包括熵解码单元52、运动补偿单元54、反量化单元56、反变换单元58和参考帧存储器62。视频解码器26还可包括滤波加法器64的输出的回路中解块滤波器(未图示)。视频解码器26还包括加法器64。图3说明用于视频块的帧间解码的视频解码器26的时间预测组件。尽管在图3中未图示,但视频解码器26还可包括用于一些视频块的帧内解码的空间预测组件。

熵解码单元52从位流量化的残余系数、宏块编码模式和运动信息(其可包括运动向量和块分割)接收经编码的视频位流且进行解码。因此,熵解码单元52充当VLC解码单元。举例来说,为了解码来自经编码的位流的经量化的残余系数,如同图2的熵编码单元46,图3的熵解码单元52可使用可存储为内部状态的VLC参数集如本发明中所述而执行数字视频块系数的自适应VLC解码、在数字视频块系数的VLC解码期间收集编码统计,和基于所收集的编码统计在VLC解码期间调整VLC参数中的一者或一者以上。然而,熵解码单元52以相对于图2的熵编码单元46相反的方式执行VLC解码以从经编码的位流检索经量化的块系数。

运动补偿单元54从参考帧存储器62接收运动向量和块分割及一个或一个以上经重构的参考帧以产生预测视频块。反量化单元56反量化(即,解量化)经量化的块系数。反变换单元58将反变换(例如,反DCT或反4×4或8×8整数变换)应用于系数以产生残余块。接着,加法器64对预测视频块与残余块求和以形成经解码的块。解块滤波器(未图示)可应用于滤波经解码的块以移除成块假影。接着,将经滤波的块放置于参考帧存储器62中,参考帧存储器62提供用于解码随后视频帧的参考帧且还产生经解码的视频以驱动显示器装置28(图1)。

当前,由来自ISO/IEC MPEG和ITU-T VCEG的视频编码专家组成的联合视频小组(JVT)致力于SVC标准,其为H.264/AVC的可缩放视频编码扩展。参与者使用被称作JSVM(联合可缩放视频模型)的共用软件。JSVM支持经组合的可缩放性。SVC位流可具有细粒度可缩放性、空间可缩放性、时间可缩放性或所述三种可缩放性的任何组合。

细粒度可缩放为视频编码的重要和非常需要的特征。此特征允许经压缩视频位流被几乎任意地截断,而同时为最终用户提供经解码的视频质量的适度降级。在细粒度可缩放性(FGS)中,可任意地截断增强层位流。当视频解码器26接收且解码FGS层中的更多位时,其将产生更好的视频质量。此外,已以视频质量的改善在整个视频帧上均匀展开(与仅集中于帧的某一空间区域内相对)的方式设计JSVM中的FGS,因为后者状况在视觉上将为最终观看者所讨厌。

FGS可使用位平面编码实现视频质量的适度改善。如果使用量化参数QP(例如,在量化单元40(图2)中)量化基础或先前层视频帧,则使用将量化步长有效切成两半的量化参数循环(QP-6)而量化当前增强层视频。由于较低量化步长,所以较多残余变换系数将在增强层中变为非零。

增强层中的系数可大体分为三种类型:非显著性系数(non-significant coefficient)、显著性系数(significant coefficient)和精化系数(refinement coefficient)。非显著性系数为在增强层中具有零值,基础或先前层中的对应系数也为零的系数。显著性系数为在增强层中为非零,但基础或先前层中的对应系数为零的系数。精化系数为基础或先前层中的对应系数已为非零(即,显著性)的系数。基础或先前层中的所述非零系数的值由当前增强层中的对应系数的值精化。

图4为说明与可缩放视频编码(SVC)片的基础层相关联的块中的残余块系数的图。图5为说明与SVC片的细粒度可缩放性(FGS)增强层相关联的块中的残余块系数分类的图。在图4的实例中,基础或先前层块包括两个非零残余变换系数66、68和大部分零值残余变换系数70(灰色)。在图5的实例中,FGS层块包括非显著性系数72(灰色)、具有交叉影线的显著性系数74、76和具有点图案的精化系数78、80。图5的FGS块中的精化系数78、80对应于图4的基础或先前层块中的非零系数66、68。如图5中所示,显著性系数可具有大于1的量值。举例来说,在图5的实例中,显著性系数76具有量值2。应注意,尽管精化系数(例如图5中的精化系数78)可具有值0,但其可被视为非零系数,因为对应基础或先前层系数为非零的。因此,在本发明中,显著性系数和精化系数有时被共同称作非零系数。

类似于H.264/AVC,SVC JD9也支持两种熵编码模式:基于上下文的自适应二进制算术编码(CABAC)模式和基于上下文的自适应可变长度编码(CAVLC)模式。本发明描述自适应VLC技术,其可用于以CAVLC模式中的FGS增强层中的系数的自适应编码。与在SVC JD9中定义的对应方案相比,在本发明中所述的用于编码FGS层系数的技术可极大地减小视频编码器20和/或视频解码器26内的计算复杂性,而同时提供较好的编码性能。

在本发明中所述的自适应VLC技术可不限于编码FGS层中的系数。而是,所述技术可更一般地应用于使用零游程编码非零系数的位置的任何编码系统。所述编码系统的实例为正常单层视频编码器、SVC编码器的离散增强层编码器或SVC编码器的FGS增强层编码器。在当前SVC联合草案中,使用不同机制单独编码FGS层中的显著性系数和精化系数。然而,可将显著性系数和精化系数均编码为零游程,在所述种状况下,在本发明中所述的自适应VLC技术可应用于编码两种类型的系数。出于说明的目的,将在整个本发明中描述自适应VLC技术在FGS增强层中将显著性系数的位置编码为零游程的应用,但不将所述技术的应用限于如上文所述使用零游程编码非零系数的位置的其它编码系统。

在应用基于块的离散变换(例如用于H.264/AVC中的8×8或4×4整数变换)的许多编码系统中,使用零游程编码非零系数的位置。零游程为以某一扫描次序的在非零系数之前的连续零系数的数目。因此,零游程可从块的开始延伸到第一非零系数、连续非零系数之间或最后非零系数与块的最后子带位置之间。当视频解码器26以某一预定义次序接收零游程时,可使用对预定义编码次序和零游程的值的认识来解码所有非零系数的位置。在使用SVC中的VLC编码FGS层时,可将非零系数的位置编码为零游程。在当前联合草案(例如,JD9)中,仅将显著性系数编码为零游程;使用不同机制以分离于显著性系数的方式编码精化系数。在此种状况下,排除精化系数以形成零游程。换句话说,精化系数不计算为零游程的部分,但也不中断零游程。

块结束(EOB)符号可与零游程组合以形成一维符号集。所述EOB符号指示被编码的块的末端。然而,EOB符号未必为视频块中的最后子带位置。而是,EOB可在视频块内的任何位置处出现且用以发信号通知在EOB位置之后不存在非零系数。因此,在编码块中的最后非零系数的位置和标号之后发送EOB符号。如将描述,EOB符号可为规则EOB符号或特殊EOB符号,其每一者传达关于块中的非零系数的不同信息。使用可变长度编码(VLC)进行编码的实际变量为零游程和EOB的符号集中的符号的索引。如下文所述,在此符号集中,较长长度的零游程具有较大索引,且EOB符号的索引可视某些编码条件而定,例如遇到EOB的子带位置。接着,用将较短码字指派给较小索引值的VLC技术来编码符号集。

EOB移位表可用以识别符号集内的EOB符号的索引。举例来说,EOB移位表可用公式表示为EOBshift[]={16,4,3,1,0,....},其中[]指视某些预定义编码条件(例如当前子带位置或编码循环)而定的表索引。举例来说,在最后非零系数之后的子带位置可用以将EOB移位表编入索引。在此种状况下,在锯齿状扫描次序下,在发送图5中的最后非零系数76之后发送EOB符号;且由于在锯齿状扫描次序下在最后非零系数76之后的子带位置为8,所以发送符号值EOBshift[8]=0。随着编码进行到块中含有较高频率子带的一部分中,EOB的可能性增加。因此,为了反映随着经编码的子带位置增加的EOB的增加的可能性,符号集中的EOB符号的索引值减小。结果,EOB移位表可含有单调的非增加条目。此外,图5中所示的块含有具有量值2的非零系数76。在此种状况下,所发送的实际EOB符号不可从EOBshift[]表编入索引。而是,其可替代地从特殊EOB(sEOB)移位表sEOBshift[]编入索引。下文将更详细地阐释此特殊情形。

图6为说明将非零系数编码为残余系数块(块0)中的零游程的图。图7为说明与SVC片的FGS增强层相关联的另一块(块1)中的显著性系数和精化系数的基于循环的编码的图。在图6中,块0包括非零系数82和84和EOB 86。在图7中,块1包括显著性系数88、90、92,精化系数94和EOB 96。

如图6中所示,发送以下信息以识别块中的非零系数的位置:1)游程=0,标号=1(负);2)游程=0,标号=0(正);和3)EOB。如上文所提及,可将由EOB移位表中的条目表示的零游程和EOB组合为一维符号集。接着编码符号集的索引。符号集索引的编码可进一步视某些编码条件而定,例如子带位置或编码循环。作为一实例,可根据零游程或EOB所属的块的子带或子带的丛集来调节VLC编码。如条件的另一实例,还可根据已针对块编码的零游程的数目来调节VLC编码。可在当前编码条件下根据可能性估计进行零游程和EOB符号集的索引的编码。执行条件可能性估计允许VLC编码器更精确地追踪符号可能性且因此实现较好的编码性能。

在当前SVC JD9中,将FGS层中的显著性系数编码为零游程。根据编码循环来调节SVC中的显著性编码。举例来说,用以编码显著性系数的零游程符号的索引的VLC码簿视显著性系数所属的编码循环而定。基于两个变量定义编码循环:(1)以锯齿状扫描次序的零游程的开始位置,和(2)在开始位置之前以锯齿状次序的连续精化系数的数目。在SVC JD9中可找到关于如何定义编码循环的细节。作为一实例,在图7中,三个显著性系数88、90、92分别属于编码循环0、1和4。对于给定编码循环来说,如果在块中不再存在显著性系数,则发送EOB(块结束)符号,例如,由图7中的参考数字96所指示。在图7中,在循环8中针对块1发送EOB符号。具体来说,因为块含有具有量值2的显著性系数92,所以针对块1发送特殊EOB。

在当前SVC JD9中,作为一实例,总共五个不同VLC码簿可用以编码符号集中的零游程和EOB的索引。所述VLC码簿将较短码长度指派给较小索引。针对不同符号可能性分布调谐所述VLC码簿。因此,不同VLC码簿可用以编码可在不同编码条件下具有不同可能性分布的零游程和EOB符号集。可使用VLC码簿选择表来决定特定VLC码簿编码零游程和EOB的符号集的选择。类似于EOB移位表,还可根据某些编码条件将VLC码簿选择表编入索引。在SVC JD9中,当前零游程或EOB所属的编码循环用以将EOB移位表和VLC码簿选择表编入索引。

在FGS增强层中,可单独地编码显著性系数和精化系数。在此种状况下,在确定零游程的长度高达当前编码循环中的下一显著性系数的过程中,在扫描过程期间遇到的任何精化系数无助于零游程。举例来说,在图5中的FGS层块中,显著性系数74的零游程为1而不是3,因为精化系数78和80未计数到显著性系数74的零游程。如先前所阐释,可将显著性系数和精化系数均编码为零游程。然而,不管是否将显著性系数和精化系数单独或均编码为零游程,可应用本发明中所述的自适应VLC技术。

非零系数的量值可大于1。举例来说,在图7中,最后显著性系数92具有量值2。在一些编码系统中,直到针对所述块发送EOB符号之后才可发送大于1的非零系数量值。在编码最后非零系数的位置和标号后,规则EOB符号传达信息:块中无非零系数具有大于1的量值。然而,在块含有具有大于1的量值的一个或一个以上非零系数的情况下,并非使用规则EOB移位表来编码EOB符号,而是可编码从特殊EOB移位表编入索引的特殊EOB符号。在发送特殊EOB符号的VLC码字之后,编码具有大于1的量值的那些非零系数的位置和量值。

在当前SVC JD9中,特殊EOB由sEobBase+termSym形成,其中第一项sEobBase为可从可应用循环的所有可能零游程和规则EOB求微分的值。将sEobBase的值正常计算为sEobBase=numRemainingZeros+1。变量“numRemainingZeros”为以锯齿状次序从最后显著性系数直到块的最后子带的系数的数目减去中间的任何精化系数。以如下方式形成第二项termSym。如果S为块中的显著性系数的总数,N为具有大于1的量值的系数的数目,且M为所述系数的最大量值,则termSym的值为:

如果(M<4)

termSym=2*(N-1)+(M%2)                       (1)

否则

termSym=S*(M-2)+(N-1)

因此,“termSym”的值通过指示具有大于一的量值的显著性系数的数目和那些显著性系数的中的最大量值来表示在特殊EOB情况中显著性系数的量值。在图7的实例中,对于块1来说,sEobBase等于9,且termSym等于0。因此,并非发送EOBShift[8]来指示块的末端,而是视频编码器20将使用为此编码循环选择的VLC码簿来发送sEobBase+termSym=9的特殊EOB。举例来说,如果为循环1选择的码簿为码簿0(一元码),则使用10个位发送9的特殊EOB。根据此方案,视频解码器26将在规则EOB与特殊EOB之间容易地检测,因为特殊EOB的索引总是大于任何可能零游程的索引或规则EOB的索引。

在发送特殊EOB后,视频编码器20将发送S个位以指示块中的S个显著性系数中哪些具有大于1的量值。接着,视频编码器20将使用一元码编码每一此系数的“量值-2”。在图7中的块1的实例中,发送3个位以识别最后显著性系数92具有大于1的量值,在此之后无需发送额外信息。关于量值编码的更多细节可在SVC JD9中找到。

在SVC JD9中,在片数据集的开始发送均由编码循环编入索引的EOB移位表和码簿选择表。为了实现显著性编码的高编码性能,视频编码器20将剖析视频片中的所有块且针对每一编码循环收集零游程和EOB的统计。接着,视频编码器20将基于每一编码循环的统计决定最佳EOB移位表和码簿选择表。在实际编码过程中,视频编码器20将发送位流中的最佳EOB移位表和码簿选择表且接着使用其来执行当前FGS层的显著性编码。因此,为了实现高编码性能,可能需要专用过程以收集统计且决定最佳编码参数,例如,EOB移位表和码簿选择表,之后是额外过程以用最佳编码参数执行编码。不幸地,此显著性编码方案具有若干个缺点。

作为一实例,在SVC JD9实施方案中,编码器复杂性可能因为对于视频片进行两个过程而较高,第一过程用以计算统计以用于表产生,且第二过程用以使用所产生的表来执行实际编码。如果编码器跳过统计收集的第一过程,则编码性能将受损,因为不可将EOB移位表和码簿选择表调谐到被编码的当前视频数据的实际统计。因此,所招致的编码性能损失可为高的。

如另一实例,在SVC JD9中概述的特殊EOB编码方案并非有效率的。形成特殊EOB符号的方式可产生不合需要的大符号。而使用较长VLC码字来编码较大符号,此可导致编码损失,尤其对于含有具有大于1的量值的显著性系数的块的数目相对高的视频内容来说更为如此。

如另一实例,根据SVC JD9方案编码色度系数倾向于为效率低的。如同H.264/AVC,在SVC中,将色度系数发送为色度DC和色度AC。在编码色度DC和AC显著性系数中,对于色度仅有一个16-条目EOB移位表包括于FGS层位流中。此EOB移位表用以编码色度DC系数与AC系数。然而,色度DC和AC系数具有不同统计。举例来说,与针对色度AC的15个编码循环相比,色度DC需要4个编码循环。因此,在色度DC与AC之间共享一个共用EOB移位表并非有效率的。此外,无单独码簿选择表提供于位流中以用于编码色度DC和AC。替代地,在SVC JD9中,亮度、色度DC和色度AC均使用同一码簿选择表。共享同一码簿选择表还导致减少的编码性能,因为亮度、色度DC和AC系数均具有不同统计。

根据本发明,视频编码器20可经配置以实施自适应VLC技术。在本发明的一些方面中,自适应VLC技术可经制定以克服与上文概述的现有SVC JD9实施方案相关联的缺点中的一者或一者以上。此外,在本发明中所概述的自适应VLC技术提供一般VLC编码构架,其可应用于将块系数编码为零游程的任何单层或多层视频编码器。因此,所述技术并不一定限于SVC。

举例来说,视频编码器20的熵编码单元46可经配置以基于在编码过程期间收集的统计来动态地确定最佳编码参数,例如EOB移位表、特殊EOB移位表和码簿选择表。统计可包括(例如)在编码视频片的过程中的零游程、EOB和sEOB计数。熵编码单元46应用减小编码器复杂性同时保持高水平编码性能的自适应VLC方案。在自适应VLC方案中,熵编码单元46并未明确地发送EOB移位表、特殊EOB移位表和码簿选择表作为经编码的位流的部分。替代地,EOB移位表、特殊EOB移位表和码簿选择表为保持于视频编码器20与视频解码器26内的内部状态。

熵编码单元46基于在编码过程期间累积的统计而更新视频编码器20内的内部状态。类似地,熵解码单元52基于在解码过程期间累积的统计而更新视频解码器26内的内部状态。在编码或解码视频片进程时可执行统计的收集和编码参数的调整。以此方式,EOB移位表、特殊EOB移位表和码簿选择表动态地适应当前视频片中的系数的统计,从而消除对发送位流中的所述表的需要且还消除对经由专用于收集统计的单独编码过程在编码器处产生所述表的需要。

并非发送编码参数表作为视频片数据的部分,而是由视频编码器20和视频解码器26实施的自适应VLC方案将所述表保持为内部状态且基于在视频片中的经累积的统计更新表条目。在编码视频片期间保持和更新内部状态允许视频编码器20消除用于收集统计以决定最佳编码参数表的第一编码过程而不造成显著性编码性能的损失。另外,在SVC片的FGS层的状况下,因为在片开始没有表需要由视频编码器20发送,所以在位流截断情况下,自适应VLC方案还可在速率失真曲线开始处增加上升斜率。视频解码器26的熵解码单元52可应用由视频编码器20的熵编码单元46使用的相同技术以在解码器侧支持自适应VLC。

根据本发明的一方面,熵编码单元46的另一精化可涉及编码如sEOB和termSym的两个符号中的特殊EOB,而不是如用于SVC JD9中的经组合sEOB符号(sEOB=sEobBase+termSym)。具体来说,可将指示块中的至少一个非零系数具有大于1的量值的事件的sEOB符号引入作为含有零游程和规则EOB的符号集中的单独符号。经组合符号集中的sEOB符号的索引可在当前编码条件下(例如在当前编码循环中)由熵编码单元46(或熵解码单元52)基于对特殊EOB的可能性估计来确定。在编码特殊EOB符号之后,发送具有大于一的量值的哪些系数的量值信息。对于编码量值来说,可使用与在SVC JD9中使用“termSym”类似的方案。

或者,可使用提供较好编码性能的其它方案。如果使用在SVC JD9中所述的方案,则“termSym”的值可由视频编码器20使用固定的VLC码簿来单独地编码。可将特殊EOB移位表保持于视频编码器20中以俘获含有具有大于1的量值的非零系数的块的可能性。可根据某些编码条件将特殊EOB移位表编入索引。用以将EOB移位表编入索引的类似编码条件(例如出现特殊EOB的子带位置,或在SVC JD9中所定义的编码循环)可用以将特殊EOB移位表编入索引。视频编码器20的熵编码单元46使经组合的零游程和EOB符号集中的特殊EOB符号的索引适应含有具有大于1的量值的非零系数的块的实际可能性。视频解码器26的熵解码单元52检测在当前编码条件下,在特殊EOB从等于特殊EOB符号的索引的符号的位流解码时特殊EOB的事件,且相应地更新特殊EOB的统计以保持与熵编码单元46同步。

作为另一精化,视频编码器20的熵编码单元46可经配置以将单独的EOB移位表、特殊EOB移位表和码簿选择表应用于编码色度DC和AC系数。还可使用自适应编码方案,在所述状况下可将所述表保持为基于(例如)上文所述的在编码过程期间收集的统计来动态调整的内部状态。以此方式,视频编码器20可单独编码色度DC和AC块。另外,可以分离于亮度块的方式编码色度DC和AC块。结果,色度DC与色度AC系数两者具有向其自身的统计调谐的单独EOB移位表、特殊EOB移位表和码簿选择表。可根据从编码过程累积的统计来适应所述表条目。或者,一些表条目(例如,与色度DC相关联的表)可能不适合于减少存储器需求和更新操作。替代地,色度DC和/或色度AC的表可预先选择为固定表,且在编码期间不被更新。

视频解码器26的熵解码单元52可应用类似技术以支持使用色度DC和AC系数的单独EOB移位表、特殊EOB移位表和码簿选择表。在每一状况下,由熵编码单元46或熵解码单元52实现的VLC单元可经配置以用分离于彼此的方式执行色度DC和AC块的VLC编码。具体来说,VLC单元可经配置以基于针对色度DC和AC块单独收集的编码统计来单独地调整色度DC和AC块的EOB移位表、特殊EOB移位表和码簿选择表。VLC单元还可以分离于色度DC和AC块的方式编码亮度块。

在本发明中,还呈现关于对于亮度、色度DC和色度AC,如何将VLC编码参数初始化为内部状态、何时且如何更新编码参数,以及如何规范化经累积的统计的细节的实例。还呈现关于如何减少由内部状态所需的存储器,和如何减少更新操作的数目的细节的实例。大体来说,VLC编码包含使用VLC参数在块内将非零块系数的位置编码为零游程。

对于SVC来说,当数字视频块系数表示包含增强层和至少一个基础或先前层的可缩放视频编码(SVC)片的增强层中的块系数时,编码块内的非零块系数的位置可包含仅编码显著性系数的位置。增强层中的显著性系数为增强层中的非零系数,其在基础或先前层中的对应系数为零。或者,可将在SVC片的FGS视频块中精化系数与显著性系数的位置编码为零游程,从而减小应用精化系数的单独编码机制的系统复杂性。然而,如本发明中所描述,自适应方案可不仅应用于SVC中的FGS层中的显著性编码,而且可应用于使用零游程编码非零变换系数的位置的任何其它视频编码方案。此外,在还将FGS层中的精化系数编码为零游程的情况下,本发明中所述的自适应VLC方案可应用于精化系数编码。

图8为根据本发明的一方面的经配置以应用自适应VLC过程的熵编码单元46的框图。熵编码单元46可驻存于图1和图2的视频编码器20内。如图8中所示,熵编码单元46(例如)从量化单元40(图2)接收经量化的残余块系数,且产生经熵编码的位流以传输到另一装置进行解码。在图8的实例中,熵编码单元46包括VLC编码模块98、统计分析模块100、VLC自适应模块102和内部状态存储器104。在操作中,VLC编码模块98不需要对于经量化的残余系数进行专用统计收集过程以选择EOB移位表、特殊EOB移位表和码簿选择表来实现高编码性能。替代地,可将EOB移位表、特殊EOB移位表和码簿选择表保持为内部状态存储器104内的内部状态。可为每一视频片初始化内部状态存储器104中的内部状态且接着在基于由统计分析模块100收集的统计而编码视频片期间对其进行调整。举例来说,VLC编码参数可由熵编码单元46在包含数字视频系数块的片开始处进行初始化。接着,熵编码单元46以片内的选定间隔调整VLC参数。所述间隔可为规则或不规则的。作为一实例,可在片内的块的边界(例如4×4块、8×8块或16×16宏块的边界)处调整VLC参数。接着,可为每一待编码的新的视频片重新初始化VLC参数。作为替代,可为每一可包括多个片的新帧重新初始化VLC参数。

在初始化时,特定EOB移位表、特殊EOB移位表和码簿选择表可选定为默认值。可任意地或基于由熵编码单元46处理的典型视频数据片的经验分析来确定默认值。接着,响应于由统计分析模块100收集的编码统计,例如零游程、EOB计数和sEOB计数,VLC自适应模块102可调整EOB移位表、特殊EOB移位表和码簿选择表条目以自适应地响应于正被编码的数据的统计。因此,VLC自适应模块102可通过基于在单一编码过程期间中累积的有限统计,而不是将需要单独编码过程的全部统计调整内部状态存储器104中的表条目来适应编码参数。VLC编码模块98参考内部状态存储器104的内容以在传入量化的残余系数的VLC编码所需的EOB移位表、特殊EOB移位表和码簿选择表的当前编码条件下获得相关条目。通过使用内部状态存储器104的相关编码参数,VLC编码模块98产生经编码的视频位流。

因此,对于所追踪的编码条件中的每一者来说,VLC编码参数可包含:EOB移位,其在相应编码条件下基于块结束的可能性指示包含零游程符号、EOB符号和特殊EOB符号的符号集内的EOB符号的索引;和VLC码簿,其针对相应编码条件指示用以编码符号集中的符号索引的码簿。作为一实例,编码条件可为子带位置或编码循环。对于某一编码条件,VLC码簿可选自多个不同VLC码簿中的一者,例如在SVC JD9中规定的五个VLC码簿中的一者。另外,对于所追踪的编码条件中的每一者来说,VLC编码参数可包含特殊EOB(sEOB)移位,所述特殊EOB(sEOB)移位在相应编码条件下当视频块中的非零系数中的至少一者具有大于一的量值时基于块结束的可能性来指示包含零游程符号、EOB符号和特殊EOB符号的符号集内的sEOB符号的索引。

图9为根据本发明的一方面的经配置以应用自适应VLC过程的熵解码单元52的框图。熵解码单元52可驻存于图1和图3的视频解码器26内。如图9中所示,熵解码单元46(例如)经由信道16(图1)从源装置12接收经编码的视频位流,且熵解码位流以产生经量化的残余系数。在图9的实例中,熵解码单元52包括VLC解码模块106、统计分析模块108、VLC自适应模块110和内部状态存储器112。

在操作中,VLC解码模块106不从位流解码EOB移位表、特殊EOB移位表和码簿选择表。替代地,如同图8的熵编码单元46一样,可将熵解码单元52的EOB移位表、特殊EOB移位表和码簿选择表保持为内部状态存储器112内的内部状态。举例来说,对于自适应VLC来说,编码器20与解码器26两者可为特定视频片保持以下内部状态:

a.零游程、EOB和特殊EOB的累积统计;

b.由某些编码条件编入索引的EOB移位表;

c.由某些编码条件编入索引的特殊EOB移位表;和

d.由某些编码条件编入索引的码簿选择表。

因此,编码器20和解码器26可收集编码统计,其包括在经编码的片的过程期间,在不同编码条件(例如编码子带位置或编码循环)中的零游程、EOB符号和sEOB符号的累积计数。可将视频编码器20中的内部状态存储器104中的内部状态和视频解码器26中的内部状态存储器112中的内部状态初始化为对每一视频片的相同默认值设定。以在基于分别由视频编码器20中的统计分析模块100和视频解码器26中的统计分析模块108收集的统计对片编码和解码期间的相同方式来调整内部状态存储器104和内部状态存储器112。

响应于由统计分析模块108进行的统计收集,VLC自适应模块110可调整EOB移位表、sEOB移位表和码簿选择表条目以自适应地响应于由VLC解码模块106解码的数据的统计。如同熵编码单元46的VLC自适应模块102一样,熵解码单元52的VLC自适应模块110可基于在解码当前视频片的过程中累积的有限统计来适应内部状态存储器112中的表条目。VLC解码模块106参考内部状态存储器112的内容以获得传入位流的VLC解码所需的EOB移位表、sEOB移位表和码簿选择表,且产生作为解码器26的剩余物的输出的经量化的残余系数。

图10为说明根据本发明的一方面的自适应VLC过程的流程图。大体来说,如图10中所示,可在视频编码器20、视频解码器26或两者内实施初始化内部状态存储器114、从视频片收集统计122和更新内部状态存储器124的过程。出于说明的目的,将描述视频编码器20(且更特定来说,熵编码单元46)内的自适应VLC过程的应用。如图10中所示,在新视频片开始处,熵编码单元46将内部状态存储器中的VLC编码参数初始化为可应用的默认值(114)。可基于经验数据、历史数据或理论假设(例如,以与典型视频片相关联的典型值设置VLC编码参数)来选择默认值。存储于内部状态存储器中的编码参数可包括编码表,例如EOB移位表、特殊EOB移位表和码簿选择表。接着,熵编码单元46使用存储于内部状态存储器中的编码表执行片内的残余系数块的编码(120)。当编码非零系数时,基于当前编码条件(例如零游程符号、EOB符号或sEOB符号所属的当前子带位置或当前编码循环等)从编码表选择适当条目。

在对片进行编码期间,熵编码单元46从正被编码的视频数据收集实际统计(122)。实际统计可指示已经编码的块中存在的零游程长度的实际计数、EOB计数和sEOB计数。熵编码单元46基于所收集的统计更新内部状态(124),从而使EOB移位表、特殊EOB移位表和码簿选择表适应于正被编码的实际数据。此外,可在块边界处,例如在4×4块、8×8块或16×16宏块的边界处应用内部状态存储器中的编码参数的调整。熵编码单元46使用经更新的编码参数继续编码当前片内的块(120)。在到达片的末端(126)时,熵编码单元46进行到下一片(128)且将编码参数重新初始化为默认值(114)。

熵解码单元52可以类似但反向方式操作以熵解码传入的经编码的视频位流。具体来说,熵解码单元52遵循内部状态存储器的相同初始化和更新过程以保持与熵编码单元46同步。因此,按照本发明,熵编码单元46和熵解码单元52可经配置以使用VLC参数执行数字视频块系数的可变长度编码,且在数字视频块系数的VLC编码期间收集编码统计。基于所收集的编码统计,熵编码单元46和熵解码单元52可在基于所收集的统计进行VLC编码期间调整VLC参数中的一者或一者以上。以此方式,可提供自适应VLC编码。

图11为更详细地说明自适应VLC过程的流程图。大体来说,自适应VLC过程可由视频编码器20、视频解码器26或两者(例如)以互逆方式应用。出于说明的目的,将描述视频编码器20且(更特定来说,熵编码单元46)内的自适应VLC过程的应用。如图11中所示,在视频片开始处,视频编码器20初始化内部状态存储器中的编码参数和统计(130)。编码参数和统计可包括EOB移位(EOBshift)表、特殊EOB移位(sEOBshift)表、码簿选择(cbSelect)表,和用以存储零游程、EOB和sEOB的统计的阵列(runStats)。接着,视频编码器20从子带0,块0开始扫描片(132)。如果当前块不指示块结束(EOB)(134),则视频编码器20以在当前编码条件下选自表cbSelect的码簿发送零游程(136),且递增阵列runStats中的零游程计数(138)。接着,视频编码器20进行到基于阵列runStats的内容而更新EOBshift、sEOBshift和cbSelect参数(140)。如果需要视频编码器20还可规范化runStats的内容(142)。规范化可能需要避免计数器溢出且需要较好地适合区域统计。视频编码器20继续针对片中的所有块的过程(144)。

如果针对当前块检测EOB(134),则视频编码器20确定EOB是否为特殊EOB(146)。如果EOB为特殊EOB,则视频编码器20发送在当前编码条件(sEOBshift[cond])下从表sEOBshift编入索引的特殊EOB符号(148),且递增阵列runStats内的特殊EOB计数(sEOB COUNT)(150)。或者,如果所检测的EOB(134)为规则EOB,且并非特殊EOB,则视频编码器20发送在当前编码条件(EOBshift[cond])下从表EOBshift编入索引的规则EOB符号(152),且递增阵列runStats中的规则EOB计数(EOB COUNT)(154)。在任一状况(sEOB或EOB)下,视频编码器20继续进行以基于阵列runStats的内容而更新EOBshift、sEOBshift和cbSelect参数(140),且如果需要就规范化runStats的内容(142)。接着,视频编码器20继续对于片中的所有块的处理(144)。在片的末端,视频编码器20可重新初始化EOBshift、sEOBshift和cbSelect参数以及runStats阵列,以便编码下一片。

在SVC片中的FGS层的状况下,如SVC JD9中所陈述,视频编码器20以编码循环的次序发送增强层中的所有系数。因此,用以将表EOBshift、sEOBshift和cbSelect编入索引中的编码条件为SVC JD9中所定义的当前编码循环。如图11中所示,在每一编码循环内,视频编码器26扫描片中的所有块且发送属于当前编码循环的所有显著性系数的零游程、EOB和特殊EOB符号。如果使用向量模式,则视频编码器26可扫描所有块且.发送多个编码循环的显著性系数的零游程、EOB和特殊EOB符号。例如,如SVCJD9中所支持的向量模式使视频编码器20在多个编码循环内处理块直到其在其移动到下一块前到达预设扫描位置为止。可以独立于用以编码视频数据的特定编码次序的方式(或更具体来说,与是否使用向量模式无关)应用本发明中所述的自适应VLC技术。

出于说明的目的,假定不使用向量模式。在扫描片中的所有块且发送属于当前编码循环的所有显著性系数、EOB和特殊EOB符号时,视频编码器20接着继续前进到下一编码循环。在下一编码循环中,视频编码器26再次从视频片中的第一块开始扫描视频片中的所有块。继续基于此循环的编码过程直到完成所有编码循环(例如,在4×4亮度系数块的状况下存在16个循环)为止。视频编码器20在阵列runStats中存储不同编码循环中的符号(例如零游程、EOB和特殊EOB)的累积计数。EOBshift表和sEOBshift表规定哪些符号用以分别表示给定编码循环中的EOB和特殊EOB。码簿选择(cbSelect)表识别哪个码簿用以编码每一循环中的所述符号的索引。

在编码零游程、特殊EOB和EOB期间,视频编码器20相应地更新阵列runStats。根据存储于runStats中的累积统计来更新EOBshift表、sEOBshift表和cbSelect表。可周期性地发生更新。举例来说,可在4×4块、8×8块或宏块的边界处,或在视频片中的任何地方发生更新。更新操作越频繁,复杂性越高。作为一实例,视频编码器20可经配置以在每一宏块被编码之后执行更新操作。在此种状况下,可以逐宏块为基础来更新编码参数EOBshift表、sEOBshift表和cbSelect表。

视频解码器26使用同一自适应编码方案以保持与视频编码器20同步。具体来说,视频解码器26以与视频编码器20大体相同的方式初始化对于每一视频片的内部状态存储器中的编码参数和统计,例如EOBshift、sEOBshift、cbSelect和runStats。在解码期间,视频解码器26从位流解码零游程、EOB和sEOB符号,且基于从位流解码的符号相应地更新阵列runStats。在视频编码器20中表更新的相同位置处,视频解码器26根据阵列runStats更新EOBshift、sEOBshift和cbSelect的值。编码器20与解码器26两者还可规范化阵列runStats中的值。如先前所提及,执行规范化的优势包括避免计数器溢出且较好地适应局部统计。

如本发明中所述的自适应VLC技术可比SVC中的FGS层中的显著性编码具有更广泛的应用。具体来说,自适应VLC可通常用于将非零系数的位置编码为零游程的任何视频编码方案。自适应VLC技术还可应用于遵循可与用于SVC中的FGS层中的基于循环的编码次序不同的任何编码次序的编码系统中。在变换和量化之后,视频编码器20可对于块中的经量化系数进行扫描且发送零游程以指示非零系数的位置,接着是非零系数的标号。非零系数的量值信息可或可不被分组在一起且在块的末端被发送。如果量值被分组且在块的末端后被发送,则使用在本发明中呈现的特殊EOB的概念还可被应用于改善编码性能。举例来说,VLC编码可包含在块结束符号被编码之后编码具有大于一的量值的块内的系数的量值信息,且使用特殊块结束符号以指示在块内具有大于一的量值的系数的存在。在此视频编码方案中,视频编码器20可应用本文中所述的自适应编码方案以减小复杂性同时保持高编码性能。

另外,使特殊EOB移位与“termSym”分离且使其可变而不是直接依靠sEobBase的概念可用于当前SVC构架中,其中视频编码器发送视频片位流内的编码表。在此构架中,在计算编码统计且决定编码表时的第一过程期间,编码器计算特殊EOB的统计连同零游程和规则EOB的统计、决定特殊EOB移位表且发送位流中的特殊EOB移位表连同EOB移位表和码簿选择表。接着,可在编码视频片时的第二编码过程期间使用此预定的特殊EOB移位表。

下文陈述说明实施方案细节的各种实例,所述细节用于在编码SVC片中的FGS层的构架内处理4×4和8×8变换块中的亮度系数且处理色度DC和色度AC系数。应注意,自适应VLC技术可应用于较早描述的其它编码系统中。还应注意,所述实例不意味着限制本发明的范围。因此,对下文所呈现的细节的修改不应视为脱离本发明。

将描述编码4×4亮度块的实例。在此实例中,将在SVC FGS编码中所使用的编码循环假定为用以将编码表(例如EOBshift、sEOBshift和cbSelect)编入索引中,且用以将编码统计阵列runStats编入索引中的编码条件。然而,出于说明的目的,将编码循环用作实例;可替代编码循环而使用其它编码条件。对于编码4×4亮度块来说,如果将存储在所有16个编码循环中的所有符号的经累积统计,则阵列runStats需要总共166个条目。除编码循环0(其具有16个可能游程且因此需要16条目的符号集)以外,所有随后的编码循环c(c=1...15)具有(16-c)个可能游程和对于EOB和sEOB的两个额外符号且因此需要(18-c)条目的符号集。为了保持且更新所述大量编码状态,对于编码器20与解码器26来说必然伴有高复杂性。因此,可能需要减小runStats阵列的大小。下文描述减小runStats阵列的大小、更新EOBshift表、sEOBshift表和cbSelect表,和规范化runStats阵列的实例技术。应注意,所述特定细节被作为实例而给出,且不应视为限制本发明。

现将描述减少保持于runStats阵列中的状态的技术的实例。在FGS层中,较后编码循环的符号统计变化小于较早编码循环的统计。在较后编码循环中,EOB符号的可能性通常变得高于符号集中的剩余符号。因此,EOBshift[c]=0通常为编码循环c≥C的状况。对于特殊EOB来说,可使用符号(16-c)。随编码循环数c增加,(16-c)的值减小,从而减少由此简化招致的编码损失。又,在较后编码循环处的游程/EOB/sEOB的符号集的统计通常存在较多偏差。因此,对于编码循环c≥C来说,一元码(例如,SVC JD9中的码簿0)为最频繁使用的码簿。基于所述观测值,可对runStats阵列进行的一个简化为不保持对于所有编码循环c≥C的符号统计。

因此,收集编码统计可包含仅针对具有小于C的数目的编码循环收集零游程、EOB符号和sEOB符号的累积计数,且针对具有大于或等于C的数目的编码循环不收集零游程、EOB符号和sEOB符号的累积计数,其中C小于编码循环的最大数目。作为一实例,可将C=10选作循环截止阈值,但也可使用任何其它数。如果C=10,则仅针对循环0到9收集统计,且针对循环10和10以上不收集统计。

对于较早编码循环(c<C)来说,较大游程的可能性相对小,从而在为相应编码循环决定最佳码簿时使其变得较不重要。因此,对于较早编码循环c<C,阵列runStats可仅保持具有长度s<S的较小零游程的可能性计数。具有长度s≥S的所有较大符号可视为一个符号,以使得runStats阵列仅需要保持所有所述符号的总计数。因此,收集编码统计可包含,对于每一编码循环c<C,以个体为基础收集对于具有小于S的长度的零游程中的每一者的零游程的经累积计数,和以组合为基础收集对于具有大于或等于S的长度的零游程的零游程的经组合计数,其中S小于当前编码循环中的零游程的最大值。因为所述可能性计数足以决定对于每一编码循环c<C的良好码簿和适当EOB移位与特殊EOB移位,所以对runStats阵列进行的所述简化招致最小的编码性能损失。

作为一实例,对于编码循环c=0,runStats阵列仅保持3个零游程(游程=0,1,2)的计数,加上所有剩余游程的一个总计数。对于所有其它编码循环c>0但c<C(例如,C=10),runStats阵列仅保持EOB、特殊EOB和3个零游程(游程长度=0,1,或2)的统计,加上所有剩余游程值的一个总计数。换句话说,对于编码循环c<C,S的值为3。不保持所有循环c≥C(例如,C=10)的统计。因此,编码循环0需要runStats中的4个条目,且所有其它编码循环1到9各需要runStats中的6个条目。保持于runStats中的状态的总数为4+6*9=58。为了概括,对于C=10且S=3的实例,待保持于runStats中的统计可为如下:

循环0:游程=0,1,2的可能性计数,和所有游程>2的总计数

循环1到9:EOB、sEOB、游程=0,1,2的可能性计数,和所有游程>2的总计数

通过上文所概述的方法,runStats的大小和相关联存储器需求可大体上得以减少,例如,从166个条目减少到58个条目。

现将描述runStats、EOBshift、sEOBshift和cbSelect参数的初始化。对于亮度4×4块,作为一实例,可大体上初始化EOBshift表、sEOBshift表和cbSelect表如下:

EOBshiftInit[]={16,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0};

sEOBshiftInit[]={16,6,6,6,6,6,6,6,6,6,6,5,4,3,2,1};

cbSelectInit[]={1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0}。

可将阵列runStats初始化为全部是零。或者,可将阵列runStats初始化为所述阵列中的每一条目的较小数。作为一实例,对于循环0,可将runStats中的可能性计数初始化为{16,8,8,4,4,...},其可为编码循环0中的游程的典型可能性计数。每次编码给定循环中的特定游程或EOB或sEOB时,递增runStats中的对应条目。使用图7中的实例,对于块1,在编码循环0中编码游程=0。因此,递增条目runStats[循环=0][游程=0]。

因为具有大于1的量值的那些显著性系数的量值的编码被延迟直到发送块结束(在此种状况下为特殊EOB)为止,所以可遇到在发送当前零游程之后不再存在待编码的显著性系数的特殊条件。换句话说,块中的剩余系数(如果存在)均为精化系数。在此种状况下,编码器可经配置以发送1位旗标,其中0指示块中无显著性系数具有大于1的量值,且1指示在块中存在具有大于1的量值的显著性系数。如果此旗标为1,则执行上文所述的量值的值的通常编码(以权标termSym开始)。在此特殊条件下,将不改变runStats中的经累积统计。

现将描述编码参数EOBshift、sEOBshift和cbSelect的更新。如图11中所示,在视频片中的视频块的编码期间的固定点处,视频编码器20调用编码表的更新过程以与所累积的符号统计保持协调。一种用于更新所述表的合理选择为处于宏块(MB)边界处,但还可使用更新点的其它选择。举例来说,可在4×4或8×8块边界上,或在已编码某一数目的块/宏块之后发生更新过程。下文陈述说明可用以更新所述表的简单方案的实例伪码。

for(all cycles c<C)

{

 //update EOBshift and sEOBshift

 if(c>0)

 {

  if(runStats[c][0]>runStats[c][2])

   EOBshift[c]=0;

  else if(runStats[c][0]>runStats[c][3])

   EOBshift[c]=1;

  else if(runStats[c][0]>runStats[c][4])

   EOBshift[c]=2;

  else

   EOBshift[c]=3;

  if(runStats[c][1]>runStats[c][4])

   sEOBshift[c]=EOBshift[c]+1;

  else if(runStats[c][1]>(runStats[c][0]/16))

   sEOBshift[c]=4;

  else

   sEOBshift[c]=(16-c);

 }

 //update cbSelect

 let A,B,C be counts of the three most probable symbols in coding

cycle c

 let D be the total count of all other symbols in coding cycle c

 if(D<=B)

 {

  if(3*D<=2*A)

   cbSelect[c]=(C+D<=A)?cb0:cb2;

  else

   cbSelect[c]=(2*C<=D)?cb1:cb2;

 }

 else

 {

  if(2*B+D<=2*A)

   cbSelect[c]=(B+C<=A)?cb4:cb2;

  else

   cbSelect[c]=(2*C<=D)?cb1:cb2;

}

在SVC JD9中,在编码循环0中将不出现EOB或sEOB符号。因此,仅对于编码循环c>0且c<C更新表EOBshift、sEOBshift。如在由以上伪码所描绘的实例中,假定对于所有循环c>0且c<C,分别地,runStats[c][0]存储所累积的EOB可能性,runStats[c][1]存储所累积的特殊EOB可能性,且runStats[c][s](s=2,3,4)存储零游程“r=s-2”的所累积的可能性。对于所有循环c>0且c<C,基于runStats[c][0]、runStats[c][1]和runStats[c][s]的内容,视频编码器20更新EOBshift[c]、sEOBshift[c]和cbSelect[c]的值。

现对于编码循环c>0且c<C描述EOBshift表的更新。作为一实例,如果由runStats[c][0]指示的EOB计数大于由runStats[c][2]指示的零游程计数(对于游程长度r=0(即,s=2)),则如以上伪码中所指示,将EOBshift[c]的值设定为零。否则,如果runStats[c][0]小于或等于runStats[c][2],但runStats[c][0]大于由runStats[c][3]指示的零游程计数(对于游程长度r=1(即,s=3)),则将EOBshift[c]的值设定为1。否则,如果runStats[c][0]小于或等于runStats[c][2]与runStats[c][3],但runStats[c][0]大于由runStats[c][4]指示的零游程计数(对于游程长度r=2(即,s=4)),则将EOBshift[c]的值设定为2。否则,将EOBshift[c]的值设定为3。

现对于编码循环c>0且c<C描述sEOBshift表的更新。作为一实例,如果由runStats[c][1]指示的sEOB计数大于由runStats[c][4]指示的零游程计数(对于游程长度r=2(即,s=4)),则将sEOBshift[c]的值设定为等于EOBshift[c]的值加上1。否则,如果runStats[c][1]小于或等于runStats[c][4],但runStats[c][1]大于由runStats[c][0]指示的EOB计数除以16,则将sEOBshift[c]的值设定为4。否则,将sEOBshift[c]的值设定为等于16减去循环数c。

现对于所有编码循环c<C描述表cbSelect的更新。为了更新cbSelect[c]的值,视频编码器20追踪三个最可能符号。将含有零游程、EOB和sEOB的经组合符号集中的三个最可能符号的可能性计数表示为A、B和C,且将所有其它符号的总计数表示为D。在此种状况下,如果D小于或等于B,且3乘D小于或等于2乘A,则在C加上D小于或等于A的情况下将cbSelect[c]的值指定为码簿0(cb0),且在C加上D大于A的情况下将cbSelect[c]的值指定为码簿1(cb1)。否则,如果D小于或等于B,且3乘D大于2乘A,则在2乘C小于或等于D的情况下将cbSelect[c]的值指定为cb1,且在2乘C大于D的情况下将cbSelect[c]的值指定为码簿2(cb2)。剩余运算将从以上伪码显而易见。

如以上伪码中所指示,视频编码器20基于针对对应编码条件的零游程、EOB符号和sEOB符号的经累积计数更新EOB移位表、基于针对对应编码条件的零游程、EOB符号和sEOB符号的经累积计数更新sEOB移位表,且基于针对对应编码条件的零游程、EOB符号和sEOB符号的经累积计数更新码簿选择表。

尽管出于说明的目的,伪码说明基于EOB、sEOB和零游程计数的中的特定关系来更新EOB移位表、sEOB移位表和码簿选择表条目,但可使用其它关系。因此,还可使用其它更新过程,且在不脱离本发明的范围的情况下,可对上文实例进行各种修改。举例来说,尽管以上伪码指用于SVC JD9中的编码循环,但其它编码条件可用作计数和编码参数的索引。作为一实例,可根据零游程、EOB或sEOB所属的块的当前子带或子带的丛集来调节VLC编码。如另一实例,还可根据已针对块编码的零游程的数目来调节VLC编码。

可添加另一条件以改善自适应方案的编码性能。在片的编码过程开始处,例如,在尚未充分累积符号统计时,更新EOBshift表、sEOBshift表和cbSelect表可产生在统计上不显著性的条目。因此,可应用关于在每一循环中遇到的符号的总数的阈值以决定是否应更新EOBshift、sEOBshift和cbSelect表条目。在此种状况下,可应用可选条件以使得仅具有达到或超过对应阈值的总符号计数的循环可开始更新其表条目。作为一说明,阈值阵列{32,16,8,8,8,8...}可用以确定是否开始更新表条目,阈值阵列中的条目在何处按次序对应于循环0、循环1、循环2、循环3等等。举例来说,对于循环0,在更新过程将开始之前需要已遇到总共32个符号。同样地,对于循环1,在更新过程将开始之前需要已遇到总共16个符号。因此,可能需要较大数目的符号用以开始更新较早循环的VLC编码参数。作为应用关于在给定编码循环内遇到的条目的总数的阈值的替代,所述阈值可替代地应用于给定编码循环中最可能符号的经累积计数上。

现将描述用于规范化runStats阵列的实例技术。规范化涉及在其达到某一阈值时按比例减少runStats阵列中的符号计数。规范化可用于防止符号计数溢出。另外,规范化还可为局部自适应性提供更多空间,因为其防止符号计数在一些区域中增加过多且覆盖其它区域的局部统计。可在更新EOBshift表、sEOBshift表和cbSelect表的同时,(例如)以周期性为基础,例如在宏块边界处进行规范化过程。替代地或额外地,可在视频编码过程期间的其它固定点处进行规范化过程。下文陈述是说明用于规范化runStats阵列的实例过程的伪码段。

for(alll cycles c<C)//C is the cycle cutoff in runStats

{

         let MPS be the count of the most probable symbol in the cycle

         if(MPS>=MPSthres)

              scale back all symbol counts in the current cycle by a factor of2

}

在以上伪码中,MPSthres的合理选择可为128。然而,可使用MPSthres的其它值。大体来说,当循环中的最可能符号(MPS)的计数大于或等于MPSthres时,视频编码器20通过使当前循环中的符号计数按比例减少了N倍(即,通过除以因子N)来规范化符号计数。在以上实例中,因子N等于2。或者,所有符号的总计数和当前编码循环中的总计数的对应阈值可替代MPS计数和对应阈值MPSthres来用于规范化。

为了减小更新编码表的频率,作为一选项,可动态地改变更新频率。对于一些应用来说,甚至对于上文所呈现的低复杂性解决方案,更新编码表也可为昂贵的。因此,为了减小更新频率和相关联的计算和存储器开销,可基于各种准则动态地改变更新频率。作为一实例,可基于编码表在新近更新操作中已改变的程度来动态地调整更新频率。如果新近更新操作已导致编码表的极少量变化,则可减小更新频率。如果新近更新操作已导致较大变化,则可动态地增加更新频率。

现将描述用于编码亮度块的实例过程。在此实例中,使用(例如)在许多视频编码标准(例如,MPEG1、MPEG2、MPEG4和H.263)中所使用的8×8变换来编码亮度块。在H.264/AVC高端类(还称作FRext(保真度范围扩展))中,可使用8×8整数变换或4×4整数变换中的任一者来编码宏块中的亮度分量,且在位流中将块变换大小编码为宏块级语法元素。此被称作自适应块变换。如果使用8×8变换,则在变换和量化之后将在宏块中存在四个8×8亮度系数块,而不是在使用4×4变换的情况下的十六个4×4亮度块。尽管将上文所述的编码过程用作来自4×4变换的系数块的实例,但所述过程可容易地适于使用类似概念编码8×8变换块。

作为一实例,可首先将一8×8块转换为四个4×4块。此方法用在由H.264/AVC标准规定的CAVLC熵编码模式中。举例来说,视频编码器20可经配置而以锯齿状扫描次序扫描8×8系数块且将其转换为具有64个系数的一维阵列。接着,视频编码器20使用交错方案将64个系数分解为各具有16个系数的四个阵列。具体来说,在64个系数的阵列中以8×8锯齿状扫描次序在第n(n=0,1...63)个扫描位置处的系数将被放置于第m个块中,其中在较小块中的第(n/4)个扫描位置处,m=mod(n,4),m=0,1,2或3。在此转换之后,视频编码器20将用于4×4块的通常CAVLC编码应用于四个16系数的块。

在SVC中,当基础层使用H.264/AVC高端类时,增强层也允许使用8×8块变换。在FGS层中,可使用与基础层相同的交错方案转换8×8系数块且将其编码为四个4×4块。此类经转换的4×4块的经累积统计可类似于原来的4×4块的那些经累积统计。因此,视频编码器20可使用同一EOBshift表、sEOBshift表和cbSelect表对经转换的4×4块连同所有其它原来的4×4系数一起进行编码。或者,视频编码器20可经配置以针对经转换的4×4块单独地存储经累积统计且使用单独的EOBshift表、sEOBshift表和cbSelect表来编码所述经转换的4×4块。

现将描述色度DC和色度AC分量的编码。在SVC中,将色度系数块单独地编码为色度DC和色度AC块。将每一8×8色度块中的四个4×4块的DC系数分组且编码为一个DC块。在四个循环(循环=0,1,2,3)中编码每一色度DC块。在15个循环(循环=1,2,...15)中编码每一4×4色度块中的剩余15个色度AC系数(DC系数除外)。因为色度DC和AC块的符号统计与彼此且与亮度块充分不同,所以在本发明中所述的自适应方案中,保持色度DC和AC和亮度的单独内部状态改善了色度编码性能。

色度DC和AC的自适应编码与亮度编码程序相类似。举例来说,阵列runStatsDC和runStatsAC可用以分别单独地存储色度DC和色度AC的经累积统计。表EOBshiftXX、sEOBshiftXX和cbSelectXX(其中用DC或AC替代XX)用以为每一编码循环,为色度DC或色度AC识别EOB移位、特殊EOB移位和码簿选择。因为色度统计与亮度的那些统计不同,所以可不同地初始化表EOBshiftXX、sEOBshiftXX和cbSelectXX。作为一实例,可用以下向量初始化表:

EOBshiftDCInit[]={4,0,0,0};

sEOBshiftDCInit[]={4,4,3,2};

cbSelectDCInit[]={0,0,0,0};

EOBshiftACInit[]={16,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

sEOBshiftACInit[]={16,8,8,8,8,8,8,8,7,6,5,4,3,2,1};和

cbSelectACInit[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

其中EOBshiftDCInit[]表示针对色度DC的EOB移位表的初始条目,sEOBshiftDCInit[]表示针对色度DC的特殊EOB移位表的初始条目,cbSelectDCInit[]表示针对色度DC的码簿选择表的初始条目,EOBshiftACInit[]表示针对色度AC的EOB移位表的初始条目,sEOBshiftACInit[]表示针对色度AC的特殊EOB移位表的初始条目,cbSelectACInit[]表示针对色度AC的码簿选择表的初始条目。应注意,因为色度DC需要4个编码循环,所以色度DC的初始化表含有4个条目,且因为色度AC需要15个编码循环,所以色度AC的初始化表含有15个条目。

在通常使用的YUV4:2:0视频格式中,存在与亮度系数一半一样多的色度系数。一些简化可应用于色度DC和AC的自适应编码。所述简化可减小用以存储经累积统计所需的存储器和更新操作的数目。举例来说,可跳过色度DC的更新过程,从而消除存储阵列runStatsDC的需要和与表EOBshiftDC、sEOBshiftDC和cbSelectDC相关联的所有更新操作。还可跳过色度AC的更新过程。或者,色度AC的更新过程可与亮度的更新过程类似,但具有减小的复杂性。举例来说,视频编码器20可经配置以用亮度表一半的频率更新色度AC表,这是因为存在一半多的色度AC块。总之,可以分离于彼此且分离于亮度块的方式执行色度DC和色度AC块的VLC编码。可以不同于亮度块的方式初始化色度DC和AC块的EOB移位表、sEOB移位表和码簿选择表。在一些状况下,固定的EOB移位表、sEOB移位表和码簿选择表可用于色度DC和AC块。

本文中所述的技术可实施于硬件、软件、固件或其任何组合中。描述为模块或组件的任何特征可一起实施于集成逻辑装置中或单独作为离散但能共同操作的逻辑装置。如果实施于软件中,则所述技术可至少部分地由包含程序码的计算机可读数据存储媒体来实现,所述程序码包括在被执行时执行上文所述的方法中的一者或一者以上的指令。计算机可读数据存储媒体可形成计算机程序产品的部分。计算机可读媒体可包含随机存取存储器(RAM),例如同步动态随机存取存储器(SDRAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器、磁性或光学数据存储媒体和其类似物。额外地或替代地,所述技术可至少部分地由计算机可读通信媒体来实现,所述计算机可读通信媒体以指令或数据结构的形式携载或传送程序码且.可由计算机存取、读取和/或执行。

程序码可由一个或一个以上处理器来执行,所述处理器例如一个或一个以上数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等。因此,在本文中所使用的术语“处理器”可指上述结构或适于实施本文中所述的技术的任何其它结构中的任一者。另外,在一些方面中,本文中所述的功能性可提供于经配置以用于编码和解码的专用软件模块或硬件模块内,或并入经组合的视频编码器-解码器(CODEC)中。

已描述本发明的各种实施例。所述和其它实施例均在所附权利要求书的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号