首页> 中国专利> 一种上下文自适应二进制算术编码器及其方法

一种上下文自适应二进制算术编码器及其方法

摘要

本发明公开了一种上下文自适应二进制算术编码器,至少包括算术编码控制模块、编码指令队列模块、上下文管理与维护模块、编码引擎模块、输出比特打包模块。本发明还公开了一种上下文自适应二进制算术编码方法,将输入的外部命令、语法元素和相邻块信息处理后,最终生成输出比特流。本发明用以解决视频编码中,由于熵编码运算复杂、运算量过大而引起的熵编码速度低下的问题,从而提高视频编码速度。本发明可应用于高性能的H.264 High Profile/Main Profile的高清或标清实时视频编码芯片等对编码速度要求较高的领域中。

著录项

  • 公开/公告号CN101076114A

    专利类型发明专利

  • 公开/公告日2007-11-21

    原文格式PDF

  • 申请/专利权人 上海富瀚微电子有限公司;

    申请/专利号CN200710042108.7

  • 发明设计人 朱嵘喆;金永明;冯炜;何辉;

    申请日2007-06-15

  • 分类号H04N7/24(20060101);H04N7/26(20060101);H04N7/50(20060101);

  • 代理机构31002 上海智信专利代理有限公司;

  • 代理人王洁

  • 地址 200001 上海市北京东路666号科技京城B区801室

  • 入库时间 2023-12-17 19:24:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-07-02

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04N7/24 变更前: 变更后: 申请日:20070615

    专利权人的姓名或者名称、地址的变更

  • 2009-08-19

    授权

    授权

  • 2008-01-16

    实质审查的生效

    实质审查的生效

  • 2007-11-21

    公开

    公开

说明书

技术领域

本发明涉及数字视频处理领域,尤其涉及一种上下文自适应二进制算术编码器及其编码方法。

背景技术

随着音视频产业的不断发展,国际上对于音视频编解码技术的要求也日益提高,出现了以MPEG-x(包括MPEG1、MPEG2、MPEG4)、H.26x(包括H.261、H.263、H.264)两大系列为主的视频编码国际标准。上述视频编码国际标准能在保持视频主观质量的条件下,对信息量极大的视频信号进行高效压缩,从而极大地降低存储空间和网络带宽要求。

其中,熵编码技术模块是上述视频编码国际标准中的重要模块,可以有效去除压缩比特流中的统计信息冗余,从而提高视频编码器的压缩效率。传统的熵编码技术模块主要是基于霍夫曼(Huffman)理论,存在以下不足之处:1)对于非整数的熵值,也只能用整数位比特表示;2)编码所使用的概率模型是固定的,而实际码流的概率统计特性并非固定不变的。

上下文自适应二进制算术编码(CABAC,Context-Adaptive BinaryArithmetic Coding)是一种新的熵编码技术,基本原理是:根据上下文内容选择语法元素(SE,Syntax Element)的概率模型,根据统计结果进行自适应概率估算。上下文自适应二进制算术编码是算术编码方式,可以用非整数位比特表示熵值非整数的数据。同时,上下文自适应二进制算术编码所使用的概率模型会根据码流的当前特性进行更新,因此,能更准确地反映当前码流的概率统计特性。另外,上下文自适应二进制算术编码能取得更接近于信息熵极限的压缩效率。据统计,上下文自适应二进制编码比通用变长码(UVLC,Universal Variable Length Codes)的编码效率提高20%~40%。

目前,上下文自适应二进制算术编码器一般是在数字信号处理器(DSP,Digital Signal Processor)平台上采用软件方式实现的。该方式存在以下不足之处:1)在整个编码过程中,需针对大量的上下文进行操作,例如,在主层级(main profile)中,有701个上下文。上述操作包括上下文初始化、上下文选择、上下文更新等,从而导致编码过程运算复杂,运算量庞大,对DSP的计算资源要求很高;2)算法本身涉及到大量的条件判断和跳转指令,不利于DSP实现。因此,采用软件方式实现算术编码器,通常会导致编码速度低下,难以满足实时编码的速度要求。

发明内容

有鉴于此,本发明的目的在于提供一种采用集成电路实现上下文自适应二进制算术编码的编码器及其编码方法,用以解决视频编码中,由于熵编码运算复杂、运算量过大而引起的熵编码速度低下的问题,从而提高视频编码速度。

本发明是通过以下技术方案实现的:

一种上下文自适应二进制算术编码器,至少包括

算术编码控制模块,用于将语法元素的名义值转换为二进制符号串,并生成每个二进制符号对应的编码指令;

编码指令队列模块,用于缓冲编码指令;

上下文管理与维护模块,用于计算当前状态概率下标(pStateldx,Probability State Index)和大概率符号值(valMPS,Value of Most ProbableSymbol),并对其更新;

编码引擎模块,用于生成输出比特数和输出解析码字;

和输出比特打包模块,用于处理输出解析码字,将处理结果打包成字节,经消除符号扩散后得到输出比特流,

外部命令、语法元素和相邻块信息经算术编码控制模块接收后,依次经编码指令队列模块、上下文管理与维护模块、编码引擎模块、输出比特打包模块处理后,生成输出比特流。

进一步地,所述上下文管理与维护模块至少包括

上下文RAM,用于存储当前状态概率下标和当前大概率符号值;

初始化数据ROM,用于存储初始化参数值;

读写控制子模块,用于控制所述编码指令队列模块和所述上下文RAM的读写;

上下文初始值计算子模块,根据片亮度量化因子和初始表索引计算出状态概率下标和大概率符号值的初始值;

编码指令解析与上下文更新计算子模块,用于处理编码指令,并更新上下文的状态概率下标和大概率符号值,

所述读写控制子模块、上下文初始值计算子模块、初始化数据ROM依次相连,

上下文RAM和读写控制子模块相连,

读写控制子模块和编码指令解析与上下文更新计算子模块相连。

进一步地,所述上下文RAM的存储容量≥7×432位。

进一步地,所述初始化数据ROM的存储容量≥16×1728位。

进一步地,所述初始表索引的值为0~3。

进一步地,所述算术编码控制模块至少包括语法元素二进制化子模块,用于将语法元素的名义值按一定的编码方式转换为二进制符号串;编码指令生成子模块,用于生成每个二进制符号对应的编码指令。

进一步地,所述外部命令是外接的熵编码控制模块的输出命令。

进一步地,所述编码引擎模块的编码模式包括普通编码模式、等概率编码模式和终止编码模式。

本发明的另一技术方案如下:

一种上下文自适应二进制算术编码方法,包括如下步骤:

A)、将语法元素的名义值转换为二进制符号串,并生成每个二进制符号对应的编码指令;

B)、缓冲编码指令;

C)、计算当前状态概率下标和大概率符号值,并对其更新;

D)、生成输出比特数和输出解析码字;

E)、处理输出解析码字,处理结果经缓冲后,打包成字节,并消除符号扩散后得到输出比特流。

进一步地,所述编码指令至少包括计算上下文RAM地址的指令、判断编码方式的指令、判断输出比特属性的指令、指示二进制符号值的指令、指示二进制符号数目的指令。

本发明的有益效果在于:本发明的上下文自适应二进制算术编码器通过算术编码控制模块1与本发明的编码器的其他外部模块进行外部命令、相邻块信息和语法元素的交互,简化了整个编码器与其他外部模块的接口。

另外,本发明使用有限状态机(FSM,Finite State Machine)控制语法元素的二进制化,状态译码得到的二进制符号下标(Binary Symbol Index)通过上下文的分组编排和优化组合,能够快速计算对应的上下文索引(Context Index);上下文管理与维护模块3使用片内只读存储器(ROM,Read Only Memory)和片内随机存取存储器(RAM,Random AccessMemory)存储参数值,并且设计了可流水线操作的上下文初始值计算子模块,从而实现了对上下文初始化的流水线操作,提高了运算速度。

此外,读写控制子模块32根据前后上下文的使用情况,将上下文的读取、更新和写回操作流水化,实现了快速的上下文取用和更新,提高编码吞吐率。

同时,编码引擎模块4的等概率编码模式,使用乘加单元一次编码1至8个等概率符号,加快了残差块的编码速度;输出比特打包模块5将输出比特流打包,减少了编码器与其外部的码流整合模块交互的次数,并且采用字节填充(Byte Stuffing)技术,可消除输出比特流的进位扩散。从语法元素到二进制符号,再到概率符号标志,通过输入的待编码信息抽象层级的依次降低,节省了硬件开销,极大地加快了编码速度。

附图说明

图1是本发明的上下文自适应二进制算术编码器的结构框图;

图2是本发明的上下文管理和维护模块的结构框图;

图3是本发明的一种上下文自适应二进制算术编码方法的流程图。

具体实施方式

以下结合附图和具体实施例对本发明作详细说明。

如图1所示,本发明的上下文自适应二进制算术编码器包括算术编码控制模块1、编码指令队列模块2、上下文管理与维护模块3、编码引擎模块4和输出比特打包模块5。

请参阅图1,算术编码控制模块1包括语法元素二进制化子模块11和编码指令生成子模块12,用于接收外部命令、语法元素和相邻块信息。其中,语法元素二进制化子模块11用于将语法元素的名义值按一定的编码方式转换为二进制符号串。其中,残差块(Residual Block)的语法元素二进制化子模块还需扫描残差系数(Residual Coefficients),生成非零系数索引表并控制残差块级四种语法元素的编码过程。所述语法元素二进制化子模块11可以针对一元码(Unary Code)、指数哥伦布码(Expotional GolombCode)等二进制编码的特点,将相同上下文的相同符号值或连续的等概率符号的编码指令进行归并,用一条指令完成多个符号的编码,提高编码效率。编码指令生成子模块12用于生成每个二进制符号对应的编码指令。所述编码指令包括计算上下文RAM地址,判断编码方式,判断输出比特属性,指示二进制符号值和二进制符号数目等。所述外部命令是与本发明的编码器的外接的熵编码控制模块的输出命令。

算术编码器控制模块1根据上下文初始化命令启动上下文管理与维护模块3的初始化过程(初始化阶段),或根据语法元素的类型使能相应的语法元素二进制化子模块11和编码指令生成子模块12,将输出的编码指令写入编码指令队列模块2(编码阶段)。算术编码控制模块1是本发明的编码器与其他外部模块的接口,用于接受外接的熵编码控制模块的命令和相邻信息控制模块的相邻块信息,从而启动上下文自适应二进制算术编码。

编码指令队列模块2用于缓冲编码指令,协调算术编码控制模块1生成指令,和后级模块3,4,5流水处理指令在速度上的差异。

上下文管理与维护模块3读入编码指令队列模块2输出的编码指令,根据上下文管理与维护模块3中的上下文RAM的地址读出当前状态概率下标和当前大概率符号值,将当前大概率符号值转化为当前编码符号标志,并将当前状态概率下标和当前编码符号标志一起输出至编码引擎模块4,并将更新后的状态概率下标和大概率符号值存入其上下文RAM的原存储位置。

编码引擎模块4在开始编码一个片(Slice)时,先进行编码引擎模块的寄存器初始化。在编码过程中,根据当前编码模式(包括普通编码模式、等概率编码模式和终止编码模式)、当前状态概率下标和当前编码符号标志,计算得出新的概率区间范围(Code Interval Range)和概率区间下界(CodeInterval Lower End)。对上述概率区间范围和概率区间下界进行重定标(Renormalization),更新相应的寄存器,译码生成输出比特数和输出解析码字。编码引擎模块4的编码模式包括普通编码模式、等概率编码模式和终止编码模式。其中,等概率编码模式使用乘加单元,可在一个周期内编码多个二进制符号。

输出比特打包模块5处理输出解析码字,处理结果经缓冲后,打包成字节,并消除符号扩散后得到最终的输出比特流。

请参阅图2,图2是本发明的上下文管理与维护模块3的结构框图。上下文管理与维护模块3用于在每个片开始编码前,初始化701个上下文,解析编码指令以及取用、更新和保存上下文。上下文管理与维护模块3包括存储当前状态概率下标和当前大概率符号值的上下文RAM 31、存储初始化参数值的初始化数据ROM 34、控制编码指令队列模块2和上下文RAM 31读写的读写控制子模块32、根据片亮度量化因子(Slice QuantizationParameter)和初始表索引(CABAC Initialization Table Index)得到状态概率下标和大概率符号值的初始值的上下文初始值计算子模块33、编码指令解析与上下文更新计算子模块35。

其中,初始化数据ROM 34为宽度16,深度1728的片内只读存储器。所述初始化数据ROM 34的每个存储器单元皆为16位,地址宽度皆为11位。所述初始化数据ROM 34用于存储两个初始化参数(都是8位的补码)。将上述两初始化参数拼接,形成一个16位的有效数据单元。当然,本发明中的初始化数据ROM 34的存储容量并不限于上述取值,只要大于上述取值,也即16×1728位即可。

如对上下文自适应二进制算术编码的存储于上下文RAM 31中的上下文表(共701个上下文)进行改进,使得每个上下文索引皆对应四个ROM的存储单元。当初始表索引为3时,待编码的片为帧内预测片;当初始表索引为0~2时,待编码的片为帧间预测片。对于只用于帧内预测片的上下文,在有效数据单元之前添加3个空单元;对于只用于帧间预测片的上下文,在有效数据单元之后添加1个空单元;对于帧内预测片和帧间预测片共用的上下文,则添加和有效数据单元内容重复的3个单元。在上下文初始化阶段,将初始表索引作为寻址的低2位,将RAM的地址作为高9位,组成11位的ROM地址,取出四个存储单元中的一个。

上下文初始值计算子模块33用于计算每一个上下文的两个参数:状态概率下标和大概率符号值的初始值。所述上下文初始值计算子模块33根据片亮度量化因子和从初始化数据ROM 34中读出的两个初始化参数(该参数并非状态概率下标和大概率符号值)的值,计算上下文的状态概率下标和大概率符号值的初始值。所述上下文初始值计算子模块33采用两级流水线结构,可以连续地在每个时钟周期输入两个初始化参数进行一次计算。

上下文RAM 31为宽度7,深度432的双口片内随机存取存储器,每个存储器单元皆为7位,地址宽度为9位。所述上下文RAM 31用于存储当前状态概率下标和当前大概率符号值。上下文RAM 31的一个端口用于读取上下文,另一个端口用于写入更新后的上下文。可将上下文按照每16个上下文一组进行分组,使相同语法元素类型的上下文同组,使编码时顺序使用的上下文相邻。由此,上下文的地址高位部分仅由语法元素类型(如语法元素为残差块,则高位部分为5位;如语法元素为参考图像索引,则高位部分为6位)确定,低位部分直接对应二进制符号下标,从而简化了上下文地址的计算逻辑。同样地,本发明中的上下文RAM 31的存储容量并不限于上述取值,只要大于上述取值,也即7×432位即可。

读写控制子模块32是编码指令队列模块2与上下文管理与维护模块3之间的接口,用于读取编码指令队列模块2的编码指令、读取和更新上下文、生成上下文地址。读写控制子模块32生成上下文RAM 31的两个端口的读写使能信号和读写地址。所述读写地址在编码阶段取用编码指令中的地址字段。而在上下文初始化阶段,通过计数器生成高9位地址(也即上下文RAM31的地址),初始表索引作为低2位地址,共同组成初始化数据ROM 34的地址。所述上下文RAM 31地址和上下文索引存在映射关系。编码指令队列模块2非空时,可连续输入编码指令,采用三级流水线结构完成上下文的维护。所述读写控制子模块32读取上下文RAM 31的上下文,也即当前状态概率下标和当前大概率符号值后,将其输入至编码指令解析与上下文更新计算子模块35进行处理;同时,将编码指令解析与上下文更新计算子模块35更新后的上下文送回至上下文RAM 31的原位置。所述读写控制子模块32可针对连续使用同一上下文、RAM端口同时操作同一上下文的情况进行优化。

编码指令解析与上下文更新计算子模块35处理编码指令,生成编码引擎控制信号,以及实现当前大概率符号值到当前编码符号标志(指示大概率符号或小概率符号)的转化,并查表(未说明)计算更新的状态概率下标和大概率符号值。

上下文自适应二进制算术编码器的编码方法如下:

步骤301、将语法元素的名义值转换为二进制符号串,并生成每个二进制符号对应的编码指令。算术编码控制模块1接收到外部的熵编码控制模块的外部命令后,等待编码指令队列模块2变为可写状态,以及相邻信息控制模块的相邻块信息数据准备好后,依据语法元素类型启动相应的语法元素二进制化子模块11,将语法元素名义值变换成二进制符号串,并为每一个二进制符号计算上下文索引,生成相应的编码指令(一个二进制符号对应一条编码指令;或多个二进制符号对应一条编码指令),依次写入编码指令队列模块2。

步骤302、缓冲编码指令。编码指令队列模块2将不定期到达的编码指令缓冲后输出至后级模块流水编码。

步骤303、计算当前状态概率下标和大概率符号值,并对其更新。上下文管理与维护模块3解析编码指令,从片内的上下文RAM 31中取出相应的当前状态概率下标和当前大概率符号值,将当前大概率符号值与二进制符号比较后得到编码符号标志。将当前状态概率下标和编码符号标志一起输出至编码引擎模块4,并且将更新后的状态概率下标和大概率符号值写回至上下文RAM 31中的相同位置。

步骤304、生成输出比特数和输出解析码字。编码引擎模块4按照编码指令指定的编码方式,计算新的概率区间范围和概率区间下界。重定标上述两变量,分别保存至概率区间范围寄存器和概率区间下界寄存器,同时生成输出解析码字送至输出比特打包模块5。

步骤305、处理输出解析码字,处理结果经缓冲后,打包成字节,并消除符号扩散后得到输出比特流。输出比特打包模块5通过输出解析码字的不断拼接,得到整字节格式的输出数据,并对可能引起进位扩散的全“1”字节,采用先对其抽取,等待进位确定后,再对其填充的方法,消除进位扩散后,得到最终的输出比特流。

上下文管理与维护模块3、编码引擎模块4和输出比特打包模块5构成流水线结构。在编码指令队列模块2非空时,能够连续编码,直至一个片结束。等待下一个上下文初始化命令执行后,再开始新的片的编码。

本发明的上下文自适应二进制算术编码器通过算术解码控制模块1与编码器的外部模块进行外部命令、相邻块信息和语法元素的交互,从而简化了整个编码器与外部模块的接口。

另外,所述编码器使用有限状态机控制语法元素的二进制化,通过对状态译码得出的二进制符号下标进行上下文的分组编排和优化组合,能够快速计算对应的上下文索引。

此外,上下文管理与维护模块3使用片内ROM存储初始化上下文所需要的两个初始化参数;使用片内RAM存储当前状态概率下标和当前大概率符号值。同时,上下文初始值计算子模块33实现了对上下文初始化的流水线操作,提高了运算速度;读写控制子模块32根据前后上下文的使用情况,将上下文的读取、更新和写回操作流水化,实现了快速的上下文取用和更新,从而提高编码吞吐率。

进一步地,编码引擎模块4的等概率编码模式使用乘加单元一次编码1至8个等概率符号,加快了残差块的编码速度。输出比特打包模块5将输出比特流打包,减少了编码器与外部的码流整合模块交互的次数;并且采用字节填充技术,消除输出比特流的进位扩散。从语法元素到二进制符号,再到概率符号标志,通过输入的待编码信息抽象层级的依次降低,节省了硬件开销,极大地加快了编码速度。

本发明可用于对编码速度要求较高的领域中,例如,可广泛应用于高性能的H.264 High Profile/Main Profile的高清或标清实时视频编码芯片中,当然,本发明的应用并不限于上述视频编码芯片。

以上所述仅为本发明的较佳实施例而已,并不用于限制本发明。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号