Как заставить 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 в заголовочном файле. Ошибка новичка...