1

我對AudioQueues有一個基本的疑問,我使用AudioQueue進行記錄,並且基本上遵循SpeakHere應用程序。我發現,只要使用AudioQueue對象上的api:AudioQueuePause暫停錄製,錄製就不會立即暫停。 AudioQueues中是否有回調,表示錄音暫停的代表?爲AudioQueue暫停記錄回調

或者我錯了理解AudioQueuePause api是異步的?如在文檔中描述的API是:

OSStatus AudioQueuePause (
    AudioQueueRef inAQ 
); 

它返回OSStatus,但他們中的哪一個指示成功通話,他們(OSStatus)是否指示調用是同步的?

感謝, 拉吉

回答

2

你可以儘快 「暫停請求」 fromn你的UI時嘗試

AudioQueueGetCurrentTimeAudioQueueDeviceGetCurrentTime

。然後,您可以忽略/刪除由於異步AudioQueuePause命令而在「暫停請求」之後記錄的其他樣本。

+0

感謝您的回覆,您的建議是可行的。但我不明白AudioQueueGetCurrentTime&AudioQueueDeviceGetCurrentTime的目的?你能否詳細說明一下? – 2010-09-23 04:49:23

+2

我只是建議你跟蹤用戶點擊暫停(在用戶界面上)時的「確切時間」。那時,調用AudioQueue時間函數並存儲該值。然後,您可以返回並刪除所有時間點「過去」的樣本。 具體而言,由於您的樣本以X採樣率存儲在N個樣本中(例如44.1kHz的1,000,000個樣本約爲22.6秒)。如果您的用戶點擊了暫停按鈕,AQ時間功能會告訴您「我的樣品數量爲999,000,那麼您可以在999,001後刪除所有樣品」。AQ時間函數可以返回樣品中的秒數和時間。 – zerojarvis 2010-10-08 20:11:55