基于stm32的软件音频解码库libmad移植手册

基于stm32的软件音频解码库libmad移植手册

ID:5365179

大小:660.96 KB

页数:22页

时间:2017-12-08

基于stm32的软件音频解码库libmad移植手册_第1页
基于stm32的软件音频解码库libmad移植手册_第2页
基于stm32的软件音频解码库libmad移植手册_第3页
基于stm32的软件音频解码库libmad移植手册_第4页
基于stm32的软件音频解码库libmad移植手册_第5页
资源描述:

《基于stm32的软件音频解码库libmad移植手册》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、原创教程UPMCU工作室Libmad音频解码库移植手册本手册由UPMCU工作室编写,若要转载请注明出处2012-8-12UPMCU工作室淘宝店:http://shop73275611.taobao.com1原创教程UPMCU工作室前言目前,网络上绝大都数关于MP3播放器的例子,大都采用vs1003这颗硬件解码芯片或者使用AT89C51SND1C这颗含有内部音频解码电路的NB单片机,软件音频解码的例子少之又少。UPMCU工作室的相关人员花了些时间、精力,研究了目前linux领域很常用的一个开源音频解码库——libmad的解码流程,并将其成功移植到裸奔的stm32

2、平台上。本着资源共享的奉献精神,本工作室将移植过程整理成手册,发布于网络,希望对大家有用。本手册移植工作所对应的软硬件平台如下:操作系统:windowsXP开发环境:MDKV4.23STM固件库版本号:V3.5.0主芯片:STM32F103RET6(512Kflash64KRAM)运行于72MDA芯片:PCM1770PW由于本人水平有限,文中若有不对的地方,欢迎拍砖。拍砖地址447926737wangkai@163.com1.Libmad简介LIBMAD是一个高质量的音频解码库,MAD的全称是MPEGAudioDecoder。LIBMAD目前支持MPEG-1、

3、低采样率的MPEG-2和MPEG2.5格式的LayerⅠ、LayerⅡ、LayerⅢ(即MP3)的解码。MAD具有如下特性:●高精度的24-BITPCM输出;●100%使用定点运算;●完全基于ISO/IEC标准;●支持GNUGPL协议。MAD完全采用C语言编写(里面的IMDCT部分和乘法运算可根据平台不同使用汇编来加快运算速度),它对MP3解码算法做了很多优化,非常适合在没有浮点支持的嵌入式环境下使用。利用MAD提供的API,我们可以很容易的实现音频解码。MAD的源码我们可以在http://sourceforge.net/projects/mad/files/

4、下载到。UPMCU工作室淘宝店:http://shop73275611.taobao.com2原创教程UPMCU工作室http://www.underbit.com/products/mad有关于libmad的介绍和其他相关的资料,其中madlld这个项目是一个libmad低层API的demon,我的解码工作就是移植libmad和利用madlld搭好的框架解析MP3数据得到PCM格式的数据。2.Libmad简单分析下载libmad-0.15.1b解压后除了msvc++这个文件夹,其他的都是单个文件。其中所有的.C、.H、.dat文件都是我们所需要的。minim

5、ad.c这个文件是对libmad高层API的使用示例,从代码中可以看到它是基于类unix平台的。大致瞅瞅,我们可以看到使用libmad,解码真的很简单!下图大致展示了MP3解码的流程:其中同步及差错检查包括了头解码模块,在主控模块开始运行后,主控模块将比特流的数据缓冲区交给同步及差错检查模块,此模块包含两个功能,即头信息解码及帧边信息解码,根据它们的信息进行尺度因子解码及哈夫曼解码,得出的结果经过逆量化,立体声解码,混淆缩减,IMDCT,频率反转,合成多相滤波这几个模块之后,得出左右声道的PCM码流,再由主控模块将其放入输出缓冲区输出到声音播放设备。下面我们主

6、要分析一下libmad里面用到的一些重要数据结构,这些都定义在mad.h文件中。structmad_stream{unsignedcharconst*buffer;/*inputbitstreambuffer*/unsignedcharconst*bufend;/*endofbuffer*/unsignedlongskiplen;/*bytestoskipbeforenextframe*/intsync;/*streamsyncfound*/unsignedlongfreerate;/*freebitrate(fixed)*/unsignedcharconst

7、*this_frame;/*startofcurrentframe*/unsignedcharconst*next_frame;/*startofnextframe*/structmad_bitptrptr;/*currentprocessingbitpointer*/UPMCU工作室淘宝店:http://shop73275611.taobao.com3原创教程UPMCU工作室structmad_bitptranc_ptr;/*ancillarybitspointer*/unsignedintanc_bitlen;/*numberofancillarybits

8、*/unsignedchar(*mai

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。