basesrc: avoid some caps manipulation
authorStefan Kost <ensonic@users.sf.net>
Mon, 5 Jul 2010 09:19:29 +0000 (12:19 +0300)
committerStefan Kost <ensonic@users.sf.net>
Thu, 5 Aug 2010 06:40:02 +0000 (09:40 +0300)
After the intersect we have writable caps. Copy the template caps so that also
there we have writable caps.

libs/gst/base/gstbasesrc.c

index 1555e88991615e36021c66c20b0ef137366ef169..f0f864cb0b831e168161fa6e78a1e2fee6b1c096 100644 (file)
@@ -2596,15 +2596,14 @@ gst_base_src_default_negotiate (GstBaseSrc * basesrc)
     /* get intersection */
     caps = gst_caps_intersect (thiscaps, peercaps);
     GST_DEBUG_OBJECT (basesrc, "intersect: %" GST_PTR_FORMAT, caps);
-    gst_caps_unref (thiscaps);
     gst_caps_unref (peercaps);
   } else {
     /* no peer, work with our own caps then */
-    caps = thiscaps;
+    caps = gst_caps_copy (thiscaps);
   }
+  gst_caps_unref (thiscaps);
   if (caps) {
     /* take first (and best, since they are sorted) possibility */
-    caps = gst_caps_make_writable (caps);
     gst_caps_truncate (caps);
 
     /* now fixate */