screencastService: Add dmabuf/GL pipeline
This pipeline imports dmabufs and does format conversion using GL. The `video/x-raw(memory:DMABuf)` filter ensures format negotiation between `pipewiresrc` and Mutter will only succeed if Mutter advertises dmabuf support as well, falling back to the next pipeline otherwise. Using this pipeline frees Mutter from downloading buffer content on the main thread which can have a big impact on compositor performance. Doing format conversion on the GPU should further improve the overall performance on most hardware. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2597>
This commit is contained in:
parent
fd730a4db7
commit
b916ced2e6
@ -29,6 +29,15 @@ const DEFAULT_FRAMERATE = 30;
|
|||||||
const DEFAULT_DRAW_CURSOR = true;
|
const DEFAULT_DRAW_CURSOR = true;
|
||||||
|
|
||||||
const PIPELINES = [
|
const PIPELINES = [
|
||||||
|
{
|
||||||
|
pipelineString:
|
||||||
|
'capsfilter caps=video/x-raw(memory:DMABuf),max-framerate=%F/1 ! \
|
||||||
|
glupload ! glcolorconvert ! gldownload ! \
|
||||||
|
queue ! \
|
||||||
|
vp8enc cpu-used=16 max-quantizer=17 deadline=1 keyframe-mode=disabled threads=%T static-threshold=1000 buffer-size=20000 ! \
|
||||||
|
queue ! \
|
||||||
|
webmmux',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
pipelineString:
|
pipelineString:
|
||||||
'capsfilter caps=video/x-raw,max-framerate=%F/1 ! \
|
'capsfilter caps=video/x-raw,max-framerate=%F/1 ! \
|
||||||
|
Loading…
Reference in New Issue
Block a user