From: Sjoerd Simons Date: Thu, 3 Nov 2011 15:35:32 +0000 (+0000) Subject: caps: Add gst_caps_is_strictly_equal X-Git-Tag: RELEASE-0.10.36~83 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=57074fc0259def8928d4701df2fbb4367b818ce0;p=platform%2Fupstream%2Fgstreamer.git caps: Add gst_caps_is_strictly_equal --- diff --git a/gst/gstcaps.c b/gst/gstcaps.c index 3652a44..f9ce800 100644 --- a/gst/gstcaps.c +++ b/gst/gstcaps.c @@ -1180,6 +1180,47 @@ gst_caps_is_equal (const GstCaps * caps1, const GstCaps * caps2) return gst_caps_is_subset (caps1, caps2) && gst_caps_is_subset (caps2, caps1); } +/** + * gst_caps_is_strictly_equal: + * @caps1: a #GstCaps + * @caps2: another #GstCaps + * + * Checks if the given caps are exactly the same set of caps. + * + * This function deals correctly with passing NULL for any of the caps. + * + * Returns: TRUE if both caps are strictly equal. + * + * Since: 0.10.36 + */ +gboolean +gst_caps_is_strictly_equal (const GstCaps * caps1, const GstCaps * caps2) +{ + int i; + /* FIXME 0.11: NULL pointers are no valid Caps but indicate an error + * So there should be an assertion that caps1 and caps2 != NULL */ + + /* NULL <-> NULL is allowed here */ + if (G_UNLIKELY (caps1 == caps2)) + return TRUE; + + /* one of them NULL => they are different (can't be both NULL because + * we checked that above) */ + if (G_UNLIKELY (caps1 == NULL || caps2 == NULL)) + return FALSE; + + if (caps1->structs->len != caps2->structs->len) + return FALSE; + + for (i = 0; i < caps1->structs->len; i++) { + if (!gst_structure_is_equal (gst_caps_get_structure_unchecked (caps1, i), + gst_caps_get_structure_unchecked (caps2, i))) + return FALSE; + } + + return TRUE; +} + /* intersect operation */ /** diff --git a/gst/gstcaps.h b/gst/gstcaps.h index 47c0d33..56a8441 100644 --- a/gst/gstcaps.h +++ b/gst/gstcaps.h @@ -268,6 +268,8 @@ gboolean gst_caps_is_equal_fixed (const GstCaps *caps1, const GstCaps *caps2); gboolean gst_caps_can_intersect (const GstCaps * caps1, const GstCaps * caps2); +gboolean gst_caps_is_strictly_equal (const GstCaps *caps1, + const GstCaps *caps2); /* operations */