autoconvert: merge caps instead of using union
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Thu, 3 Nov 2011 18:55:24 +0000 (18:55 +0000)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Mon, 7 Nov 2011 12:16:37 +0000 (12:16 +0000)
It's a lot faster, and preserves caps ordering.

https://bugzilla.gnome.org/show_bug.cgi?id=663346

gst/autoconvert/gstautoconvert.c

index 0cf7e08..df094d8 100644 (file)
@@ -1277,14 +1277,10 @@ gst_auto_convert_sink_getcaps (GstPad * pad)
       if (element_caps) {
         if (!gst_caps_is_any (element_caps) &&
             !gst_caps_is_empty (element_caps)) {
-          GstCaps *tmpcaps = NULL;
-
-          tmpcaps = gst_caps_union (caps, element_caps);
-          gst_caps_unref (caps);
-          caps = tmpcaps;
-
+          gst_caps_merge (caps, element_caps);
+        } else {
+          gst_caps_unref (element_caps);
         }
-        gst_caps_unref (element_caps);
       }
 
       gst_object_unref (element);
@@ -1298,11 +1294,7 @@ gst_auto_convert_sink_getcaps (GstPad * pad)
 
         if (static_caps && !gst_caps_is_any (static_caps) &&
             !gst_caps_is_empty (static_caps)) {
-          GstCaps *tmpcaps = NULL;
-
-          tmpcaps = gst_caps_union (caps, static_caps);
-          gst_caps_unref (caps);
-          caps = tmpcaps;
+          gst_caps_merge (caps, static_caps);
         }
       }
     }