MonoTouch可以安全地与Core Audio一起使用吗?

时间:2013-02-06 19:04:47

标签: ios xamarin.ios core-audio

我想到Core Audio回调需要非常低的延迟。在我的情况下,我一次收到512个样本的请求,44100Hz意味着回调可以达到最大值,需要11.6毫秒才能运行。

现在,据我了解垃圾收集,每个收集周期都需要VM停止所有线程。然后,垃圾收集周期可能会中断Core Audio回调,并产生毛刺。

如果是这样,那么从MonoTouch使用Core Audio是不安全的。

我的假设是否正确?或者这都不正确?

2 个答案:

答案 0 :(得分:2)

Core Audio渲染回调将在实时线程上调用,该线程对其截止日期非常严格。从它的声音来看,你偶尔会超过渲染回调的时间限制,并被切断(这= =毛刺)。虽然我对MonoTouch了解不多,但你猜测GC延迟是罪魁祸首听起来很可能是个结论。

为了让您了解Core Audio渲染回调的严格程度,这里有一些在这种情况下无法接受的事情:

  • 分配内存
  • 等待互斥锁
  • 从磁盘读取数据
  • Objective-C消息传递

由于Core Audio的架构,渲染回调将在您产生的音频被听到之前很快触发。因此,即使简短的GC挂断也可能引发可听见的故障。

答案 1 :(得分:1)

没有。 MonoTouch VM似乎无法保证在确定的时间内执行代码。实时音频回调需要代码(通常编译为本机C),其性能可以严格限制,包括所有OS调用和任何解释器开销。