从CoreAudio中的麦克风录制时,kAudioDevicePropertyBufferFrameSize
的内容是什么? docs说它是"A UInt32 whose value indicates the number of frames in the IO buffers"
。但是,这并没有说明为什么要设置它。
kAudioDevicePropertyBufferFrameSizeRange
属性为缓冲区大小提供了有效的最小值和最大值。将缓冲区大小设置为最大缓慢的事情吗?您何时想将其设置为默认值以外的其他内容?
答案 0 :(得分:3)
以下是他们对CoreAudio list:
所说的话寻找低价的应用程序 延迟IO应将此值设置为 因为它可以跟上一点点。
另一方面,没有的应用程序 有很大的互动要求或 低延迟的其他原因可以 增加此值以允许数据 分成更大的块 减少每秒的次数 IOProc被调用。请注意这一点 并不一定会降低总数 加载系统。事实上, 增加IO缓冲区大小可以有 与缓冲区相反的影响 更大,这使他们更少 可能适合缓存,什么不适合 这真的会削弱性能。
在一天结束时,价值为a 应用程序选择它的IO大小是真的 依赖于应用程序的东西 它的作用。
答案 1 :(得分:1)
通常你会将它保留为默认值,但是如果处理链中有一个期望或针对特定缓冲区大小进行优化的AudioUnit,则可能需要更改缓冲区大小。
此外,通常,较大的缓冲区大小会导致录制和播放之间的延迟较高,而较小的缓冲区大小会增加正在录制的每个通道的CPU负载。