Advanced Linux Sound Architecture (ALSA) は、Linux システムで最も一般的なアーキテクチャであり、Linux オペレーティング システムにオーディオと MIDI 機能を提供します。
ALSA には次のような特徴があります:
- 民生用サウンドカードから業務用のマルチチャネル オーディオ インターフェイスまで、あらゆる種類のオーディオ インターフェイスを効率的にサポートします。
- フルモジュール化されたサウンド ドライバ。
- SMP とスレッドセーフな設計。
- アプリケーション プログラミングを簡素化し、より高レベルの機能を提供するユーザー空間ライブラリ (alsa-lib)。
- 旧来の Open Sound System (OSS) API をサポートし、多くの OSS プログラムに対してバイナリ互換性を提供します。
ALSA システム オン チップ (ASoC) レイヤは、SoC オーディオ用に設計されています。ASoC レイヤのプロジェクト全体の目標は、チップ プロセッサおよびポータブル オーディオ CODEC 向けに、より優れた ALSA サポートを提供することです。
ASoC レイヤには次の機能もあります:
- CODEC への非依存性。他のプラットフォームやマシンでコーデック ドライバを再利用できます。
- コーデックと SoC の間で、I2S/PCM オーディオ インターフェイスを簡単に設定できます。各 SoC インターフェイスおよび CODEC は、自身のオーディオ インターフェイス機能をコアに登録します。
- ダイナミック オーディオ パワー マネージメント (DAPM)。DAPM は、どのようなオーディオ使用ケースが有効であっても、オーディオ サブシステムの消費電力を最小化するために設計された ASoC の技術です。DAPM は常に最小のオーディオ電力状態を保証し、ユーザー空間のオーディオ コンポーネントに対して完全に透過的です。DAPM は、複雑なオーディオ要件を持つモバイル デバイスやデバイスに最適です。
- ポップ音およびクリック音の低減。コーデックを正しいシーケンスでパワーアップ/ パワーダウン (デジタル ミュートの使用を含む) することで、ポップ音やクリック音を低減できます。ASoC は、電源状態を変更するタイミングをコーデックに通知します。
- 機械固有のコントロール。マシンがサウンド カードに制御項目を追加できるようにします。例えば、スピーカ アンプの音量制御などです。
ASoC は、組み込みオーディオシステムを複数の再利用可能なコンポーネント ドライバに分割します:
- コーデック クラス ドライバ:コーデック クラス ドライバはプラットフォームに依存せず、オーディオ制御、オーディオ インターフェイス機能、コーデック DAPM 定義、およびコーデック IO 関数を含みます。このクラスは、必要に応じて BT、FM、およびモデム IC に拡張されます。コーデック クラス ドライバは、任意のアーキテクチャとマシンで実行できる汎用コードである必要があります。
- プラットフォーム クラス ドライバ:プラットフォーム クラス ドライバには、そのプラットフォーム向けのオーディオ DMA エンジン ドライバ、デジタル オーディオ インターフェイス (DAI) ドライバ (I2S、AC97、PCM など)、およびオーディオ DSP ドライバが含まれます。
- マシン クラス ドライバ:マシン ドライバ クラスは、他のコンポーネント ドライバを記述して結び付け、ALSA の「サウンド カード デバイス」を構成するための接着剤として機能します。再生開始時にアンプをオンにするなど、マシン固有の制御やマシン レベルのオーディオ イベントを処理します。
ASoCに関するより詳細な情報は、Linux OS ソース ツリー内の Linux カーネル ドキュメント linux/Documentation/sound/alsa/soc および www.alsa-project.org/main/index.php/ASoC で確認できます。