您当前的位置:五五电子网电子知识电子知识资料计算机应用基于C5000的音频解码系统分析 正文
基于C5000的音频解码系统分析

基于C5000的音频解码系统分析

点击数:7696 次   录入时间:03-04 12:03:42   整理:http://www.55dianzi.com   计算机应用

    60%~70%,C6x系列的编译器效率高达80%。因此采用C语言来对DSP进行编程是必然的趋势。

    本方案在LIBMAD的基础上对软件进行设计。MAD(LIBMAD)是一个开源的高精度MPEG音频解码库,支持MPEG-1(Laver I,Laver II和Laver III)。LIBMAD提供24-hit的PCM输出,完全是定点计算,非常适合在没有浮点支持的平台上使用。使用LIBMAD提供的一系列API,就可以非常简单地实现MP3数据解码工作。在LIBMAD的源代码文件目录下的mad.h文件中,可以看到绝大部分该库的数据结构和API等。

基于C5000的音频解码系统设计

    MP3解码算法虽然复杂,但是整个解码过程分成各个模块进行,各个模块之间相对比较独立。在整个解码软件的设计过程中,对各个模块采用子函数,各个模块之间的联系就表现为函数的参数传递。整个解码软件由一个主函数控制,调度各个模块的有序运行。

    解码软件的程序流程如图9所示。从图中我们可以看到对输入音频流解码先经过帧同步,读入同步头的信息,得到该MP3码流的采样频率、码流速率等参数,并记录现在所解码的MP3码流的帧数。然后获得粒度信息、主信息及定标因子,根据同步头中所得的MP3码流的压缩类型来读取信息,获得对应于各自颗粒中的各自通道的相关参数。

基于C5000的音频解码系统设计

    然后对一帧中的两个颗粒进行解码,首先是从比特流中获取每个颗粒对应的定标因子,并对每个颗粒下的数据进行哈夫曼解码,这个哈夫曼解码过程需要32个哈夫曼码表之一来进行解码,可以根据边带信息中含有每个颗粒选择码表的信息来进行选择。经过哈夫曼解码的数据,接下来要经过反量化取样,在这步中,各个子带的数据根据所使用窗的类型,利用在边带信息中获得的参数反量化。接下来就是重排序和立体声处理模块,在这个模块中根据MP3码流所采用的压缩类型来进行相应的处理。

    这样当处理完一个颗粒中所有通道的数据后,就可以把这一颗粒已解码好的数据输出到输出缓冲区中,当把下一颗粒的数据解码完毕并输出后,这样一帧数据就解码完成。这帧数据就可以输入到D/A部分进行播放,并将输出缓冲区清空,等待下一帧的解码数据的输入。解码程序一直到在比特流中再也找不到一帧的同步头时,就完成了这一音频流的解码。

    3 结束语

    MP3解码算法比较复杂,并且市面上大部分便携式MP3播放器都采用的是硬件解码器,也就是采用专门的音频解码芯片来实现的,然而随着数字信号处理技术的飞速发展,使得采用通用数字信号处理器(DSP)实现这一解码算法成为可能,而且存性价比、低功耗和软件升级灵活性上都优于采用硬件解码方案的mp3播放器,成为未来MP3市场的发展方向。



上一页  [1] [2] 


本文关键字:暂无联系方式计算机应用电子知识资料 - 计算机应用