From 1c46115433824ee852e3566caf59187e98eb40b9 Mon Sep 17 00:00:00 2001 From: Julian Bouzas Date: Wed, 31 Jan 2024 13:22:32 -0500 Subject: [PATCH] docs: add linking documentation --- docs/rst/policies/linking.rst | 137 +++++++++++++++++++++++++++++++++- 1 file changed, 136 insertions(+), 1 deletion(-) diff --git a/docs/rst/policies/linking.rst b/docs/rst/policies/linking.rst index 15ffbcfa..aedfeaba 100644 --- a/docs/rst/policies/linking.rst +++ b/docs/rst/policies/linking.rst @@ -1,5 +1,140 @@ .. _policies_linking: Linking Policy --------------- +============== +Introduction +------------ + +The linking policy in WirePlumber is the logic charged to link a PipeWire stream +node with a PipeWire device node (most cases), or with another PipeWire stream +node (monitoring applications). + +PipeWire stream nodes always have one of the following media classes: + +- Stream/Output/Audio: For audio playback applications (Eg pw-play). +- Stream/Input/Audio: For audio capture applications (Eg pw-record). +- Stream/Input/Video: For video capture applications (Eg cheese). + +And Pipewire device nodes always have one of the following media classes: + +- Audio/Sink: For audio playback devices (Eg Speakers). +- Audio/Source: For audio capture devices (Eg Microphones). +- Video/Source: For video capture devices (Eg Cameras). + +By default, since in most cases we want to link a stream node with a device +node, the linking policy logic when linking 2 nodes always follows the following +assignments: + +.. graphviz:: + + digraph nodes { + rankdir=LR; + APS [shape=box label=