diff options
-rw-r--r-- | sys/v4l2/gstv4l2bufferpool.c | 2 | ||||
-rw-r--r-- | sys/v4l2/gstv4l2object.c | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c index 2019072e7..2ea9eb58c 100644 --- a/sys/v4l2/gstv4l2bufferpool.c +++ b/sys/v4l2/gstv4l2bufferpool.c @@ -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, ¶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 d70b53d6f..974624335 100644 --- a/sys/v4l2/gstv4l2object.c +++ b/sys/v4l2/gstv4l2object.c @@ -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; |