From f6259e96c7f08e9e10138d089dbfa79bcc82f2e3 Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Tue, 16 Dec 2014 15:00:22 -0500 Subject: [PATCH] v4l2bufferpool: Disable create_buf with libv4l2 Libv4l2 does not work with CREATE_BUFS. Instead of failing on random error caused by libv4l2, disable CREATE_BUFS when an emulated format is detected. --- sys/v4l2/gstv4l2bufferpool.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c index 6445adb..7a6f4a9 100644 --- a/sys/v4l2/gstv4l2bufferpool.c +++ b/sys/v4l2/gstv4l2bufferpool.c @@ -484,6 +484,14 @@ gst_v4l2_buffer_pool_set_config (GstBufferPool * bpool, GstStructure * config) break; } + /* libv4l2 conversion code does not handle CREATE_BUFS, and may lead to + * instability and crash, disable it for now */ + if (can_allocate && obj->fmtdesc->flags & V4L2_FMT_FLAG_EMULATED) { + GST_WARNING_OBJECT (pool, + "libv4l2 converter detected, disabling CREATE_BUFS"); + can_allocate = FALSE; + } + if (min_buffers < GST_V4L2_MIN_BUFFERS) { updated = TRUE; min_buffers = GST_V4L2_MIN_BUFFERS; -- 2.7.4