Revert "caps: Optimize gst_caps_is_subset()"
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 27 May 2011 10:56:03 +0000 (12:56 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 27 May 2011 10:56:43 +0000 (12:56 +0200)
This reverts commit 32248a9b852bcb568a5b642299ecc8e5bf48ea13.

This breaks some tests in -base and the failures should
be fixed first.

gst/gstcaps.c

index 9c98fce0f375c9d2f9df364ba1bca7d379fde558..3010d29d2e21aafdda1228ef15dbc6c655fc25c4 100644 (file)
@@ -1133,9 +1133,8 @@ gst_caps_is_always_compatible (const GstCaps * caps1, const GstCaps * caps2)
 gboolean
 gst_caps_is_subset (const GstCaps * subset, const GstCaps * superset)
 {
-  GstStructure *s1, *s2;
-  gboolean ret = TRUE;
-  gint i, j;
+  GstCaps *caps;
+  gboolean ret;
 
   g_return_val_if_fail (subset != NULL, FALSE);
   g_return_val_if_fail (superset != NULL, FALSE);
@@ -1145,24 +1144,9 @@ gst_caps_is_subset (const GstCaps * subset, const GstCaps * superset)
   if (CAPS_IS_ANY (subset) || CAPS_IS_EMPTY (superset))
     return FALSE;
 
-  for (i = subset->structs->len - 1; i >= 0; i--) {
-    for (j = superset->structs->len - 1; j >= 0; j--) {
-      s1 = gst_caps_get_structure_unchecked (subset, i);
-      s2 = gst_caps_get_structure_unchecked (superset, j);
-      if (gst_caps_structure_is_subset (s2, s1)) {
-        /* If we found a superset, continue with the next
-         * subset structure */
-        break;
-      }
-    }
-    /* If we found no superset for this subset structure
-     * we return FALSE immediately */
-    if (j == -1) {
-      ret = FALSE;
-      break;
-    }
-  }
-
+  caps = gst_caps_subtract (subset, superset);
+  ret = CAPS_IS_EMPTY_SIMPLE (caps);
+  gst_caps_unref (caps);
   return ret;
 }