screencastService: Add gstreamer pipeline for h264 low-power hw encode

VA-API low-power encoder profiles (such as vah264lpenc) reduce power consumption by relying entirely on fixed-function hardware blocks.
Use vah264lpenc over vah264enc by default, in order to save on energy and 3D engine capacity.

Signed-off-by: José Relvas <josemonsantorelvas@gmail.com>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3416>
This commit is contained in:
José Relvas 2024-07-11 20:31:11 +01:00 committed by Marge Bot
parent a65e0722f1
commit 44beaa0e1d

View File

@ -31,6 +31,17 @@ const DEFAULT_DRAW_CURSOR = true;
const PIPELINE_BLOCKLIST_FILENAME = 'gnome-shell-screencast-pipeline-blocklist'; const PIPELINE_BLOCKLIST_FILENAME = 'gnome-shell-screencast-pipeline-blocklist';
const PIPELINES = [ const PIPELINES = [
{
id: 'hwenc-dmabuf-h264-vaapi-lp',
fileExtension: 'mp4',
pipelineString:
'capsfilter caps=video/x-raw(memory:DMABuf),format=DMA_DRM,max-framerate=%F/1 ! \
vapostproc ! \
vah264lpenc ! \
queue ! \
h264parse ! \
mp4mux fragment-duration=500 fragment-mode=first-moov-then-finalise',
},
{ {
id: 'hwenc-dmabuf-h264-vaapi', id: 'hwenc-dmabuf-h264-vaapi',
fileExtension: 'mp4', fileExtension: 'mp4',