私は現在、Alsa でサンプリングを行う必要があるプロジェクトに取り組んでいます。すべてを正しく設定しようとしていますが、読み値のサイズを正しく設定する方法に行き詰まっています。
私のタスクにとって興味深いと思われる2つのプリミティブがあります。
snd_pcm_hw_params_get_period_time
snd_pcm_hw_params_get_buffer_size
最初の名前は、出力がサンプリング期間の時間長になることを示唆していますが、それは奇妙です:f = 44100Hz
サンプリング期間にサンプリングレートを設定している場合 (ナノ秒単位) はT0 = 1e9 / 44100 ~= 22676 ns
、関数が応答する間T1 = 725 us = 725000 ns
です。
一方、非ロック プリミティブを使用するように依頼された場合でも、'readi' をロックするのに必要な時間をプロファイリングしようとしていT2 = 8028603 ns
ますT3 = 12436217 ns
。
最後に、次の 2 つの意味がわかりません。
snd_pcm_hw_params_get_buffer_time
snd_pcm_hw_params_get_period_size
バッファの時間と期間のサイズを測定する方法がわかりませんが、前者は と同じ値をget_buffer_size
返し、後者は と同じ値を返しますget_period_time
。
ヒントはありますか?