v4l2object: allow to automatic selection of dmabuf
If the v4l2 queue support dmabuf select this buffer pool mode
and update the query with allocator.
This patch only concern exporting dmabuf and not importing dmabuf
fd from downstream element.
https://bugzilla.gnome.org/show_bug.cgi?id=699382
diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c
index 2019072..2ea9eb5 100644
--- a/sys/v4l2/gstv4l2bufferpool.c
+++ b/sys/v4l2/gstv4l2bufferpool.c
@@ -517,6 +517,8 @@
gst_buffer_pool_config_set_params (config, caps, size, min_buffers,
max_buffers);
+ gst_buffer_pool_config_set_allocator (config, pool->allocator, ¶ms);
+
/* keep a GstVideoInfo with defaults for the when we need to copy */
gst_video_info_from_caps (&pool->caps_info, caps);
diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c
index d70b53d..9746243 100644
--- a/sys/v4l2/gstv4l2object.c
+++ b/sys/v4l2/gstv4l2object.c
@@ -2362,8 +2362,12 @@
goto method_not_supported;
if (v4l2object->vcap.capabilities & V4L2_CAP_STREAMING) {
- if (v4l2object->req_mode == GST_V4L2_IO_AUTO)
- mode = GST_V4L2_IO_MMAP;
+ if (v4l2object->req_mode == GST_V4L2_IO_AUTO) {
+ if (GST_V4L2_OBJECT_CAN_REQUEST (v4l2object, DMABUF))
+ mode = GST_V4L2_IO_DMABUF;
+ else
+ mode = GST_V4L2_IO_MMAP;
+ }
} else if (v4l2object->req_mode == GST_V4L2_IO_MMAP)
goto method_not_supported;