我编写了一个 V3 AudioUnit 并使用AVAudioUnit
. 我的渲染回调是用 512 帧调用的,这对于我的应用程序(合成器)来说延迟太高了。
有没有办法AVAudioEngine
设置处理缓冲区大小?还是我需要直接使用CoreAudio?
注意:这是在 OS X 10.11 上。
我编写了一个 V3 AudioUnit 并使用AVAudioUnit
. 我的渲染回调是用 512 帧调用的,这对于我的应用程序(合成器)来说延迟太高了。
有没有办法AVAudioEngine
设置处理缓冲区大小?还是我需要直接使用CoreAudio?
注意:这是在 OS X 10.11 上。
以下是诀窍:
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);