2010-03-26 35 views
1

我记录使用AudioQueueServices连续的数据流。我的理解是,只有当缓冲区填充数据时才会调用回调。在实践中,第一回调有一个完整的缓冲,第二回调3/4满,第三回调已满,4日是3/4,依此类推。这些缓冲区是8000包(记录8kHz的音频) - 所以我每次都要找回音频1S回调。我已经确认我的音频队列缓冲区大小是正确的(并且由行为证实)。我究竟做错了什么?我应该用不同的RunLoop在AudioQueueNewInput中做些什么?我试过,但这似乎没有什么区别...与AudioQueueServices意外行为回调的同时录制音频

顺便说一句,如果我在调试器运行,每个回调满8000样本 - 使我认为这是一个线程/时间的事情。

回答

0

显然,与他人讨论 - 和缺乏反应,这种行为是有意设计的(或破裂,但不可能是固定的),即使不适当证件。如果需要,解决方法是在回调中适当地缓存样本,而不要期望缓冲区已满。这不是一个问题了,如果你只是将数据写入一个文件,但如果你希望在回调音频数据的大小一致的块操作上,你必须自己确保这种一致性。