v4l2object: allow to automatic selection of dmabuf
authorBenjamin Gaignard <benjamin.gaignard@linaro.org>
Fri, 21 Nov 2014 15:36:15 +0000 (16:36 +0100)
committerNicolas Dufresne <nicolas.dufresne@collabora.co.uk>
Fri, 21 Nov 2014 16:29:04 +0000 (11:29 -0500)
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

sys/v4l2/gstv4l2bufferpool.c
sys/v4l2/gstv4l2object.c

index 2019072..2ea9eb5 100644 (file)
@@ -517,6 +517,8 @@ gst_v4l2_buffer_pool_set_config (GstBufferPool * bpool, GstStructure * config)
     gst_buffer_pool_config_set_params (config, caps, size, min_buffers,
         max_buffers);
 
+  gst_buffer_pool_config_set_allocator (config, pool->allocator, &params);
+
   /* keep a GstVideoInfo with defaults for the when we need to copy */
   gst_video_info_from_caps (&pool->caps_info, caps);
 
index d70b53d..9746243 100644 (file)
@@ -2362,8 +2362,12 @@ gst_v4l2_object_setup_pool (GstV4l2Object * v4l2object, GstCaps * caps)
     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;