3968|2

224

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

使用ST公司提供的MP3解码库 [复制链接]

硬件平台:STM32F746G-DISC

开发平台:KEIL_5.29

我这里不再介绍MP3文件的详细结构,只介绍如何使用MP3解码库,需要了解MP3文件信息可以参考这个网:https://www.cnblogs.com/ranson7zop/p/7655474.html

这个解码库可以从ST公司官网通过搜索关键词“x-cube-audio”下载。下载解压完后,进入到此路经下:STM32CubeExpansion_Audio_V1.1.1\Middlewares\ST\STM32_Audio\Codecs,可以看到有两个文件夹,如下图所示:

 

 进入到解码库的目录下,会有3个文件夹,如下图所示:

 

进入lib文件夹下,会有3个解码库,分别对应不同的平台

 

我这里使用的是STM32F7,当然选用M7平台的lib文件。

接下来创建KEIL工程,先把SD卡驱动和音频芯片WM8994驱动调试好,然后将SpiritDSP_MP3_Dec文件夹复制到工程目录下,keil中添加lib文件,并设置include包含路经,那么MP3解码库就添加完成了。

 

 

接着说明一下MP3解码用到的函数,这些函数可以在spiritMP3Dec.h文件中找到。

1. void SpiritMP3DecoderInit(

TSpiritMP3Decoder *pDecoder,

fnSpiritMP3ReadCallback* pCallbackFn,

                      fnSpiritMP3ProcessCallback *pProcessFn,

                      void * token   )

函数功能:初始化MP3解码器,每次解码完后,再重新解码新的MP3文件,就必须再次先调用这个函数,以完成MP3解码器的初始化。

参数:

TSpiritMP3Decoder *pDecoder

指向要初始化的解码器结构。所有解码器变量都存储在此结构中。 解码器不使用非恒定的静态或全局变量,因此所有函数都是可重入的。

fnSpiritMP3ReadCallback* pCallbackFn

回调函数指针,解码器将使用此功能来检索输入的mp3数据。

fnSpiritMP3ProcessCallback *pProcessFn

回调函数指针,解码器将使用此功能来解码Layer3文件时,处理MDCT系数。目前不需要用到此功能,设置为NULL

void * token

传递给回调函数的可选参数。

2. typedef unsigned int (fnSpiritMP3ReadCallback)

(

void * pMP3CompressedData,

unsigned int nMP3DataSizeInChars,

void * token

)

函数功能:解码器使用它来读取MP3文件数据,必须实现此功能。

参数:

 

void * pMP3CompressedData

存放读取的mp3数据。

unsigned int nMP3DataSizeInChars

需要读取的MP3数据大小。

void * token

回调函数的可选参数。

3. unsigned int SpiritMP3Decode (

TSpiritMP3Decoder *pDecoder,

                              short *pPCMSamples,

                   unsigned int nSamplesRequired,

               TSpiritMP3Info * pMP3Info

                 );

函数功能:解码每一帧MP3数据,并将解码完后的数据存放在pPCMSamples中。如果此函数的返回值小于nSamplesRequired,则文件指针已到达MP3文件末尾,MP3文件解码完成,否者继续调用此函数解码。

参数:

TSpiritMP3Decoder *pDecoder

指向初始化的解码器结构。

short *pPCMSamples

存放解码输出的PCM数据。

unsigned int nSamplesRequired

MP3文件每个音频帧的采样字节数

TSpiritMP3Info * pMP3Info

解码完成后,存放当前音频帧的解码信息。其中TSpiritMP3Info结构体中的成员IsGoodStream,用来判断当前音频帧解码是否成功,解码成功为1,失败为0

        介绍下该解码库的使用流程,具体代码请参考我的程序。

 

 

使用ST公司提供的MP3解码库.docx

117.11 KB, 下载次数: 54

Audio.zip

4.85 MB, 下载次数: 247

此帖出自stm32/stm8论坛

最新回复

谢谢楼主分享~~不错~   详情 回复 发表于 2020-5-24 16:49
点赞(2) 关注(3)
 

回复
举报

6040

帖子

202

TA的资源

版主

沙发
 

不错,谢谢分享

此帖出自stm32/stm8论坛
 
 

回复

1万

帖子

203

TA的资源

管理员

板凳
 

谢谢楼主分享~~不错~

此帖出自stm32/stm8论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表