basetransform: Fix caps equality check
authorSebastian Dröge <sebastian@centricular.com>
Thu, 20 Nov 2014 20:33:59 +0000 (21:33 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 20 Nov 2014 20:37:24 +0000 (21:37 +0100)
Instead of checking if our outcaps are equivalent to the previous incaps, and
if that is the case not setting any caps on the pad... compare against our
previous outcaps because that's what we care about.

Fixes some cases where the outcaps became equivalent to the previous incaps,
but the previous outcaps were different and we were then sending buffers
downstream that were corresponding to the caps we forgot to set on the pad.
Resulting in crashes or image corruption.

libs/gst/base/gstbasetransform.c

index 4153d91..285cdc4 100644 (file)
@@ -1374,7 +1374,7 @@ gst_base_transform_setcaps (GstBaseTransform * trans, GstPad * pad,
     if (!(ret = gst_base_transform_configure_caps (trans, incaps, outcaps)))
       goto failed_configure;
 
-    if (!prev_incaps || !gst_caps_is_equal (outcaps, prev_incaps))
+    if (!prev_incaps || !gst_caps_is_equal (outcaps, prev_outcaps))
       /* let downstream know about our caps */
       ret = gst_pad_set_caps (trans->srcpad, outcaps);
   }