Как заставить AudioQueue играть без зависания GUI? - PullRequest
2 голосов
/ 27 января 2011

Я только начал узнавать об 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 Ответ

2 голосов
/ 05 февраля 2011

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

...