v4l2object: Only offer inactive pools and if needed

Avoid offering a pool if it's not needed or if it's still active.
This works around the fact the we only have one pool in V4L2.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/651>
This commit is contained in:
Nicolas Dufresne 2020-06-26 13:11:04 -04:00 committed by GStreamer Merge Bot
parent 099712338f
commit 85b9893e96

View file

@ -4980,7 +4980,7 @@ no_downstream_pool:
gboolean
gst_v4l2_object_propose_allocation (GstV4l2Object * obj, GstQuery * query)
{
GstBufferPool *pool;
GstBufferPool *pool = NULL;
/* we need at least 2 buffers to operate */
guint size, min, max;
GstCaps *caps;
@ -4999,11 +4999,12 @@ gst_v4l2_object_propose_allocation (GstV4l2Object * obj, GstQuery * query)
switch (obj->mode) {
case GST_V4L2_IO_MMAP:
case GST_V4L2_IO_DMABUF:
if ((pool = obj->pool))
gst_object_ref (pool);
if (need_pool && obj->pool) {
if (!gst_buffer_pool_is_active (obj->pool))
pool = gst_object_ref (obj->pool);
}
break;
default:
pool = NULL;
break;
}