static void gst_pad_template_dispose (GObject * object) { GstPadTemplate *templ = GST_PAD_TEMPLATE (object); g_free (GST_PAD_TEMPLATE_NAME_TEMPLATE (templ)); if (GST_PAD_TEMPLATE_CAPS (templ)) { gst_caps_unref (GST_PAD_TEMPLATE_CAPS (templ)); } G_OBJECT_CLASS (parent_class)->dispose (object); }
static GstCaps * gst_basertppayload_sink_getcaps (GstPad * pad) { GstBaseRTPPayload *basertppayload; GstBaseRTPPayloadClass *basertppayload_class; GstCaps *caps = NULL; GST_DEBUG_OBJECT (pad, "getting caps"); basertppayload = GST_BASE_RTP_PAYLOAD (gst_pad_get_parent (pad)); basertppayload_class = GST_BASE_RTP_PAYLOAD_GET_CLASS (basertppayload); if (basertppayload_class->get_caps) caps = basertppayload_class->get_caps (basertppayload, pad); if (!caps) { caps = GST_PAD_TEMPLATE_CAPS (GST_PAD_PAD_TEMPLATE (pad)); GST_DEBUG_OBJECT (pad, "using pad template %p with caps %p %" GST_PTR_FORMAT, GST_PAD_PAD_TEMPLATE (pad), caps, caps); caps = gst_caps_ref (caps); } gst_object_unref (basertppayload); return caps; }
static GstCaps * gst_proxy_pad_do_getcaps (GstPad * pad) { GstPad *target = gst_proxy_pad_get_target (pad); GstCaps *res; GstPadTemplate *templ = GST_PAD_PAD_TEMPLATE (pad); if (target) { /* if we have a real target, proxy the call */ res = gst_pad_get_caps (target); gst_object_unref (target); GST_DEBUG_OBJECT (pad, "get caps of target: %" GST_PTR_FORMAT, res); /* filter against the template */ if (templ && res) { GstCaps *filt, *tmp; filt = GST_PAD_TEMPLATE_CAPS (templ); if (filt) { tmp = gst_caps_intersect (filt, res); gst_caps_unref (res); res = tmp; GST_DEBUG_OBJECT (pad, "filtered against template gives %" GST_PTR_FORMAT, res); } } } else { /* else, if we have a template, use its caps. */ if (templ) { res = GST_PAD_TEMPLATE_CAPS (templ); GST_DEBUG_OBJECT (pad, "using pad template %p with caps %p %" GST_PTR_FORMAT, templ, res, res); res = gst_caps_ref (res); goto done; } /* last resort, any caps */ GST_DEBUG_OBJECT (pad, "pad has no template, returning ANY"); res = gst_caps_new_any (); } done: return res; }
static GstCaps * gst_jpeg_parse_src_getcaps (GstPad * pad, GstCaps * filter) { GstCaps *result; if ((result = gst_pad_get_current_caps (pad))) { GST_DEBUG_OBJECT (pad, "using pad caps %" GST_PTR_FORMAT, result); } else { result = gst_caps_ref (GST_PAD_TEMPLATE_CAPS (GST_PAD_PAD_TEMPLATE (pad))); GST_DEBUG_OBJECT (pad, "using pad template caps %" GST_PTR_FORMAT, result); } return result; }
static GstCaps * gst_rtp_base_payload_getcaps_default (GstRTPBasePayload * rtpbasepayload, GstPad * pad, GstCaps * filter) { GstCaps *caps; caps = GST_PAD_TEMPLATE_CAPS (GST_PAD_PAD_TEMPLATE (pad)); GST_DEBUG_OBJECT (pad, "using pad template %p with caps %p %" GST_PTR_FORMAT, GST_PAD_PAD_TEMPLATE (pad), caps, caps); if (filter) caps = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST); else caps = gst_caps_ref (caps); return caps; }