diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2015-12-25 11:41:19 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2015-12-25 11:41:19 +0100 |
commit | 903c431d6d4ac6ca802306361144230057c232bd (patch) | |
tree | 17094b6dc07f456fcdde793ed18677c125fd8684 /gst/audiofx | |
parent | 75f21c86988bed75495bc263330bb4f9b88d95ad (diff) |
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.
Diffstat (limited to 'gst/audiofx')
-rw-r--r-- | gst/audiofx/gstscaletempo.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gst/audiofx/gstscaletempo.c b/gst/audiofx/gstscaletempo.c index 2601bf448..f859feeef 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); } |