STM32 wavplayer播放单声道音频的处理方法

电子说

1.3w人已加入

描述

最近在使用rtthread 的 audio设备播放wav的音频,MCU使用的是STM32F4,使用过程中发现,不能在播放单声道音频的时候会特别快,究其原因是因为STM32的I2S是双声道输出,而音频输入的声音是单声道的,相当于少一个声道的数据,其实如果播放立体声音频就没有问题了。

但是使用立体声音频会增加WAV文件的体积,这样占用的FLASH空间就大了,目前想到的方案是将读取到的音频数据扩展到双声道,我们直接修改wavplayer.c中的内容,如果有更好的解决方案,欢迎指正:

修改点如下:

1、声明一个声道数变量来记录当前音频的声道数,在声明一个ushort类型的指针,方便后边计算

2、获取当前音频的声道数

3、获取音频文件读取缓冲区的指针

4、如果是单声道音频,那么将 单声道的音频扩展到左右两个声道,形成双声道数据流

缓冲器

缓冲器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分