From e2f91075e44d4c6a4dd128cb8a783412c1dedf17 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 2 Jan 2012 18:28:46 +0100 Subject: [PATCH] streamcombiner: fix srcpad query caps The caps query on the srcpad should return the template caps instead of forwarding the query. --- gst/encoding/gststreamcombiner.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/gst/encoding/gststreamcombiner.c b/gst/encoding/gststreamcombiner.c index 5cf7629..19a6adf 100644 --- a/gst/encoding/gststreamcombiner.c +++ b/gst/encoding/gststreamcombiner.c @@ -166,19 +166,26 @@ gst_stream_combiner_src_query (GstPad * pad, GstObject * parent, { GstStreamCombiner *stream_combiner = (GstStreamCombiner *) parent; GstPad *sinkpad = NULL; + gboolean ret = FALSE; - STREAMS_LOCK (stream_combiner); - if (stream_combiner->current) - sinkpad = stream_combiner->current; - else if (stream_combiner->sinkpads) - sinkpad = (GstPad *) stream_combiner->sinkpads->data; - STREAMS_UNLOCK (stream_combiner); - - if (sinkpad) - /* Forward upstream as is */ - return gst_pad_peer_query (sinkpad, query); - - return FALSE; + switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_CAPS: + ret = gst_pad_query_default (pad, parent, query); + break; + default: + STREAMS_LOCK (stream_combiner); + if (stream_combiner->current) + sinkpad = stream_combiner->current; + else if (stream_combiner->sinkpads) + sinkpad = (GstPad *) stream_combiner->sinkpads->data; + STREAMS_UNLOCK (stream_combiner); + + if (sinkpad) + /* Forward upstream as is */ + ret = gst_pad_peer_query (sinkpad, query); + break; + } + return ret; } static void -- 2.7.4