PipeWire 上音频设备组成的单元的层次结构是怎样的?

PipeWire 上音频设备组成的单元的层次结构是怎样的?

我试图了解 PipeWire 的音频设备层次结构。浏览输出pw-dump给了我一个好主意,但我仍然发现很难掌握整个情况。

我的理解是,结构可能与此接近:

Devices: [{
    Profiles: [{
        Nodes: [{ // Sinks and Sources
            Formats: [...]
            Ports: [...] // in or out
            Routes: [...]
        }],
    }]
}]

所以,最大的单位是设备。 (例如声卡)

  • 一台设备可以有一个或多个配置文件。 (例如模拟立体声双工、模拟立体声输入、模拟立体声输出、专业音频……)
    • 一个配置文件可以有一个或多个节点。
      • 节点可以是接收器(输出)或源(输入)。
      • 一个节点可以有一种或多种格式(例如 s32le @ 48kHz)。
      • 一个节点可以有一个或多个路由(例如扬声器/耳机或内部麦克风/耳机麦克风)
      • 一个节点可以有一个或多个端口
        • 端口可以​​是输入端口(例如麦克风右侧)或输出端口(扬声器左侧)

但这并不完全正确。当我查看设备时,似乎路由是在设备级别定义的,这表明路由与配置文件无关并且与节点无关。但随后它会变得更加复杂,因为每条路线都有一系列配置文件。然后还有一系列路由级别的设备。

是否有一个图表可以更好地解释结构?我发现很难对输出进行逆向工程pw-dump以获得正确的结果。

相关内容