AudioOutputUnitStart()与RemoteIO的render callm之间的时间差异

时间:2017-12-08 16:50:30

标签: ios timing latency audiounit remoteio

这是一个关于时间安排的漂亮“细节”问题......

我正在使用iOS的RemoteIO音频设备来做事情。只是想知道系统如何处理时间:在调用AudioOutputUnitStart()之后,单元应该“on”,然后渲染回调将被下游单元拉出。请允许我猜一下:

可能性1:在执行AudioOutputUnitStart()之后立即发生下一个渲染回调,然后继续进行

可能性2:系统有自己的渲染回调节奏。在调用AudioOutputUnitStart()之后,下一个渲染回调捕获系统的一个“下一个”刻度,然后从那里开始

1还是2?还是有3个?提前谢谢!

1 个答案:

答案 0 :(得分:1)

音频延迟似乎取决于特定的设备型号,音频会话和选项,请求的采样率和缓冲区大小,以及是否在系统上播放或录制任何其他音频(背景或最近关闭的应用) 。内部音频放大器电路(等)是否需要上电或已经开启可能会产生最大的不同。由于OS重采样和混频器代码可能需要缓冲,请求某些采样率似乎也会导致额外的时间。

很可能(2)或(3)。

使用RemoteIO时最小化延迟的最佳方法是在音频会话设置中请求非常短的缓冲区(1到6 mS),提前启动音频会话和音频单元(在app启动时,查看负载等) 。),然后用零填充回调缓冲区(或丢弃记录的回调数据)直到你需要声音。