diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c index 055b4efd47..7dd862fab0 100644 --- a/sys/v4l2/gstv4l2bufferpool.c +++ b/sys/v4l2/gstv4l2bufferpool.c @@ -870,6 +870,9 @@ gst_v4l2_buffer_pool_start (GstBufferPool * bpool) goto start_failed; if (!V4L2_TYPE_IS_OUTPUT (obj->type)) { + if (g_atomic_int_get (&pool->num_queued) < min_buffers) + goto queue_failed; + pool->group_released_handler = g_signal_connect_swapped (pool->vallocator, "group-released", G_CALLBACK (gst_v4l2_buffer_pool_resurect_buffer), pool); @@ -904,6 +907,11 @@ other_pool_failed: GST_PTR_FORMAT, pool->other_pool); return FALSE; } +queue_failed: + { + GST_ERROR_OBJECT (pool, "failed to queue buffers into the capture queue"); + return FALSE; + } } static gboolean