autoconvert: Always give a valid reply to internal caps queries
authorOlivier Crête <olivier.crete@collabora.com>
Fri, 13 Nov 2015 22:14:14 +0000 (17:14 -0500)
committerOlivier Crête <olivier.crete@collabora.com>
Fri, 13 Nov 2015 22:21:17 +0000 (17:21 -0500)
Caps queries can always have a valid reply, either the filter or ANY.
If the caps are ANY, then accept-caps always returns TRUE.

gst/autoconvert/gstautoconvert.c

index 230a15c..5fdb32c 100644 (file)
@@ -1243,7 +1243,31 @@ gst_auto_convert_internal_sink_query (GstPad * pad, GstObject * parent,
       GST_AUTO_CONVERT (g_object_get_qdata (G_OBJECT (pad),
           parent_quark));
 
-  return gst_pad_peer_query (autoconvert->srcpad, query);
+  if (!gst_pad_peer_query (autoconvert->srcpad, query)) {
+    switch (GST_QUERY_TYPE (query)) {
+      case GST_QUERY_CAPS:
+      {
+        GstCaps *filter;
+
+        gst_query_parse_caps (query, &filter);
+        if (filter) {
+          gst_query_set_caps_result (query, filter);
+        } else {
+          filter = gst_caps_new_any ();
+          gst_query_set_caps_result (query, filter);
+          gst_caps_unref (filter);
+        }
+        return TRUE;
+      }
+      case GST_QUERY_ACCEPT_CAPS:
+        gst_query_set_accept_caps_result (query, TRUE);
+        return TRUE;
+      default:
+        return FALSE;
+    }
+  }
+
+  return TRUE;
 }
 
 static gboolean