libs/gst/base/gstbasetransform.c: If we have a fixate function, call it even if we...
authorWim Taymans <wim.taymans@gmail.com>
Mon, 27 Oct 2008 15:02:48 +0000 (15:02 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Mon, 27 Oct 2008 15:02:48 +0000 (15:02 +0000)
Original commit message from CVS:
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_find_transform), (gst_base_transform_getrange):
If we have a fixate function, call it even if we already have fixed caps
because the subclass might add some caps. Makes audioconvert add a
default channel layout.

ChangeLog
libs/gst/base/gstbasetransform.c

index 2d46071..a4c3997 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-10-27  Wim Taymans  <wim.taymans@collabora.co.uk>
+
+       * libs/gst/base/gstbasetransform.c:
+       (gst_base_transform_find_transform), (gst_base_transform_getrange):
+       If we have a fixate function, call it even if we already have fixed caps
+       because the subclass might add some caps. Makes audioconvert add a
+       default channel layout.
+
 2008-10-24  Wim Taymans  <wim.taymans@collabora.co.uk>
 
        * libs/gst/base/gstbasetransform.c:
index cc61e27..59ef71d 100644 (file)
@@ -896,6 +896,18 @@ gst_base_transform_find_transform (GstBaseTransform * trans, GstPad * pad,
       gst_pad_fixate_caps (otherpad, othercaps);
     }
     GST_DEBUG_OBJECT (trans, "after fixating %" GST_PTR_FORMAT, othercaps);
+  } else {
+    /* else caps are fixed but the subclass may want to add fields */
+    if (klass->fixate_caps) {
+      othercaps = gst_caps_make_writable (othercaps);
+
+      GST_DEBUG_OBJECT (trans, "doing fixate %" GST_PTR_FORMAT
+          " using caps %" GST_PTR_FORMAT
+          " on pad %s:%s using fixate_caps vmethod", othercaps, caps,
+          GST_DEBUG_PAD_NAME (otherpad));
+
+      klass->fixate_caps (trans, GST_PAD_DIRECTION (pad), caps, othercaps);
+    }
   }
 
   /* caps should be fixed now, if not we have to fail. */