Проблема с использованием примера класса Apple MixerHostAudio - PullRequest
0 голосов
/ 13 ноября 2010

В своем приложении для iPhone я пытаюсь использовать класс Apple *1001* MixerHostAudio для микширования и воспроизведения аудиофайлов, указанных пользователем.

Чтобы класс MixerHostAudio воспроизводил файлы, указанные пользователем, я создал экземпляр класса с NSURL этих файлов. Это отлично работает для первого экземпляра, однако, когда я хотел изменить воспроизводимые аудиофайлы, выпустив старый класс MixerHostAudio и выделив новый, приложение вылетает через EXC_BAD_ACCESS секунд после создания экземпляра.

После некоторой отладки я заметил, что ошибка возникает в inputRenderCallback, где AudioUnitSampleType (audioDataLeft и audioDataRight) soundStructPointerArray равно nil.

Это часть кода, где произошла ошибка:

for (UInt32 frameNumber = 0; frameNumber < inNumberFrames; ++frameNumber) {
    outSamplesChannelLeft[frameNumber]                 = dataInLeft[sampleNumber];
    if (isStereo) outSamplesChannelRight[frameNumber]  = dataInRight[sampleNumber];

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 13 ноября 2010

Вы звонили stopAUGraph перед выпуском своего MixerHostAudio экземпляра?Мне кажется, что метод dealloc не останавливает его автоматически;тогда обратный вызов будет вызван после того, как были освобождены / освобождены различные области памяти, что вызвало бы неправильный сбой доступа.

...