5

良い一日、

私は同僚と ALSA と PulseAudio の詳細について議論してきましたが、結論を出すために何らかの助けが必要です。私の理解では、ALSA は比較的低レベルであり、ハードウェアと直接やり取りしますが、PulseAudio はサービスとして ALSA の上にあります。

さらに、ALSA は Linux に関連付けられていることを理解していますが、PulseAudio は ALSA 上の抽象化レイヤーとして機能するだけで、他のプラットフォームでも動作します。私の結論は、ほとんどのLinuxシステムで ALSA を使用するとオーディオ レイテンシが低くなるということですが、同僚は、PulseAudio の方がレイテンシが優れている (短い) と主張しています。

どちらが正しいですか?私の推論は、PulseAudio は ALSA の上に置かれているか、ALSA をラップしているため、独自の低レベルの呼び出しを提供しない限り、遅延を改善する方法はないということです。

ありがとうございました。

4

1 に答える 1

10

ALSA (他の多くのサウンド API と同様) は、サンプルを再生するためのリング バッファーを提供します。

このリング バッファーを使用する最も一般的な方法は、常にいっぱいにしておくことです。これは、現在書き込まれているサンプルは、バッファ内の他のすべてのサンプルが再生された後にのみ再生されることを意味します。つまり、レイテンシはバッファのサイズに比例します。(バッファ サイズはアプリケーションで選択できますが、ハードウェアの機能に依存し、一度選択すると固定されます。)

PulseAudio には、バッファの一部だけを埋めておく機能があります。(これは ALSA によって直接提供される機能ではありませんが、再生の進行状況を監視するために別のタイマーが必要です。) したがって、同じバッファー サイズを使用する他のアプリケーションよりも低いレイテンシーを提供できますが、さらに重要なことに、これによりレイテンシーを動的に調整できます。デバイスを停止して再構成する必要はありません。

他のアプリケーションでも同じことができますが、そのバッファ処理を再度実装するよりも PulseAudio を使用する方が簡単です。

于 2015-03-25T10:05:36.880 に答える