From 1418e9e85c2a98715132764ce2c34b9e1bf179cf Mon Sep 17 00:00:00 2001 From: Thiago Santos Date: Fri, 19 Jun 2015 15:46:56 -0300 Subject: [PATCH] utils: use caps when getting a compatible pad by template Do not ignore the caps argument when requesting a pad by template. This is particularly harmful when the pad caps query by default returns ANY so it will match the first template instead of the one that actually intersects with the caps. https://bugzilla.gnome.org/show_bug.cgi?id=751235 --- gst/gstutils.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gst/gstutils.c b/gst/gstutils.c index e00f8e8e0a..076de1ca62 100644 --- a/gst/gstutils.c +++ b/gst/gstutils.c @@ -1099,8 +1099,13 @@ gst_element_get_compatible_pad (GstElement * element, GstPad * pad, /* try to create a new one */ /* requesting is a little crazy, we need a template. Let's create one */ - /* FIXME: why not gst_pad_get_pad_template (pad); */ templcaps = gst_pad_query_caps (pad, NULL); + if (caps) { + GstCaps *inter = gst_caps_intersect (templcaps, caps); + + gst_caps_unref (templcaps); + templcaps = inter; + } templ = gst_pad_template_new ((gchar *) GST_PAD_NAME (pad), GST_PAD_DIRECTION (pad), GST_PAD_ALWAYS, templcaps); gst_caps_unref (templcaps);