summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2012-01-02 18:28:46 +0100
committerWim Taymans <wim.taymans@collabora.co.uk>2012-01-02 18:28:46 +0100
commite2f91075e44d4c6a4dd128cb8a783412c1dedf17 (patch)
treeeeb6dc74cdf226c9d113d26f4c49ad9e59e6b83d
parent30a66af4e28c45a91068b7f45fdeff9921fcecde (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.c31
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