Как заставить AudioQueue играть без зависания GUI?

Я только начал узнавать об AudioQueues из книги CoreAudio (черновики). Я сделал учебное пособие по воспроизведению AudioQueue, которое в основном совпадает с учебным примером Apple. Все работает нормально.

Проблемы начинаются, когда я пытаюсь реализовать код в приложении с графическим интерфейсом. Я проверил это, вставив код в метод 'init' подкласса NSObject. Единственный способ получить очередь для выполнения обратного вызова - это вставить пустой цикл DO...WHILE в конце моего init, но это заставит GUI зависать (очевидно...)!!

Очевидно, что AudioQueue предполагается запускать в своем собственном отдельном потоке автоматически, если AudioQueueNewOutput передается NULL для аргументов inCallbackRunLoop и CallbackRunLoopMode. Это просто не происходит. Я слышу только 1,5 секунды от прокачки буферов.

Ясно, что есть кое-что фундаментальное, что я не понимаю, как все работает...

Kasper

-(void) start
{
CheckError(
     AudioQueueStart(queue, NULL),
 "AudioQueueStart failed");

printf("Playing...\n");
do {
} while (0 == 0);            //WHY IS THIS MAKING IT PLAY???
}

1 ответ

Решение

Оказывается, моя структура userData не была объявлена ​​как ivar в заголовочном файле. Ошибка новичка...

Другие вопросы по тегам