summaryrefslogtreecommitdiff
path: root/gst/gstpad.c
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2007-03-22 17:12:23 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2007-03-22 17:12:23 +0000
commit0c34057ee53c561499158130f4923d51a18629f2 (patch)
treef2a84bc17f87729814b3b37fe5dfa1dc1992e46b /gst/gstpad.c
parent79e426d5f93e900b8a85978a5d986e0f06719fb8 (diff)
gst/gstpad.c: Check in set_caps if the caps are compatible with the pad and remove two functions that are redundant n...
Original commit message from CVS: * gst/gstpad.c: (gst_pad_set_caps), (gst_pad_alloc_buffer_full), (gst_pad_chain_unchecked), (gst_pad_push): Check in set_caps if the caps are compatible with the pad and remove two functions that are redundant now. Fixes #421543.
Diffstat (limited to 'gst/gstpad.c')
-rw-r--r--gst/gstpad.c68
1 files changed, 6 insertions, 62 deletions
diff --git a/gst/gstpad.c b/gst/gstpad.c
index e501c421e..03fc1f4fc 100644
--- a/gst/gstpad.c
+++ b/gst/gstpad.c
@@ -2343,6 +2343,9 @@ gst_pad_set_caps (GstPad * pad, GstCaps * caps)
g_return_val_if_fail (GST_IS_PAD (pad), FALSE);
g_return_val_if_fail (caps == NULL || gst_caps_is_fixed (caps), FALSE);
+ if (!gst_pad_accept_caps (pad, caps))
+ goto could_not_set;
+
GST_OBJECT_LOCK (pad);
existing = GST_PAD_CAPS (pad);
if (existing == caps)
@@ -2403,65 +2406,6 @@ could_not_set:
}
}
-static gboolean
-gst_pad_configure_sink (GstPad * pad, GstCaps * caps)
-{
- GstPadSetCapsFunction setcaps;
- gboolean res;
-
- setcaps = GST_PAD_SETCAPSFUNC (pad);
-
- /* See if pad accepts the caps - only needed if
- * no setcaps function */
- if (setcaps == NULL)
- if (!gst_pad_accept_caps (pad, caps))
- goto not_accepted;
-
- /* set caps on pad if call succeeds */
- res = gst_pad_set_caps (pad, caps);
- /* no need to unref the caps here, set_caps takes a ref and
- * our ref goes away when we leave this function. */
-
- return res;
-
-not_accepted:
- {
- GST_CAT_DEBUG_OBJECT (GST_CAT_CAPS, pad,
- "caps %" GST_PTR_FORMAT " not accepted", caps);
- return FALSE;
- }
-}
-
-/* returns TRUE if the src pad could be configured to accept the given caps */
-static gboolean
-gst_pad_configure_src (GstPad * pad, GstCaps * caps, gboolean dosetcaps)
-{
- GstPadSetCapsFunction setcaps;
- gboolean res;
-
- setcaps = GST_PAD_SETCAPSFUNC (pad);
-
- /* See if pad accepts the caps - only needed if
- * no setcaps function */
- if (setcaps == NULL)
- if (!gst_pad_accept_caps (pad, caps))
- goto not_accepted;
-
- if (dosetcaps)
- res = gst_pad_set_caps (pad, caps);
- else
- res = TRUE;
-
- return res;
-
-not_accepted:
- {
- GST_CAT_DEBUG_OBJECT (GST_CAT_CAPS, pad,
- "caps %" GST_PTR_FORMAT " not accepted", caps);
- return FALSE;
- }
-}
-
/**
* gst_pad_get_pad_template_caps:
* @pad: a #GstPad to get the template capabilities from.
@@ -2742,7 +2686,7 @@ gst_pad_alloc_buffer_full (GstPad * pad, guint64 offset, gint size,
/* we got a new datatype on the pad, see if it can handle it */
if (G_UNLIKELY (caps_changed)) {
GST_DEBUG_OBJECT (pad, "caps changed to %p %" GST_PTR_FORMAT, caps, caps);
- if (G_UNLIKELY (!gst_pad_configure_src (pad, caps, setcaps)))
+ if (G_UNLIKELY (setcaps && !gst_pad_set_caps (pad, caps)))
goto not_negotiated;
}
return ret;
@@ -3443,7 +3387,7 @@ gst_pad_chain_unchecked (GstPad * pad, GstBuffer * buffer)
/* we got a new datatype on the pad, see if it can handle it */
if (G_UNLIKELY (caps_changed)) {
GST_DEBUG_OBJECT (pad, "caps changed to %p %" GST_PTR_FORMAT, caps, caps);
- if (G_UNLIKELY (!gst_pad_configure_sink (pad, caps)))
+ if (G_UNLIKELY (!gst_pad_set_caps (pad, caps)))
goto not_negotiated;
}
@@ -3620,7 +3564,7 @@ gst_pad_push (GstPad * pad, GstBuffer * buffer)
/* we got a new datatype from the pad, it had better handle it */
if (G_UNLIKELY (caps_changed)) {
GST_DEBUG_OBJECT (pad, "caps changed to %p %" GST_PTR_FORMAT, caps, caps);
- if (G_UNLIKELY (!gst_pad_configure_src (pad, caps, TRUE)))
+ if (G_UNLIKELY (!gst_pad_set_caps (pad, caps)))
goto not_negotiated;
}