1

snd_pcm_readn()から一定の読み取り遅延を実現する方法は?試してみました(144フレーム読み取り、4チャンネルマイク用、8000Hz)。

私が期待しているのは、snd_pcm_readn()の呼び出しごとに18ミリ秒の読み取り遅延です。

 18ms, 18ms, 18ms , 18ms, 18ms, 18ms, 18ms , 18ms, 18ms, 18ms, 18ms , 18ms ....

。しかし、私がオシロスコープで次のパターンを観察したこと:

 2ms, 2ms, 2ms ,2ms , 64ms, 2ms, 2ms, 2ms 2ms ,, 64ms, 2ms, 2ms, 2ms, 2ms, 64ms ....

データがバッファリングされている場合、APIがより速く戻る場合、snd_pcm_readn()でバッファリングが発生しているようです。この観測値の平均は18ミリ秒ですが、snd_pcm_readn()を呼び出すたびに一定の18ミリ秒のブロッキング動作が必要です。

(とにかく平均読み取り時間は18msです-平均的な動作は必要ありません-読み取りごとに正確に18msである必要があります)

ALSAを使用してこれを達成する方法は?

4

0 に答える 0