All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/7] Add VNC Open H.264 Encoding
@ 2025-04-30  7:25 Dietmar Maurer
  2025-04-30  7:25 ` [PATCH v5 1/7] new configure option to enable gstreamer Dietmar Maurer
                   ` (6 more replies)
  0 siblings, 7 replies; 12+ messages in thread
From: Dietmar Maurer @ 2025-04-30  7:25 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel; +Cc: Dietmar Maurer

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

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

Changes in V5:

- Do not allow --gst-* arguments on the command line (initialize gst
  in vnc_init_func)
- fix broken build by moving cleanup code to vl.c

Changes in v4:

- style fixes and cleanup (as suggested by Marc and Daniel)
- use SPDX-License-Identifier for new file
- protect everything with #ifdef CONFIG_GSTREAMER
- simplify vnc_refresh as suggested by Daniel (avoid populating
  the rectangle array, do not use vs after it might be freed)
- make "h264" a boolean option
- add new "h264-encoders" options (colon separated)
- add a cleanup path for vnc instead of using shutdown notifiers.


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 (7):
  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 options to configure h264 at server side
  h264: add hardware encoders
  h264: stop gstreamer pipeline before destroying, cleanup on exit

 include/system/system.h       |   1 +
 include/ui/console.h          |   1 +
 meson.build                   |  10 +
 meson_options.txt             |   2 +
 scripts/meson-buildoptions.sh |   3 +
 system/runstate.c             |   2 +
 system/vl.c                   |   7 +
 ui/meson.build                |   1 +
 ui/vnc-enc-h264.c             | 357 ++++++++++++++++++++++++++++++++++
 ui/vnc-jobs.c                 |  53 +++--
 ui/vnc.c                      |  84 +++++++-
 ui/vnc.h                      |  29 +++
 12 files changed, 532 insertions(+), 18 deletions(-)
 create mode 100644 ui/vnc-enc-h264.c

-- 
2.39.5



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

end of thread, other threads:[~2025-05-13 14:35 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-30  7:25 [PATCH v5 0/7] Add VNC Open H.264 Encoding Dietmar Maurer
2025-04-30  7:25 ` [PATCH v5 1/7] new configure option to enable gstreamer Dietmar Maurer
2025-04-30  7:38   ` Thomas Huth
2025-05-13 14:27   ` Daniel P. Berrangé
2025-04-30  7:25 ` [PATCH v5 2/7] add vnc h264 encoder Dietmar Maurer
2025-05-13 14:31   ` Daniel P. Berrangé
2025-04-30  7:25 ` [PATCH v5 3/7] vnc: h264: send additional frames after the display is clean Dietmar Maurer
2025-04-30  7:25 ` [PATCH v5 4/7] h264: search for available h264 encoder Dietmar Maurer
2025-04-30  7:25 ` [PATCH v5 5/7] h264: new vnc options to configure h264 at server side Dietmar Maurer
2025-04-30  7:25 ` [PATCH v5 6/7] h264: add hardware encoders Dietmar Maurer
2025-04-30  7:25 ` [PATCH v5 7/7] h264: stop gstreamer pipeline before destroying, cleanup on exit Dietmar Maurer
2025-05-13 14:34   ` Daniel P. Berrangé

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.