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=