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