1

我正在使用Audio Unit Framework在 mac os x 上开发 VOIP 应用程序。我的程序中有两个音频单元,一个是仅输入的 AUHAL,另一个是默认输出单元。

我使用input-only AUHAL来捕获音频。当采样率为 时44.1khz,在 AUHAL 的回调中,值为inNumberFramesis512这意味着我的程序512 frames将从每个调用中获取音频数据AudioUnitRenderinNumberFrames中的值default output unit's callback也是512。在这种情况下,一切都很好。

input-only AUHAL但是,当我在和 上更改采样率(8khz)时default output unit,我的程序无法正常工作。

因为在输出单元的回调中, 的值inNumberFrames变成93了,这意味着输出设备需要93 frames来自每个调用的音频数据,但 的值inNumberFrames保留512AUHAL's回调中。AUHAL和之间的帧数不匹配output unit

我可以通过使用一个简单的公式来更改AUHAL I/O buffer size手册AudioUnitSetProperty并解决这个问题,但有一点错误。但是我想知道是否有一些方法可以AUHAL像这样default output unit做一样自动调整其I/O缓冲区大小?</p>

感谢和尊重

4

0 回答 0