mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-15 12:34:15 +00:00
utils: Use gst_pad_get_pad_template() in gst_element_get_compatible_pad_template()
motivation comes from: /* FIXME: why not gst_pad_get_pad_template (pad); */ this code path is quite nicer, we now only revert to creating the template if gst_pad_get_pad_template fails. with this fork, we gain a non-allocation of GstCaps *templcaps https://bugzilla.gnome.org/show_bug.cgi?id=692508
This commit is contained in:
parent
6099b35f7e
commit
1a1a9e143f
1 changed files with 15 additions and 8 deletions
|
@ -993,7 +993,6 @@ gst_element_get_compatible_pad (GstElement * element, GstPad * pad,
|
|||
{
|
||||
GstIterator *pads;
|
||||
GstPadTemplate *templ;
|
||||
GstCaps *templcaps;
|
||||
GstPad *foundpad = NULL;
|
||||
gboolean done;
|
||||
GValue padptr = { 0, };
|
||||
|
@ -1101,13 +1100,21 @@ gst_element_get_compatible_pad (GstElement * element, GstPad * pad,
|
|||
"Could not find a compatible unlinked always pad to link to %s:%s, now checking request pads",
|
||||
GST_DEBUG_PAD_NAME (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);
|
||||
templ = gst_pad_template_new ((gchar *) GST_PAD_NAME (pad),
|
||||
GST_PAD_DIRECTION (pad), GST_PAD_ALWAYS, templcaps);
|
||||
gst_caps_unref (templcaps);
|
||||
/* requesting is a little crazy, we need a template. Let's get the one in that pad */
|
||||
templ = gst_pad_get_pad_template (pad);
|
||||
if (!templ) {
|
||||
/* that failed, try to create a new one */
|
||||
GstCaps *templcaps;
|
||||
|
||||
GST_CAT_DEBUG_OBJECT (GST_CAT_ELEMENT_PADS, element,
|
||||
"Couldn't extract template from pad %s:%s creating a new one",
|
||||
GST_DEBUG_PAD_NAME (pad));
|
||||
|
||||
templcaps = gst_pad_query_caps (pad, NULL);
|
||||
templ = gst_pad_template_new ((gchar *) GST_PAD_NAME (pad),
|
||||
GST_PAD_DIRECTION (pad), GST_PAD_ALWAYS, templcaps);
|
||||
gst_caps_unref (templcaps);
|
||||
}
|
||||
|
||||
foundpad = gst_element_request_compatible_pad (element, templ);
|
||||
gst_object_unref (templ);
|
||||
|
|
Loading…
Reference in a new issue