如何在iOS的多通道混音器中实现缓冲?

问题描述

| 我正在使用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;
    }
---现在我只是在缓冲完成后才丢失零件,我可以告诉程序获取一个块。 有任何想法吗? 谢谢 赫南     

解决方法

您需要使用环形缓冲区来处理音频。 这里有一个简单的例子。 环形缓冲区