From 62b1a5a7be89c6095aedb034eb5f6a1413c9cef3 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 6 May 2011 19:03:33 +0200 Subject: [PATCH] pad: add 2 new caps methods Add method to get the currently configured caps on the pad. Add a method to check if caps are configured on a pad. --- gst/gstpad.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ gst/gstpad.h | 4 +++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/gst/gstpad.c b/gst/gstpad.c index f62837d..7cbdfdd 100644 --- a/gst/gstpad.c +++ b/gst/gstpad.c @@ -2254,6 +2254,54 @@ done: } /** + * gst_pad_has_current_caps: + * @pad: a #GstPad to check + * + * Check if @pad has caps set on it with gst_pad_set_caps(). + * + * Returns: TRUE when @pad has caps associated with it. + */ +gboolean +gst_pad_has_current_caps (GstPad * pad) +{ + gboolean result; + + g_return_val_if_fail (GST_IS_PAD (pad), FALSE); + + GST_OBJECT_LOCK (pad); + GST_CAT_DEBUG_OBJECT (GST_CAT_CAPS, pad, "check current pad caps"); + result = (get_pad_caps (pad) != NULL); + GST_OBJECT_UNLOCK (pad); + + return result; +} + +/** + * gst_pad_get_current_caps: + * @pad: a #GstPad to get the current capabilities of. + * + * Gets the capabilities currently configured on @pad with the last call to + * gst_pad_set_caps(). + * + * Returns: the current caps of the pad with incremented ref-count. + */ +GstCaps * +gst_pad_get_current_caps (GstPad * pad) +{ + GstCaps *result; + + g_return_val_if_fail (GST_IS_PAD (pad), NULL); + + GST_OBJECT_LOCK (pad); + GST_CAT_DEBUG_OBJECT (GST_CAT_CAPS, pad, "get current pad caps"); + if ((result = get_pad_caps (pad))) + gst_caps_ref (result); + GST_OBJECT_UNLOCK (pad); + + return result; +} + +/** * gst_pad_get_caps: * @pad: a #GstPad to get the capabilities of. * @@ -2287,6 +2335,7 @@ gst_pad_get_caps (GstPad * pad) return result; } + /** * gst_pad_peer_get_caps: * @pad: a #GstPad to get the capabilities of. diff --git a/gst/gstpad.h b/gst/gstpad.h index 681102d..e9a4fee 100644 --- a/gst/gstpad.h +++ b/gst/gstpad.h @@ -850,6 +850,8 @@ void gst_pad_set_setcaps_function (GstPad *pad, GstPadSetCapsFunction setcaps G_CONST_RETURN GstCaps* gst_pad_get_pad_template_caps (GstPad *pad); /* capsnego function for linked/unlinked pads */ +GstCaps * gst_pad_get_current_caps (GstPad * pad); +gboolean gst_pad_has_current_caps (GstPad * pad); GstCaps * gst_pad_get_caps (GstPad * pad); void gst_pad_fixate_caps (GstPad * pad, GstCaps *caps); gboolean gst_pad_accept_caps (GstPad * pad, GstCaps *caps); @@ -860,7 +862,7 @@ gboolean gst_pad_peer_accept_caps (GstPad * pad, GstCaps *caps); /* capsnego for linked pads */ GstCaps * gst_pad_get_allowed_caps (GstPad * pad); -GstCaps * gst_pad_get_negotiated_caps (GstPad * pad); +GstCaps * gst_pad_get_negotiated_caps (GstPad * pad); /* data passing functions to peer */ GstFlowReturn gst_pad_push (GstPad *pad, GstBuffer *buffer); -- 2.7.4