视频译码过程中用于系数层级译码的莱斯(RICE)参数初始化的制作方法

文档序号:15752353发布日期:2018-10-26 18:01阅读:310来源:国知局
视频译码过程中用于系数层级译码的莱斯(RICE)参数初始化的制作方法

技术领域

本发明是关于视频译码,且更特定来说是关于用于译码变换系数的技术。



背景技术:

数字视频能力可并入到广泛范围的装置中,所述装置包含数字电视、数字直播系统、无线广播系统、个人数字助理(PDA)、膝上型或桌面计算机、数字摄影机、数字记录装置、数字媒体播放器、视频游戏装置、视频游戏控制台、蜂窝式或卫星无线电电话、视频电传会议装置及其类似者。数字视频装置实施视频压缩技术(例如,在由MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4第10部分(进阶视频译码(AVC))、当前在开发过程中的高效率视频译码(HEVC)标准定义的标准及这些标准的扩展中所描述的那些视频压缩技术)以更有效率地发射、接收及存储数字视频信息。

视频压缩技术包含空间预测及/或时间预测以减少或移除视频序列中固有的冗余。对于基于块的视频译码,可将视频切片(即,视频帧或视频帧的一部分)分割成块。使用相对于同一图片中的相邻块中的参考样本的空间预测来编码图片的经帧内译码(I)切片中的视频块。经帧间译码(P或B)切片中的视频块可使用相对于同一图片中的相邻块中的参考样本的空间预测或相对于其它参考图片中的参考样本的时间预测。图片可被称作帧,且参考图片可被称作参考帧。

空间预测或时间预测导致译码用于块的预测性块。残余数据表示待译码的原始块与预测性块之间的像素差。根据指向形成预测性块的参考样本的块的运动向量,及指示经译码块与预测性块之间的差异的残余数据来编码经帧间译码块。根据帧内译码模式及残余数据来编码经帧内译码块。为进行进一步压缩,可将残余数据从像素域变换到变换域,从而产生可接着进行量化的残余变换系数。可以特定次序扫描最初布置成二维阵列的经量化的变换系数,以产生变换系数的一维向量,且可应用熵译码以达成甚至更多的压缩。



技术实现要素:

一般来说,本发明描述用于初始化莱斯参数的技术,所述莱斯参数用于定义用于在视频译码过程中进行系数层级译码的码。特定来说,本发明描述用于确定用于定义码(例如,哥伦布莱斯(Colomb-Rice)码或指数哥伦布码)的所述莱斯参数的初始值的技术,所述码用于译码系数的系数层级的剩余绝对值,其中上下文自适应性二进制算术译码(CABAC)用于译码有效系数、大于1的系数层级及大于2的系数层级的指示。在一些实例中,可在高效率视频译码(HEVC)标准的范围扩展中,将所述技术应用于用于系数层级译码的莱斯参数初始化。

本发明中所描述的所述技术基于针对视频数据的先前经译码系数所收集的系数层级的统计,确定用于所述视频数据的变换块中的当前系数群组(CG)(即,系数块)的所述莱斯参数的初始值。在有损译码的状况下,所述CG可包含变换系数,或在无损译码或以变换跳过模式有损译码的状况下,所述CG可包含并未应用变换的系数。所述统计可为先前经译码系数的系数层级的绝对值或系数层级的剩余绝对值的统计。可在视频数据的每一切片的开始处将所述统计的值初始化为零,且可基于所述切片的每一CG中所译码的一或多个系数层级,更新所述统计。在实例中,在于所述CG中译码第一系数层级时,可按每一CG更新一次所述统计。在一些状况下,可针对基于包含所述CG的变换块的特性而定义的多个不同类别的CG中的每一者,分别收集统计。根据本发明的所述技术,在变换块中的当前CG的开始处,将所述统计的值映射为用于所述当前CG的所述莱斯参数的初始值。

在实例中,本发明是关于一种在视频解码过程中解码系数的方法,所述方法包括确定残余视频数据的先前经解码系数的系数层级的统计;基于所述统计,确定用于所述残余视频数据的变换块中的当前系数群组的莱斯参数的初始值;及使用由所述莱斯参数定义的码,解码所述当前系数群组中的至少一系数的系数层级的剩余绝对值。

在另一实例中,本发明是关于一种在视频编码过程中编码系数的方法,所述方法包括确定残余视频数据的先前经编码系数的系数层级的统计;基于所述统计,确定用于所述残余视频数据的一变换块中的当前系数群组的莱斯参数的初始值;及使用由所述莱斯参数定义的码,编码所述当前系数群组中的至少一系数的系数层级的剩余绝对值。

在又一实例中,本发明是关于一种视频译码装置,其包括经配置以存储视频数据的存储器,及经配置以进行如下操作的一或多个处理器:确定残余视频数据的先前经译码系数的系数层级的统计;基于所述统计,确定用于所述残余视频数据的变换块中的当前系数群组的莱斯参数的初始值;及使用由所述莱斯参数定义的码,译码所述当前系数群组中的至少一系数的系数层级的剩余绝对值。

在另一实例中,本发明是关于一种视频译码装置,其包括:用于确定残余视频数据的先前经译码系数的系数层级的统计的装置;用于基于所述统计,确定用于所述残余视频数据的变换块中的当前系数群组的莱斯参数的初始值的装置;及用于使用由所述莱斯参数的所述初始值定义的码,译码所述当前系数群组中的至少一系数的系数层级的剩余绝对值的装置。

在又一实例中,本发明是关于一种包括指令的计算机可读存储媒体,所述指令在由视频译码装置的一或多个处理器执行时使得所述处理器进行以下操作:确定残余视频数据的先前经译码系数的系数层级的统计;基于所述统计,确定用于所述残余视频数据的变换块中的当前系数群组的莱斯参数的初始值;及使用由所述莱斯参数定义的码,译码所述当前系数群组中的至少一系数的系数层级的剩余绝对值。

一或多个实例的细节阐述于随附图式及以下描述中。从所述描述及所述图式以及从权利要求书将显而易见其它特征、目标及优势。

附图说明

图1为说明可利用本发明中所描述的用于译码系数层级的技术的实例视频编码及解码系统的框图。

图2为展示用于系数层级译码的实例反扫描次序的概念图。

图3为展示用于系数群组(CG)的系数层级译码的实例基于子块的反对角线扫描次序的概念图。

图4为展示用于CG的译码系数层级的实例反对角线扫描次序的概念图。

图5为说明可实施本发明中所描述的用于编码系数层级的技术的实例视频编码器的框图。

图6为说明可实施本发明中所描述的用于解码系数层级的技术的实例视频解码器的框图。

图7为说明根据本发明中所描述的技术的在系数层级的熵编码期间确定莱斯参数的初始值的实例操作的流程图。

图8为说明根据本发明中所描述的技术的在系数层级的熵解码期间确定莱斯参数的初始值的实例操作的流程图。

图9为说明根据本发明中所描述的技术的在系数层级的熵译码期间确定先前经译码系数的系数层级的统计的实例操作的流程图。

图10为说明根据本发明中所描述的技术的基于所确定统计,确定用于当前系数群组的莱斯参数的初始值的实例操作的流程图。

具体实施方式

本发明描述用于在视频译码过程中译码与残余数据相关联的系数的技术。所述技术经配置以用于初始化用于定义用于视频译码过程中的系数层级译码的码的莱斯参数。特定来说,本发明描述用于确定用于定义码(例如,哥伦布莱斯码或指数哥伦布码)的莱斯参数的初始值的技术,所述码用于译码系数块的系数层级的剩余绝对值,其中上下文自适应性二进制算术译码(CABAC)用于译码有效系数、大于1的系数层级及大于2的系数层级的指示。在有损译码的状况下,系数层级可为变换系数的层级,或在无损译码或以变换跳过模式有损译码的状况下,系数层级可为并未应用变换的系数的层级(即,残余像素值)。在一些实例中,可在高效率视频译码(HEVC)标准的范围扩展中,将所述技术应用于用于系数层级译码的莱斯参数初始化。

莱斯参数为用于从哥伦布码(例如,哥伦布莱斯码或指数哥伦布码)的同族选择码字集的可调值。由莱斯参数定义的码可用于译码系数群组(CG)(即,系数块)中的至少一系数的系数层级的剩余绝对值。在HEVC的实例中,CG中的每一者可包括视频数据的4×4变换块,或变换块的4×4子块。在有损译码的状况下,CG可包含变换系数,或在无损译码或以变换跳过模式有损译码的状况下,CG可包含并未应用变换的系数。在一些过程中,在每一CG的开始处将莱斯参数的初始值设定为等于零,并在译码CG中的系数层级的剩余绝对值之后有条件地进行更新。在译码屏幕内容的系数层级的状况下,或在无损译码或以变换跳过模式有损译码的状况下,针对每一CG,将莱斯参数的值初始化为零可能并非最佳的。

本发明中所描述的技术可适应性地设定莱斯参数的初始值,以译码(例如,编码或解码)每一CG,而非针对所有状况将莱斯参数的初始值设定为零。特定来说,本发明描述用于基于针对先前经译码系数所收集的系数层级的统计,确定用于当前CG的莱斯参数的初始值的技术。本发明也描述用于确定用于视频数据的先前经译码系数的系数层级的统计的技术。

统计可为先前经译码系数的系数层级的绝对值或系数层级的剩余绝对值的统计。可在视频数据的每一切片的开始处将统计值初始化为零,且可基于切片的每一CG中所译码的一或多个系数层级,更新统计。在一些状况下,当CG中正译码系数层级的第一绝对值或系数层级的第一剩余绝对值时,可按每一CG更新一次统计。在其它状况下,(例如)当CG中正译码系数层级的最后绝对值或系数层级的最后剩余绝对值时,可较频繁地或基于不同系数层级地收集统计。

作为一实例,可通过将给定先前经译码系数的系数层级与统计的预定义函数进行比较,且接着基于比较确定是增加抑或降低统计值而确定统计。用于更新统计的统计的预定义函数可基于左移位除以第二常数值的统计值的第一常数值。在其它实例中,可根据不同技术确定统计。

在一些状况下,可针对基于包含CG的变换块的特性而定义的多个不同类别的CG中的每一者,分别收集统计。在此状况下,可基于变换块的特性,确定变换块中的当前CG的类别,且可基于用于所确定类别的统计,初始化用于当前CG的莱斯参数。在一实例中,可基于变换块是否为明度块,及变换块是否为变换跳过块,而针对四个不同类别中的每一者收集单独统计。在其它实例中,可将统计分割成基于不同类型的变换块特性而定义的不同数目的类别。

根据本发明的技术,在当前CG的开始处,将统计值映射为用于当前CG的莱斯参数的初始值。在一些实例中,可根据统计的函数,将统计值映像为初始莱斯参数值。用于初始化莱斯参数的统计的函数可基于莱斯参数的最大值抑或除以常数值的统计值中的最小者的选择。在其它实例中,可根据不同函数或根据存储表,将统计值映像为莱斯参数的初始值。用于当前CG的莱斯参数的初始值用于定义码(例如,哥伦布莱斯码或指数哥伦布码),所述码用于译码当前CG中的至少一系数的系数层级的剩余绝对值。

在一些实例中,视频编码器可将与残余视频数据相关联的系数的系数层级编码成用于发射到视频解码器或存储装置的位流。在接收到经编码位流之后,视频解码器可以与视频编码器互逆的方式解码残余视频数据的系数层级。在有损视频译码的状况下,系数可为经量化的变换系数。在此状况下,可(例如)通过将变换(例如,离散余弦变换(DCT))应用于残余视频数据,且接着将量化应用于变换系数而产生经量化的变换系数。在无损视频译码或具有变换跳过或绕过的有损视频译码的状况下,系数可为残余视频数据的像素值,且具有具大绝对值的系数层级(即,像素值)。当系数表示屏幕内容(其可包含图形及文本区域)时,可并未良好地预测内容,从而产生系数的系数层级的大绝对值。

本发明中所描述的莱斯参数初始化方案允许在当前CG的开始处,将莱斯参数的初始值设定为非零值,以便莱斯参数快速且有效地适应于大系数值,如果当前CG包含屏幕内容或经译码有变换跳过或绕过,则可发生此情况。根据技术,可基于先前经译码系数的系数层级的统计,确定莱斯参数的初始值。以此方式,可将莱斯参数初始化为非零值,以便适应尚未经变换或经量化的屏幕内容及/或系数的切片或译码单元,但在自然内容的切片或译码单元的状况下,仍可将其初始化为零。举例来说,当先前经译码系数的大系数层级带来大统计值时,可根据大统计值,将莱斯参数的初始值设定为等于非零值,以便较快速地适应于当前CG中将很可能发生的大系数值。

图1为说明可利用本发明中所描述的用于译码系数层级的技术的实例视频编码及解码系统10的框图。如图1中所展示,系统10包含将经编码视频经由通信信道16发射到目的地装置14的源装置12。按需要,经编码视频数据也可存储于存储媒体34或文件服务器36上,且可由目的地装置14接入。当存储到存储媒体或文件服务器时,视频编码器20可将经译码视频数据提供到另一装置(例如,网络接口、光盘(CD)、Blu-ray或数字视频光盘(DVD)刻录机或压印设施装置,或其它装置),以用于将经译码视频数据存储到存储媒体。同样地,与视频解码器30分离的装置(例如,网络接口、CD或DVD读取器,或类似者)可从存储媒体检索经译码视频数据并将所检索数据提供到视频解码器30。

源装置12及目的地装置14可包括广泛范围的装置中的任一者,所述装置包含桌面计算机、笔记型(即,膝上型)计算机、平板计算机、机顶盒、例如所谓的智能电话的电话手机、电视、摄影机、显示装置、数字媒体播放器、视频游戏控制台或其类似者。在许多状况下,这些装置可经装备以用于无线通信。因此,通信信道16可包括无线信道、有线信道或适于发射经编码视频数据的无线及有线信道的组合。类似地,可由目的地装置14经由任何标准数据连接(包含因特网连接)接入文件服务器36。此数据连接可包含无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等),或适于接入存储于文件服务器上的经编码视频数据的所述两者的组合。

根据本发明的实例,用于译码系数层级的技术可应用于视频译码,以支持多种多媒体应用中的任一者,例如,空中电视广播、有线电视发射、卫星电视发射、(例如)经由因特网的串流视频发射、数字视频的编码以供存储于数据存储媒体上、存储于数据存储媒体上的数字视频的解码,或其它应用。在一些实例中,系统10可经配置以支持单向或双向视频发射,以支持例如视频串流、视频播放、视频广播及/或视频电话的应用。

在图1的实例中,源装置12包含视频源18、视频编码器20、调变器/解调器22及发射器24。在源装置12中,视频源18可包含例如视频俘获装置(例如,视频摄影机)、含有先前所俘获视频的视频封存盘、用以从视频内容提供商接收视频的视频馈入接口,及/或用于将计算机图形数据产生为源视频的计算机图形系统的源,或这些源的组合。作为一实例,如果视频源18为视频摄影机,则源装置12及目的地装置14可形成所谓的摄影机电话或视频电话,所述电话可提供于(例如)智能电话或平板计算机内。然而,一般来说,本发明中所描述的技术可适用于视频译码,且可应用于无线及/或有线应用,或经编码视频数据存储于本端磁盘上的应用。

可由视频编码器20编码所俘获视频、预俘获的视频或计算机产生的视频。可由调制解调器22根据通信标准(例如,有线或无线通信协议)调变经编码视频信息,并经由发射器24将其发射到目的地装置14。调制解调器22可包含各种混合器、滤波器、放大器或经设计以用于信号调变的其它组件。发射器24可包含经设计以用于发射数据的电路,包含放大器、滤波器且在无线通信的状况下,包含一或多个天线。

由视频编码器20所编码的所俘获视频、预俘获的视频或计算机产生的视频也可存储到存储媒体34或文件服务器36上,以用于稍后消耗。存储媒体34可包含Blu-ray光盘、DVD、CD-ROM、闪存或用于存储经编码视频的任何其它合适的数字存储媒体。存储于存储媒体34上的经编码视频可接着由目的地装置14接入以用于解码及播放。尽管图1中未展示,但在一些实例中,存储媒体34及/或文件服务器36可存储发射器24的输出。

文件服务器36可为能够存储经编码视频,并将所述经编码视频发射到目的地装置14的任何类型的服务器。实例文件服务器包含网页服务器(例如,用于网站)、FTP服务器、网络附接存储(NAS)装置、本端磁盘驱动器,或能够存储经编码视频数据,并将其发射到目的地装置的任何其它类型的装置。来自文件服务器36的经编码视频数据的发射可为串流发射、下载发射或两者的组合。可由目的地装置14经由任何标准数据连接(包含因特网连接)接入文件服务器36。此标准数据连接可包含无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器、以太网络、USB等),或适于接入存储于文件服务器上的经编码视频数据的所述两者的组合。

在图1的实例中,目的地装置14包含接收器26、调制解调器28、视频解码器30及显示装置32。目的地装置14的接收器26经由信道16接收信息,且调制解调器28解调信息以产生用于视频解码器30的经解调位流。经由信道16所传达的信息可包含由视频编码器20所产生,以用于由视频解码器30在解码视频数据时使用的多种语法信息。此语法也可包含于存储于存储媒体34或文件服务器36上的经编码视频数据中。视频编码器20及视频解码器30中的每一者可形成能够编码或解码视频数据的相应编码器-解码器(编解码器(CODEC))的部分。

显示装置32可与目的地装置14整合在一起,或在目的地装置外部。在一些实例中,目的地装置14可包含整合式显示装置,且也经配置以与外部显示装置介接。在其它实例中,目的地装置14可为显示装置。一般来说,显示装置32向用户显示经解码视频数据,且可包括多种显示装置中的任一者,例如,液晶显示器(LCD)、电浆显示器、有机发光二极管(OLED)显示器或另一类型的显示装置。

在图1的实例中,通信信道16可包括任何无线或有线通信媒体,例如,射频(RF)频谱或一或多个实体发射线、或无线及有线媒体的任何组合。通信信道16可形成基于封包的网络(例如,局域网络、广域网或例如因特网的全球网络)的部分。通信信道16大体上表示用于将视频数据从源装置12发射到目的地装置14的任何合适通信媒体或不同通信媒体的集合,包含有线或无线媒体的任何合适组合。通信信道16可包含路由器、交换器、基站或可用于促进从源装置12到目的装置14的通信的任何其它设备。

视频编码器20及视频解码器30可根据视频压缩标准(例如,由ITU-T视频译码专家群组(VCEG)及ISO/IEC运动图片专家群组(MPEG)的视频译码联合合作小组(JCT-VC))开发的高效率视频译码(HEVC)标准)而操作。文件JCTVC-L1003v34中的HEVC标准的草案(Bross等人的“高效率视频译码(HEVC)文本规范草案10(High Efficiency Video Coding(HEVC)Text Specification Draft 10)”,ITU-T SG16WP3及ISO/IEC JTC1/SC29/WG11的视频译码联合合作小组(JCT-VC),第12次会议,日内瓦,瑞士,2013年1月14日至23日)获得于http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip中。

尽管图1中未展示,但在一些方面中,视频编码器20及视频解码器30可各自与音频编码器及解码器整合,且可包含适当MUX-DEMUX单元或其它硬件及软件,以处理共同数据流或单独数据流中的音频及视频两者的编码。如果适用,则在一些实例中,MUX-DEMUX单元可符合ITU H.223多任务器协议,或例如用户数据报协议(UDP)的其它协议。

视频编码器20及视频解码器30可各自实施为多种合适编码器电路系统中的任一者,例如一或多个微处理器、数字信号处理器(DSP)、特殊应用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当在软件中部分地实施技术时,装置可将用于软件的指令存储于合适的非暂时性计算机可读媒体中,且在硬件中使用一或多个处理器来执行所述指令以执行本发明的技术。视频编码器20及视频解码器30中的每一者可包含于一或多个编码器或解码器中,其中任一者可整合为相应装置中的组合编码器/解码器(编解码器(CODEC))的部分。

视频编码器20可实施本发明的技术中的任一者或所有,以用于编码视频编码过程中的系数层级。同样地,视频解码器30可实施这些技术中的任一者或所有,以用于在视频解码过程中解码系数层级。如本发明中所描述,视频译码器可指视频编码器或视频解码器。类似地,视频译码单元可指视频编码器或视频解码器。同样地,视频译码可指视频编码或视频解码。

数字视频装置实施视频压缩技术以更有效率地编码及解码数字视频信息。视频压缩可应用空间(帧内)预测及/或时间(帧间)预测技术,以减少或移除视频序列中所固有的冗余。上文所描述的HEVC标准是基于视频译码装置的演进模型,其被称作HEVC测试模型(HM)。HM假设视频译码装置相对于根据(例如)ITU-T H.264/AVC的现有装置的若干额外能力。举例来说,H.264提供九个帧内预测编码模式,而HEVC HM可提供多达三十三个帧内预测编码模式。以下章节将较详细地论述HM的某些方面。

对于根据HEVC标准的视频译码,可将视频帧分割成译码单元。译码单元(CU)大体上指充当各种译码工具应用至的,以用于视频压缩的基本单元的影像区域。CU通常具有表示为Y的亮度分量,及表示为U及V的两个色度分量。取决于视频取样格式,U及V分量的大小可依据样本的数目而与Y分量的大小相同或不同。

CU通常为正方形,且可认为其类似于(例如)其它视频译码标准(例如,ITU-T H.264)下的所谓的宏块。出于说明的目的,根据正开发的HEVC标准的目前建议方面中的一些的译码将描述于本申请案中。然而,本发明中所描述的技术可用于其它视频译码过程,例如根据H.264或其它标准或专属视频译码过程定义的那些过程。

根据HM,CU可包含一或多个预测单元(PU)及/或一或多个转换单元(TU)。位流内的语法数据可定义最大译码单元(LCU),最大译码单元为在像素数目方面最大的CU。一般来说,除CU不具有大小区分之外,CU具有与H.264的宏块相似的用途。因而,可将CU分裂成子CU。一般来说,本发明中对CU的参考可指图片的最大译码单元或LCU的子CU。LCU可分裂为多个子CU,且每一子CU可进一步分裂为多个子CU。用于位流的语法数据可定义可分裂LCU的最大次数(称为CU深度)。因此,位流也可定义最小译码单元(SCU)。本发明也使用术语“块”或“部分”来指CU、PU或TU中的任一者。一般来说,“部分”可指视频帧的任何子集。

LCU可与四元树数据结构相关联。一般来说,四元树数据结构针对每CU包含一节点,其中根节点对应于LCU。如果将CU分裂成四个子CU,则对应于所述CU的节点包含四个叶节点,所述叶节点中的每一者对应于所述子CU中的一者。四元树数据结构中的每一节点可提供用于对应CU的语法数据。举例来说,四元树中的节点可包含分裂旗标,从而指示是否将对应于所述节点的CU分裂成子CU。可递归地定义用于CU的语法元素,且所述语法元素可取决于是否将CU分裂成子CU。如果CU未进一步分裂,则所述CU被称作叶CU。在本发明中,尽管不存在原始叶CU的显式分裂,但叶CU的四个子CU也被称作叶CU。举例来说,如果处于16×16大小的CU未进一步分裂,则尽管16×16CU从未分裂,但四个8×8子CU也将被称作叶CU。

叶CU可包含一或多个预测单元(PU)。一般来说,PU表示对应CU的所有或一部分,且可包含用于检索PU的参考样本的数据。举例来说,当PU经帧间模式编码时,PU可包含定义用于PU的运动向量的数据。定义运动向量的数据可描述(例如)运动向量的水平分量、运动向量的垂直分量、运动向量的分辨率(例如,四分的一像素精度或八分的一像素精度)、运动向量所指向的参考帧,及/或运动向量的参考列表(例如,列表0或列表1)。定义PU的叶CU的数据也可描述(例如)将CU分割成一或多个PU。取决于CU未经译码、经帧内预测模式编码抑或经帧间预测模式编码,分割模式可不同。对于帧内译码,可与下文所描述的叶变换单元相同地对待PU。

新出现的HEVC标准允许根据变换单元(TU)进行变换,对于不同CU,TU可不同。通常基于针对经分割LCU定义的给定CU内的PU的大小来设定TU大小,但可并非总是此状况。TU通常相同于PU的大小,或小于PU的大小。在一些实例中,可使用已知为“残余四元树”(RQT)的四元树结构,将对应于CU的残余样本再分成较小单元。可将RQT的叶节点称作变换单元(TU)。可变换与TU相关联的像素差值以产生可量化的变换系数。TU包含明度变换块及两个色度变换块。因而,应用于TU的下文所论述的任何译码过程可实际上应用于明度及色度变换块。

一般来说,PU是指相关于预测过程的数据。举例来说,当帧内模式编码PU时,PU可包含描述所述PU的帧内预测模式的数据。作为另一实例,当帧间模式编码PU时,PU可包含定义所述PU的运动向量的数据。

一般来说,TU用于变换过程及量化过程。具有一或多个PU的给定CU也可包含一或多个变换单元(TU)。在预测之后,视频编码器20可根据PU,自由译码节点所识别的视频块计算残余值。接着,更新译码节点以参考残余值而非原始视频块。残余值包括像素差值,可使用TU中所指定的变换及其它变换信息将所述像素差值变换成变换系数,将其量化及扫描,以产生串行化变换系数以供熵译码。可再次更新译码节点,以指这些串行化变换系数。本发明通常使用术语“视频块”来指CU的译码节点。在一些特定状况下,本发明也可使用术语“视频块”来指包含译码节点及PU及TU的树型块(即,LCU或CU)。

视频序列通常包含一系列视频帧或图片。图片群组(GOP)通常包括一系列视频图片中的一或多者。GOP可包含GOP的标头、图片中的一或多者的标头或别处的语法数据,所述语法数据描述包含于GOP中的图片的数目。图片的每一切片可包含描述相应切片的编码模式的切片语法数据。视频编码器20通常对个别视频切片内的视频块进行操作,以便编码视频数据。视频块可对应于CU内的译码节点。视频块可具有固定或变化的大小,且可根据指定译码标准而在大小方面不同。

为译码块(例如,视频数据的预测单元),首先导出用于块的预测子。可经由帧内(I)预测(即,空间预测)抑或帧间(P或B)预测(即,时间预测)导出预测子(也称作预测性块)。因此,可使用相对于同一帧(或切片)中的相邻参考块中的参考样本的空间预测帧内译码(I)一些预测单元,且可相对于其它先前经译码帧(或切片)中的参考样本的块单向帧间译码(P)或双向帧间译码(B)其它预测单元。在每一状况下,参考样本可用以形成用于待译码块的预测性块。

在识别预测性块之后,确定原始视频数据块中的像素与预测性块中的像素之间的差。此差可被称作预测残余数据,且指示待译码块中的像素值与所选择以表示经译码块的预测性块中的像素值之间的像素差。为达成较好压缩,可(例如)使用离散余弦变换(DCT)、离散正弦变换(DST)、整数变换、K-L变换或另一变换对预测残余数据进行变换,以产生变换系数。

可以驻留于空间像素域中的像素差值的二维(2D)阵列布置变换块(例如,TU)中的残余数据。变换将残余像素值转换为变换域(例如,频域)中的变换系数的二维阵列。为了进一步压缩,可在熵译码之前量化变换系数。在一些实例中(例如无损译码或具有变换跳过或绕过的有损译码),可跳过系数的变换过程及量化过程两者。

接着,熵译码器将熵译码应用于系数,例如上下文自适应性可变长度译码(CAVLC)、上下文自适应性二进制算术译码(CABAC)、机率区间分割熵译码(PIPE)或类似者。在一些实例中,视频编码器20可利用预定义扫描次序来扫描系数,以产生可经熵编码的串行化向量。在其它实例中,视频编码器20可执行自适应性扫描。在扫描系数以形成一维向量之后,视频编码器20可熵编码一维向量,视频编码器20也可熵编码与由视频解码器30在解码视频数据时所使用的经编码视频数据相关联的语法元素。

本发明是关于用于结合上下文自适应性二进制算术译码(CABAC)熵译码器或其它熵译码器(例如,机率区间分割熵译码(PIPE)或相关译码器)的绕过译码的技术。算术译码为用于具有较高译码效率的许多压缩算法中的一种形式的熵译码,此是因为其能够将符号映像为非整数长度的码字。算术译码算法的实例为基于上下文的二进制算术译码(CABAC)。

一般来说,使用CABAC的熵译码数据符号涉及以下步骤中的一或多者:

(1)二进制化:如果待译码的符号为非二进制值,则将其映射为一序列所谓的“位子”。每一位子可具有“0”或“1”的值。

(2)上下文指派:向每一位子(常规模式中)指派上下文。上下文模型确定如何基于可用于位子的信息(例如,先前经编码符号的值或位子数目),来计算用于给定位子的上下文。

(3)位子编码:通过算术编码器编码位子。为编码位子,算术编码器要求将位子的值的机率作为输入,即,位子的值等于“0”的机率及位子的值等于“1”的机率。由称为“上下文状态”的整数值表示每一上下文的所估计机率。每一上下文具有状态,且因此对于指派到一上下文的位子来说,状态(即,所估计机率)是相同的,且在上下文之间不同。

(4)状态更新:基于位子的实际经译码值更新所选定上下文的机率状态(例如,如果位子值为“1”,则增加“1's”的机率)。

在于绕过模式中使用CABAC熵译码数据符号的状况下,将待译码的符号二进制化为一序列位子,并通过固定相等机率模型(例如,通过指数哥伦布码或哥伦布莱斯码)以算数方式对其进行译码。绕过模式并不要求上下文指派或机率状态更新。举例来说,本发明描述用于使用由莱斯参数定义的哥伦布码来绕过译码系数的系数层级的剩余绝对值的技术。应注意,机率区间分割熵译码(PIPE)使用类似于算术译码的那些原理的原理,且因此其也可利用本发明的技术。

H.264/AVC及HEVC中的CABAC使用状态,且每一状态隐含地涉及机率。存在CABAC的变化形式,其中直接使用符号的机率(“0”或“1”),即,机率或机率的整数版本为状态。举例来说,CABAC的这些变化形式描述于“由法国电信、NTT、NTT DOCOMO、松下和特艺提议的视频译码技术的描述(Description of video coding technology proposal by France Telecom,NTT,NTT DOCOMO,Panasonic and Technicolor)”(JCTVC-A114,第一次JCT-VC会议,德国德雷斯顿,2010年4月,在下文中被称作“JCTVC-A114”)中,及A.Alshin and E.Alshina的“用于CABAC的多参数机率更新(Multi-parameter probability update for CABAC)”(JCTVC-F254,第六次JCT-VC会议,意大利都灵,2011年7月,在下文中被称作“JCTVC-F254”)中。

为熵译码系数的块(无论经变换且经量化或既未经变换也未经量化),通常执行扫描过程,使得根据特定扫描次序将块中的系数的二维(2D)阵列重排成系数的有序一维(1D)阵列,即,向量。接着,将熵译码应用于系数的向量。扫描变换单元中的系数串行化用于熵译码器的系数的2D阵列。可产生有效性映射以指示有效(即,非零)系数的位置。扫描可应用于有效(即,非零)系数的扫描层级,及/或有效系数的码正负号。

在HEVC标准中,首先针对变换块译码有效变换系数(例如,有效性映像)的位置信息,以指示非零系数及最后非零系数在扫描次序中的位置。针对反扫描次序中的每一系数,译码有效性映像及层级信息(即,系数的绝对值及正负号)。

图2为展示用于系数层级译码的实例反扫描次序的概念图。H.264标准定义Z形扫描。HEVC标准定义三种不同扫描:子块对角线扫描、子块水平扫描及子块垂直扫描。图2说明各自应用于变换块的8×8子块的反曲折扫描型样29、反垂直扫描型样31、反水平扫描型样33及反对角线扫描型样35。应注意,反对角线扫描型样35、反曲折扫描型样29、反垂直扫描型样31及反水平扫描型样33中的每一者从变换块的右下角的较高频率系数到变换块的左上角的较低频率系数进行。

在HEVC标准中,子块对角线扫描型样35、子块水平扫描型样33及子块垂直扫描型样31可应用于4×4及8×8变换块。在HEVC标准中,子块对角线扫描型样35也可应用于16×16及32×32变换块。在一些实例中,子块对角线扫描型样35也可应用于8×8TU。在基于子块的扫描中,在进行到较大变换块内的另一4×4子块之前,扫描较大变换块的一4×4子块。在其它实例中,“子块”可由根据所使用的扫描次序的数个经连续扫描系数组成。举例来说,“子块”可由沿着对角线扫描次序的16个经连续扫描系数组成。

图3为展示用于系数群组(CG)的系数层级译码的实例基于子块的反对角线扫描次序的概念图。图3说明由四个4×4子块(37A、37B、37C、37D)组成的8×8变换块38。如图3中所展示,在扫描子块37C中的系数之前扫描子块37D中的系数。接着,从子块37C到子块37B且最后到子块37A地进行扫描。图3描绘每一子块中的反对角线扫描次序。在其它实例中,可使用任何扫描次序(例如,水平、垂直、曲折等)。在一些实例中,可在每一子块内使用前向扫描次序。

在HEVC标准中,可将系数分组成碎块或子集。针对每一子集,译码系数的有效性映像及层级信息(即,绝对值及正负号)。在本发明中,系数的子集可被称作系数群组(CG)。CG可经定义为变换块在扫描次序上的n个(例如,n=16)连续系数,其可对应于4×4子块。在一实例中,子集由4×4变换块及8×8变换块沿着扫描次序(例如,前向或反对角线、水平或垂直扫描次序)的16个连续系数组成。对于16×16及32×32变换块,将较大变换块内的系数的4×4子块对待为子集。在图3的实例中,子块37中的每一者可为CG。

译码以下所描述的符号以表示CG内的系数层级信息。在一个实例中,以反扫描次序译码所有符号。可根据反扫描次序,在CG的单独扫描中译码符号中的每一者。以下符号可被称作“旗标”。应注意,本发明中所论述的“旗标”中的任一者无需限于二进制符号,而是也可实施为多位语法元素。

significant_coeff_flag(也被称作sigMapFlag)指示子集中的每一系数的有效性。具有大于零的绝对值的系数认为是有效的。作为一个实例,0的sigMapFlag值(即,并不大于零)指示系数并非有效的,而1的值(即,大于零)指示系数是有效的。此旗标可大体上被称作有效性旗标。coeff_sign_flag(也被称作signFlag)指示任何非零系数(即,具有为1的sigMapFlag的系数)的正负号信息。举例来说,零的此旗标指示正号,而1指示负号。

coeff_abs_level_greater1_flag(也被称作gr1Flag)指示对于任何非零系数(即,具有为1的sigMapFlag的系数或其中将sigMapFlag隐含地导出为1),系数的绝对值是否超过1。作为一个实例,0的gr1Flag值指示系数并不具有大于1的绝对值,而gr1Flag的1值指示系数确实具有大于1的绝对值。此旗标可大体上被称作大于1旗标。

coeff_abs_level_greater2_flag(也被称作gr2Flag)指示对于具有超过1的绝对值的任何系数(即,具有为1的gr1Flag的系数),系数的绝对值是否超过2。作为一个实例,0的gr2Flag值指示系数并不具有大于2的绝对值,而gr2Flag的1值指示系数确实具有大于2的绝对值。此旗标可大体上被称作大于2旗标。可各自使用CABAC译码sigMapFlag、gr1Flag及gr2Flag。

coeff_abs_level_remaining语法元素(也被称作levelRem语法元素)指示绝对值大于由先前旗标所译码的值的任何系数的系数层级的剩余绝对值。一般来说,对于levelRem语法元素,译码具有超过2的绝对值的每一系数(即,具有为1的gr2Flag的系数)的系数层级的绝对值减去三(即,abs(层级)-3)。在一些实例中,当达到当前CG的gr1Flag及/或gr2Flag的最大数目时,levelRem语法元素可用于译码具有小于或等于二的绝对值的系数层级。可使用由莱斯参数的值定义的码(例如,哥伦布莱斯码或指数哥伦布码)来译码levelRem语法元素。

图4为展示用于译码CG 39的系数层级的实例反对角线扫描次序的概念图。CG 39可为4×4变换块或可为8×8、16×16或32×32变换块中的4×4子块。表1中概述以反扫描次序扫描的用于图4中展示的系数的经编码符号。在表1中,scan_pos是指系数沿着图4中展示的CG 39的反对角线扫描型样的位置。Scan_pos 15为所扫描的第一系数,且位于CG 39的右下角处。scan_pos 15处的系数具有0的绝对值。Scan_pos 0为所扫描的最后系数,且位于CG 39的左上角处。scan_pos 0处的经量化的系数具有10的绝对值。在4×4变换块或较大变换块中的最后4×4子块的状况下,并不需要译码前四个sigMapFlags,此是由于已知最后非零系数的位置。即,sigMapFlag的译码可开始于最后非零系数处(在此实例中,为scan_pos 11处的系数)。

表1.用于系数群组的系数的经译码符号

在这些符号中,通过自适应性上下文模型(例如,使用CABAC)编码sigMapFlag、gr1Flag及gr2Flag的位子。经由通过固定相等机率模型(例如,通过指数哥伦布码或哥伦布莱斯码)的绕过模式编码signFlag及levelRem的二进制化位子。

如上文所论述,HEVC标准中的语法元素coeff_abs_level_remaining(即,levelRem)指示系数(如果值超过用于系数译码的先前扫描遍次中所译码的所述值)的系数层级的剩余绝对值。在绕过模式中译码此语法元素以便增加吞吐量。对于小值,HEVC标准利用哥伦布莱斯译码,且对于较大值,其切换到指数哥伦布(Exp-Golomb)译码。哥伦布莱斯码与Exp-Golomb码之间的转变点为一元码长度等于4时。莱斯参数为用以从哥伦布码的同族选择码字集的可调值。

举例来说,哥伦布莱斯码为哥伦布码的子集,且在给出可调莱斯参数m的情况下,将值n>=0表示为商q=底限(n/m)且余数r=n-q×m,其中m为2的幂。商q为前缀且具有一元码表示。余数r为后缀且具有固定长度表示。在Exp-Golomb码中,通过一元前缀接着固定长度后缀而类似地形成码结构,但在一元码中的每一位之后,加倍后缀部分中的码字的数目。因此,Exp-Golomb码的码字长度较慢地增长。一般来说,莱斯参数的较大值导致码较慢增长,当译码大系数值时,此情况允许较大效率。关于莱斯参数的额外细节可发现于J.Sole、R.Joshi、M.Karczewicz、N.Nguyen、T.Ji、G.Clare、F.Henry、A.Duenas的“HEVC中的变换系数译码”(IEEE用于视频发射的电路及系统汇刊(关于HEVC的特刊),2012年12月)中。

在HEVC标准中,在每一系数群组(CG)的开始处将莱斯参数设定为等于零的初始值,且在译码CG期间,取决于莱斯参数的值及如下所译码的当前系数的系数层级的绝对值,有条件地更新所述参数:

如果absCoeffLevel>3*2cRiceParam,则cRiceParam=min(cRiceParam+1,4)

否则,cRiceParam=cRiceParam,

其中cRiceParam为莱斯参数,absCoeffLevel为当前系数的系数层级的绝对值,且min()为选择最小值的函数。当在分配中观察到大绝对值时,HEVC莱斯参数更新方案允许二进制化过程逐渐适应系数统计。

如上文所提及,在HEVC标准中,在译码先前CG中的系数的剩余绝对值之后,针对视频数据的变换块中的当前CG,将莱斯参数重置为零的初始值。在译码屏幕内容的系数层级的状况下或在无损译码或以变换跳过模式有损译码的状况下,将莱斯参数的值初始化为零可并非是最佳的。本发明的技术在每一CG的开始处可适应性地设定莱斯参数的初始值,而非始终将莱斯参数重置为零。根据技术,可将用于当前CG的莱斯参数的初始值设定为等于非零值。在一些实例中,可基于视频数据的统计,确定莱斯参数的初始值,以便提供较好的译码性能,尤其是对于屏幕内容及无损译码来说。

在莱斯参数初始化方案的一实例中,在译码先前CG之后可并不重置莱斯参数。实际上,可将用于当前CG的莱斯参数的初始值设定为相同于在译码先前CG的末端处获得的莱斯参数的值。如在HEVC初始化方案中,可在当前CG的开始处将初始值设定为等于0。然而,不同于HEVC方案,并不要求将莱斯参数的初始值设定为0。

在莱斯参数初始化方案的另一实例中,可将用于当前CG的莱斯参数的初始值设定为基于译码先前CG之后的莱斯参数的值的值。在特定实例中,可如下初始化每一CG的开始处的莱斯参数。

cRiceParam=max(0,cRiceParam-1)

在上文的实例中,基于零抑或译码先前CG之后莱斯参数的值的降低中的最大者的选择而针对当前CG初始化莱斯参数的值。在一些其它实例中,可如下文实例地设定莱斯参数的初始值的上限。

cRiceParam=min(2,max(0,cRiceParam-1))

在此实例中,将莱斯参数的初始值设定上限为不大于2。

在一些实例中,除了1的值可用于减少莱斯参数的先前值(例如,值n),包含从莱斯参数的先前值减去2(即,n等于2)而非1。举例来说,可基于当前CG是否包含于应用变换的变换块中,而变化用于初始化莱斯参数的降低值。如下可为实例公式。

在上文的实例中,如果变换块为变换跳过块(即,transform_skip_flag=1),则基于零抑或译码先前CG之后莱斯参数的值降低1中的最大者的选择而针对当前CG初始化莱斯参数的值。另一方面,如果变换块为变换跳过块(即,transform_skip_flag=0),则基于零抑或译码先前CG之后莱斯参数的值降低2中的最大者的选择而针对当前CG初始化莱斯参数的值。

基于变换是否应用于变换块,本发明中所描述的莱斯参数初始化方案的实例状况可应用于包含于所有变换块中的CG,或可应用于CG。举例来说,在具有变换跳过或变换绕过的变换块的状况下,可并不将用于变换块中的当前CG的莱斯参数值重置为0,但对于已应用变换的变换块,可将用于变换块中的当前CG的莱斯参数重置为0。

举例来说,在以变换跳过模式有损译码的状况下,降低针对当前CG所初始化的莱斯参数的值可仅应用于变换跳过块中的CG。如下可为实例公式。

在上文的实例中,如果变换块为变换跳过块(即,transform_skip_flag=1),则基于零抑或译码先前CG之后莱斯参数的值降低1中的最大者的选择而针对当前CG初始化莱斯参数的值。另一方面,如果变换块为变换跳过块(即,transform_skip_flag=0),则针对当前CG,将莱斯参数的值初始化为零,如在HEVC初始化方案中。

在莱斯参数初始化方案的另一实例中,可基于先前经解码系数的系数层级的统计,确定用于当前CG的莱斯参数的初始值。系数层级的统计可包含先前经译码系数的系数层级的绝对值统计或系数层级的剩余绝对值统计。初始化方案可取决于包含于相同于当前CG的变换块中的CG中的先前经译码系数,及/或包含于在包含当前CG的变换块之前的不同变换块中的CG中的先前经译码系数。

在一些状况下,基于统计的莱斯参数初始化方案可取决于变换块类型、变换块大小、变换块中的CG的位置、变换块是否具有帧内预测或帧间预测切片类型、变换块的色彩分量及变换块的位深度中的一或多者。另外,基于统计的莱斯参数初始化方案可取决于先前及当前变换块中的先前经译码系数的剩余绝对层级。举例来说,莱斯参数初始化方案可取决于先前CG中的系数层级的最后经译码绝对值,或系数层级的最后经译码剩余绝对值、取决于先前CG中的先前经译码系数的系数层级的和或其它统计,或较简单地取决于先前CG中所译码的第一系数的系数层级。

下文描述用于基于统计的莱斯参数初始化方案的统计收集的若干实例。在本发明中,术语“statCoeff”及术语“m_sumCoeff”可互换使用以表示统计,且术语“uiLevel”用于表示先前经译码系数的系数层级的绝对值或剩余绝对值。

在一实例中,可通过遍及视频数据的切片或译码单元(CU),计算先前经译码系数的系数层级的绝对值或剩余绝对值的平均值或流动平均值或类似统计,确定统计。以类似于上下文自适应性二进制算术译码(CABAC)上下文的方式,可在视频数据的切片的开始处初始化此平均值或流动平均值,并基于CG中的当前经译码系数层级,在切片的每一CG处进行更新。应理解,使用由莱斯参数定义的码(例如,哥伦布莱斯码或指数哥伦布码)绕过译码系数层级的剩余绝对值(即,coeff_abs_level_remaining值)。提供CABAC的描述及与CABAC上下文的初始化的比较,以仅帮助理解。

在另一实例中,可通过将给定先前经译码系数的系数层级与统计值直接比较,且接着基于比较确定是增加/降低抑或维持统计值而确定统计。举例来说,可根据以下条件性等式确定统计。

statCoeff+=(uiLevel==statCoeff)?0:((uiLevel<statCoeff)?-1:1);

在上文的等式中,如果当前系数层级(uiLevel)超过先前统计(statCoeff),则增加statCoeff的值,且如果当前系数层级小于statCoeff,则降低statCoeff的值,或如果当前系数层级等于先前statCoeff,则statCoeff的值维持不变。可在译码过程中初始化CABAC上下文的相同点处,即,正经译码视频数据的每一切片的开始处,将statCoeff的值初始化为0。

在另一实例中,可通过将给定先前经译码系数的系数层级与统计的预定义函数进行比较,且接着基于比较确定是增加抑或降低统计值而确定统计。此外,在此实例中,可在视频数据的每一切片的开始处将统计值(m_sumCoeff)重置为零。统计的预定义函数可基于左移位除以第二常数值的统计值的第一常数值。如下给出统计(m_sumCoeff)的函数的一实例。

在上文的伪码中,a、b、c、d、e、f、g及h为参数,且<<表示左移位运算。

以下为使用参数a、b、c、d、e、f、g及h的实例值的上文等式的若干实例。在a=3、d=2、第一常数值(h)等于1且第二常数值(f)等于4,且将剩余参数设定为等于0的状况下,如下给出统计(m_sumCoeff)的函数。

在a=1、d=1、第一常数值(h)等于1且第二常数值(f)等于4,且将剩余参数设定为等于0的状况下,如下给出统计(m_sumCoeff)的函数。

在一些实例中,系数层级的统计的函数可包含相关于自从在切片的开始处将统计初始化为零以来,应用于统计的更新的总数目的变量。如下给出包含总计数变量(m_total_counter)的统计(m_sumCoeff)的函数的一实例。

在上文的伪码中,a、b、c、d、e、f、g及h为参数,<<表示左移位运算,且不管统计是增加还是降低,m_total_counter在每一统计更新(m_sumCoeff)之后增加。

可根据预定义频率,针对基于统计的莱斯参数初始化方案执行上文所描述的统计收集。在一实例中,可在译码CG中的系数层级的每一绝对值之后,或在译码CG中的系数层级的每一剩余绝对值之后,更新统计。在另一实例中,为了限制复杂性的增加,可按每一CG或每一变换块仅更新一次统计。通过此方法,可无需针对每一经译码系数层级更新统计,而实际上,可按每一变换块或每一CG更新一次统计(在HEVC中为按每16系数更新一次)。

在一些状况下,可仅当译码CG中的系数层级的第一绝对值时,更新统计。在其它状况下,可仅当译码CG中的系数层级的第一剩余绝对值时,更新统计。以下伪码说明关于上文所描述的统计收集等式的此限制,其中将第一经译码系数层级的值(uiLevel)与统计(statCoeff)的值直接比较。

在上文的等式中,术语“firstGolombCoeffinCG”用于表示当前经译码系数层级是否为CG中的第一剩余绝对值,术语“statCoeff”用于表示统计,且术语“uiLevel”用于表示先前经译码系数的系数层级的第一绝对值或第一剩余绝对值。

可将频率限制类似地应用于上文所描述的统计收集等式,其中将第一经译码系数层级的值(uiLevel)与统计(statCoeff)的预定义函数进行比较,如以下伪码中所展示。

在一些状况下,可针对基于包含CG的变换块的特性定义的多个不同类别的CG中的每一者,分别执行上文所描述的统计收集。在此状况下,可基于变换块的特性,确定变换块中的当前CG的类别,且可基于用于所确定类别的统计,初始化用于当前CG的莱斯参数。下文描述分割用于基于统计的莱斯参数初始化方案的统计的若干实例。

用于分割或分类统计的变换块的特性可包含变换块是为明度块类型还是色度块类型、变换块是否具有帧内预测或帧间预测切片类型、变换块的大小及变换块内的CG的位置中的一或多者。变换块内的CG的位置特性可指示当前CG是否为变换块中的左上方4×4子块。另外,特性可包含变换块是否经译码为变换跳过块,或变换块是否经译码为变换量化绕过块。因此,取决于上文特性中的一或多者,可分别保存统计。可针对每一类型或类别的CG或变换块,确定单独统计。单独统计可为基于统计的莱斯参数初始化方案提供较准确的估计,但也要求较多存储资源。

作为第一实例,以下函数可用于基于取决于变换块是否为明度块,及CG是否为变换块中的左上方子块的变量TYPE,确定统计的分割或类别。

TYPE=2*isLuma+(iSubSet>0);

根据上文的函数,取决于变换块为明度块(isLuma=1)或色度块(isLuma=0),及CG为左上方子块(iSubSet==0)或并非为左上方子块(iSubSet>0),变量TYPE可具有4个值。

在另一实例中,统计的分割或类别取决于变换块是否为明度块,及是否以变换跳过模式译码变换块。

TYPE=2*isLuma+(isTransformSkip?0:1);

根据此函数,取决于变换块为明度块(isLuma=1)或色度块(isLuma=0),及以变换跳过模式译码变换块(isTransformSkip=1)或未以所述模式进行译码(isTransformSkip=0),变量TYPE可具有4个值。

在另一实例中,统计的分割或类别取决于变换块是否为明度块、CG是否为变换块中的左上方子块,及是否以变换跳过模式译码变换块。

TYPE=4*isLuma+2*(isTransformSkip?0:1)+(iSubSet>0);

根据此函数,取决于变换块为明度块(isLuma=1)或色度块(isLuma=0)、以变换跳过模式译码变换块(isTransformSkip=1)或未以所述模式进行译码(isTransformSkip=0),及CG为左上方子块(iSubSet==0)或并非左上方子块(iSubSet>0),变量TYPE可具有8个值。

在另一实例中,统计的分割或类别取决于变换块是否经译码为变换量化绕过(即,为无损译码,绕过变换及量化过程两者)。

使用根据上文所描述的若干实例中的一者定义的TYPE变量,并将其与上文所描述的统计收集等式(其中将第一经译码系数层级的值(uiLevel)与统计(statCoeff)的值直接比较),及上文所描述的统计收集频率限制(其中仅当译码CG中的第一系数层级(firstGolombCoeffinCG)时更新统计)组合,组合式方法将为如下。

在上文的伪码中,术语“statCoeff[TYPE]”表示针对由变量TYPE所指示的CG类别所收集的统计。

如下将为使用上文所描述的统计收集等式(其中将第一经译码系数层级的值(uiLevel)与统计(statCoeff)的预定义函数进行比较)的组合式方法的另一实例。

此外,在上文的伪码中,术语“statCoeff[TYPE]”表示针对由变量TYPE所指示的CG类别所收集的统计。

在一些实例中,编解码器(即,视频编码器/解码器)可支持多个方法,以针对CG确定TYPE变数。举例来说,编解码器可支持用于TYPE变量的上文所描述的实例函数中的两者或两者以上。在此状况下,编解码器可选择所述方法中的一者,以基于经译码或经导出指示,确定分割用于基于统计的莱斯参数初始化方案的统计的方式。下文给出用于多个方法状况的实例伪码。

方法1:

TYPE=2*isLuma+(isTransformSkip?0:1);

方法2:

TYPE=(isTransformSkip?0:1);

在一状况下,可在经译码位流中用信号发出语法元素,以指示变换块的哪个特性用于定义不同类别的CG。语法元素可包括包含于用于残余视频数据的序列参数集(SPS)或图片参数集(PPS)中的一者中的旗标。作为一实例,视频编码器20可在经译码位流中以高阶语法用信号发出旗标(例如,method_flag),且视频解码器30可解析经译码位流以接收method_flag。在此实例中,method_flag=0指示方法1用于基于变换块是否为明度块,及是否以变换跳过模式译码变换块,确定统计的类别。method_flag=1指示方法2用于仅基于是否以变换跳过模式译码变换块,确定统计的类别。如果存在由编解码器支持的两个以上方法,则语法元素可包括用以指示所选择方法的索引值而非二进制旗标。

在另一状况下,编解码器可基于视频数据的色彩格式,选择用于定义不同类别的CG的方法中的一者,在此情况下无需在位流中用信号发出额外语法元素以指示所述方法。举例来说,可基于YUV色彩格式或RGB色彩格式是否用于译码视频数据,选择用于确定用于视频数据的CG的TYPE变量的方法。作为一实例,当经译码视频数据为YUV色彩格式时,使用基于变换块是否为明度块,及是否以变换跳过模式译码变换块,确定统计的类别的方法1。当经译码视频数据为RGB色彩格式时,使用仅基于是否以变换跳过模式译码变换块,确定统计的类别的方法2。在视频编码器20及视频解码器30能够检测视频数据的色彩格式的状况下,并不在位流中用信号发出指示所选择方法的语法元素(例如,方法旗标或方法索引)。

根据本发明中所描述的技术,基于统计的莱斯参数初始化方案基于根据上文所描述的实例的任何组合而针对先前经译码系数所收集的系数层级统计,确定用于当前CG的莱斯参数的初始值。下文描述将所收集统计的值映射为用于当前CG的莱斯参数的初始值的若干实例技术。可针对每一CG(例如,4×4变换块或变换块的4×4子块)执行统计到莱斯参数的初始值的映射,或可针对每一TU仅执行一次映像(例如,在TU的开始处)。

在一实例中,可根据存储表将统计值映像为初始莱斯参数。映射表的输入可为统计值,且所述表的输出可为莱斯参数的初始值。在一些状况下,可将统计的经削减版本用作到映像表的输入。举例来说,如果最大莱斯参数为5,且统计经削减为介于0与31之间,则可如下给出映射表。

g_golombTab[32]={0,0,0,0,1,1,2,2,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5};

在每一CG的开始处,上文的表可用于基于所收集统计,确定莱斯参数的初始值。在其它实例中,不同的映射表可用于基于所收集统计,确定莱斯参数的初始值。

上文描述统计收集的三个主要实例方法,其中记法“statCoeff”及“m_sumCoeff”可互换使用以表示统计:(1)将经译码系数层级的值(uiLevel)与统计值(statCoeff)直接比较的统计收集,(2)将经译码系数层级的值(uiLevel)与统计的预定义函数(m_sumCoeff)比较的统计收集,及(3)将经译码系数层级的值(uiLevel)与包含总计数变量(m_total_counter)的统计(m_sumCoeff)的预定义函数比较的统计收集。

使用统计收集的特定实例方法中的一者及上文所描述的映射表,可如下执行基于针对由变量TYPE所指示的CG类别所收集的统计的莱斯参数初始化。

cRiceParam=g_golombTab[min(statCoeff[TYPE],31)];

在其它实例中,可根据执行映像的函数,将统计值映像为莱斯参数的初始值。在一些状况下,映像函数可为所收集统计的函数。使用映像函数可避免映像表的额外存储消耗。

作为一实例,可基于右移位常数值的所收集统计,初始化莱斯参数,如下文中给出。

cRiceParam=(statCoeff[TYPE]>>R);

在上文的等式中,“>>“表示右移位运算且R为参数。在一些状况下,可能需要将莱斯参数的最大值限制为MAX_RICE,其可为大于或等于4的整数值。在此状况下,可如下给出函数。

cRiceParam=min(statCoeff[TYPE]>>R,MAX_RICE)

作为另一实例,可基于所收集统计的线性函数初始化莱斯参数,如下文中给出。

cRiceParam=a*(statCoeff[TYPE]+b)/c+d

在上文的等式中,a、b、c及d为参数值。

作为另一实例,可基于所收集统计的分段线性函数初始化莱斯参数。如下给出分段线性函数的两个特定实例。

cRiceParam=statCoeff[TYPE]<16?(statCoeff[TYPE]+1)/4:

(4+(statCoeff[TYPE]+40)/64);

cRiceParam=statCoeff[TYPE]<16?(statCoeff[TYPE])/4:

(4+(statCoeff[TYPE]+40)/64);

在另一实例中,可基于上文所描述的统计收集方法初始化莱斯参数,其中将经译码系数层级的值(uiLevel)与统计(m_sumCoeff)的预定义函数比较。在此状况下,根据统计的函数,将所收集统计的值映射为莱斯参数的初始值。在一实例中,用于初始化莱斯参数的统计的函数可基于莱斯参数的最大值抑或除以常数值的统计值中的最小者的选择。

如下给出映像函数的实例。

uiGoRiceParam=min(m_sumCoeff/DELAY,MAX_RICE_PARAM_INIT);

在上文的等式中,DELAY为常数值,且MAX_RICE_PARAM_INIT为莱斯参数的最大值。在一些状况下,莱斯参数的最大值可大于或等于4。常数值可为用户定义参数。如下给出其中DELAY=4的映像函数的实例。

cRiceParam=Min(maxRicePara,statCoeff/4)。

在上文的实例中,术语“statCoeff”而非“m_sumCoeff”用于表示统计值,且maxRicePara而非MAX_RICE_PARAM_INIT用于表示莱斯参数的最大值。

在另一实例中,可基于上文所描述的统计收集方法初始化莱斯参数,其中将经译码系数层级的值(uiLevel)与包含总计数变量(m_total_counter)的统计(m_sumCoeff)的预定义函数比较。在此状况下,根据统计的函数,将所收集统计的值映射为莱斯参数的初始值。如下给出映像函数的实例。

If m_sumCoeff/m_total_counter>thres0,cRiceParam+=k0

Elseif m_sumCoeff/m_total_counter<thres1,cRiceParam+=k1

在上文的等式中,术语“thres0”表示第一临限值,且“thres1”表示第二临限值,且k0及k1为参数。根据所述函数,如果除以统计更新的总数目的统计值大于thres0,则将莱斯参数的初始值设定为等于递增k0的莱斯参数的先前值。如果除以统计更新的总数目的统计值小于thres1,则将莱斯参数的初始值设定为等于递增k1的莱斯参数的先前值。

在一些实例中,可将初始莱斯参数削减为介于最小值与最大值之间。在此状况下,将额外削减函数加至用于初始化莱斯参数的映像函数。如下给出经削减映像函数的实例。

cRiceParam=Clip(MIN_RICE,cRiceParam,MAX_RICE)

在上文的等式中,MIN_RICE为莱斯参数的最小值,且MAX_RICE为莱斯参数的最大值。在一实例中,MIN_RICE的值可等于0,且MAX_RICE的值可为大于或等于4的整数值。MIN_RICE及MAX_RICE的值可取决于旁侧信息,例如位深度、布置文件、色彩格式、译码模式(即,无损译码或有损译码)及其它类型的旁侧信息中的一或多者。

如上文所描述,在HEVC中,可在译码CG中的系数层级的每一剩余绝对值之后,更新莱斯参数的值。在一些实例中,可将类似削减应用于莱斯参数的经更新值。相比于初始化过程,用于更新过程的范围(即,最小值及最大值)可不同,或范围可与用于初始化的范围相同。类似地,范围可取决于位深度、布置文件、色彩格式、译码模式(即,无损译码或有损译码)及其它旁侧信息中的一或多者。

下文中给出将统计映射为莱斯参数的初始值的四个额外实例。

在第一实例中,使用被称作m_sumCoeff及m_sumCoeff2的两个统计。可如下使用上文所描述的统计收集方法导出m_sumCoeff的值,其中将经译码系数层级的值(uiLevel)与统计(m_sumCoeff)的预定义函数比较。

可如下使用上文所描述的统计收集方法导出m_sumCoeff2的值,其中将经译码系数层级的值(uiLevel)与统计值(m_sumCoeff2)直接比较。

m_sumCoeff2+=(uiLevel==m_sumCoeff2)?0:

(uiLevel<m_sumCoeff2?-1:1);

在此第一实例中,相比于变换跳过块,用于变换经译码块的统计到莱斯参数的初始值的映射可不同。在变换跳过块的状况下,可如下给出初始化函数。

uiGoRiceParam=min(m_sumCoeff/DELAY,MAX_RICE_PARAM_INIT);

在变换经译码块的状况下,可如下给出初始化函数。

在上文的伪码中,“Th”为临限值。Th的实例值可为(1<<uiGoRiceParam)。

在第二实例中,可使用上文所描述的统计收集方法导出被称作m_sumCoeff的统计,其中将经译码系数层级的值(uiLevel)与统计(m_sumCoeff)的预定义函数比较。在此第二实例中,相比于变换跳过块来说,对于变换经译码块,统计到莱斯参数的初始值的映射可不同。在变换跳过块的状况下,可如下给出初始化函数。

uiGoRiceParam=min(m_sumCoeff/DELAY,MAX_RICE_PARAM_INIT);

在变换经译码块的状况下,可如下给出初始化函数。

在上文的伪码中,“Th”为临限值。Th的实例值可为MAX_RICE_PARAM_INIT/2-2。

在第三实例中,可使用上文所描述的统计收集方法导出被称作m_sumCoeff的统计,其中将经译码系数层级的值(uiLevel)与统计(m_sumCoeff)的预定义函数比较。在此第三实例中,可如下给出统计到莱斯参数的初始值的映射。

在上文的伪码中,“Th”为临限值且“d”为参数。

在第四实例中,可使用上文所描述的统计收集方法导出被称作m_sumCoeff的统计,其中将经译码系数层级的值(uiLevel)与统计(m_sumCoeff)的预定义函数比较。在此第四实例中,可如下给出统计到莱斯参数的初始值的映射。

在上文的伪码中,“Th”为临限值且“d”、DELAY0及DELAY1为参数。在此第四实例中,当统计值等于临限值(Th)时,使用上文等式中的任一者导出的莱斯参数的初始值(uiGoRiceParam)相同。

在一些实例中,用于确定莱斯参数的初始值及临限值的映像函数可为固定的,且为视频编码器20及视频解码器30两者所已知。在其它实例中,可基于旁侧信息,可适应性地决定用于确定莱斯参数的初始值及临限值的映像函数。可由视频编码器20及视频解码器30中的每一者独立地导出旁侧信息,或可使用高阶语法在SPS或PPS中将旁侧信息从视频编码器20用信号发出到视频解码器30,或可使用推导及发信号的一些组合来确定旁侧信息。举例来说,旁侧信息可包含以下各者中的一或多者:帧大小、帧类型、CU大小、TU大小、TU类型(例如,变换跳过模式或变换模式)、色彩分量、帧内或帧间预测模式、量化参数(QP)、位深度、色彩格式(例如,444/422/420)、有效系数旗标(数目及分布两者)、大于1(即,超过1)的旗标(数目及分布两者),及大于2(即,超过2)的旗标(数目及分布两者)。也可显式地用信号发出所述信息。

在初始化用于当前CG的莱斯参数之后,可在译码当前CG中的至少一系数的系数层级的剩余绝对值之后,使用由莱斯参数定义的码(例如,哥伦布莱斯码或指数哥伦布码)更新莱斯参数的初始值。可在更新莱斯参数的值之前或之后,基于当前CG中的一或多个系数层级,确定用于基于统计的莱斯参数初始化方案的统计。

在一些实例中,统计可基于当前CG中的经译码系数层级及用于当前CG的莱斯参数的当前值的比较或计算。如下给出基于系数层级及莱斯参数值的统计的一实例。

在上文的伪码中,“UndershootCnt”、“OvershootCnt”及“TotalCnt”表示将用于初始化莱斯参数的统计。另外,“uiGoRiceParam”表示莱斯参数的值,“s”为参数,且absCoeff[idx]为索引idx处的系数的系数层级的绝对值。

在一些实例中,可在更新莱斯参数的值之前确定统计。在此状况下,在用于确定统计的比较或计算中使用莱斯参数的未经更新值。如下给出基于系数层级及莱斯参数的未经更新值确定统计,且接着更新莱斯参数的值的实例组合。

在上文的伪码中,“MAX_RICE_PARAM”表示莱斯参数的最大值,且min<UInt>()为选择最小值的函数。在一些实例中,莱斯参数的最大值可等于至少4的整数值。在其它实例中,可在更新莱斯参数的值之后确定统计。在此状况下,在用于确定统计的比较或计算中使用莱斯参数的经更新值。

在一些实例中,可将对用于上文所描述的基于统计的莱斯参数初始化方案的统计的更新与莱斯参数的更新整合在一起。如上文所论述,在HEVC中,可基于莱斯参数的初始值及当前CG中正经译码的系数的系数层级的绝对值,有条件地更新莱斯参数的初始值。在译码当前CG中的系数的每一剩余绝对层级之后,可继续有条件地更新莱斯参数的值。如下给出HEVC条件性更新方案。

在上文的伪码中,“uiGoRiceParam”表示莱斯参数的值,absCoeff[idx]为索引idx处的系数的系数层级的绝对值,“MAX_RICE_PARAM”表示莱斯参数的最大值,且min<UInt>()为选择最小值的函数。

在一些实例中,可将对用于在后续CG的开始处初始化莱斯参数的值的统计的更新与基于当前CG的系数层级的莱斯参数更新整合在一起。如下为统计及莱斯参数值的整合式更新的实例。

在上文的伪码中,“UndershootCnt++”表示统计的更新。

在一些实例中,基于用于统计的参数中的部分或所有,计算用于下一译码单元(例如,4×4CG、TU或CU)的莱斯参数的经更新值(或相比于预测值(例如,莱斯参数的当前值)的德耳塔(delta)值)。举例来说,在一实例中,OvershootCnt的值愈高,经更新莱斯参数的值愈小。在另一实例中,UndershootCnt的值愈高,经更新莱斯参数的值愈大。

下文描述基于视频数据的位深度或另一特性,初始化用于每一CG的莱斯参数的若干实例。在这些实例中,对用于每一CG的莱斯参数的初始化并不取决于所收集统计。如在上文所描述的基于统计的莱斯参数初始化方案中,可针对每一CG(例如,4×4变换块或变换块的4×4子块)执行莱斯参数初始化,或可针对每一TU仅执行一次初始化(例如,在TU的开始处)。

在一个实例中,莱斯参数的初始值可改为基于视频数据的位深度。以下为用于每一CG的莱斯参数的初始值cRiceParam为CG的当前分量(例如,亮度分量或色度分量中的一者)的位深度的函数的实例。

cRiceParam=max(0,bitDepth-n)

在上文的等式中,bitDepth为当前分量的位深度,且n为参数。在一个实例中,可将参数n设定为等于9。

在另一实例中,用于每一CG的莱斯参数的初始值cRiceParam可取决于CG的分量类型(例如,明度或色度)。在另一实例中,用于每一CG的莱斯参数的初始值cRiceParam可取决于是否以变换量化绕过模式(其中,跳过变换及量化两者)译码当前块。在另一实例中,用于每一CG的莱斯参数的初始值cRiceParam可取决于是否以变换跳过模式(其中跳过变换但可应用量化)译码当前块。在另一实例中,用于每一CG的莱斯参数的初始值cRiceParam可取决于用于TU的量化参数(QP)。在另一实例中,用于每一CG的莱斯参数的初始值cRiceParam可取决于视频数据的色彩分量及/或色彩空间。

在另一实例中,用于每一CG的莱斯参数的初始值cRiceParam可取决于CU大小、TU大小、帧分辨率、帧速率、预测模式(例如,帧内、帧间、帧内BC(帧内块复制))、帧类型及横向分量残余预测的模式及权重中的一或多者。横向分量残余预测的模式及权重的实例描述于2013年7月15日申请的美国临时申请案第61/846,581号、2013年7月18日申请的美国临时申请案第61/847,839号、2013年5月22日申请的美国临时申请案第61/826,396号,及2013年6月21日申请的美国临时申请案第61/838,152号中。

以下将HEVC用作实例,提供关于coeff_abs_level_greater1旗标及coeff_abs_level_greater2旗标的一些背景信息。在HEVC中,对于CG(例如,4×4子块),首先译码有效性映射以指示具有非零系数层级的系数的位置。接着,对于具有有效系数的位置,可编码coeff_abs_level_greater1旗标以指示系数的绝对值是否超过1。对于coeff_abs_level_greater1=1的位置,可编码coeff_abs_level_greater2旗标以指示系数的绝对值是否超过2。

在一些实例中,用于每一CG的莱斯参数的初始值cRiceParam可取决于具有有效(即非零)值的先前经译码系数层级的数目(可通过等于0抑或1的coeff_abs_level_greater1旗目标译码指示所述数目),及/或具有大于1的值的先前经译码系数层级的数目(可通过等于0抑或1的coeff_abs_level_greater2旗目标译码指示所述数目)。在其它实例中,用于每一CG的莱斯参数的初始值cRiceParam可取决于具有大于1的值的先前经译码系数层级的数目(通过译码coeff_abs_level_greater1=1指示所述数目),及/或具有大于2的值的先前经译码系数层级的数目(通过译码coeff_abs_level_greater2=1指示所述数目)。

在另一实例中,用于每一CG的莱斯参数的初始值cRiceParam可取决于上文实例的任何组合。下文给出基于视频数据的位深度确定莱斯参数的初始值的两个详细实例。

实例1:

offset=(iQP+6*(BD-12)+12)/6

在上文的伪码中,iQP为QP值,且BD为视频数据的位深度。在此第一实例中,当CG包含于以变换跳过模式抑或变换量化绕过模式译码的变换块中时,基于第一等式设定莱斯参数的初始值,且当CG包含于经变换译码块中时,基于第二等式设定莱斯参数的初始值。在任一状况下,基于视频数据的位深度(BD)确定初始值。

实例2:

offset=8-Gr1

在上文的伪码中,Gr1为经译码的coeff_abs_level_greater1旗目标数目,且BD为视频数据的位深度。在此第二实例中,当CG包含于以变换跳过模式抑或变换量化绕过模式译码的变换块中时,基于第一等式设定莱斯参数的初始值,且当CG包含于经变换译码块中时,基于第二等式设定莱斯参数的初始值。在任一状况下,基于视频数据的位深度(BD)确定初始值。

下文描述将根据上文所描述的实例的任何组合的针对每一CG的莱斯参数初始化与偏移值的显式发信号组合的混合方案的实例。举例来说,可将用于在CG的开始处初始化莱斯参数的偏移分解成两个部分的和:(1)常数偏移及(2)适应性偏移。可使用本发明中所描述的实例技术中的一或多者导出适应性偏移。可在位流中将常数偏移从视频编码器20用信号发出到视频解码器30。

作为另一实例,为将显式莱斯参数发信号与本发明中所描述的初始莱斯参数推导过程组合,是否用信号发出莱斯参数的确定可取决于在视频编码器20处所导出的初始莱斯参数值。举例来说,如果所导出的初始莱斯参数值类似于预定义值(例如,导出值与临限值之间的差小于临限值),则可能并不将莱斯参数用信号发出到视频解码器30,但实际上可如上文所描述地导出莱斯参数。在此状况下,可将导出值抑或预定义值用作莱斯参数的初始值。否则,可用信号发出莱斯参数的初始值,或可用信号发出莱斯参数的初始值与预定义值之间的差。发信号技术的一些额外实例可发现于2013年8月26日申请的美国临时申请案第61/870,120号、2013年9月20日申请的美国临时申请案第61/880,616号,及2013年10月11日申请的美国临时申请案第61/889,654号中。

下文描述关于莱斯参数初始化方案的上文所描述实例的若干额外实例及考虑因素。尽管可基本上个别地描述本发明的技术及/或将其描述为与其它技术的特定组合的部分,但本发明中所描述的技术中的任何两者或两者以上可所述此组合。另外,分别实施本发明中所描述的技术中的任一者可为有可能的。

对于有损译码状况,可仅将基于统计的莱斯参数初始化方案应用于变换跳过块,如以下条件性等式中所展示。另一方面,当变换已应用于变换块时,根据HEVC初始化方案将莱斯参数初始化为零。

cRiceParam=isTransformSkip?0:g_golombTab[min(statCoeff[TYPE],31)];

在其它实例中,可仅将基于统计的莱斯参数初始化方案应用于变换跳过块,但当变换已应用于块时,可不必要将莱斯参数自动地初始化为零,如以下等式中所展示。

cRiceParam=isTransformSkip?max(cRiceParam-1,0):

g_golombTab[min(statCoeff[TYPE],31)];

在一些实例中,可停用执行于CG内的HEVC莱斯参数更新方案。实际上,可根据上文所描述的实例技术中的任何组合确定莱斯参数的初始值,且接着可在整个块中使用莱斯参数的所述初始值。在其它实例中,可在CG内执行不同的莱斯参数更新方案。在一些状况下,可在整个块中,根据给定次序或作为整合式方法而使用上文所描述的实例技术中的一或多者,以执行莱斯参数更新及统计更新。又,在一些状况下,可在整个块中使用上文所描述的实例技术中的一或多者,以执行莱斯参数的位深度相依性初始化。

尽管上文分别描述确定莱斯参数的初始值的实例方法,但本发明的技术并不限于此情况。一般来说,上文所描述的实例技术的各种组合可为有可能的。也可分别实施上文所描述的实例方法。另外,上文所描述的方法中的所有或其组合可应用于所有变换块内的CG,或仅应用于跳过或绕过变换的变换块。

图5为说明可实施本发明中所描述的用于编码系数层级的技术的视频编码器20的实例的框图。出于说明的目的,将在HEVC译码的上下文中描述视频编码器20,但本发明关于可要求扫描变换系数的其它译码标准或方法不受限制。视频编码器20可执行视频帧内的CU的帧内译码及帧间译码。帧内译码依赖于空间预测,以减少或移除给定视频帧内的视频数据中的空间冗余。帧间译码依赖于时间预测,以减少或移除在视频序列的当前帧与先前经译码帧之间的时间冗余。帧内模式(I模式)可指若干基于空间的视频压缩模式中的任一者。例如单向预测(P模式)或双向预测(B模式)的帧间模式可指若干基于时间的视频压缩模式中的任一者。

如图5中所展示,视频编码器20接收待编码的视频帧内的当前视频块。在图5的实例中,视频编码器20包含模式选择单元40、视频数据存储器41、运动补偿单元44、运动估计单元42、帧内预测处理单元46、经解码图片缓冲器(DPB)64、求和器50、变换处理单元52、量化单元54及熵编码单元56。图5中所说明的变换处理单元52为将实际变换或变换的组合应用于残余数据的块的单元,且不应与变换系数的块(其也可被称作CU的变换单元(TU))混淆。为了进行视频块重建构,视频编码器20也包含反量化单元58、反变换处理单元60及求和器62。也可包含解块滤波器(图5中未展示),以滤波块边界来自经重建构的视频移除成块效应假影。如果需要,则解块滤波器将通常对求和器62的输出进行滤波。

视频数据存储器41可存储待由视频编码器20的组件编码的视频数据。可(例如)从视频源18获得存储于视频数据存储器41中的视频数据。经解码图片缓冲器64可为存储用于由视频编码器20在编码视频数据(例如,以帧内或帧间译码模式)时使用的参考视频数据的参考图片存储器。视频数据存储器41及经解码图片缓冲器64可由多种存储器装置中的任一者形成,例如动态随机接入存储器(DRAM),包含同步DRAM(SDRAM)、磁阻式RAM(MRAM)、电阻式RAM(RRAM)或其它类型的存储器装置。可由同一存储器装置或单独存储器装置提供视频数据存储器41及经解码图片缓冲器64。在各种实例中,视频数据存储器41可与视频编码器20的其它组件一起在芯片上,或相对于那些组件芯片外。

在编码过程期间,视频编码器20接收待译码的视频帧或切片。可将帧或切片划分成多个视频块,例如最大译码单元(LCU)。运动估计单元42及运动补偿单元44相对于一或多个参考帧中的一或多个块,来执行所接收视频块的帧间预测译码以提供时间压缩。帧内预测处理单元46可相对于与待译码块相同的帧或切片中的一或多个相邻块,执行所接收视频块的帧内预测译码以提供空间压缩。

模式选择单元40可选择译码模式(帧内或帧间)中的一者(例如,基于每一模式的误差(即,失真)结果),并将所得的经帧内或帧间预测块(例如,预测单元(PU))提供到求和器50以产生残余块数据,及提供到求和器62以重建构经编码块以用于参考图片。求和器62组合经预测块与针对所述块的来自反变换单元60的经反量化、经反变换数据,以重建构经编码块,如下文所较详细描述。可将一些视频帧指定为I帧,其中以帧内预测模式编码I帧中的全部块。在一些状况下,(例如)当由运动估计单元42执行的运动搜寻并未带来对块的充分预测时,帧内预测处理单元46可执行P或B帧中的块的帧内预测编码。

运动估计单元42及运动补偿单元44可高度整合,但出于概念目的而单独说明。运动估计(或运动搜寻)为产生运动向量的过程,所述运动向量估计视频块的运动。举例来说,运动向量可指示当前帧中的预测单元相对于参考帧的参考样本的移位。运动估计单元42通过比较预测单元与存储于经解码图片缓冲器64中的参考图片的参考样本,而计算经帧间译码帧的预测单元的运动向量。参考样本可为发现紧密匹配包含依据像素差而译码的PU的CU的部分的块,可通过绝对差总和(SAD)、平方差总和(SSD)或其它差异度量确定像素差。参考样本可出现于参考帧或参考切片内的任何处,且未必出现于参考帧或切片的块(例如,译码单元)边界处。在一些实例中,参考样本可出现于分率像素位置处。

运动估计单元42将经计算运动向量发送到熵编码单元56及运动补偿单元44。由运动向量所识别的参考帧的部分可称作参考样本。运动补偿单元44可(例如)通过检索由PU的运动向量所识别的参考样本来计算用于当前CU的预测单元的预测值。

作为对由运动估计单元42及运动补偿单元44执行的帧间预测的替代方案,帧内预测处理单元46可对所接收块进行帧内预测。帧内预测处理单元46可相对于相邻的先前经译码块(例如,当前块上方、右上方、左上方或左方的块)预测所接收块,从而假定用于块的由左到右、由顶到底的编码次序。帧内预测处理单元46可经配置具有多种不同帧内预测模式。举例来说,基于正经编码的CU的大小,帧内预测处理单元46可经配置具有一定数目的方向预测模式,例如,三十三个方向预测模式。

帧内预测处理单元46可通过(例如)计算各种帧内预测模式的误差值,及选择产生最低误差值的模式来选择帧内预测模式。方向预测模式可包含用于组合空间相邻像素的值,并将组合值应用于PU中的一或多个像素位置的功能。一旦已计算PU中的所有像素位置的值,帧内预测处理单元46可基于PU与待编码的所接收块之间的像素差而计算预测模式的误差值。帧内预测处理单元46可继续测试帧内预测模式,直至发现产生可接受的误差值的帧内预测模式。接着,帧内预测处理单元46可将PU发送到求和器50。

视频编码器20通过从正经译码的原始视频块,减去由运动补偿单元44或帧内预测处理单元46所计算的预测数据而形成残余块。求和器50表示执行此减法运算的(多个)组件。残余块可对应于像素差值的二维矩阵,其中残余块中的值的数目与对应于残余块的PU中的像素的数目相同。残余块中的值可对应于PU中与待译码原始块中的协同定位的像素的值之间的差(即,误差)。取决于经译码块的类型,所述差可为色度差或明度差。

变换处理单元52可从残余块形成一或多个变换单元(TU)。变换处理单元52从多个变换选择变换。举例来说,变换处理单元52可选择离散余弦变换(DCT)、离散正弦变换(DST)、整数变换、K-L变换或另一变换中的一者,以产生变换系数。可基于一或多个译码特性(例如,块大小、译码模式或类似者)选择变换。接着,变换处理单元52将所选定变换应用于TU,从而产生包括变换系数的二维阵列的视频块。变换处理单元52可将所得的变换系数发送到量化单元54。接着,量化单元54可量化变换系数。

接着,熵编码单元56可根据扫描模式对矩阵中的系数执行扫描。在有损译码的状况下,系数可为经量化的变换系数。在无损译码或具有变换跳过或绕过的有损译码的状况下,系数可为尚未经变换或经量化的系数。本发明将熵编码单元56描述为执行扫描。然而,应理解,在其它实例中,例如量化单元54的其它处理单元可执行扫描。

一旦将变换系数扫描到一维阵列中,熵编码单元56可将熵译码(例如CABAC、基于语法的上下文自适应性二进制算术译码(SBAC)、机率区间分割熵(PIPE)或另一熵译码方法)应用于系数。熵编码单元56可经配置以根据本发明的技术译码系数。在CABAC的实例中,熵编码单元56可使用常规译码模式抑或绕过模式编码系数。为执行CABAC,熵编码单元56可选择用以应用一定上下文的上下文模型,以编码待发射的符号。举例来说,所述上下文可关于相邻值是否为非零。熵编码单元56可基于(例如)帧内预测模式的帧内预测方向、对应于语法元素的系数的扫描位置、块类型及/或变换类型,以及用于上下文模型选择的其它因素,选择用于编码这些符号的上下文模型。

熵编码单元56将残余视频数据的系数层级编码成位流,以用于发射到视频解码器或存储装置。在无损视频译码或具有变换跳过或绕过的有损视频译码的状况下,待编码的系数可具有具大绝对值的系数层级。当系数表示屏幕内容(其可包含图形及文本区域)时,可并未良好地预测内容,从而产生待编码的系数的系数层级的大绝对值。

熵编码单元56使用由莱斯参数定义的码,以CABAC的绕过模式或另一熵译码引擎编码当前系数群组(CG)中的至少一系数的系数层级的剩余绝对值(例如,coeff_abs_level_remaining或levelRem)。根据本发明的技术,熵编码单元56经配置以基于先前经编码系数的系数层级的统计,确定用于当前CG的莱斯参数的初始值。统计可为先前经译码系数的系数层级的绝对值或系数层级的剩余绝对值的统计。本发明中所描述的基于统计的莱斯参数初始化方案允许莱斯参数快速且有效地适应于大系数值,此情况可发生于屏幕内容的块及具有变换跳过或绕过的块中。

在一实例中,熵编码单元56可经配置以通过比较用于给定先前经编码系数的系数层级与统计的函数,且接着基于比较确定是增加抑或降低统计值而确定统计。可在视频数据的每一切片的开始处将统计值初始化为零,且熵编码单元56可按切片的每一CG更新一次统计。在一些实例中,熵编码单元56可经配置以针对多个不同类别的CG中的每一者,确定单独统计。可基于包含CG的变换块的特性(例如,变换块是否为明度块,及变换块是否为变换跳过块)定义类别。

在当前CG的开始处,熵编码单元56经配置以将统计值映射为用于当前CG的莱斯参数的初始值。在一实例中,熵编码单元56可根据基于莱斯参数的最大值或除以常数值的统计值中的最小者的选择的统计的函数,将统计值映像为初始莱斯参数值。上文较详细地描述用于莱斯参数初始化方案的表示统计收集、统计分割及统计映像过程的实例等式。

在由熵编码单元56进行熵译码之后,可将所得的经编码视频发射到另一装置(例如,视频解码器30),或将所得的经编码视频封存以供稍后发射或检索。在一些状况下,除熵译码之外,熵编码单元56或视频编码器20的另一单元也可经配置以执行其它译码功能。

反量化单元58及反变换处理单元60分别应用反量化及反变换,以在像素域中重建构残余块(例如)以供稍后用作参考块。运动补偿单元44可通过将残余块加至经解码图片缓冲器64的参考图片中的一者的预测性块而计算参考块。运动补偿单元44也可将一或多个内插滤波器应用于经重建构的残余块,以计算用于运动估计的子整数像素值。求和器62将经重建构的残余块加至由运动补偿单元44产生的经运动补偿的预测块,以产生用于存储于经解码图片缓冲器64中的经重建构的视频块。可由运动估计单元42及运动补偿单元44将经重建构的视频块用作用以帧间译码后续视频帧中的块的参考块。

图6为说明可实施本发明中所描述的用于解码系数层级的技术的视频解码器30的实例的框图。在图6的实例中,视频解码器30包含熵解码单元70、视频数据存储器71、运动补偿单元72、帧内预测处理单元74、反量化单元76、反变换处理单元78、经解码图片缓冲器(DPB)82及求和器80。在一些实例中,视频解码器30可执行大体上与关于视频编码器20(参见图5)所描述的编码遍次互逆的解码遍次。

视频数据存储器71可存储待由视频解码器30的组件解码的视频数据,例如经编码视频位流。可(例如)经由视频数据的有线或无线网络通信从计算机可读媒体16(例如,从本端视频源,例如摄影机)或通过接入实体数据存储媒体而获得存储于视频数据存储器71中的视频数据。视频数据存储器71可形成存储来自经编码视频位流的经编码视频数据的经译码图片缓冲器(CPB)。经解码图片缓冲器82可为存储用于由视频解码器30在解码视频数据(例如,以帧内或帧间译码模式)时使用的参考视频数据的参考图片存储器。视频数据存储器71及经解码图片缓冲器82可由多种存储器装置中的任一者形成,例如动态随机接入存储器(DRAM),包含同步DRAM(SDRAM)、磁阻式RAM(MRAM)、电阻式RAM(RRAM)或其它类型的存储器装置。可由相同存储器装置或单独存储器装置提供视频数据存储器71及经解码图片缓冲器82。在各种实例中,视频数据存储器71可与视频解码器30的其它组件一起在芯片上,或相对于那些组件来说在芯片外。

熵解码单元70对经编码位流执行熵解码过程,以检索残余视频数据系数的一维阵列。所使用的熵解码过程取决于由视频编码器20使用的熵译码(例如,CABAC)。可在经编码位流中用信号发出由编码器使用的熵译码过程,或熵译码过程可为预定过程。熵解码单元70可经配置以根据本发明的技术解码系数。在CABAC的实例中,熵解码单元70可使用常规译码模式或绕过模式解码系数。

在一些实例中,熵解码单元70可使用镜射由视频编码器20的熵编码单元56使用的扫描模式的扫描,扫描所接收值。尽管可在反量化单元76中执行系数扫描,但出于说明的目的,将描述由熵解码单元70执行扫描。另外,尽管为易于说明而展示为单独功能单元,但熵解码单元70、反量化单元76及视频解码器30的其它单元的结构及功能性可所述此高度整合。

熵解码单元70以与视频编码器20互逆的方式解码来自位流的残余视频数据系数的系数层级。在有损视频译码的状况下,待解码的系数可为经量化的变换系数。在无损视频译码或具有变换跳过或绕过的有损视频译码的状况下,待解码系数可为经编码像素值,并具有具大绝对值的系数层级(即,像素值)。当系数表示屏幕内容(其可包含图形及文本区域)时,可并未良好地预测内容,从而产生待解码的系数的系数层级的大绝对值。

熵解码单元70使用由莱斯参数定义的码,解码系数群组(CG)中的至少一系数的系数层级的剩余绝对值。根据本发明的技术,熵解码单元70经配置以基于先前经解码系数的系数层级的统计,确定用于当前CG的莱斯参数的初始值。统计可为先前经解码系数的系数层级的绝对值或系数层级的剩余绝对值的统计。本发明中所描述的基于统计的莱斯参数初始化方案允许莱斯参数快速且有效地适应于大系数值,此情况可发生于屏幕内容的块及具有变换跳过或绕过的块中。

在一实例中,熵解码单元70可经配置以通过比较用于给定先前经解码系数的系数层级与统计的函数,且接着基于比较确定是增加抑或降低统计值而确定统计。可在视频数据的每一切片的开始处将统计值初始化为零,且熵解码单元70可按每一切片的CG更新一次统计。在一些实例中,熵解码单元70可经配置以针对多个不同类别的CG中的每一者,确定单独统计。可基于包含CG的变换块的特性(例如,变换块是否为明度块,及变换块是否为变换跳过块)定义类别。

在当前CG的开始处,熵解码单元70经配置以将统计值映射为用于当前CG的莱斯参数的初始值。在一实例中,熵解码单元70可根据基于莱斯参数的最大值抑或除以常数值的统计值中的最小者的选择的统计的函数,将统计值映像为初始莱斯参数值。上文较详细地描述用于莱斯参数初始化方案的表示统计收集、统计分割及统计映像过程的实例等式。

反量化单元76反量化(即,解量化)位流中所提供,并由熵解码单元70解码的经量化的变换系数。反量化过程可包含常规过程,例如类似于针对HEVC所提议的过程,或由H.264解码标准定义的过程。反量化过程可包含使用由视频编码器20针对CU所计算的量化参数QP以确定量化的程度,且同样地,确定应应用的反量化的程度。反量化单元76可在将系数从一维阵列转换为二维阵列之前抑或之后,反量化变换系数。

反变换处理单元78将反变换应用于经反量化变换系数。举例来说,反变换处理单元78可应用离散余弦变换(DCT)、离散正弦变换(DST)、整数变换、K-L变换或另一变换中的一者,以产生残余数据。在一些实例中,反变换处理单元78可基于来自视频编码器20的发信号确定反变换,或通过从一或多个译码特性(例如块大小、译码模式或类似者)推断变换来确定反变换。在一些实例中,反变换处理单元78可基于包含当前块的LCU的四元树的根节点处的用信号发出的变换,确定用以应用于当前块的变换。替代性地,可在LCU四元树中的叶节点CU的TU四元树的根部处用信号发出变换。在一些实例中,反变换处理单元78可应用级联反变换,其中反变换处理单元78将两个或两个以上反变换应用于正经解码的当前块的变换系数。

帧内预测处理单元74可基于用信号发出的帧内预测模式及来自当前帧的先前经解码块的数据,产生用于当前帧的当前块的预测数据。

运动补偿单元72可从经编码位流检索运动向量、运动预测方向及参考索引。参考预测方向指示帧间预测模式为单向(例如,P帧)抑或双向(B帧)。参考索引指示候选运动向量是基于哪个参考帧。基于所检索的运动预测方向、参考帧索引及运动向量,运动补偿单元72产生用于当前部分的运动补偿块。这些运动补偿块本质上重新产生用以产生残余数据的预测性块。

运动补偿单元72可产生运动补偿块,可能基于内插滤波器执行内插。用于具有次像素精度的运动估计的内插滤波器的识别符可包含于语法元素中。运动补偿单元72可在视频块的编码期间使用如由视频编码器20所使用的内插滤波器,以计算参考块的次整数像素的内插值。运动补偿单元72可根据经接收语法信息来确定由视频编码器20所使用的内插滤波器,并使用所述内插滤波器来产生预测性块。

另外,在HEVC实例中,运动补偿单元72及帧内预测处理单元74可使用语法信息中的一些(例如,由四元树所提供),以确定用于编码经编码视频序列的帧的LCU的大小。运动补偿单元72及帧内预测处理单元74也可使用语法信息,以确定描述经编码视频序列的帧的每一CU如何分裂(且同样地,子CU如何分裂)的分裂信息。语法信息也可包含指示每一分裂经编码的方式的模式(例如,帧内预测或帧间预测,及用于帧内预测及帧内预测编码模式)、用于每一经帧间编码PU的一或多个参考帧(及/或含有用于参考帧的识别符的参考列表),及用以解码经编码视频序列的其它信息。

求和器80组合残余块与由运动补偿单元72或帧内预测处理单元74所产生的对应预测块,以形成经解码块。如果需要,也可应用解块滤波器来对经解码块进行滤波,以便移除成块效应假影。接着,将经解码视频块存储于经解码图片缓冲器82中,所述缓冲器提供用于后续运动补偿的参考块,且也产生用于呈现于显示装置(例如图1的显示装置32)上的经解码视频。

图7为说明根据本发明中所描述的技术的在系数层级的熵编码期间确定莱斯参数的初始值的实例操作的流程图。关于包含来自图5的熵编码单元56的视频编码器20描述实例操作。

熵编码单元56接收待编码成位流的残余视频数据的系数,以用于发射到视频解码器30或用于存储于存储媒体34或文件服务器36上。残余视频数据系数可包含于系数群组(CG)中,所述系数群组中的每一者为变换块一子块(例如,如图4中所说明的4×4子块)。在编码CG中的系数期间,熵编码单元56确定先前经编码系数的系数层级的统计(100)。在下文关于图9较详细地描述的实例中,确定先前经编码系数的系数层级的统计可包括基于比较先前经编码系数中的一或多者的系数层级与统计的函数,确定是增加抑或降低统计值。可在残余视频数据的每一切片的开始处将统计值初始化为零。

在一些实例中,确定先前经编码系数的系数层级的统计可包括遍及残余视频数据的切片或译码单元(CU),计算系数层级的平均值或流动平均值。在其它实例中,确定先前经编码系数的系数层级的统计可包括基于先前经编码系数中的一者的系数层级与统计值的比较,确定是增加、降低抑或维持统计值。

系数层级的统计可包含先前经编码系数的系数层级的绝对值统计或系数层级的剩余绝对值统计。可针对皆包含于相同变换块中的CG中的先前经编码系数,或针对包含于两个或两个以上不同变换块中的CG中的先前经编码系数,收集系数层级的统计。

在一些实例中,熵编码单元56可按每一系数群组确定一次先前经编码系数的系数层级的统计。下文关于图9较详细地描述统计收集的频率。举例来说,在于先前CG中的每一者中编码系数层级的第一绝对值时,熵编码单元56可确定统计。替代性地,在于先前CG中的每一者中编码系数层级的第一剩余绝对值时,熵编码单元56可确定统计。在其它实例中,熵编码单元56可在编码系数中的每一者之后,确定先前经编码系数的系数层级的统计。

另外,如下文关于图9较详细地描述,熵编码单元56可针对多个不同类别的CG中的每一者确定单独统计。可基于包含CG的变换块的特性定义类别。举例来说,变换块的特性可包含变换块是否为明度或色度块类型、变换块是否经编码为变换跳过块或变换量化绕过块、变换块是否具有帧内预测或帧间预测切片类型、变换块的大小,及/或变换块内的CG的位置。

对于待编码残余视频数据的变换块中的当前CG,熵编码单元56基于所收集的先前经编码系数的系数层级的统计,确定莱斯参数的初始值(102)。常规地,在每一CG的开始处将莱斯参数的值初始化为零,且在编码CG中的系数层级的剩余绝对值之后有条件地进行更新。在译码屏幕内容的系数层级的状况下,或在无损译码或以变换跳过模式有损译码的状况下,针对每一CG,将莱斯参数的值初始化为零可能并非最佳的。本发明的技术描述在每一CG的开始处基于所收集统计来设定莱斯参数的值,而非自动地将莱斯参数的值重置为零。

在下文关于图10较详细地描述的一实例中,熵编码单元56通过根据统计的函数,将所收集统计值映射为莱斯参数的初始值,而确定用于当前CG的莱斯参数的初始值。在其它实例中,熵编码单元56可根据存储表,将所收集统计值映像为莱斯参数的初始值。

如上文所较详细地描述,熵编码单元56可根据反扫描次序,对当前CG执行一或多个扫描,以编码当前CG中的系数的系数层级。举例来说,熵编码单元56可使用上下文模型以常规译码模式编码旗标或语法元素,以指示系数的系数层级是否具有大于1或大于2的绝对值。接着,熵编码单元56使用由莱斯参数定义的码编码旗标或语法元素,以指示当前CG中的系数中的至少一者的系数层级的剩余绝对值(104)。举例来说,熵编码单元56可以绕过模式编码语法元素,所述语法元素指示具有大于2的系数层级的系数中的任一者的系数层级的剩余绝对值。在一些实例中,在编码当前CG中的系数层级的第一剩余绝对值之后,熵编码单元56可基于经编码系数的系数层级更新统计。

在一些状况下,熵编码单元56可基于莱斯参数的初始值及当前CG中正经编码的系数的系数层级的绝对值,有条件地更新莱斯参数的初始值。在编码当前CG中的系数的每一剩余绝对层级之后,熵编码单元56可继续有条件地更新莱斯参数的值。在当前CG的末端处,熵编码单元56可基于先前经编码系数(包含包含于当前CG中的最近经编码系数)的系数层级的统计,确定用于后续CG的莱斯参数的初始值。

图8为说明根据本发明中所描述的技术的在系数层级的熵解码期间确定莱斯参数的初始值的实例操作的流程图。关于包含来自图6的熵解码单元70的视频解码器30描述实例操作。

视频解码器30从视频编码器20,或从例如存储媒体34或文件服务器36的存储装置接收经编码视频位流。所接收视频位流表示待解码的残余视频数据的系数。残余视频数据系数可包含于系数群组(CG)中,所述系数群组中的每一者为变换块一子块(例如,如图4中所说明的4×4子块)。在解码CG中的系数期间,熵解码单元70确定先前经解码系数的系数层级的统计(110)。在下文关于图9较详细地描述的实例中,确定先前经解码系数的系数层级的统计可包括基于比较先前经解码系数中的一或多者的系数层级与统计的函数,确定是增加抑或降低统计值。可在残余视频数据的每一切片的开始处将统计值初始化为零。

在一些实例中,确定先前经解码系数的系数层级的统计可包括遍及残余视频数据的切片、译码单元(CU)或变换单元(TU),计算系数层级的平均值或流动平均值。在其它实例中,确定先前经解码系数的系数层级的统计可包括基于先前经编码系数中的一者的系数层级与统计值的比较,确定是增加、降低抑或维持统计值。

系数层级的统计可包含先前经解码系数的系数层级的绝对值统计或系数层级的剩余绝对值统计。可针对皆包含于相同变换块中的CG中的先前经解码系数,或针对包含于两个或两个以上不同变换块中的CG中的先前经解码系数,收集系数层级的统计。

在一些实例中,熵解码单元70可按每一系数群组确定一次先前经解码系数的系数层级的统计。下文关于图9较详细地描述统计收集的频率。举例来说,在于先前CG中的每一者中解码系数层级的第一绝对值时,熵解码单元70可确定统计。替代性地,在于先前CG中的每一者中解码系数层级的第一剩余绝对值时,熵解码单元70可确定统计。在其它实例中,熵解码单元70可在解码系数中的每一者之后,确定先前经解码系数的系数层级的统计。

另外,如下文关于图9较详细地描述,熵解码单元70可针对多个不同类别的CG中的每一者确定单独统计。可基于包含CG的变换块的特性定义类别。举例来说,变换块的特性可包含变换块是否为明度或色度块类型、变换块是否经解码为变换跳过块或变换量化绕过块、变换块是否具有帧内预测或帧间预测切片类型、变换块的大小,及/或变换块内的CG的位置。

对于待解码残余视频数据的变换块中的当前CG,熵解码单元70基于所收集的先前经解码系数的系数层级的统计,确定莱斯参数的初始值(112)。在一些过程中,在每一CG的开始处将莱斯参数的值初始化为零,且在解码CG中的系数层级的剩余绝对值之后有条件地进行更新。在译码屏幕内容的系数层级的状况下,或在无损译码或以变换跳过模式有损译码的状况下,针对每一CG,将莱斯参数的值初始化为零可能并非最佳的。本发明的技术描述在每一CG的开始处基于所收集统计来设定莱斯参数的值,而非自动地将莱斯参数的值重置为零。

在下文关于图10较详细地描述的一实例中,熵解码单元70通过根据统计的函数,将所收集统计值映射为莱斯参数的初始值,而确定用于当前CG的莱斯参数的初始值。在其它实例中,熵解码单元70可根据存储表,将所收集统计值映像为莱斯参数的初始值。

如上文所较详细地描述,熵解码单元70可根据反扫描次序,对当前CG执行一或多个扫描,以解码当前CG中的系数的系数层级。举例来说,熵解码单元70可使用上下文模型以常规译码模式解码旗标或语法元素,以指示系数的系数层级是否具有大于1或大于2的绝对值。接着,熵解码单元70使用由莱斯参数定义的码解码旗标或语法元素,以指示当前CG中的系数中的至少一者的系数层级的剩余绝对值(114)。举例来说,熵解码单元70可以绕过模式解码语法元素,所述语法元素指示具有大于2的系数层级的系数中的任一者的系数层级的剩余绝对值。在一些实例中,在解码当前CG中的系数层级的第一剩余绝对值之后,熵解码单元70可基于经解码系数的系数层级更新统计。

在一些状况下,熵解码单元70可基于莱斯参数的初始值及当前CG中正经解码的系数的系数层级的绝对值,有条件地更新莱斯参数的初始值。在解码当前CG中的系数的每一剩余绝对层级之后,熵解码单元70可继续有条件地更新莱斯参数的值。在当前CG的末端处,熵解码单元70可基于先前经解码系数(包含包含于当前CG中的最近经解码系数)的系数层级的统计,确定用于后续CG的莱斯参数的初始值。

图9为说明根据本发明中所描述的技术的在系数层级的熵译码期间确定先前经译码系数的系数层级的统计的实例操作的流程图。所说明操作可为来自图7的步骤100或来自图8的步骤110的一实例。关于包含来自图6的熵解码单元70的视频解码器30描述实例操作。在其它实例中,可由来自图5的视频编码器20的熵编码单元56执行操作。

熵解码单元70解码包含于变换块中的CG中的系数的系数层级(120)。系数层级可包括系数层级的绝对值抑或系数层级的剩余绝对值。如果经解码系数层级并非CG中的第一系数层级(122的否分支),则熵解码单元70并不基于经解码系数层级更新统计(124)。在此实例中,在于CG中的每一者中译码系数层级的第一绝对值或系数层级的第一剩余绝对值时,按每一CG仅更新一次统计。在其它实例中,可较频繁地或基于不同系数层级的译码更新统计。

如果经解码系数层级为CG中的第一系数层级(122的是分支),则熵解码单元70基于变换块的特性确定CG的类别(126)。在一实例中,用于确定CG的类别的变换块的特性包含变换块是否为明度块,及变换块是否为变换跳过块。在其它实例中,用于确定CG的类别的特性可不同,例如,变换块是否为变换量化绕过块、变换块是否具有帧内预测或帧间预测切片类型、变换块的大小及/或变换块内的当前CG的位置。在一些实例中,视频解码器30可接收指示变换块的哪个特性用于定义不同类别的CG的语法元素。

接着,熵解码单元70针对所确定类别,将CG中的第一系数层级与统计的函数进行比较(128)。在一实例中,用于更新统计的统计的函数是基于左移位除以第二常数值的统计值的第一常数值。在其它实例中,可根据不同技术确定统计,例如遍及视频数据的切片或译码单元(CU),计算系数层级的平均值或流动平均值,或将CG中的系数层级直接与统计值比较。

如果CG中的第一系数层级大于或等于统计的函数的结果(130的是分支),则熵解码单元70增加所确定类别的统计值(132)。如果CG中的第一系数层级小于统计的函数的结果(130的否分支),则熵解码单元70降低所确定类别的统计值(134)。在任一状况下,熵解码单元70可使用经更新统计,以确定用于所确定类别之后续CG的莱斯参数的初始值,如下文关于图10较详细地描述。

在图9的实例中,用于确定统计的操作按每一CG仅更新一次统计,并针对多个不同类别的CG收集单独统计。在其它实例中,用于确定统计的操作可在译码CG中的系数层级的剩余绝对值之后更新统计。在额外实例中,用于确定统计的操作可仅收集一类别的统计。

图10为说明根据本发明中所描述的技术的基于所确定统计,确定用于当前系数群组的莱斯参数的初始值的实例操作的流程图。所说明操作可为来自图7的步骤102或来自图8的步骤112的一实例。关于包含来自图6的熵解码单元70的视频解码器30描述实例操作。在其它实例中,可由来自图5的视频编码器20的熵编码单元56执行操作。

在变换块中的当前CG的开始处(140),熵解码单元70基于包含当前CG的变换块的特性,确定当前CG的类别(142)。在一实例中,用于确定当前CG的类别的变换块的特性包含变换块是否为明度块,及变换块是否为变换跳过块。在其它实例中,用于确定当前CG的类别的特性可不同,例如,变换块是否为变换量化绕过块、变换块是否具有帧内预测或帧间预测切片类型、变换块的大小及/或变换块内的当前CG的位置。在一些实例中,视频解码器30可接收指示变换块的哪个特性用于定义不同类别的CG的语法元素。

接着,熵解码单元70根据统计的函数,将所确定类别的统计值映射为用于当前CG的莱斯参数的初始值(144)。在一实例中,用于初始化莱斯参数的统计的函数是基于莱斯参数的最大值抑或除以常数值的统计值中的最小者的选择。在其它实例中,可根据不同技术从统计确定莱斯参数的初始值,例如将统计值右移位常数值,或应用统计的线性或分段线性函数。在再其它实例中,熵解码单元70可根据存储表,将统计值映像为莱斯参数的初始值,其中将预定义范围内的每一统计值映像为至多莱斯参数的最大值的莱斯参数的值。

在一或多个实例中,所描述的功能可在硬件、软件、固件或其任何结合中实施。如果在软件中实施,则功能可作为一或多个指令或程序代码而存储于计算机可读媒体上,或经由计算机可读媒体而发射,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体(其对应于例如数据存储媒体的有形媒体)或通信媒体,通信媒体包含(例如)根据通信协议而促进计算机程序从一处传送到另一处的任何媒体。以此方式,计算机可读媒体大体上可对应于(1)为非暂时性的有形计算机可读存储媒体,或(2)例如信号或载波的通信媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器接入以检索指令、程序代码及/或数据结构,以用于实施本发明中所描述的技术的任何可用媒体。计算机程序产品可包含计算机可读媒体。

作为实例而非限制,这些计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,闪存,或可用以存储呈指令或数据结构的形式的所要程序代码且可由计算机接入的任何其它媒体。又,将任何连接适当地称为计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字用户线(DSL)或无线技术(例如,红外线、无线电及微波)而从网站、服务器或其它远程源发射指令,则同轴缆线、光纤缆线、双绞线、DSL或无线技术(例如,红外线、无线电及微波)包含于媒体的定义中。然而,应理解,计算机可读存储媒体及数据存储媒体不包含连接、载波、信号或其它暂时性媒体,而是有关非暂时性有形存储媒体。如本文中所使用,磁盘及光盘包含紧密光盘(CD)、雷射光盘、光学光盘、数字激光视盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘通过雷射以光学方式再现数据。以上各者的组合也应包含于计算机可读媒体的范围内。

可由例如一或多个数字信号处理器(DSP)、一般用途微处理器、特殊应用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效整合式或离散逻辑电路系统的一或多个处理器来执行指令。因此,本文中所使用的术语“处理器”可指上述结构或适于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,可将本文所描述的功能性提供于经配置以用于编码及解码的专用硬件及/或软件模块内,或并入于组合式编解码器中。又,所述技术可完全实施于一或多个电路或逻辑组件中。

本发明的技术可以广泛多种装置或设备实施,所述装置或设备包含无线手机、集成电路(IC)或IC集合(例如,芯片组)。在本发明中描述各种组件、模块或单元以强调经配置以执行所揭示技术的装置的功能方面,但未必要求通过不同硬件单元实现。实际上,如上文所描述,可将各种单元组合于编解码器硬件单元中,或通过互操作性硬件单元(包含如上文所描述的一或多个处理器)的集合而结合合适软件及/或固件来提供所述单元。

已描述各种实例。这些及其它实例属于以下权利要求书的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1