打印

Huffman解码

[复制链接]
1242|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lxAPP|  楼主 | 2012-10-8 22:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Huffman 解码
解码是编码的逆过程,即是根据码字查询Huffman码表,还原出初始值。
mp3音频帧的数据包括比例因子和经过Huffman编码的数据,有边带信息参量可以计算
处单个声道内的比例因子的总长度。Huffman解码还原出576条频率线从低频到高频分
为三个区域:大值区、小值区和零值区。只有大值区和小值区会出现在mp3的码流中,
零值区的频率线值全为0,因此不用编码也不必出现在mp3码流中。
大值区: 每个huffman码字对两个频率线x 和y 进行编码,参量big_values表示大值区


Huffman码字的总个数,因此大值区可以解码得 big_values
x 2 个频率线。被编码的频
率线值小于等于15,如果超过15则只对15进行编码,超过部分表示成扩展值,放在
Huffman码字之后。






大值区的32个Huffman码表使用前16个Huffman码表进行编码的主数据纯粹由
Huffman码字组成,不包含扩展值,且表0 为零值表,表4 和表14未使用。后16个
Huffman码表均包含扩展值,表明码字后面可能带有扩展值。







小值区使用两个特殊的Huffman码表,具体的码表选择信息有参量
countable_seclect提供,此区域的Huffman码字对4个频率线v,w,x,y进行编码,且
每个频率线只有3种可能的值,分别为-1,0,1,被编码数据非0 时,符号位单独传送。







零值区的频率线值全为0,不出现在码流中,解码时只需要对其补0,直至共得到576
个解码值。







为了减少Huffman码表的存储空间,采用Huffman树存储码表,生成一个二叉树,
将码表装入其中即可得Huffman树,使用二叉树搜索算法的存储空间利用率较好,且控
制简单,不过相对处理速度较慢,需要逐个bit进行判断。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

483

帖子

2

粉丝