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