AudioToolbox – logging时的回拨延迟

最近我一直在为iOSdevise一个非常具体的项目,而且我的研究使我得到了几乎最终的代码。 我已经解决了迄今为止发现的所有极端困难,但在这个问题上,我似乎没有任何线索(关于原因或解决问题的可能性)。

我设置了我的audio序列(采样率44100,LinearPCM格式,每通道16位,每帧2个字节,每个通道1个通道…),并开始用12个audio缓冲区录制声音。 不过,每回传4次似乎都有延迟。

情况如下:前4个callback被调用,每个间隔大约2毫秒。 但是,在4日和5日之间,有60毫秒的延迟。 同样的事情发生在8日和9日,12日和13日之间…

似乎每帧字节和延迟时间之间有关系。 我知道这一点,因为如果我改变到每帧4字节,我开始在8日和9日之间,然后在16日和17日,24日和25日之间的延迟…尽pipe如此,似乎并没有延迟时间和缓冲器数量之间的任何关系。

callback函数只做两件事:将audio数据(inBuffer-> mAudioData)存储在我的类可以使用的数组上; 并调用另一个AudioQueueEnqueueBuffer,将当前缓冲区放回队列。

有没有人已经经历过这个问题? 有谁知道,至less,这可能是什么原因呢?

先谢谢你。

audio队列API似乎在RemoteIOaudio单元API上运行,与您的audio缓冲区大小无关,在您的示例中,实际的audio缓冲区大小可能大于您的示例。 所以无论何时一个RemoteIO缓冲区准备就绪,一大堆小的AQ缓冲区很快就会被填满。 然后你得到更长的延迟,等待一些更大的缓冲区被填充样本。

如果您想要更好的控制(更均匀分布)的缓冲等待时间,请尝试直接使用RemoteIoaudio单元。

Interesting Posts