]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/gstreamer0-10.git/commitdiff
basetransform: Handle buffers with NULL caps correctly
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 14 Jan 2010 19:19:05 +0000 (20:19 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 14 Jan 2010 19:19:05 +0000 (20:19 +0100)
This means that the caps didn't change so don't try to handle
the NULL caps as the new caps.

libs/gst/base/gstbasetransform.c

index 95a610aa7b1a9aacebfcfa59ed73b11ca6d0b5a0..78ffc8d3792cb22fe326d90c9bdbd189b54bd21d 100644 (file)
@@ -1253,7 +1253,7 @@ gst_base_transform_prepare_output_buffer (GstBaseTransform * trans,
   /* check if we got different caps on this new output buffer */
   newcaps = GST_BUFFER_CAPS (*out_buf);
   newsize = GST_BUFFER_SIZE (*out_buf);
-  if (!gst_caps_is_equal (newcaps, oldcaps)) {
+  if (newcaps && !gst_caps_is_equal (newcaps, oldcaps)) {
     GstCaps *othercaps;
     gboolean can_convert;
 
@@ -1394,7 +1394,8 @@ gst_base_transform_prepare_output_buffer (GstBaseTransform * trans,
    * check. This is needed when we receive different pointers on the sinkpad
    * that mean the same caps. What we then want to do is prefer those caps over
    * the ones on the srcpad and set the srcpad caps to the buffer caps */
-  setcaps = (newcaps != outcaps) && (!gst_caps_is_equal (newcaps, outcaps));
+  setcaps = !newcaps || ((newcaps != outcaps)
+      && (!gst_caps_is_equal (newcaps, outcaps)));
   /* we need to modify the metadata when the element is not gap aware,
    * passthrough is not used and the gap flag is set */
   copymeta |= !trans->priv->gap_aware && !trans->passthrough