PipeWireのオーディオデバイス階層を理解しようとしています。出力を見てみるとpw-dump
良いアイデアが得られますが、まだ全体的な状況を把握するのは難しいです。
私の理解によると、構造はおそらく次のようになります。
Devices: [{
Profiles: [{
Nodes: [{ // Sinks and Sources
Formats: [...]
Ports: [...] // in or out
Routes: [...]
}],
}]
}]
したがって、最大の単位はデバイスです。 (例:サウンドカード)
- デバイスには1つ以上のプロファイルがあります。 (例:アナログステレオデュプレックス、アナログステレオ入力、アナログステレオ出力、プロフェッショナルオーディオ...)
- 構成ファイルには1つ以上のノードがあります。
- ノードはシンク(出力)またはソース(入力)です。
- ノードは、1つ以上の形式(s32le @ 48kHzなど)を持つことができます。
- ノードには、1つ以上のパス(スピーカー/ヘッドフォン、内部マイク/ヘッドセットマイクなど)があります。
- ノードは1つ以上のポートを持つことができます
- ポートは、入力ポート(例:右マイク)または出力ポート(左スピーカー)です。
- 構成ファイルには1つ以上のノードがあります。
しかし、それは完全に真実ではありません。デバイスを見ると、パスはデバイスレベルで定義されているように見えます。これは、パスがプロファイルに拘束されず、ノードに拘束されないことを示します。ただし、各パスには一連のプロファイルがあるため、より複雑になります。その後、一連のルーティングレベルのデバイスがあります。
構造をよりよく説明する図はありますか?pw-dump
正しい結果を得るために出力をリバースエンジニアリングするのは難しいことがわかります。