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