快速霍夫曼解码算法

上传人:hs****ma 文档编号:457465893 上传时间:2024-02-07 格式:DOCX 页数:3 大小:11.43KB
返回 下载 相关 举报
快速霍夫曼解码算法_第1页
第1页 / 共3页
快速霍夫曼解码算法_第2页
第2页 / 共3页
快速霍夫曼解码算法_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《快速霍夫曼解码算法》由会员分享,可在线阅读,更多相关《快速霍夫曼解码算法(3页珍藏版)》请在金锄头文库上搜索。

1、快速霍夫曼解码算法在AAC音频解码中的应用 内容摘要MPEG-2 AAC (Advanced Audio Coding,先进音频编码)数字音频压缩标准,已经成为MPEG国际标准 中音频编码的核心,引领着感知音频的发展方向。MPEG-2 AAC是高保真音频编码标准中的一种。从编码 原理的角度来看,它包含着多种新型高效的编码工具。主要有修正离散余弦变换(MDCT)、时域预测编 码、瞬时噪声整形、无噪声编码等等。在本文中,针对AAC解码过程中复杂度最高的无噪声解码模块进 行了改进,应用了快速霍夫曼解码,提高了解码效率。正文文字大小:大中小一、研究背景及意义十多年来,在信元编解码领域的研究中,音频信号

2、的压缩编解码越来越成为人们重视和研究的课题,尤其 是最近10多年来,计算机科学技术的高速发展,数字音频逐渐取代了模拟音频,成为了多媒体技术领域的 重要研究方向,尤其是宽带音频的高效编码得到了广泛发展和应用。数字音频在消费电子、网络、广播移 动无线通信和数字影视等众多领域中有了广泛的应用。但是在很多领域中由于存储介质容量和传输带宽的 限制,都要求在很低的比特率下实现数字音频信号的传输。虽然当前的数字音频编码技术已经达到很高的 水平,但还是不能满足人们各式各样的个性化需求1。二、AAC音频解码器结构MPEG-2 AAC解码器的组成如图2.1所示,包括比特流解复用、无噪解码、反量化、比例因子解码、M

3、/S、 IS.、TNS、合成滤波器组和形成PCM模块。从图2.1可知,MPEG-2 AAC的解码流程为:比特流解复用 模块从原始的AAC码流中分离出数据和控制信息,数据信息送至量化频谱解码模块,控制信息则送到各个 相关模块,并由控制信息决定各个功能模块是否激活。量化频谱解码模块根据指定的码本对输入的数据进 行Huffman解码,解码后的量化频谱送到逆量化模块,将解出的1024个量化数据进行逆量化变换。缩放 因子解码模块将经由Huffman和差分解码后得到的缩放因子与逆量化后得到的频谱数据加权,得到实际的 频谱值,并将其传送至M/S解码模块。M/S解码模块通过矩阵运算将传输左右声道频谱和与差的两

4、路频谱 数据变换为原始的左右声道。IS解码模块将右声道频谱通过对左声道频谱值做能量加权实现强度立体声解 码。TNS解码模块将频谱数据通过一组TNS无限冲积响应IIR滤波器,进行时域噪声整形。最后,合成滤 波器组将经过上述各模块处理后的频谱数据转化成时域数据,完成音频解码2。图2.1 MPEG-2 AAC解码器流程图三、快速霍夫曼解码的应用和实现AAC解码器复杂度最高的Huffman解码部分。由于AAC标准中规定的每一个Huffman码表都很长,因此 传统的算法解码速度比较慢,特别是对于支持多路解码的系统而言,实践证明最坏的情况下,对于5.1声 道的AAC音频输入,在MIPS24KC主频400M

5、下,每一帧的解码必须在150Mbps以下。因此,我们在这 里提出一种快速Huffman解码算法,并在本系统中实现。通过观察Huffman码表的规律,我们可以看出:相同的码字加1递增,如果码字后面补0扩找到m位(m 是码表中的最大码长),则码长小的码字,其扩展后的值一定小于码长大的码字扩展后的值。为了实现快 速Huffman解码,可以根据上述Huffman码表的规律建立一个定位表,用于对Huffman码表定位,从而 迅速找到匹配值。定位表中也存放了三个信息,分别是扩展的码字、实际码长和码字在Huffman码表中的 存放地址。对于Huffman码表中不同的码长,提取其最小的码字及存放地址,并将码字

6、后面补0到m位, 形成扩展的码字。我们建立的定位表如下所示3。表3.1定位表Codeword Length Address0000000000000000 1 01000000000000000 4 11100000000000000 5 51101000000000000 6 71110100000000000 7 1311111111111111110 16 79建立了所需要的定位标志后,接着我们设计出下面的伪代码来具体描述快速Huffman解码算法的实现。typedef struct(unsigned long cw1; 扩展码字int length; 实际码长int address;

7、/在Huffman码表中的存放地址Huffcmp;int huffman_decoding(Huffman *h, Huffcmp *hcmp, int m)(int cw0;cw0=getbits(m); 从码流中读入长度为m的编码数据while(cw0=hcmp-cw1)(if(cw0=hcmp-cw1)( /cw0前Len位后的编码返回码流中leftreturn(m-hcmp-length);addr=hcmp-address;return(haddr.index); 返回序号,解码成功if(hcmp-length=m) 如果到达定位表最后一项,则停止比较(offset=cw0-hcmp

8、-cw1; / 偏移量addr=hcmp-address+offset; 实际查表地址 return (haddr.index); 返回序号,解码成功 hcmp+; 指向定位表的下一项以下是cw0length); 取出 cw0 的前 Len 位编码leftreturn(m-hcmp-length); /cw0 前 Len 位后的编码返回码流中cw1temp=getfrontbits(hcmp-cw1, hcmp-length); /取出 cw1 的前 Len 位编码 offset=cw0temp-cw1temp; /偏移量addr=hcmp-address+offset; 实际查表地址 ret

9、urn(haddr.index); 返回序号,解码成功 通过上述对任务和内存访问的优化,以及快速Huffman算法的实现,我们在MIPS仿真器上进行模拟运行 两路AAC音频解码,实验的结果,在支持两路5.1声道解码的情况下,每一路的解码性能为120Mbps。 因此,可以在输出端得到较高质量的音频信号。四、实验结果和分析为了验证将快速霍夫曼解码应用于AAC解码器后的效果,我们利用利用MIPS公司出品的MIPS软件仿真 器来运行我们的代码,并设定CPU为主频400MHz的MIPS24KC,同时利用COOLEDIT软件来读取解码 后的PCM文件,从而模拟出解码后的音频波形图。在实验中,我们选用的文件是为编码压缩的AAC正弦 波信号。经过本系统的解码后,通过读取MIPS24Kc的协处理器中的计数器后,得到整个系统的性能为70 80MIPS,同时得到如图4.1所示的波形图。仿真结果无论从解码的效率和效果来说都非常理想。图4.1 AAC解码后的波形图通过利用快速霍夫曼解码,改进了传统的无噪声解码过程,在很大程度上提高了系统的解码效率,节省了 CPU的负载,成功并且高效的完成了 AAC音频解码过程。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号