mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-03-25 09:05:57 -04:00
protocol: document to client-node communication flow a little
This commit is contained in:
parent
df1c36aec2
commit
22951a9b87
1 changed files with 71 additions and 0 deletions
|
|
@ -1091,6 +1091,77 @@ It creates a server Node that can be controlled from a client. Processing will h
|
||||||
in the client. It is used by pw-stream and pw-filter to implement the PipeWire media
|
in the client. It is used by pw-stream and pw-filter to implement the PipeWire media
|
||||||
processing nodes.
|
processing nodes.
|
||||||
|
|
||||||
|
To create a client-node, one must first connect to the server and then make a
|
||||||
|
ClientNode proxy and do Core::CreateObject with the client-node factory.
|
||||||
|
This will create a server side ClientNode resource that can be controlled with the
|
||||||
|
proxy.
|
||||||
|
|
||||||
|
After the proxy is set up, the conversation between client and server goes as
|
||||||
|
follows:
|
||||||
|
|
||||||
|
```
|
||||||
|
client server
|
||||||
|
| |
|
||||||
|
|---------------------------------------->|
|
||||||
|
| ClientNode::Update | send initial node configuration
|
||||||
|
| |
|
||||||
|
|<----------------------------------------|
|
||||||
|
| Core::AddMem | memory for node activation
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::SetActivation | the node activation
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::Transport | the node transport
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::SetIO | clock IO
|
||||||
|
| |
|
||||||
|
|---------------------------------------->|
|
||||||
|
| ClientNode::SetActive(true) | set the node active
|
||||||
|
| |
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::SetParam | optional volume restore/settings
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::SetParam | optional PortConfig if needed
|
||||||
|
|---------------------------------------->|
|
||||||
|
| ClientNode::Update | Upload changed params
|
||||||
|
| |
|
||||||
|
|---------------------------------------->|
|
||||||
|
| ClientNode::PortUpdate | config for each port
|
||||||
|
. .
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::PortSetMixInfo | mixer inputs for each linked port
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::PortSetParam | Latency of the ports
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::SetActivation | activation of port peers
|
||||||
|
|---------------------------------------->|
|
||||||
|
| ClientNode::PortUpdate | Ack port updates
|
||||||
|
. .
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::PortSetParam | formats of the ports
|
||||||
|
|---------------------------------------->|
|
||||||
|
| ClientNode::PortUpdate | Ack port format update
|
||||||
|
. .
|
||||||
|
|<----------------------------------------|
|
||||||
|
| Core::AddMem | memory for the port buffers
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::PortUseBuffers | buffers for a port
|
||||||
|
. .
|
||||||
|
|<----------------------------------------|
|
||||||
|
| Core::AddMem | memory for driver activation
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::SetActivation | the driver activation
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::SetIO | driver Position IO
|
||||||
|
|<----------------------------------------|
|
||||||
|
| Core::AddMem | memory for port IO
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::PortSetIO | buffers/async-buffers port IO
|
||||||
|
. .
|
||||||
|
|<----------------------------------------|
|
||||||
|
| ClientNode::Command | Start command
|
||||||
|
. .
|
||||||
|
```
|
||||||
|
|
||||||
## ClientNode methods
|
## ClientNode methods
|
||||||
|
|
||||||
### ClientNode::GetNode (Opcode 1)
|
### ClientNode::GetNode (Opcode 1)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue