mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 14:56:36 +00:00
gst: Update for caps/pad template related API changes
This commit is contained in:
parent
5f406248eb
commit
c7789694fb
2 changed files with 17 additions and 4 deletions
|
@ -2765,17 +2765,23 @@ setcaps_failed:
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
gst_pad_configure_sink (GstPad * pad, GstCaps * caps)
|
gst_pad_configure_sink (GstPad * pad, GstCaps * caps)
|
||||||
{
|
{
|
||||||
|
GstCaps *templ;
|
||||||
|
|
||||||
/* See if pad accepts the caps */
|
/* See if pad accepts the caps */
|
||||||
if (!gst_caps_can_intersect (caps, gst_pad_get_pad_template_caps (pad)))
|
templ = gst_pad_get_pad_template_caps (pad);
|
||||||
|
if (!gst_caps_can_intersect (caps, templ))
|
||||||
goto not_accepted;
|
goto not_accepted;
|
||||||
|
|
||||||
if (!gst_pad_call_setcaps (pad, caps))
|
if (!gst_pad_call_setcaps (pad, caps))
|
||||||
goto not_accepted;
|
goto not_accepted;
|
||||||
|
|
||||||
|
gst_caps_unref (templ);
|
||||||
|
|
||||||
return GST_FLOW_OK;
|
return GST_FLOW_OK;
|
||||||
|
|
||||||
not_accepted:
|
not_accepted:
|
||||||
{
|
{
|
||||||
|
gst_caps_unref (templ);
|
||||||
GST_CAT_DEBUG_OBJECT (GST_CAT_CAPS, pad,
|
GST_CAT_DEBUG_OBJECT (GST_CAT_CAPS, pad,
|
||||||
"caps %" GST_PTR_FORMAT " not accepted", caps);
|
"caps %" GST_PTR_FORMAT " not accepted", caps);
|
||||||
return GST_FLOW_NOT_NEGOTIATED;
|
return GST_FLOW_NOT_NEGOTIATED;
|
||||||
|
|
|
@ -1199,9 +1199,9 @@ gst_element_get_compatible_pad (GstElement * element, GstPad * pad,
|
||||||
/* requesting is a little crazy, we need a template. Let's create one */
|
/* requesting is a little crazy, we need a template. Let's create one */
|
||||||
/* FIXME: why not gst_pad_get_pad_template (pad); */
|
/* FIXME: why not gst_pad_get_pad_template (pad); */
|
||||||
templcaps = gst_pad_get_caps (pad, NULL);
|
templcaps = gst_pad_get_caps (pad, NULL);
|
||||||
|
|
||||||
templ = gst_pad_template_new ((gchar *) GST_PAD_NAME (pad),
|
templ = gst_pad_template_new ((gchar *) GST_PAD_NAME (pad),
|
||||||
GST_PAD_DIRECTION (pad), GST_PAD_ALWAYS, templcaps);
|
GST_PAD_DIRECTION (pad), GST_PAD_ALWAYS, templcaps);
|
||||||
|
gst_caps_unref (templcaps);
|
||||||
|
|
||||||
foundpad = gst_element_request_compatible_pad (element, templ);
|
foundpad = gst_element_request_compatible_pad (element, templ);
|
||||||
gst_object_unref (templ);
|
gst_object_unref (templ);
|
||||||
|
@ -1844,8 +1844,11 @@ gst_element_link_pads_full (GstElement * src, const gchar * srcpadname,
|
||||||
desttempl = (GstPadTemplate *) l->data;
|
desttempl = (GstPadTemplate *) l->data;
|
||||||
if (desttempl->presence == GST_PAD_REQUEST &&
|
if (desttempl->presence == GST_PAD_REQUEST &&
|
||||||
desttempl->direction != srctempl->direction) {
|
desttempl->direction != srctempl->direction) {
|
||||||
if (gst_caps_is_always_compatible (gst_pad_template_get_caps
|
GstCaps *srccaps, *destcaps;
|
||||||
(srctempl), gst_pad_template_get_caps (desttempl))) {
|
|
||||||
|
srccaps = gst_pad_template_get_caps (srctempl);
|
||||||
|
destcaps = gst_pad_template_get_caps (desttempl);
|
||||||
|
if (gst_caps_is_always_compatible (srccaps, destcaps)) {
|
||||||
srcpad =
|
srcpad =
|
||||||
gst_element_request_pad (src, srctempl,
|
gst_element_request_pad (src, srctempl,
|
||||||
srctempl->name_template, NULL);
|
srctempl->name_template, NULL);
|
||||||
|
@ -1859,6 +1862,8 @@ gst_element_link_pads_full (GstElement * src, const gchar * srcpadname,
|
||||||
GST_DEBUG_PAD_NAME (srcpad), GST_DEBUG_PAD_NAME (destpad));
|
GST_DEBUG_PAD_NAME (srcpad), GST_DEBUG_PAD_NAME (destpad));
|
||||||
gst_object_unref (srcpad);
|
gst_object_unref (srcpad);
|
||||||
gst_object_unref (destpad);
|
gst_object_unref (destpad);
|
||||||
|
gst_caps_unref (srccaps);
|
||||||
|
gst_caps_unref (destcaps);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
/* it failed, so we release the request pads */
|
/* it failed, so we release the request pads */
|
||||||
|
@ -1867,6 +1872,8 @@ gst_element_link_pads_full (GstElement * src, const gchar * srcpadname,
|
||||||
if (destpad)
|
if (destpad)
|
||||||
gst_element_release_request_pad (dest, destpad);
|
gst_element_release_request_pad (dest, destpad);
|
||||||
}
|
}
|
||||||
|
gst_caps_unref (srccaps);
|
||||||
|
gst_caps_unref (destcaps);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue