最近在使用rtthread 的 audio设备播放wav的音频,MCU使用的是STM32F4,使用过程中发现,不能在播放单声道音频的时候会特别快,究其原因是因为STM32的I2S是双声道输出,而音频输入的声音是单声道的,相当于少一个声道的数据,其实如果播放立体声音频就没有问题了。
但是使用立体声音频会增加WAV文件的体积,这样占用的FLASH空间就大了,目前想到的方案是将读取到的音频数据扩展到双声道,我们直接修改wavplayer.c中的内容,如果有更好的解决方案,欢迎指正:
修改点如下:
1、声明一个声道数变量来记录当前音频的声道数,在声明一个ushort类型的指针,方便后边计算
2、获取当前音频的声道数
3、获取音频文件读取缓冲区的指针
4、如果是单声道音频,那么将 单声道的音频扩展到左右两个声道,形成双声道数据流
文章来源于:电子工程世界 原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。