【杰理AC692X】关于外挂FLASH音频无间断循环播放

SDK:extern_flash_V2.5.1

这里说的无间断播放,比如说下面的音频信号:
【杰理AC692X】关于外挂FLASH音频无间断循环播放
要求是循环播放的时候不能有停顿

按照《AC692x系列提示音无间断循环播放》中的描述,把flash中的歌曲当提示音播出来:
【杰理AC692X】关于外挂FLASH音频无间断循环播放
【杰理AC692X】关于外挂FLASH音频无间断循环播放【杰理AC692X】关于外挂FLASH音频无间断循环播放
【杰理AC692X】关于外挂FLASH音频无间断循环播放
这样就可以循环播放FLASH中的音频了,但是,每次播到音频数据不足512Byte,处理补充数据时,还是会有停顿。

我的处理办法:
因为文档中给出的办法是“从文件头获取剩余长度的数据填补到 buf 中,例如在文件尾拿完了最后的 400 字节数据,则开启了重复播放后,要在文件头拿 512 - 400 = 112 字节的数据填补到 buf 的后 112字节空间
又 测试到填补数据时会停顿,那就直接去头去尾,只播中间:

【杰理AC692X】关于外挂FLASH音频无间断循环播放
其中的 file->_io->seek(file->hdl,SEEK_SET,512);从文件开头偏移512Byte的地方开始读数据
【杰理AC692X】关于外挂FLASH音频无间断循环播放
【杰理AC692X】关于外挂FLASH音频无间断循环播放
打印信息:
【杰理AC692X】关于外挂FLASH音频无间断循环播放
这样操作就只播整段音频的中间部分,不会停顿了。