From 903c431d6d4ac6ca802306361144230057c232bd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 25 Dec 2015 11:41:19 +0100 Subject: [PATCH] scaletempo: Free the various buffers in GstBaseTransform::stop() Previously we leaked them completely, but as they're specific to the caps freeing them in stop() instead of finalize() makes most sense. --- gst/audiofx/gstscaletempo.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gst/audiofx/gstscaletempo.c b/gst/audiofx/gstscaletempo.c index 2601bf4..f859fee 100644 --- a/gst/audiofx/gstscaletempo.c +++ b/gst/audiofx/gstscaletempo.c @@ -699,6 +699,25 @@ gst_scaletempo_start (GstBaseTransform * trans) } static gboolean +gst_scaletempo_stop (GstBaseTransform * trans) +{ + GstScaletempo *scaletempo = GST_SCALETEMPO (trans); + + g_free (scaletempo->buf_queue); + scaletempo->buf_queue = NULL; + g_free (scaletempo->buf_overlap); + scaletempo->buf_overlap = NULL; + g_free (scaletempo->table_blend); + scaletempo->table_blend = NULL; + g_free (scaletempo->buf_pre_corr); + scaletempo->buf_pre_corr = NULL; + g_free (scaletempo->table_window); + scaletempo->table_window = NULL; + + return TRUE; +} + +static gboolean gst_scaletempo_query (GstBaseTransform * trans, GstPadDirection direction, GstQuery * query) { @@ -857,6 +876,7 @@ gst_scaletempo_class_init (GstScaletempoClass * klass) basetransform_class->transform = GST_DEBUG_FUNCPTR (gst_scaletempo_transform); basetransform_class->query = GST_DEBUG_FUNCPTR (gst_scaletempo_query); basetransform_class->start = GST_DEBUG_FUNCPTR (gst_scaletempo_start); + basetransform_class->stop = GST_DEBUG_FUNCPTR (gst_scaletempo_stop); basetransform_class->submit_input_buffer = GST_DEBUG_FUNCPTR (gst_scaletempo_submit_input_buffer); } -- 2.7.4