From: Edward Hervey Date: Tue, 20 Jul 2010 18:49:12 +0000 (+0200) Subject: gstpad: Assume pads are compatible if we don't have templates X-Git-Tag: RELEASE-0.10.31~284 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=21c8edca2a04938a9afcd63d7ac3b82a8cb87c9b;p=platform%2Fupstream%2Fgstreamer.git gstpad: Assume pads are compatible if we don't have templates This is the same behaviour as if we had a pad template caps of GST_CAPS_ANY on any of the pads (i.e. the actual check will be done during caps negotiation). --- diff --git a/gst/gstpad.c b/gst/gstpad.c index 14aebc9..ae742c1 100644 --- a/gst/gstpad.c +++ b/gst/gstpad.c @@ -1796,12 +1796,16 @@ gst_pad_link_check_compatible_unlocked (GstPad * src, GstPad * sink, srccaps = gst_pad_get_caps_unlocked (src); sinkcaps = gst_pad_get_caps_unlocked (sink); } else { - if (GST_PAD_PAD_TEMPLATE (src)) - srccaps = - gst_caps_ref (GST_PAD_TEMPLATE_CAPS (GST_PAD_PAD_TEMPLATE (src))); - if (GST_PAD_PAD_TEMPLATE (sink)) - sinkcaps = - gst_caps_ref (GST_PAD_TEMPLATE_CAPS (GST_PAD_PAD_TEMPLATE (sink))); + /* If one of the two pads doesn't have a template, consider the intersection + * as valid.*/ + if (G_UNLIKELY ((GST_PAD_PAD_TEMPLATE (src) == NULL) + || (GST_PAD_PAD_TEMPLATE (sink) == NULL))) { + compatible = TRUE; + goto done; + } + srccaps = gst_caps_ref (GST_PAD_TEMPLATE_CAPS (GST_PAD_PAD_TEMPLATE (src))); + sinkcaps = + gst_caps_ref (GST_PAD_TEMPLATE_CAPS (GST_PAD_PAD_TEMPLATE (sink))); } GST_CAT_DEBUG (GST_CAT_CAPS, "src caps %" GST_PTR_FORMAT, srccaps);