mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
doc: mention async link latency in latency doc
This commit is contained in:
parent
6305eada80
commit
e6bcd7b611
1 changed files with 39 additions and 0 deletions
|
|
@ -100,6 +100,20 @@ When the ProcessLatency changes, the procedure to notify of latency changes is:
|
||||||
PipeWire will automatically aggregate latency from links and propagate the new latencies
|
PipeWire will automatically aggregate latency from links and propagate the new latencies
|
||||||
down and upstream.
|
down and upstream.
|
||||||
|
|
||||||
|
# Async nodes
|
||||||
|
|
||||||
|
When a node has the node.async property set to true, it will be considered an async
|
||||||
|
node and will be scheduled differently, see scheduling.dox.
|
||||||
|
|
||||||
|
A link between a port of an async node and another port (async or not) is called an
|
||||||
|
async link and will have the link.async=true property.
|
||||||
|
|
||||||
|
An async link will add 1 quantum of latency between the nodes it links. A special
|
||||||
|
exception is made for the output ports of the driver node, which do not add latency.
|
||||||
|
|
||||||
|
The Latency param will be updated with 1 extra quantum when they travel over an async
|
||||||
|
link.
|
||||||
|
|
||||||
# Examples
|
# Examples
|
||||||
|
|
||||||
## A source node with a given ProcessLatency
|
## A source node with a given ProcessLatency
|
||||||
|
|
@ -240,4 +254,29 @@ We also see that node.FL has different min/max-rate input latencies. This inform
|
||||||
used to insert a delay node to align the latencies again. For example, if we delay the signal
|
used to insert a delay node to align the latencies again. For example, if we delay the signal
|
||||||
between node.FL and FL.sink with 1536 samples, the latencies will be aligned again.
|
between node.FL and FL.sink with 1536 samples, the latencies will be aligned again.
|
||||||
|
|
||||||
|
## An async output stream and sink node linked together
|
||||||
|
|
||||||
|
The sink has 1 quantum of Input latency. The stream has no output latency. When the Input latency
|
||||||
|
travels over the async link 1 quantum of latency is added and the Input latency on the stream is
|
||||||
|
now 2 quanta. Similar for the stream Output latency that receives an additional 1 quantum of
|
||||||
|
latency when it arrives in the sink over the async link.
|
||||||
|
|
||||||
|
```
|
||||||
|
Latency: [{ "direction": "output", "min-quantum": 0, "max-quantum": 0 } ]
|
||||||
|
Latency: [{ "direction": "input", "min-quantum": 2, "max-quantum": 2 } ]
|
||||||
|
^
|
||||||
|
| Latency: [{ "direction": "output", "min-quantum": 1, "max-quantum": 1 } ]
|
||||||
|
| Latency: [{ "direction": "input", "min-quantum": 1, "max-quantum": 1 } ]
|
||||||
|
| |
|
||||||
|
+----------+v v+--------+
|
||||||
|
| async FL ------------ FL |
|
||||||
|
| stream + | sink |
|
||||||
|
| FR --+ FR |
|
||||||
|
+----------+ | +--------+
|
||||||
|
v
|
||||||
|
Latency: [{ "direction": "output", "min-quantum": 0, "max-quantum": 0 } ]
|
||||||
|
Latency: [{ "direction": "input", "min-quantum": 0, "max-quantum": 0 } ]
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue