[PATCH 0/4] spice/gstreamer: Use h/w based encoders/decoders with Intel GPUs if possible (v2)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch series includes a patch for Spice (server) to
automatically select h/w based encoder elements and another one
for Spice-gtk (client) to automatically select h/w based decoder
elements with Intel GPUs when these two conditions are met:
- An Intel GPU is available and is active (driver loaded)
- The relevant h/w based encoder/decoder elements are registered
  (i.e, Intel Media SDK Gstreamer plugin (libgstmsdk.so) and associated
  libraries (such as va or vaapi) are properly installed).

When tested on a Gen 12 Intel GPU (codenamed AlderLake/TigerLake)
with Qemu/Spice + h/w encoder elements, we noticed that the time
to encode a 1920x1080 BGRx frame was reduced to ~2-3 ms compared
to ~12-16 ms with a s/w encoder (x264enc). Other advantages
include reduced overall CPU utilization.

However, once these patches are applied, the only way to force
Spice/Spice-gtk to fallback to s/w based encoder/decoder is to
remove the msdk and or vaapi plugins from GST_PLUGIN_PATH. This
might be desirable for debugging purposes or for other reasons.

v2:
- Added several bugfix patches to this series
- Moved udev helper to determine GPU Vendor to spice-common repo
- Refactored the code to prioritize plugins in the order msdk > va > vaapi

Cc: Frediano Ziglio <freddy77@xxxxxxxxx>
Cc: Gerd Hoffmann <kraxel@xxxxxxxxxx>
Cc: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx>
Cc: Dongwon Kim <dongwon.kim@xxxxxxxxx>
Cc: Jin Chung Teng <jin.chung.teng@xxxxxxxxx>
Cc: Hazwan Arif Mazlan <hazwan.arif.mazlan@xxxxxxxxx>

Vivek Kasireddy (4):
  channel-display-gst: Prefer playbin3 to playbin
  channel-display-gst: Add "byte-stream" as the stream format for h264
  channel-display-gst: Don't unref appsink and pipeline objects
  channel-display-gst: Use h/w based decoders with Intel GPUs if
    possible (v2)

 src/channel-display-gst.c  | 232 ++++++++++++++++++++++++++++++++-----
 src/channel-display-priv.h |   4 +-
 2 files changed, 205 insertions(+), 31 deletions(-)

-- 
2.39.2




[Index of Archives]     [Linux Virtualization]     [Linux Virtualization]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]