basetransform: Passthrough ALLOCATION queries in passthrough mode even if we had...
authorSebastian Dröge <sebastian@centricular.com>
Mon, 26 May 2014 12:23:13 +0000 (14:23 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 26 May 2014 12:24:15 +0000 (14:24 +0200)
Or if the element does not care about caps at all.

Also remove an assigned but unused local variable.

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

libs/gst/base/gstbasetransform.c

index f82a9b8..a7e493f 100644 (file)
@@ -1457,16 +1457,15 @@ gst_base_transform_default_query (GstBaseTransform * trans,
     case GST_QUERY_ALLOCATION:
     {
       GstQuery *decide_query = NULL;
-      gboolean negotiated;
 
       /* can only be done on the sinkpad */
       if (direction != GST_PAD_SINK)
         goto done;
 
       GST_OBJECT_LOCK (trans);
-      if (G_UNLIKELY (!(negotiated = priv->negotiated))) {
+      if (!priv->negotiated && !priv->passthrough && (klass->set_caps != NULL)) {
         GST_DEBUG_OBJECT (trans,
-            "not negotiated yet, can't answer ALLOCATION query");
+            "not negotiated yet but need negotiation, can't answer ALLOCATION query");
         GST_OBJECT_UNLOCK (trans);
         goto done;
       }