AudioQueue无法使用Window Miniaturize

时间:2013-12-11 15:16:36

标签: objective-c macos nswindow audioqueue

我正在研究VOIP应用程序,用于语音捕获和播放我正在使用AudioQueue框架,面对一个有线问题,
每当应用程序窗口变得小型化时,它就不会播放音频的秒数,直到窗口不会小型化。

我觉得由于在主线程中运行AudioQueue,我尝试在其他线程中运行audioQueue,但是因为AudioQueue无效。

有任何指示如何解决此问题?

或....当用户按最小化按钮时,有没有办法处理通知,我可以处理并拒绝在音频播放时缩小尺寸?我正在获得关闭和其他活动的委托方法,但没有按下最小化按钮。

1 个答案:

答案 0 :(得分:0)

感谢您查看

在播放音频队列中使用CFRunloop解决了这个问题,

OSStatus status = AudioQueueStart(mQueue,NULL);


NSLog(@" Start AudioQueue returns %d",(int)status);

if ( status != noErr) {
    NSLog(@"AudioQueueStart Error ");
    mIsRunning = TRUE;
}

do {                                               // 5
    CFRunLoopRunInMode (                           // 6
                        kCFRunLoopDefaultMode,                     // 7
                        0.25,                                      // 8
                        false                                      // 9
                        );

} while (mIsRunning);

CFRunLoopRunInMode (                               // 10
                    kCFRunLoopDefaultMode,
                    1,
                    false
                    );

使用这行代码,我可以从线程启动audioQueue。