diff -r 4b0c6ed43234 -r 8e837d1bf446 gst_plugins_base/gst-libs/gst/fft/gstfftf32.c --- a/gst_plugins_base/gst-libs/gst/fft/gstfftf32.c Wed Mar 24 17:58:42 2010 -0500 +++ b/gst_plugins_base/gst-libs/gst/fft/gstfftf32.c Wed Mar 24 18:04:17 2010 -0500 @@ -20,6 +20,7 @@ #include #include +#include "_kiss_fft_guts_f32.h" #include "kiss_fftr_f32.h" #include "gstfft.h" #include "gstfftf32.h" @@ -78,13 +79,18 @@ gst_fft_f32_new (gint len, gboolean inverse) { GstFFTF32 *self; + gsize subsize = 0, memneeded; g_return_val_if_fail (len > 0, NULL); g_return_val_if_fail (len % 2 == 0, NULL); - self = g_new (GstFFTF32, 1); + kiss_fftr_f32_alloc (len, (inverse) ? 1 : 0, NULL, &subsize); + memneeded = ALIGN_STRUCT (sizeof (GstFFTF32)) + subsize; - self->cfg = kiss_fftr_f32_alloc (len, (inverse) ? 1 : 0, NULL, NULL); + self = (GstFFTF32 *) g_malloc0 (memneeded); + + self->cfg = (((guint8 *) self) + ALIGN_STRUCT (sizeof (GstFFTF32))); + self->cfg = kiss_fftr_f32_alloc (len, (inverse) ? 1 : 0, self->cfg, &subsize); g_assert (self->cfg); self->inverse = inverse; @@ -168,7 +174,6 @@ void gst_fft_f32_free (GstFFTF32 * self) { - kiss_fftr_f32_free (self->cfg); g_free (self); }