I read that the latency in a pipeline is configured via a query and that the latency value is set as a “max”:
我读到管道中的延迟是通过查询配置的,并且延迟值被设置为“max”:
Before the pipeline goes to the PLAYING state, it will, in addition to selecting a clock and calculating a base-time, calculate the latency in the pipeline. It does this by doing a LATENCY query on all the sinks in the pipeline. The pipeline then selects the maximum latency in the pipeline and configures this with a LATENCY event.
All sink elements will delay playback by the value in the LATENCY
event. Since all sinks delay with the same amount of time, they will
be relatively in sync.
https://gstreamer.freedesktop.org/documentation/application-development/advanced/clocks.html?gi-language=c#latency-compensation
Https://gstreamer.freedesktop.org/documentation/application-development/advanced/clocks.html?gi-language=c#latency-compensation
If a pipeline has two jitter buffer elements with respective latency values of 50 and 100:
如果流水线具有两个抖动缓冲器元件,其各自的延迟值为50和100:
RTPJitterBuffer RTPJitterBuffer
latency=50 latency=100
|-------------| |-------------| |-------------|
| | | | | |
| src| -> |sink src| -> |sink src| ->
| | | | | |
|-------------| |-------------| |--------------
The pipeline will query 50 and 100.
管道将查询50和100。
Is the latency set on the sink's 100 (max) or 150 (sum)?
接收器的延迟是设置在100(最大)还是150(总和)上?
If my understanding of timestamps is right, it has to be a sum as some sinks can see timestamps delayed by 150 as a worse case. However, I suppose sink's can also only query upstream and set the sum value for themselves.
如果我对时间戳的理解是正确的,那么它必须是一个总和,因为一些接收器可能会将时间戳延迟150视为更糟糕的情况。然而,我认为接收器也只能查询上游并为自己设置总和值。
Any insights here would be solid : )
这里的任何见解都将是坚实的:)
更多回答
我是一名优秀的程序员,十分优秀!