waylandsink: Prefer DMABuf over system memory

Swap the template and caps query around to that the sink can describe a
preference for DMAbuf over system memory.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8404>
This commit is contained in:
Nicolas Dufresne 2025-02-03 14:09:16 +01:00
parent e953693aff
commit 7edb6a5634
3 changed files with 18 additions and 18 deletions

View File

@ -39699,7 +39699,7 @@
"long-name": "Gtk Wayland Video Sink",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n format: { AYUV, RGBA, ARGB, BGRA, ABGR, P010_10LE, NV12_10LE40, v308, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, I420, YV12, NV12, NV21, Y41B, YUV9, YVU9, BGR16, RGB16 }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:DMABuf):\n format: DMA_DRM\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:DMABuf):\n format: DMA_DRM\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { AYUV, RGBA, ARGB, BGRA, ABGR, P010_10LE, NV12_10LE40, v308, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, I420, YV12, NV12, NV21, Y41B, YUV9, YVU9, BGR16, RGB16 }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "always"
}
@ -253228,7 +253228,7 @@
"long-name": "wayland video sink",
"pad-templates": {
"sink": {
"caps": "video/x-raw:\n format: { AYUV, RGBA, ARGB, BGRA, ABGR, P010_10LE, NV12_10LE40, v308, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, I420, YV12, NV12, NV21, Y41B, YUV9, YVU9, BGR16, RGB16 }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n\nvideo/x-raw(memory:DMABuf):\n format: DMA_DRM\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"caps": "video/x-raw(memory:DMABuf):\n format: DMA_DRM\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\nvideo/x-raw:\n format: { AYUV, RGBA, ARGB, BGRA, ABGR, P010_10LE, NV12_10LE40, v308, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, I420, YV12, NV12, NV21, Y41B, YUV9, YVU9, BGR16, RGB16 }\n width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
"direction": "sink",
"presence": "always"
}

View File

@ -45,8 +45,8 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (GST_WL_VIDEO_FORMATS) ";"
GST_VIDEO_DMA_DRM_CAPS_MAKE)
GST_STATIC_CAPS (GST_VIDEO_DMA_DRM_CAPS_MAKE ";"
GST_VIDEO_CAPS_MAKE (GST_WL_VIDEO_FORMATS))
);
static void gst_gtk_wayland_sink_get_property (GObject * object,
@ -784,16 +784,16 @@ gst_gtk_wayland_sink_get_caps (GstBaseSink * bsink, GstCaps * filter)
g_value_init (&format_list, GST_TYPE_LIST);
/* Add corresponding shm formats */
gst_wl_display_fill_shm_format_list (priv->display, &format_list);
gst_structure_take_value (gst_caps_get_structure (caps, 0), "format",
/* Add corresponding dmabuf formats */
gst_wl_display_fill_dmabuf_format_list (priv->display, &format_list);
gst_structure_take_value (gst_caps_get_structure (caps, 0), "drm-format",
&format_list);
g_value_init (&format_list, GST_TYPE_LIST);
/* Add corresponding dmabuf formats */
gst_wl_display_fill_dmabuf_format_list (priv->display, &format_list);
gst_structure_take_value (gst_caps_get_structure (caps, 1), "drm-format",
/* Add corresponding shm formats */
gst_wl_display_fill_shm_format_list (priv->display, &format_list);
gst_structure_take_value (gst_caps_get_structure (caps, 1), "format",
&format_list);
GST_DEBUG_OBJECT (self, "display caps: %" GST_PTR_FORMAT, caps);

View File

@ -72,8 +72,8 @@ GST_DEBUG_CATEGORY (gstwayland_debug);
static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (GST_WL_VIDEO_FORMATS) ";"
GST_VIDEO_DMA_DRM_CAPS_MAKE)
GST_STATIC_CAPS (GST_VIDEO_DMA_DRM_CAPS_MAKE ";"
GST_VIDEO_CAPS_MAKE (GST_WL_VIDEO_FORMATS))
);
static void gst_wayland_sink_get_property (GObject * object,
@ -569,16 +569,16 @@ gst_wayland_sink_get_caps (GstBaseSink * bsink, GstCaps * filter)
g_value_init (&format_list, GST_TYPE_LIST);
/* Add corresponding shm formats */
gst_wl_display_fill_shm_format_list (self->display, &format_list);
gst_structure_take_value (gst_caps_get_structure (caps, 0), "format",
/* Add corresponding dmabuf formats */
gst_wl_display_fill_dmabuf_format_list (self->display, &format_list);
gst_structure_take_value (gst_caps_get_structure (caps, 0), "drm-format",
&format_list);
g_value_init (&format_list, GST_TYPE_LIST);
/* Add corresponding dmabuf formats */
gst_wl_display_fill_dmabuf_format_list (self->display, &format_list);
gst_structure_take_value (gst_caps_get_structure (caps, 1), "drm-format",
/* Add corresponding shm formats */
gst_wl_display_fill_shm_format_list (self->display, &format_list);
gst_structure_take_value (gst_caps_get_structure (caps, 1), "format",
&format_list);
GST_DEBUG_OBJECT (self, "display caps: %" GST_PTR_FORMAT, caps);