考虑Apple提供的aurioTouch示例应用程序。我想模拟对录制音频的冗长处理,并通过在渲染回调方法中引入0.1秒的延迟来修改样本:PerformThru
。这会导致通过iPhone的扬声器或耳机播放失真的音频和静电噪音。即使应用程序中的静音按钮基本上将静音输出到AudioUnit输出总线,也会听到噪音。
当主持人的回调函数(在我们的示例中为PerformThru
)没有及时返回时,是否有人能详细解释低级别会发生什么?
为什么执行效果不佳的回调功能会让iPhone播放噪音? 我知道回调函数中的代码必须高度优化。我仍然想知道是否有可能防止噪音的发生。
是否可以修改aurioTouch示例以使AudioUnit只进行录制并完全关闭播放?
答案 0 :(得分:2)
如果你想引入延迟,那么你需要通过缓冲来做到这一点,而不是简单地延迟回调。例如。对于0.1 s和44.1 kHz采样率,您需要缓冲另外4410个样本。最初你会传递4410 0s,然后开始传递你的缓冲(延迟)样本。