bluerobotics / cockpit

An intuitive and customizable cross-platform ground control station for remote vehicles of all types.
https://docs.bluerobotics.com/ardusub-zola/software/control-station/Cockpit-1.0/overview/
Other
43 stars 18 forks source link

Add RTP receiver jitter buffer target configuration #941

Closed joaoantoniocardoso closed 2 months ago

joaoantoniocardoso commented 2 months ago

This patch allows us to control the RTP receiver target jitter buffer.

The default value is set to zero, which gives us the minimum possible latency for the stream.

From my tests, setting it to zero improved latency compared to the browser's default (unbeknownst to me).

image

joaoantoniocardoso commented 2 months ago

Here is a video showing it working on Cockpit. Unfortunately, the changes are not being applied reactively (help me?), only after a refresh:

https://github.com/bluerobotics/cockpit/assets/5920286/4c8e8438-d638-4ae1-9b17-4d783b30dbe8

joaoantoniocardoso commented 2 months ago

Nice! What are the practical implications of this change? I see that in "auto" the latency seems lower than in 0, right? Do we have a lower chance of stuttering with 0?

About the reactivity, from what I'm looking it won't work if we don't change a lot of other references on the composable itself, so I would suggest leaving at it is for now, or adding a "save" button which reloads the application after the change of this value.

Oh, on the contrary, the 0 has lower latency than null (auto). The video compares the latencies with a GStreamer UDP, and because it is not running concurrently, it might not seem much different from null to 0, but I have tested it on the MCM development interface.