我正在使用Audio Unit Framework
在mac os x上开发VOIP应用程序。我的程序中有两个音频单元,一个是仅输入AUHAL,另一个是默认输出单元。
我使用input-only AUHAL
来捕获音频。如果采样率为44.1khz
,则在AUHAL的回调中,inNumberFrames
的值为512
,这意味着我的程序将从每次调用获得512 frames
个音频数据{{1} }。 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
自动调整其I / O缓冲区大小,就像AUHAL
一样?
谢谢&方面