AVAudioEngine:任何控制缓冲区大小(延迟)的方法?

时间:2015-10-09 06:00:40

标签: macos core-audio avaudioengine

我已经编写了一个V3 AudioUnit并使用AVAudioUnit托管了它。我的渲染回调是用512帧调用的,这对我的应用程序(合成器)来说是太高的延迟。

AVAudioEngine设置处理缓冲区大小的方法吗?或者我是否需要直接使用CoreAudio?

注意:这是在OS X 10.11上。

1 个答案:

答案 0 :(得分:3)

以下是诀窍:

static OSStatus SetCurrentIOBufferFrameSize(AudioUnit inAUHAL,
                                        UInt32 inIOBufferFrameSize)
{
  return AudioUnitSetProperty(inAUHAL,
                              kAudioDevicePropertyBufferFrameSize,
                              kAudioUnitScope_Global,
                              0,
                              &inIOBufferFrameSize, sizeof(UInt32));
}

...

_audioEngine = [[AVAudioEngine alloc] init];
SetCurrentIOBufferFrameSize(_audioEngine.inputNode.audioUnit, 32);