screencastService: Add gstreamer pipeline for h264 encoding on hardware
Try h264 on intel and AMD hardware using VA-API, using vapostproc to do the color conversion using specialized hardware. We're not adding a vaapi pipeline using the color conversion GL shader here, as vapostproc color conversion should be better suited for anything needed by vaapi based encoders/decoders. A capsfilter is used to enforce the use of DMAbuf (memory:DMABuf) with the new explicit modifier API (format=DMA_DRM). Also, we're using the new va* gst elements instead of the vaapi* ones here, as the vaapi* elements are deprecated, while the va* elements are actively maintained. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2080>
This commit is contained in:
parent
90f69dcd25
commit
ac2ed42de5
@ -31,6 +31,17 @@ const DEFAULT_DRAW_CURSOR = true;
|
||||
const PIPELINE_BLOCKLIST_FILENAME = 'gnome-shell-screencast-pipeline-blocklist';
|
||||
|
||||
const PIPELINES = [
|
||||
{
|
||||
id: 'hwenc-dmabuf-h264-vaapi',
|
||||
fileExtension: 'mp4',
|
||||
pipelineString:
|
||||
'capsfilter caps=video/x-raw(memory:DMABuf),format=DMA_DRM,max-framerate=%F/1 ! \
|
||||
vapostproc ! \
|
||||
vah264enc ! \
|
||||
queue ! \
|
||||
h264parse ! \
|
||||
mp4mux fragment-duration=500 fragment-mode=first-moov-then-finalise',
|
||||
},
|
||||
{
|
||||
id: 'swenc-dmabuf-h264-openh264',
|
||||
fileExtension: 'mp4',
|
||||
|
Loading…
x
Reference in New Issue
Block a user