Open
Description
In low-bandwidth environments (under 2 mbps), while still acceptable, there is a cross in terms of performance and quality (starting from 1920x1080 FHD) compared to VNC.
This is because:
- We do not use XDamage with
ximagesrc
, which can differentiate between updated parts of the screen and those that are not updated (but leads to issues in higher bandwidth videos and thus disabled by default). - We do not adapt encoder settings in low bandwidth environments to prefer not blurring while sacrificing performance with fullscreen refreshes (which leads back to number one).
- MJPEG, which is suited for partial screen refresh and is the core codec for various VNC implementations, is not applicable with WebRTC MediaStream (but may be applicable with WebRTC DataChannels, WebTransport or WebSocket, combined with
nvjpegenc
andvajpegenc
hardware encoders). Most importantly, keyframes (also called IDR frames in H.264 and H.265), which are required to reestablish the video when the stream is down, lead to congestion because of their notably large size (often multitudes) compared to normal P-frames.No longer default.
(WebP is essentially VP8 and VP9, so it technically is already incorporated, but not optimized enough for the above scenarios.)
This should technically be possible within GStreamer, provided that various parameters are explored.