decodebin2: use new getcaps function to avoid copies

Use the gst_pad_get_caps_refed() to avoid some caps copy functions.
This commit is contained in:
Wim Taymans 2009-11-04 18:31:09 +01:00
parent eb92aa282f
commit 89f02fb269

View file

@ -1624,7 +1624,7 @@ connect_element (GstDecodeBin * dbin, GstElement * element,
GstPad *pad = GST_PAD_CAST (pads->data); GstPad *pad = GST_PAD_CAST (pads->data);
GstCaps *caps; GstCaps *caps;
caps = gst_pad_get_caps (pad); caps = gst_pad_get_caps_refed (pad);
analyze_new_pad (dbin, element, pad, caps, chain); analyze_new_pad (dbin, element, pad, caps, chain);
if (caps) if (caps)
gst_caps_unref (caps); gst_caps_unref (caps);
@ -1728,7 +1728,7 @@ pad_added_cb (GstElement * element, GstPad * pad, GstDecodeChain * chain)
GST_DEBUG_OBJECT (pad, "pad added, chain:%p", chain); GST_DEBUG_OBJECT (pad, "pad added, chain:%p", chain);
caps = gst_pad_get_caps (pad); caps = gst_pad_get_caps_refed (pad);
analyze_new_pad (dbin, element, pad, caps, chain); analyze_new_pad (dbin, element, pad, caps, chain);
if (caps) if (caps)
gst_caps_unref (caps); gst_caps_unref (caps);
@ -2215,7 +2215,7 @@ gst_decode_group_free (GstDecodeGroup * group)
* and all signals are unconnected. * and all signals are unconnected.
* *
* No element is set to NULL state and completely * No element is set to NULL state and completely
* unreffed here. * unrefed here.
* *
* Can be called from streaming threads. * Can be called from streaming threads.
* *
@ -2604,8 +2604,8 @@ sort_end_pads (GstDecodePad * da, GstDecodePad * db)
GstStructure *sa, *sb; GstStructure *sa, *sb;
const gchar *namea, *nameb; const gchar *namea, *nameb;
capsa = gst_pad_get_caps (GST_PAD (da)); capsa = gst_pad_get_caps_refed (GST_PAD (da));
capsb = gst_pad_get_caps (GST_PAD (db)); capsb = gst_pad_get_caps_refed (GST_PAD (db));
sa = gst_caps_get_structure ((const GstCaps *) capsa, 0); sa = gst_caps_get_structure ((const GstCaps *) capsa, 0);
sb = gst_caps_get_structure ((const GstCaps *) capsb, 0); sb = gst_caps_get_structure ((const GstCaps *) capsb, 0);
@ -2746,7 +2746,7 @@ gst_decode_chain_get_topology (GstDecodeChain * chain)
/* Caps that resulted in this chain */ /* Caps that resulted in this chain */
caps = gst_pad_get_negotiated_caps (chain->pad); caps = gst_pad_get_negotiated_caps (chain->pad);
if (!caps) { if (!caps) {
caps = gst_pad_get_caps (chain->pad); caps = gst_pad_get_caps_refed (chain->pad);
if (G_UNLIKELY (!gst_caps_is_fixed (caps))) { if (G_UNLIKELY (!gst_caps_is_fixed (caps))) {
GST_ERROR_OBJECT (chain->pad, GST_ERROR_OBJECT (chain->pad,
"Couldn't get fixed caps, got %" GST_PTR_FORMAT, caps); "Couldn't get fixed caps, got %" GST_PTR_FORMAT, caps);