Как реализовать буферизацию в многоканальном микшере на iOS? - PullRequest
1 голос
/ 24 мая 2011

Im Использование MixerHostAudio для загрузки нескольких аудиофайлов одновременно.

Я не могу загрузить все файлы в память, потому что приложение ломается!

Может ли кто-нибудь помочь мне реализовать алгоритм для буферизации этих файлов?

Или хотя бы указать мне пример?

Мне удалось продвинуться так далеко:

Я закрепил код, по которому вызывается вызов функции рендеринга:

    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;
    }

--- СЕЙЧАС Я пропускаю только часть, когда буферизация закончена, и я могу сказать программе получить следующий блок ....

Есть идеи?

Спасибо

Hernan

1 Ответ

1 голос
/ 14 сентября 2011

Вам нужно использовать кольцевой буфер для обработки вашего аудио.

Здесь можно найти простой пример.

кольцевой буфер

...