AVAudioEngine:有什么方法可以控制缓冲区大小(延迟)?

Tay*_*lor 5 macos core-audio avaudioengine

我编写了一个 V3 AudioUnit 并使用AVAudioUnit. 我的渲染回调使用 512 帧进行调用,这对于我的应用程序(合成器)来说延迟太高。

有没有办法AVAudioEngine设置处理缓冲区大小?或者我需要直接使用CoreAudio?

注意:这是在 OS X 10.11 上。

Tay*_*lor 5

下面的方法就成功了:

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

...

_audioEngine = [[AVAudioEngine alloc] init];
SetCurrentIOBufferFrameSize(_audioEngine.inputNode.audioUnit, 32);
Run Code Online (Sandbox Code Playgroud)

  • 以下还不够吗?https://developer.apple.com/documentation/avfoundation/avaudiosession/1616589-setpreferrediobufferduration?language=objc (3认同)