[发明专利]一种快速提取比特流哈夫曼解码方法无效
申请号: | 200710040445.2 | 申请日: | 2007-05-09 |
公开(公告)号: | CN101051845A | 公开(公告)日: | 2007-10-10 |
发明(设计)人: | 谭建国 | 申请(专利权)人: | 上海广电(集团)有限公司中央研究院 |
主分类号: | H03M7/40 | 分类号: | H03M7/40 |
代理公司: | 上海新天专利代理有限公司 | 代理人: | 张静洁 |
地址: | 200233*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 快速 提取 比特流 哈夫曼 解码 方法 | ||
技术领域
本发明属于采用哈夫曼编解码的多媒体技术领域,尤其涉及一种通过从比特流中快速提取比特位来实现哈夫曼解码的方法。
背景技术
所述的哈夫曼编码是利用信号源符号的概率分布来确定符号编码的信息量,对于出现概率高的符号,采用短的码字来描述;对于出现概率低的符号,采样长的码字来描述。通过变长编码来消除信息之间的冗余,来实现对信号无损压缩的目的。
在现代的多媒体领域,哈夫曼编解码技术得到了广泛的应用,包括应用在MPEG音频编码解码技术中,应用在AVS音频编解码技术中,以及应用在AC系列音频编解码技术中。
在哈夫曼解码过程中,需要从比特流中提取比特位用于在哈夫曼码表中来查找所提取比特位总共对应的值是否等于哈夫曼码表中的某个码值,同时所提取比特位的总数是否等于该码值对应的码长,如果两者都相同,即可以得到解码信息。但是在从比特流中剥离比特位的时候,就需要大量的移位和逻辑运算。
目前常见的哈夫曼解码方法有线性搜索法、直接查表法、二进制搜索法和分步查表法。其中线性搜索法和二进制搜索法的效率较低,不适合实时性要求高的场合;而直接查表法的效率稍高,但是内存开销较大;另外,分步查表法是二进制搜索法和直接查表法的折衷,但是其效率仍不是很高。
本发明提出了一种从比特流中快速剥离比特位数来实现哈夫曼解码的方法,大大的减少由于从比特流中剥离比特位数而导致的大量运算,最终实现可以获得同原来相同的解码结果。
发明内容
本发明要解决的技术问题是,提供一种快速提取比特流哈夫曼解码方法,其通过重新构造哈夫曼码表的结构,将码表构造成基于码长呈规律性分布,再利用构造的码表来实现快速从比特流中剥离出需要解码的位数,从而实现对比特流解码;本发明方法可大大减少由于从比特流中剥离比特位数而导致的大量运算,并可最终获得同原来相同的解码结果,大大提高运行效率。
为了达到上述目的,本发明提供一种快速提取比特流哈夫曼解码方法,其包含以下步骤:
步骤1、重新构造新的哈夫曼码表的码值表,索引表和码长表;
步骤2、基于步骤1中所构造的哈夫曼码表,快速地从比特流中剥离出需要的位数来实现哈夫曼解码。
所述的步骤1具体包含以下步骤:
步骤1.1、根据哈夫曼码表中原来的码长表Table_len1中的各个码长值的大小,按照顺序重新进行排序,将排序后获得的新码长表存储在表Table_len2中;
步骤1.2、将从原来码长表映射到新码长表的映射关系存储到映射表Table_Index中;
步骤1.3、按照表Table_Index中的映射关系,将哈夫曼码表中原来的码值表Table_val1对应映射到新的码值表Table_val中;
步骤1.4、在码长表Table_len2的基础上,生成新的码长表Table_len。
所述的步骤1.1中,根据哈夫曼码表中原来的码长表Table_len1中的各个码长值的大小,按照从小到大的顺序重新进行排序,得到Table_len2。
所述的步骤1.1中,根据哈夫曼码表中原来的码长表Table_len1中的各个码长值的大小,按照从大到小的顺序重新进行排序,得到Table_len2。
所述的步骤1.4具体包含以下步骤:
步骤1.4.1、用码长表Table_len2中的最后一个码长值减去排列在其前一个(即最后第二个)的码长值,并将相减所得的结果覆盖存储在最后一个码长值所在的存储空间;
步骤1.4.2、用码长表Table_len2中的最后第二个码长值减去排列在其前一个(即最后第三个)的码长值,并将相减所得的结果覆盖存储在最后第二个码长值所在的存储空间;如此类推;
步骤1.4.3、用码长表Table_len2中的第二个码长值减去排列在其前一个(即第一个)的码长值,并将相减所得的结果覆盖存储在第二个码长值所在的存储空间;
步骤1.4.4、由于码长表Table_len2中的第一个码长值前面没有数据,故码长表中的第1个码长值保持不变,由此生成新的码长表Table_len。
上述步骤1中重新生成的码值表Table_val,码长表Table_len和映射表Table_Index组成步骤1中所述的新的哈夫曼码表。
所述的步骤2具体包含以下步骤:
步骤2.1、设置记忆变量m,val和bitCnt的初始值均为0;其中,bitCnt用来存储从比特流中提取的比特位数;m用来记录在码表中上一次搜索到的位置,val用来记录从比特流中提取的bitCnt个比特位对应的值;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海广电(集团)有限公司中央研究院,未经上海广电(集团)有限公司中央研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710040445.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:防闪字库处理方法及其应用芯片
- 下一篇:在多层网络中计算客户层业务路由的方法