一种高级算术编码器及其实现方法

文档序号:9306997阅读:625来源:国知局
一种高级算术编码器及其实现方法
【技术领域】
[0001]本发明涉及数字视频编解码技术领域,尤其涉及一种基于AVS的高级算术编码的装置及其实现方法。
【背景技术】
[0002]二十世纪九十年代以来,数字视频压缩技术被广泛应用于通信、个人计算机、广播电视、消费电子等领域,堪称数字媒体产业的核心技术。目前音视频产业可以选择的信源编码标准有四个:MPEG-2、MPEG-4, MPEG-4AVC (简称 AVC,也称 JVT、H.264)、AVS,其中 AVS 标准是《信息技术先进音视频编码》系列标准的简称,是我国具有自主知识产权的第二代信源编码标准。AVS是一套包含系统、视频、音频、媒体版权管理在内的完整标准体系,为数字音视频产业提供更全面的解决方案。AVS视频标准的主要面向标准清晰度/高清晰度电视广播、网络电视和数字存储媒体等相关应用,编码过程的计算复杂度较大。
[0003]熵编码是视频编码系统中必不可少的一个重要环节,主要是按熵原理在不丢失任何信息的情况下把用来表示视频序列的元素符号转化成压缩码流,利用去除信息熵冗余来达到压缩的目的。熵编码主要包括霍夫曼编码、自适应变长编码和算术编码等。其中,MPEG-2采用霍夫曼编码(Huffman Code),H.264和AVS都采用基于上下文自适应变长编码(CAVLC)和基于上下文自适应二进制算术编码(CABAC)。AVS中的高级算术编码(AEC)是将自适应的二进制算术编码与一个设计精良的上下文模型结合起来得到的方法,它的设计基于二值化、上下文建模、二进制算术编码等3个步骤。AEC是主要从两个方面来提高压缩率:(I)AEC对每个语法元素提供非静态统计模型,编码器会根据编码内容及上下文来自适应地调整语法元素的概率模型,适应不同的视频内容,可以减少语法元素的冗余信息,从而提高压缩效率。(2)AEC以条带为编码周期,将一整条条带的语法元素二进制化得到的bin进行区间迭代划分,从而得到一个子区间,然后在这个子区间中任取一个值代表该条带语法元素,所以,从平均意义上讲,AEC为符号分配一个非整数长度的码子,克服了 CAVLC编码必须为单个符号分配整数码长的码字的缺点,更容易逼近符号熵,获得更高的编码效率。但是AEC的计算复杂度明显变高,对于硬件设计提出了挑战。

【发明内容】

[0004]本发明的目的在于从芯片面积和处理速度两个方面进行综合考虑来提供一种高级算术编码结构。
[0005]为了解决以上问题,本发明公开了一种高级算术编码器,主要由二值化和上下文索引计算模块、概率模型存取管理模块和算术编码模块组成。高级算术编码是将语法元素值进行相应的二值化,每个得到的二进制值(bin)对应一个概率模型,将得到的概率模型和二进制值进行算术编码,得到最终的码流(bit)。根据模块功能的不同,高级算术编码器采用并行高效设计方式。由于不同语法元素的二值化方法和概率模型索引选择的方法不同,其判断方法是根据条带的帧场类型、当前编码宏块的宏块类型和当前编码的语法元素类型等来决定的。所以设计中只将语法元素进行二值化,并根据上下文来选择每个bin的概率模型索引。得到二进制值和对应的概率模型索引后无需再看条件,可以直接进行编码。所以将概率模型的选取和算术编码统一进行出路处理。
[0006]进一步,高级算术编码器采用状态控制方式对语法元素进行编码,此模块需要知道一些特定的信息来判断要编码的语法元素。以AVS标准为例,高级算术编码是以条带为单位,条带是由若干个宏块组成的,而每个宏块包含了不同的语法元素,在高级算术编码中,语法元素的编码顺序是固定的,但是根据帧场类型和宏块类型的不同,宏块中所包含的语法元素是不同的。所以在高级算术编码控制模块中采用三层状态机来控制编码顺序。第一层是条带跳转,第二层为一个宏块的跳转,第三层是语法元素编码顺序的跳转。
[0007]基于算术编码的上下文编码特点,在利用line buffer存储一行宏块时,是将数据处理后再存入line buffer中。这样在编码当前宏块需要其上边宏块时,可以从linebuffer中取出数据直接用,无需再进行一系列的逻辑判断分析,这样统一分析数据后再存储的方式在存储空间相当的情况下降低逻辑复杂度,减少逻辑电路面积。
[0008]二值化和上下文索引计算模块内部采用并行处理数据,减少运算时间,保证处理速度。此模块要求平均一个周期(cycle)输出一个bin和相对应的概率模型索引ctxldx,在设计模块硬件结构时根据语法元素二值化的特性使数据并行处理,在相同的时间内可以并行处理更多的数据,保证设计模块性能。
[0009]概率模型管理模块,首先要根据概率模型索引来选取概率进行编码。对概率更新后要将更新的概率存回到存放概率模型的RAM中。为了减少反馈处理时间,采用RAM和本地缓存二级存储方式并增加一个概率模型控制模块来管理何时取概率模型,何时存概率模型。其主要功能是,如当前概率模型与上个bin所用的概率模型相同,则不用取新的概率,直接进行更新。遇到不同概率模型时,取新的概率模型,在进行概率更新的同时将上个更新后的概率模型存回RAM中,利用并行处理和控制方式来达到减少处理时间的目的。
[0010]在高级算术编码中,算术编码模块(BAC)是算法的核心部分,由于AVS标准中的高级算术编码并非查找表,而是要经过计算来更新概率的,计算复杂度相对变高。所以算术编码模块采用流水线的设计方式。使整体的处理速度得到提高。
【附图说明】
[0011]当结合附图考虑时,通过参照下面的详细描述,能够更完整更好地理解本发明以及容易得知其中许多伴随的优点,但此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定,其中:
[0012]图1,高级算术编码器基本结构示意图;
[0013]图2,高级算术编码器具体结构示意图;
[0014]图3,宏块相邻块的存储TJK意图;
[0015]图4, line buffer中的存储方式示意图;
[0016]图5,高级算术编码模块第一层状态机示意图;
[0017]图6,高级算术编码模块第二层状态机示意图;
[0018]图7,闻级算术编码模块第二层状态TJK意图;
[0019]图8,二值化和上下文索引计算模块示意图;
[0020]图9,概率模型存取管理模块示意图;
[0021]图10,算术编码模块示意图。
【具体实施方式】
[0022]以下参照图1-10对本发明的实施例进行说明。
[0023]为使上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0024]如图1所示,本发明提出的一种基于AVS的高级算术编码器的实现,主要包括三层状态机控制机制、参考数据统一处理技术、算法结构并行优化、和算术编码高效流水结构五种技术。下面分别就本发明的实现方案作实例阐述。如图1所示对于二值化和上下文建模的输入的编码控制采用了三层状态机控制机制,二值化和上下文建模采用了参考数据统一处理技术和算法结构并行优化,具体包括分析语法元素、二值化和上下文索引计算模块和line buffer的参与。概率模型存取管理采用了概率模型存取管理机制,具体包括分析上下文索引模块、上下文RAMl和上下文RAM2以及本地缓存(Local Buffer)的参与。算术编码采用了高效流水结构。
[0025]图1所示编码器的工作原理是:将输入的语法元素值进行二值化产生二进制值,并根据上下文来选择二进制值所对应的概率模型索引,根据概率模型索引选择相应的概率模型,将二进制值和其对应的概率模型进行算术编码,并输出编码后的码流;在完成所述算术编码后还包括对所述二进制值对应的概率模型进行更新。
[0026]如图2所示一种高级算术编码器,主要由二值化和上下文索引计算模块、概率模型存取管理模块和算术编码模块组成,所述二值化和上下文索引计算模块用于将语法元素值进行二值化产生二进制值,并根据上下文来选择二进制值所对应的概率模型索引;所述概率模型存取管理模块,用于根据概率模型索引选择相应的概率模型,用于对所述二进制值对应的概率模型进行更新;所述算术编码模块用于将二进制值和其对应的概率模型进行算术编码,并输出编码后的码流;所述编码器以二进制值和概率模型索引FIFO作为数据缓冲器,二值化和上下文索引计算模块、概率模型存取管理模块和算术编码模块并行运算。所述二值化和上下文索引计算模块内部采用二值化与根据上下文计算概率模型索引并行处理,在二值化的内部,宏块编码模板的二值化能够直接得到,运动矢量分量差值Owd)的二值化需通过计算得到,所以可以将cbp和mvd的二值化与组织上边块和左边块数据并行处理,在硬件资源面积得到保证的情况下减少运算时间,保证处理速度。
[0027]从图2算术编码器的整体结构上来看,算术编码器采用编码控制模块来对整个的编码过程进行控制。首先算术编码器像动态随机存储器发出请求,动态随机存储器会将一个宏块所要编码的所有数据送到语法元素数据缓冲器中,通过编码控制模块来控制分析语法元素模块从缓冲器中读取数据并进行分析,将数据统一处理后将存入line buffer用以后续编码读取上边块使用。随后二值化与上下文索引计算模块会读取当前语法元素的信息和上边块的语法元素信息,进行二值化,并根据上边块和左边块计算每一个二进制值的概率模型索引,将二进制值与概率模型索引进行拼接,输出给二进制值与概率模型索引FIFO做缓冲。分析上下文索引模块从缓冲器中读取数据后分析每个二进制值和对应的概率模型索引,从两个存放概率模型的RAM(上下文RAMl和上下文RAM2)中提取相应概率模型后,输出给二进制算数编码模块进行编码,将编码后吐出的码流存回到动态存储器中,得到最后的编码文件。图2中,在A部分需要得知具体的语法元素类型,帧、场类型和宏块类型等来对语法元素进行二值化和上下文索引计算。但是在B和C部分就无需再知道这
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1