Я только начал узнавать об AudioQueues из книги CoreAudio (грубые порезы). Я сделал учебное пособие по воспроизведению звука AudioQueue, которое в основном совпадает с примером учебника для Apple. Все работает нормально.Как сделать AudioQueue без замораживания GUI?
Проблемы возникают, когда я пытаюсь реализовать код в приложении с графическим интерфейсом. Я протестировал его, вставив код в метод «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???
}