使用远程I / O AudioUnit时声音失真

时间:2010-02-06 00:53:02

标签: iphone cocoa-touch core-audio audio-recording

考虑Apple提供的aurioTouch示例应用程序。我想模拟对录制音频的冗长处理,并通过在渲染回调方法中引入0.1秒的延迟来修改样本:PerformThru。这会导致通过iPhone的扬声器或耳机播放失真的音频和静电噪音。即使应用程序中的静音按钮基本上将静音输出到AudioUnit输出总线,也会听到噪音。

当主持人的回调函数(在我们的示例中为PerformThru)没有及时返回时,是否有人能详细解释低级别会发生什么?

为什么执行效果不佳的回调功能会让iPhone播放噪音? 我知道回调函数中的代码必须高度优化。我仍然想知道是否有可能防止噪音的发生。

是否可以修改aurioTouch示例以使AudioUnit只进行录制并完全关闭播放?

1 个答案:

答案 0 :(得分:2)

如果你想引入延迟,那么你需要通过缓冲来做到这一点,而不是简单地延迟回调。例如。对于0.1 s和44.1 kHz采样率,您需要缓冲另外4410个样本。最初你会传递4410 0s,然后开始传递你的缓冲(延迟)样本。