我一直在尝试使用 Superpowered Audio SDK 从缓冲区(短整数)播放音频文件。目前,在每次调用 process 函数时,我都会传入输出缓冲区并编写如下:
getBufferData(short int *output, unsigned int samples) {
memcpy(output, buffer + bufferPtr, samples * sizeOf(short int));
bufferPtr += samples;
}
生成的音频可以识别为我正在尝试播放的歌曲,但严重失真。
我通过将缓冲区中的数据写入 wav 文件并以这种方式测试播放来检查缓冲区中的数据是否符合我的预期。
我的预感是 memcpy 例程可能过于密集而无法如此频繁地调用,但我一直无法找到替代方法。
我也明白这种播放方法不是使用超能力播放音频文件的合适方法,但对于我的用例来说是必需的。
任何指导将不胜感激!