From c1f524f3a8ff9f3dc06dac257e8d521f8375ab64 Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Tue, 5 Sep 2017 16:20:44 -0400 Subject: [PATCH] Request minimum buffer even if need_pool is FALSE When tee is used, it will not request a pool, but still it wants to know how many buffers are required. https://bugzilla.gnome.org/show_bug.cgi?id=730758 --- ext/gl/gstglmixer.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/ext/gl/gstglmixer.c b/ext/gl/gstglmixer.c index c048661..af9de45 100644 --- a/ext/gl/gstglmixer.c +++ b/ext/gl/gstglmixer.c @@ -140,10 +140,10 @@ gst_gl_mixer_propose_allocation (GstAggregator * agg, GstBufferPool *pool = NULL; GstStructure *config; GstCaps *caps; + GstVideoInfo info; guint size = 0; gboolean need_pool; - if (!GST_AGGREGATOR_CLASS (gst_gl_mixer_parent_class)->propose_allocation (agg, agg_pad, decide_query, query)) return FALSE; @@ -155,18 +155,16 @@ gst_gl_mixer_propose_allocation (GstAggregator * agg, if (caps == NULL) goto no_caps; - if (need_pool) { - GstVideoInfo info; + if (!gst_video_info_from_caps (&info, caps)) + goto invalid_caps; - if (!gst_video_info_from_caps (&info, caps)) - goto invalid_caps; + /* the normal size of a frame */ + size = info.size; + if (need_pool) { GST_DEBUG_OBJECT (mix, "create new pool"); pool = gst_gl_buffer_pool_new (context); - /* the normal size of a frame */ - size = info.size; - config = gst_buffer_pool_get_config (pool); gst_buffer_pool_config_set_params (config, caps, size, 0, 0); @@ -174,10 +172,11 @@ gst_gl_mixer_propose_allocation (GstAggregator * agg, g_object_unref (pool); goto config_failed; } + } - gst_query_add_allocation_pool (query, pool, size, 1, 0); + gst_query_add_allocation_pool (query, pool, size, 1, 0); + if (pool) g_object_unref (pool); - } /* we also support various metadata */ if (context->gl_vtable->FenceSync) -- 2.7.4