From: Paul Brossier Date: Thu, 20 Aug 2015 11:15:54 +0000 (+0200) Subject: src/spectral/fft.c: if Ooura is used, make sure the fft size is a power of two X-Git-Tag: 0.4.4~301^2~26 X-Git-Url: https://git.aubio.org/?a=commitdiff_plain;h=3c6f5846c9649b270115758f3566462f7474ac13;p=aubio.git src/spectral/fft.c: if Ooura is used, make sure the fft size is a power of two --- diff --git a/src/spectral/fft.c b/src/spectral/fft.c index 3b29b8ee..5be398f5 100644 --- a/src/spectral/fft.c +++ b/src/spectral/fft.c @@ -167,6 +167,11 @@ aubio_fft_t * new_aubio_fft (uint_t winsize) { s->fftSetup = vDSP_create_fftsetupD(s->log2fftsize, FFT_RADIX2); #endif #else // using OOURA + if (aubio_is_power_of_two(winsize) != 1) { + AUBIO_ERR("fft: can only create with sizes power of two," + " requested %d\n", winsize); + return NULL; + } s->winsize = winsize; s->fft_size = winsize / 2 + 1; s->compspec = new_fvec(winsize); diff --git a/tests/src/spectral/test-fft.c b/tests/src/spectral/test-fft.c index beef5ca3..72db5302 100644 --- a/tests/src/spectral/test-fft.c +++ b/tests/src/spectral/test-fft.c @@ -2,6 +2,7 @@ int main (void) { + int return_code = 0; uint_t i, n_iters = 100; // number of iterations uint_t win_s = 500; // window size fvec_t * in = new_fvec (win_s); // input buffer @@ -10,6 +11,11 @@ int main (void) // create fft object aubio_fft_t * fft = new_aubio_fft(win_s); + if (!fft) { + return_code = 1; + goto beach; + } + // fill input with some data in->data[0] = 1; in->data[1] = 2; @@ -33,9 +39,10 @@ int main (void) // cleam up //fvec_print(out); del_aubio_fft(fft); +beach: del_fvec(in); del_cvec(fftgrain); del_fvec(out); aubio_cleanup(); - return 0; + return return_code; }