[发明专利]实现H.264的CAVLC的熵解码器和方法有效
申请号: | 201210082890.6 | 申请日: | 2012-03-26 |
公开(公告)号: | CN102710937A | 公开(公告)日: | 2012-10-03 |
发明(设计)人: | 刘道福;李玲;钱诚;陈云霁 | 申请(专利权)人: | 龙芯中科技术有限公司 |
主分类号: | H04N7/26 | 分类号: | H04N7/26;H04N7/50 |
代理公司: | 北京远大卓悦知识产权代理事务所(普通合伙) 11369 | 代理人: | 史霞 |
地址: | 100190 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 实现 264 cavlc 解码器 方法 | ||
技术领域
本发明涉及实现新一代视频编码标准H.264编解码的多媒体技术领域,尤其涉及一种实现H.264的CAVLC的熵解码器和方法。
背景技术
随着视频编解码技术的发展,产生了许多视频编解码的标准,如MPEG1/2/4、H.263/264。其中H.264由于其高压缩率以及具有很好的还原质量,正在被广泛接受,然而,其实现复杂度要比其他前几个标准复杂得多。而在整个H.264的解码过程中,熵解码是第一步,后面的解码过程需要等待前面的解码结果,因此其解码速度严重影响整个解码速度。
H.264采用了两套熵编/解码技术,即基于上下文的自适应变长编码(Context-based Adaptive Variable Length Coding,CAVLC)和基于上下文的自适应算术编码(Context-based Adaptive Binary Arithmetic Coding,CABAC)。其中CAVLC由于编码复杂度比CABAC低,广泛的用于各种视频的编码。H.264的主要档次(Main Profile),基本档次(Base Profile)和扩展档次(Extended Profile)都支持CAVLC。
在CAVLC解码装置中,CAVLC共有6个语法元素需要解码,包括非零系数个数、拖尾系数的个数、每个拖尾系数的符号、除拖尾系数外非零系数的幅值、最后一个非零系数前零的个数和每个非零系数前零的个数。一般地,CAVLC熵解码器的解码过程如下:初始化工作,确定输入数据的块类型等参数;求变量NC,根据NC的值选择所要查的表格;查表得出语法元素非零系数个数和拖尾系数的个数;根据拖尾系数的个数解出拖尾系数的符号;解码除拖尾系数外非零系数的幅值;根据非零系数个数查表求出最后一个非零系数前零的个数;解码每个非零系数前零的个数。
现有技术中的一种H.264熵解码器CAVLC的硬件设计,CAVLC硬件熵解码器主要由5个功能模块,包括解码系数标记模块(Coeff_token Decoder)、拖尾符号标记模块(TrailingOnes Decoder)、幅值模块(Level Decoder)、总零数模块(TotalZero Decoder)、前游程模块(Run_before Decoder),以及一个CAVLC控制模块(CAVLC Contraller)组成。另外包括了一个内部的SRAM模块,用于存储块(block)信息。
其中,幅值模块(Level Decoder)包括幅值前缀模块(level_prefix Decoder),幅值后缀模块(level_suffix Decoder)。
五个句法元素的模块(Decoder)分别执行对于相应的句法元素的解码工作。CAVLC控制模块执行协调各模块工作,对SRAM数据的存取,向外中请接受码流数据,以及将各子功能模块解码得到的数据重组和向外输出传递的功能。
其中:
解码系数标记模块(Coeff_token Decoder)用于解码非零系数个数和拖尾系数个数,此解码过程可根据H264标准中Coeff_taken码表进行。
拖尾符号标记模块(TrailingOnes Decoder)用于解码拖尾系数,由于之前的解码系数标记模块(Coeff_token Decoder)中解出的仅仅是拖尾系数的个数,所以这个模块真正解码的是拖尾系数的符号。
幅值模块(Level Decoder)由两部分组成,幅值前缀模块(level_prefix Decoder),幅值后缀模块(level_suffix Decoder)。幅值模块(Level Decoder)的解码过程为先初始化中间变量suffixLength的值,由于已经解出了非零系数的个数TotalCoeff和拖尾系数的个数TrailingOnes,所以可知有TotalCoeff-TrailingOnes个level的解码循环过程需要进行。在每次解码level的循环中,先计算levelCode,然后根据levelCode的奇偶性计算出level的值,最后根据解出的level的绝对值是否大于相应的阈值来更新suffixLength的值。
总零数模块(TotalZero Decoder)用于解码最后一个非零系数前零的个数,包括了两张表格,一张为常用表,另外一张为ChromaDC的专用表格。
前游程(Run_before Decoder)用于解码每个非零系数前零的个数(RunBefore)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于龙芯中科技术有限公司,未经龙芯中科技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210082890.6/2.html,转载请声明来源钻瓜专利网。