1
我正在查看AudioHardwareALSA.cpp中的getInputBufferSize(...)函数,它返回硬编码的值320.我的问题是:如何计算此值?AudioHardwareALSA :: getInputBufferSize中的缓冲区计算(...)
我已经做了一些预测,但仍然有一些问题。
sample_rate = 8000
format = S16_LE = 2 bytes/sample
period_time = 10000 us (guessing)
buffer_size = 2 * period_size
period_size = period_time * bytes/sec
buffer_size = 2 * (0.01 * sample_rate * 2) = 320 bytes.
我找不到PERIOD_TIME中的代码,所以一个问题是:它在哪儿定义,或者仅仅是一个粗略的计算?
我也试图添加更多的采样率,即16000和32000(以后也许更多)。如何计算正确的最小缓冲区大小?所有采样率的延迟时间总是10毫秒?
任何帮助表示赞赏。
您好, 感谢您的回答。这对于帧大小是有意义的,但是函数应该给出缓冲区大小。在alsa-project站点中,缓冲区大小必须大于(至少2x)周期大小。这就是为什么我想知道为什么不返回2 x帧大小。也许这个函数应该有一些说明它返回帧大小为i.s.o的缓冲区。不管怎样,谢谢你花时间回答我的问题。 – Ermir 2011-09-21 12:50:24