Mercurial > hg > qm-dsp
diff dsp/transforms/FFT.cpp @ 299:5f2c9119a94a
* A few fixes prompted by vamp-plugin-tester
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Mon, 08 Jun 2009 12:30:20 +0000 |
parents | 255e431ae3d4 |
children | e5907ae6de17 |
line wrap: on
line diff
--- a/dsp/transforms/FFT.cpp Fri Jun 05 15:12:39 2009 +0000 +++ b/dsp/transforms/FFT.cpp Mon Jun 08 12:30:20 2009 +0000 @@ -199,6 +199,12 @@ m_n(n), m_private(0) { + if (m_n & 1) { + std::cerr << "Error: Odd FFT size " << m_n + << " not supported in this implementation" + << std::endl; + return; + } KissFFTRec *rec = new KissFFTRec; rec->forward = kiss_fft_alloc(m_n, 0, 0, 0); rec->inverse = kiss_fft_alloc(m_n, 1, 0, 0); @@ -209,6 +215,7 @@ FFT::~FFT() { + if (!m_private) return; KissFFTRec *rec = (KissFFTRec *)m_private; kiss_fft_free(rec->forward); kiss_fft_free(rec->inverse); @@ -221,6 +228,7 @@ const double *rin, const double *iin, double *rout, double *iout) { + if (!m_private) return; KissFFTRec *rec = (KissFFTRec *)m_private; for (int i = 0; i < m_n; ++i) { rec->in[i].r = rin[i]; @@ -255,6 +263,12 @@ m_n(n), m_private(0) { + if (m_n & 1) { + std::cerr << "Error: Odd FFT size " << m_n + << " not supported in this implementation" + << std::endl; + return; + } KissFFTRealRec *rec = new KissFFTRealRec; rec->forward = kiss_fftr_alloc(m_n, 0, 0, 0); rec->inverse = kiss_fftr_alloc(m_n, 1, 0, 0); @@ -264,6 +278,7 @@ FFTReal::~FFTReal() { + if (!m_private) return; KissFFTRealRec *rec = (KissFFTRealRec *)m_private; kiss_fftr_free(rec->forward); kiss_fftr_free(rec->inverse); @@ -275,6 +290,7 @@ const double *rin, double *rout, double *iout) { + if (!m_private) return; KissFFTRealRec *rec = (KissFFTRealRec *)m_private; if (inverse) { kiss_fftr(rec->inverse, rin, rec->out);