问题描述
|
我正在使用mixerHostAudio来同时加载多个音频文件。
我无法将整个文件加载到内存中,因为APP崩溃了!
有人可以帮我实现用于缓冲主题文件的算法吗?
或者至少为我指出一个例子?
我设法做到了这一点:
我查明了调用渲染函数的代码:
UInt32 numberOfPacketsToRead = (UInt32) totalFramesInFile;
result = ExtAudioFileRead (audioFileObject,&numberOfPacketsToRead,bufferList);
free (bufferList);
if (noErr != result) {
[self printErrorMessage: @\"ExtAudioFileRead failure - \" withStatus: result];
// If reading from the file Failed,then free the memory for the sound buffer.
free (soundStructArray[audioFile].audioDataLeft);
soundStructArray[audioFile].audioDataLeft = 0;
if (2 == channelCount) {
free (soundStructArray[audioFile].audioDataRight);
soundStructArray[audioFile].audioDataRight = 0;
}
ExtAudioFiledispose (audioFileObject);
return;
}
---现在我只是在缓冲完成后才丢失零件,我可以告诉程序获取下一个块。
有任何想法吗?
谢谢
赫南
解决方法
您需要使用环形缓冲区来处理音频。
这里有一个简单的例子。
环形缓冲区