Как реализовать буферизацию в многоканальном микшере на iOS?

#ios #buffer #core-audio #mixer

#iOS #буфер #ядро-аудио #микшер

Вопрос:

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

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

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

Или, по крайней мере, укажите мне на пример?

Мне удалось зайти так далеко:

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

     UInt32 numberOfPacketsToRead = (UInt32) totalFramesInFile;

    result = ExtAudioFileRead (audioFileObject, amp;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;
    }
  

— ТЕПЕРЬ мне не хватает только той части, когда буферизация завершена, и я могу сказать программе получить следующий фрагмент….

Есть идеи?

Спасибо

Эрнан

Ответ №1:

Для обработки звука необходимо использовать кольцевой буфер.

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

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

Комментарии:

1. Спасибо, братан .. Я проверю это. (Имеет какое-либо отношение к дабстепу?)

2. У тебя случайно нет примеров для Objective — C?