bayer2rgb: take into account filter in transform_caps function
authorTim-Philipp Müller <tim@centricular.com>
Mon, 22 Dec 2014 16:45:05 +0000 (16:45 +0000)
committerTim-Philipp Müller <tim@centricular.com>
Mon, 22 Dec 2014 16:46:06 +0000 (16:46 +0000)
Fixes criticals when filter caps are passed.

Also fix wrong GST_DEBUG_OBJECT use.

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

gst/bayer/gstbayer2rgb.c

index f076231..036ac2a 100644 (file)
@@ -286,7 +286,7 @@ gst_bayer2rgb_transform_caps (GstBaseTransform * base,
   GstCaps *newcaps;
   GstStructure *newstruct;
 
-  GST_DEBUG_OBJECT (caps, "transforming caps (from)");
+  GST_DEBUG_OBJECT (base, "transforming caps from %" GST_PTR_FORMAT, caps);
 
   structure = gst_caps_get_structure (caps, 0);
 
@@ -305,7 +305,17 @@ gst_bayer2rgb_transform_caps (GstBaseTransform * base,
   gst_structure_set_value (newstruct, "framerate",
       gst_structure_get_value (structure, "framerate"));
 
-  GST_DEBUG_OBJECT (newcaps, "transforming caps (into)");
+  if (filter != NULL) {
+    GstCaps *icaps;
+
+    GST_DEBUG_OBJECT (base, "                filter %" GST_PTR_FORMAT, filter);
+
+    icaps = gst_caps_intersect_full (filter, newcaps, GST_CAPS_INTERSECT_FIRST);
+    gst_caps_unref (newcaps);
+    newcaps = icaps;
+  }
+
+  GST_DEBUG_OBJECT (base, "                  into %" GST_PTR_FORMAT, newcaps);
 
   return newcaps;
 }