baseparse: Return template caps instead of other side's peer caps if get_sink_caps...
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 23 Nov 2011 12:42:56 +0000 (13:42 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 23 Nov 2011 12:42:56 +0000 (13:42 +0100)
Using gst_pad_proxy_get_caps() breaks backwards compatibility with old
parsers because it will propagate the other side's fields like "parsed"
and "framed" and also breaks parser/converters.

Fixes bug #664221.

libs/gst/base/gstbaseparse.c

index 1ccdc2c8128eecb561fb677f1cd5644bb67ec405..308bb8a8955d8329abb3d409ede9efa6c29670c3 100644 (file)
@@ -3994,13 +3994,12 @@ gst_base_parse_sink_getcaps (GstPad * pad)
   if (klass->get_sink_caps)
     caps = klass->get_sink_caps (parse);
   else
-    caps = gst_pad_proxy_getcaps (pad);
+    caps = gst_caps_copy (gst_pad_get_pad_template_caps (pad));
   gst_object_unref (parse);
 
   GST_LOG_OBJECT (parse, "sink getcaps returning caps %" GST_PTR_FORMAT, caps);
 
   return caps;
-
 }
 
 static void