audiointerleave: Avoid caps processing if not yet negotiated
authorOlivier Crête <olivier.crete@collabora.com>
Thu, 2 Jul 2015 22:33:43 +0000 (18:33 -0400)
committerOlivier Crête <olivier.crete@collabora.com>
Thu, 30 Jul 2015 18:00:05 +0000 (14:00 -0400)
https://bugzilla.gnome.org/show_bug.cgi?id=745768

gst/audiomixer/gstaudiointerleave.c

index 01ce19c..39b86e8 100644 (file)
@@ -514,6 +514,11 @@ gst_audio_interleave_aggregate (GstAggregator * aggregator, gboolean timeout)
     GstStructure *s;
     gboolean ret;
 
+    if (self->sinkcaps == NULL || self->channels == 0) {
+      /* In this case, let the base class handle it */
+      goto not_negotiated;
+    }
+
     srccaps = gst_caps_copy (self->sinkcaps);
     s = gst_caps_get_structure (srccaps, 0);
 
@@ -535,6 +540,8 @@ gst_audio_interleave_aggregate (GstAggregator * aggregator, gboolean timeout)
 
     self->new_caps = FALSE;
   }
+
+not_negotiated:
   GST_OBJECT_UNLOCK (aggregator);
 
   return GST_AGGREGATOR_CLASS (parent_class)->aggregate (aggregator, timeout);