basetransform: Fix caps equality check

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.
This commit is contained in:
Sebastian Dröge 2014-11-20 21:33:59 +01:00
parent c9264100db
commit a7f3571d02

View 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);
}