diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2012-01-02 18:28:46 +0100 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2012-01-02 18:28:46 +0100 |
commit | e2f91075e44d4c6a4dd128cb8a783412c1dedf17 (patch) | |
tree | eeb6dc74cdf226c9d113d26f4c49ad9e59e6b83d | |
parent | 30a66af4e28c45a91068b7f45fdeff9921fcecde (diff) |
streamcombiner: fix srcpad query caps
The caps query on the srcpad should return the template caps instead of
forwarding the query.
-rw-r--r-- | gst/encoding/gststreamcombiner.c | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/gst/encoding/gststreamcombiner.c b/gst/encoding/gststreamcombiner.c index 5cf762993..19a6adfb5 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 |