我刚刚开始从 CoreAudio 书(粗剪)中学习 AudioQueues。 我做了AudioQueue播放示例教程,与苹果教程示例基本相同。一切工作正常。
当我尝试在具有 GUI 的应用程序中实现代码时,问题就开始了。我通过将代码粘贴到 NSObject 子类的“init”方法中来测试它。我可以让队列执行回调的唯一方法是在 init 末尾插入一个空的 DO...WHILE 循环,但这会使 GUI 卡住(显然...)!!
显然,只要为 inCallbackRunLoop 和 CallbackRunLoopMode 参数将 AudioQueueNewOutput 传递为 NULL,AudioQueue 就应该自动在其自己的单独线程中运行。那只是没有发生。我只听到缓冲区启动后 1.5 秒的声音。
显然,我不明白事情是如何运作的一些基本原理......
卡斯帕
-(void) start
{
CheckError(
AudioQueueStart(queue, NULL),
"AudioQueueStart failed");
printf("Playing...\n");
do {
} while (0 == 0); //WHY IS THIS MAKING IT PLAY???
}
最佳答案
事实证明,我的 userData 结构没有在头文件中声明为 ivar。菜鸟错误...
关于objective-c - 如何让AudioQueue播放而不卡住GUI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4818002/