在CoreAudio中,设置kAudioDevicePropertyBufferFrameSize的优缺点是什么?

时间:2010-02-23 19:32:50

标签: macos core-audio

从CoreAudio中的麦克风录制时,kAudioDevicePropertyBufferFrameSize的内容是什么? docs说它是"A UInt32 whose value indicates the number of frames in the IO buffers"。但是,这并没有说明为什么要设置它。

kAudioDevicePropertyBufferFrameSizeRange属性为缓冲区大小提供了有效的最小值和最大值。将缓冲区大小设置为最大缓慢的事情吗?您何时想将其设置为默认值以外的其他内容?

2 个答案:

答案 0 :(得分:3)

以下是他们对CoreAudio list

所说的话
  

寻找低价的应用程序   延迟IO应将此值设置为   因为它可以跟上一点点。

     

另一方面,没有的应用程序   有很大的互动要求或   低延迟的其他原因可以   增加此值以允许数据   分成更大的块   减少每秒的次数   IOProc被调用。请注意这一点   并不一定会降低总数   加载系统。事实上,   增加IO缓冲区大小可以有   与缓冲区相反的影响   更大,这使他们更少   可能适合缓存,什么不适合   这真的会削弱性能。

     

在一天结束时,价值为a   应用程序选择它的IO大小是真的   依赖于应用程序的东西   它的作用。

答案 1 :(得分:1)

通常你会将它保留为默认值,但是如果处理链中有一个期望或针对特定缓冲区大小进行优化的AudioUnit,则可能需要更改缓冲区大小。

此外,通常,较大的缓冲区大小会导致录制和播放之间的延迟较高,而较小的缓冲区大小会增加正在录制的每个通道的CPU负载。