我试图了解 PipeWire 的音频设备层次结构。浏览输出pw-dump
给了我一个好主意,但我仍然发现很难掌握整个情况。
我的理解是,结构可能与此接近:
Devices: [{
Profiles: [{
Nodes: [{ // Sinks and Sources
Formats: [...]
Ports: [...] // in or out
Routes: [...]
}],
}]
}]
所以,最大的单位是设备。 (例如声卡)
- 一台设备可以有一个或多个配置文件。 (例如模拟立体声双工、模拟立体声输入、模拟立体声输出、专业音频……)
- 一个配置文件可以有一个或多个节点。
- 节点可以是接收器(输出)或源(输入)。
- 一个节点可以有一种或多种格式(例如 s32le @ 48kHz)。
- 一个节点可以有一个或多个路由(例如扬声器/耳机或内部麦克风/耳机麦克风)
- 一个节点可以有一个或多个端口
- 端口可以是输入端口(例如麦克风右侧)或输出端口(扬声器左侧)
- 一个配置文件可以有一个或多个节点。
但这并不完全正确。当我查看设备时,似乎路由是在设备级别定义的,这表明路由与配置文件无关并且与节点无关。但随后它会变得更加复杂,因为每条路线都有一系列配置文件。然后还有一系列路由级别的设备。
是否有一个图表可以更好地解释结构?我发现很难对输出进行逆向工程pw-dump
以获得正确的结果。