From aa9ba2dd4e7167f00c48fee1fddbe5b02426ed5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 23 Nov 2011 13:42:56 +0100 Subject: [PATCH] baseparse: Return template caps instead of other side's peer caps if get_sink_caps vfunc is not implemented 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 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c index 1ccdc2c812..308bb8a895 100644 --- a/libs/gst/base/gstbaseparse.c +++ b/libs/gst/base/gstbaseparse.c @@ -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