我正在使用Audio Unit Framework
在 mac os x 上开发 VOIP 应用程序。我的程序中有两个音频单元,一个是仅输入的 AUHAL,另一个是默认输出单元。
我使用input-only AUHAL
来捕获音频。当采样率为 时44.1khz
,在 AUHAL 的回调中,值为inNumberFrames
is512
这意味着我的程序512 frames
将从每个调用中获取音频数据AudioUnitRender
。inNumberFrames
中的值default output unit's callback
也是512
。在这种情况下,一切都很好。
input-only AUHAL
但是,当我在和 上更改采样率(8khz)时default output unit
,我的程序无法正常工作。
因为在输出单元的回调中, 的值inNumberFrames
变成93
了,这意味着输出设备需要93 frames
来自每个调用的音频数据,但 的值inNumberFrames
保留512
在AUHAL's
回调中。AUHAL
和之间的帧数不匹配output unit
。
我可以通过使用一个简单的公式来更改AUHAL I/O buffer size
手册AudioUnitSetProperty
并解决这个问题,但有一点错误。但是我想知道是否有一些方法可以AUHAL
像这样default output unit
做一样自动调整其I/O缓冲区大小?</p>
感谢和尊重