1

AudioHardwareALSA.cpp の getInputBufferSize(...) 関数を見ていると、ハードコードされた 320 の値が返されます。私の質問は次のとおりです:この値はどのように計算されますか?

私はいくつかの事前校正を行いましたが、まだいくつか質問があります。


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 が見つからないので、質問の 1 つは、それはどこで定義されているのか、それとも大まかな計算なのかということです。

また、16000 と 32000 などのサンプル レートを追加しようとしています (後で追加する可能性があります)。正しい最小バッファサイズを計算するには? 遅延はすべてのサンプル レートで常に 10 ミリ秒ですか?

どんな助けでも大歓迎です。

4

1 に答える 1

1

Google は最初から NB-AMR エンコードを実装していると思います。その後、AAC のサポートが追加されました。NB-AMR の場合、フレームサイズは 320 バイトです。NB-AMR の場合: サンプリング レート = 8000 サンプル/秒 フレーム期間 = 20 ミリ秒 サンプル サイズ = 2 バイト チャンネル = モノラル したがって、各フレームには 8000 サンプル/秒 * 0.02 秒 * 2 バイト/サンプル/チャンネル * 1 が含まれます。チャネル = 320 バイト

AAC の場合、これらのパラメータは異なるため、フレームサイズ

于 2011-09-19T14:41:34.473 に答える