summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>2012-01-25 12:35:43 +0000
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-01-27 16:44:35 +0100
commit27ac781ba6ba4a9acec4dcb57751a4243a7da2ef (patch)
treebcf8653bebe14961102d666862f7adcc38ff3df6
parentbf0964b63a1283eb38a6d803e7a54b07b9e9a7e5 (diff)
typefind: answer caps queries with our typefound caps
This avoids merely forwarding the event to the sink, and getting something useless such as ANY. https://bugzilla.gnome.org/show_bug.cgi?id=667571
-rw-r--r--plugins/elements/gsttypefindelement.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/plugins/elements/gsttypefindelement.c b/plugins/elements/gsttypefindelement.c
index 7134efb0ac..9b401b1324 100644
--- a/plugins/elements/gsttypefindelement.c
+++ b/plugins/elements/gsttypefindelement.c
@@ -381,6 +381,19 @@ gst_type_find_handle_src_query (GstPad * pad, GstObject * parent,
gboolean res = FALSE;
typefind = GST_TYPE_FIND_ELEMENT (parent);
+ GST_DEBUG_OBJECT (typefind, "Handling src query %s",
+ GST_QUERY_TYPE_NAME (query));
+
+ /* We can hijack caps query if we typefind already */
+ if (GST_QUERY_TYPE (query) == GST_QUERY_CAPS) {
+ GST_DEBUG_OBJECT (typefind, "Got caps query, our caps are %" GST_PTR_FORMAT,
+ typefind->caps);
+ if (typefind->caps) {
+ gst_query_set_caps_result (query, typefind->caps);
+ res = TRUE;
+ goto out;
+ }
+ }
res = gst_pad_peer_query (typefind->sink, query);
if (!res)