qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/9] Add VNC Open H.264 Encoding
@ 2025-04-18 11:29 Dietmar Maurer
  2025-04-18 11:29 ` [PATCH v3 1/9] new configure option to enable gstreamer Dietmar Maurer
                   ` (8 more replies)
  0 siblings, 9 replies; 47+ messages in thread
From: Dietmar Maurer @ 2025-04-18 11:29 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel; +Cc: Dietmar Maurer

As defined by:

https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#open-h-264-encoding

The noVNC HTML application recently added support for this encoding. There is
also an open pull request to add audio support to noVNC:

https://github.com/novnc/noVNC/pull/1952

With that in place, the web based VNC console is good enough to display
a VM showing a video with reasonable bandwidth.

Possible improvements:

- Dynamic switching to/from H264 mode at high change rates
- do not compute all rects in vnc_update_client to reduce CPU load

We may also extend the RFB Audio protocol with "opus" encoding, because uncompressed
audio need too much bandwidth.

Changes in v3:

- add license header
- sqash patch to remove libavcodec prefix
- use gst_clear_object and goto error
- use single g_object_set
- g_autoptr/g_new0
- document vnc_h264_send_framebuffer_update returnm value
- avoid mixed declarations
- use loop to retrieve samples
- initialize gst during argument processing
- add hardware encoders


Changes in v2:

- cleanup: h264: remove wrong libavcodec_ prefix from function names
- search for available h264 encoder, and only enable h264 if a
  encoder is available
- new vnc option to configure h264 at server side


Dietmar Maurer (9):
  new configure option to enable gstreamer
  add vnc h264 encoder
  vnc: h264: send additional frames after the display is clean
  h264: search for available h264 encoder
  h264: new vnc option to configure h264 at server side
  h264: add hardware encoders
  h264: do not reduce vnc update speed while we have an active h264
    stream
  vnc: initialize gst during argument processing
  h264: register shutdown notifiers, stop pipeline in
    destroy_encoder_context

 meson.build                   |  10 +
 meson_options.txt             |   2 +
 scripts/meson-buildoptions.sh |   5 +-
 system/vl.c                   |   8 +
 ui/meson.build                |   1 +
 ui/vnc-enc-h264.c             | 401 ++++++++++++++++++++++++++++++++++
 ui/vnc-jobs.c                 |  49 +++--
 ui/vnc.c                      |  63 +++++-
 ui/vnc.h                      |  30 +++
 9 files changed, 551 insertions(+), 18 deletions(-)
 create mode 100644 ui/vnc-enc-h264.c

-- 
2.39.5



^ permalink raw reply	[flat|nested] 47+ messages in thread

end of thread, other threads:[~2025-04-25  8:02 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-18 11:29 [PATCH v3 0/9] Add VNC Open H.264 Encoding Dietmar Maurer
2025-04-18 11:29 ` [PATCH v3 1/9] new configure option to enable gstreamer Dietmar Maurer
2025-04-19  5:11   ` Marc-André Lureau
2025-04-23 12:14   ` Daniel P. Berrangé
2025-04-18 11:29 ` [PATCH v3 2/9] add vnc h264 encoder Dietmar Maurer
2025-04-19  5:24   ` Marc-André Lureau
2025-04-23 11:46     ` Dietmar Maurer
2025-04-23 11:57       ` Marc-André Lureau
2025-04-24  6:19         ` Dietmar Maurer
2025-04-24  8:32           ` Daniel P. Berrangé
2025-04-24  9:28         ` Dietmar Maurer
2025-04-24  9:34           ` Daniel P. Berrangé
2025-04-23 12:10   ` Daniel P. Berrangé
2025-04-23 12:25   ` Daniel P. Berrangé
2025-04-24  7:32     ` Dietmar Maurer
2025-04-24  8:43       ` Dietmar Maurer
2025-04-24  8:58         ` Daniel P. Berrangé
2025-04-24 10:39     ` Dietmar Maurer
2025-04-24 10:45       ` Daniel P. Berrangé
2025-04-24 11:01         ` Dietmar Maurer
2025-04-24 16:39   ` Daniel P. Berrangé
2025-04-18 11:29 ` [PATCH v3 3/9] vnc: h264: send additional frames after the display is clean Dietmar Maurer
2025-04-19  5:26   ` Marc-André Lureau
2025-04-23 12:39   ` Daniel P. Berrangé
2025-04-18 11:29 ` [PATCH v3 4/9] h264: search for available h264 encoder Dietmar Maurer
2025-04-23 12:43   ` Daniel P. Berrangé
2025-04-24 10:30   ` Daniel P. Berrangé
2025-04-18 11:29 ` [PATCH v3 5/9] h264: new vnc option to configure h264 at server side Dietmar Maurer
2025-04-21 10:06   ` Marc-André Lureau
2025-04-23 12:47   ` Daniel P. Berrangé
2025-04-25  8:02     ` Dietmar Maurer
2025-04-18 11:29 ` [PATCH v3 6/9] h264: add hardware encoders Dietmar Maurer
2025-04-23 12:49   ` Daniel P. Berrangé
2025-04-18 11:29 ` [PATCH v3 7/9] h264: do not reduce vnc update speed while we have an active h264 stream Dietmar Maurer
2025-04-23 12:50   ` Daniel P. Berrangé
2025-04-18 11:29 ` [PATCH v3 8/9] vnc: initialize gst during argument processing Dietmar Maurer
2025-04-21 10:09   ` Marc-André Lureau
2025-04-23 12:52   ` Daniel P. Berrangé
2025-04-18 11:29 ` [PATCH v3 9/9] h264: register shutdown notifiers, stop pipeline in destroy_encoder_context Dietmar Maurer
2025-04-21 10:14   ` Marc-André Lureau
2025-04-22  6:35     ` Dietmar Maurer
2025-04-22  6:39       ` Marc-André Lureau
2025-04-22  7:03         ` Dietmar Maurer
2025-04-22  7:07           ` Marc-André Lureau
2025-04-22  7:17             ` Dietmar Maurer
2025-04-23 12:58       ` Daniel P. Berrangé
2025-04-23 12:57   ` Daniel P. Berrangé

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).