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

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

Файлы классов можно найти здесь: http://developer.apple.com/library/ios/#samplecode/MixerHost/Listings/Classes_MixerHostAudio_h.html

Для создания 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];

В любом случае могу ли я создать несколько экземпляров MixerHostAudio без получения ошибки ??

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

1 Ответ

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

Похоже, код не сбрасывает все данные в обратном вызове. Я не знаком с этим исходным кодом, но вы должны пройти и убедиться, что все выделения памяти обрабатываются правильно и что нет устаревших указателей. Особенно обращайте внимание на глобальные или статические переменные, которые висят, когда их не должно быть, поскольку вы говорите, что создаете вторую, прежде чем она выйдет из строя.

...