PipeWire의 오디오 장치 계층 구조를 이해하려고 합니다. 출력물을 살펴보면 pw-dump
좋은 아이디어를 얻을 수 있지만 여전히 전체 상황을 파악하기는 어렵습니다.
내 이해에 따르면 구조는 아마도 다음과 비슷할 것입니다.
Devices: [{
Profiles: [{
Nodes: [{ // Sinks and Sources
Formats: [...]
Ports: [...] // in or out
Routes: [...]
}],
}]
}]
따라서 가장 큰 단위는 장치입니다. (예: 사운드 카드)
- 장치에는 하나 이상의 프로필이 있을 수 있습니다. (예: 아날로그 스테레오 듀플렉스, 아날로그 스테레오 입력, 아날로그 스테레오 출력, 전문 오디오...)
- 구성 파일에는 하나 이상의 노드가 있을 수 있습니다.
- 노드는 싱크(출력) 또는 소스(입력)일 수 있습니다.
- 노드는 하나 이상의 형식(예: s32le @ 48kHz)을 가질 수 있습니다.
- 노드에는 하나 이상의 경로(예: 스피커/헤드폰 또는 내부 마이크/헤드셋 마이크)가 있을 수 있습니다.
- 노드는 하나 이상의 포트를 가질 수 있습니다
- 포트는 입력 포트(예: 오른쪽 마이크) 또는 출력 포트(왼쪽 스피커)일 수 있습니다.
- 구성 파일에는 하나 이상의 노드가 있을 수 있습니다.
그러나 그것은 전적으로 사실이 아닙니다. 장치를 살펴보면 경로가 장치 수준에서 정의된 것으로 보이며 이는 경로가 프로필에 구애받지 않고 노드에 구애받지 않음을 나타냅니다. 그러나 각 경로에는 일련의 프로필이 있기 때문에 더 복잡해집니다. 그런 다음 일련의 라우팅 수준 장치가 있습니다.
구조를 더 잘 설명하는 다이어그램이 있나요? pw-dump
올바른 결과를 얻기 위해 출력을 리버스 엔지니어링하는 것이 어렵다는 것을 알고 있습니다 .