mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
v4l2bufferpool: Validate that capture buffers were queued
When the pool is started, we allocate and release buffer, expecting the pool release-buffer handler to queue them. Though, as we rely on release function, there is no direct way to detect that this process didn't work. To check this, validate that the number of queued buffer is the same as the number of allocated buffers. This allow returning an error when buffer importation was refused by the driver. https://bugzilla.gnome.org/show_bug.cgi?id=583890
This commit is contained in:
parent
3b364cea94
commit
9e79821b1d
1 changed files with 8 additions and 0 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue