AUHAL可以自动调整其I / O缓冲区大小吗?

时间:2013-08-11 16:18:19

标签: c++ macos core-audio voip audiounit

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

我使用input-only AUHAL来捕获音频。如果采样率为44.1khz,则在AUHAL的回调中,inNumberFrames的值为512,这意味着我的程序将从每次调用获得512 frames个音频数据{{1} }。 AudioUnitRenderinNumberFrames的值也是default output unit's callback。在这种情况下,每件事情都很好。

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

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

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

谢谢&方面

0 个答案:

没有答案