我尝试使用 SpeakHere 示例应用程序作为起点来实现 iPhone 声音处理应用程序。该应用程序涉及在播放期间操作缓冲的音频样本。当我将样本乘以一个小数(例如 0.9)时,我会得到噪音。最奇怪的是,当将样本乘以整数(如 1.0、2.0)或从它们中添加或减去时,播放的声音与预期的一样。
我正在使用以下代码片段在 AudioPlayer.m 的播放回调函数中执行此操作:
//------------------
//If buffer samples are multiplied by 0.9 we get noise. If we multiply it by 1.0 or add to it everything's fine.
short *buffer = (short *)calloc(1, numPackets * 2);
memmove(buffer, bufferReference->mAudioData, numPackets * 2);
for (int i = 0; i < numPackets; i++)
{
buffer[i] *= 0.9;
//buffer[i] *= 1.0;
//buffer[i] += 10.0;
}
memmove(bufferReference->mAudioData, buffer, numPackets * 2);
free(buffer);
buffer = NULL;
//-------------------
完整的项目可以在这里下载:http: //depositfiles.com/files/lmnkq68n8
谁能指出我做错了什么?我已经为此苦苦挣扎了几天,我完全迷路了。
谢谢!