Use hardware accelerated JPEG decode when available (VA-API)
EDIT
As of Gstreamer 1.24.1, all what's needed for this is launching the app with GST_PLUGIN_FEATURE_RANK=vajpegdec:MAX
. Gstreamer will do so eventually, but we could consider doing so earlier already, so leaving this open for now.
Most laptops have media engines capable of decoding JPEG. This is aimed at MJPEG streams, which are still fairly common with many kinds of webcams. Gstreamer exposes this as vajpegdec (part of the va plugin).
Here's a power consumption comparisons between two gstreamer pipelines. One using vajpegdec
, the other using jpegdec
gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! image/jpeg,width=2560,height=1440 ! vajpegdec ! vacompositor ! waylandsink
gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! image/jpeg,width=2560,height=1440 ! jpegdec ! vacompositor ! waylandsink
I can measure a consistent 1W difference.
With the use of hardware planes, no 3D engine usage is required, further reducing power consumption.