audiofxbaseiirfilter: check if coefficients are provided inside filter lock
authorDarryl Gamroth <dgamroth@uvic.ca>
Fri, 29 Nov 2013 00:54:58 +0000 (16:54 -0800)
committerStefan Sauer <ensonic@users.sf.net>
Sat, 22 Feb 2014 19:01:41 +0000 (20:01 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=719524

gst/audiofx/audiofxbaseiirfilter.c

index 1ce4d8b..93553e8 100644 (file)
@@ -372,16 +372,16 @@ gst_audio_fx_base_iir_filter_transform_ip (GstBaseTransform * base,
   if (GST_CLOCK_TIME_IS_VALID (stream_time))
     gst_object_sync_values (GST_OBJECT (filter), stream_time);
 
-  if (filter->a == NULL || filter->b == NULL) {
-    g_return_val_if_fail (filter->a != NULL
-        && filter->b != NULL, GST_FLOW_ERROR);
-    return GST_FLOW_ERROR;
-  }
-
   gst_buffer_map (buf, &map, GST_MAP_READWRITE);
   num_samples = map.size / GST_AUDIO_FILTER_BPS (filter);
 
   g_mutex_lock (&filter->lock);
+  if (filter->a == NULL || filter->b == NULL) {
+    g_warn_if_fail (filter->a != NULL && filter->b != NULL);
+    gst_buffer_unmap (buf, &map);
+    g_mutex_unlock (&filter->lock);
+    return GST_FLOW_ERROR;
+  }
   filter->process (filter, map.data, num_samples);
   g_mutex_unlock (&filter->lock);