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