lbajardsilogic@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@0: lbajardsilogic@0: /* lbajardsilogic@0: Sonic Visualiser lbajardsilogic@0: An audio file viewer and annotation editor. lbajardsilogic@0: Centre for Digital Music, Queen Mary, University of London. lbajardsilogic@0: This file copyright 2006 Chris Cannam and QMUL. lbajardsilogic@0: lbajardsilogic@0: This program is free software; you can redistribute it and/or lbajardsilogic@0: modify it under the terms of the GNU General Public License as lbajardsilogic@0: published by the Free Software Foundation; either version 2 of the lbajardsilogic@0: License, or (at your option) any later version. See the file lbajardsilogic@0: COPYING included with this distribution for more information. lbajardsilogic@0: */ lbajardsilogic@0: lbajardsilogic@0: #ifndef _FFT_API_H_ lbajardsilogic@0: #define _FFT_API_H_ lbajardsilogic@0: lbajardsilogic@0: #ifdef HAVE_FFTW3F lbajardsilogic@0: lbajardsilogic@0: #include lbajardsilogic@0: lbajardsilogic@0: #define fftf_complex fftwf_complex lbajardsilogic@0: #define fftf_malloc fftwf_malloc lbajardsilogic@0: #define fftf_free fftwf_free lbajardsilogic@0: #define fftf_plan fftwf_plan lbajardsilogic@0: #define fftf_plan_dft_r2c_1d fftwf_plan_dft_r2c_1d lbajardsilogic@0: #define fftf_plan_dft_c2r_1d fftwf_plan_dft_c2r_1d lbajardsilogic@0: #define fftf_execute fftwf_execute lbajardsilogic@0: #define fftf_destroy_plan fftwf_destroy_plan lbajardsilogic@0: lbajardsilogic@0: #else lbajardsilogic@0: lbajardsilogic@0: // Provide a fallback FFT implementation if FFTW3f is not available. lbajardsilogic@0: lbajardsilogic@0: typedef float fftf_complex[2]; lbajardsilogic@0: #define fftf_malloc malloc lbajardsilogic@0: #define fftf_free free lbajardsilogic@0: lbajardsilogic@0: struct fftf_plan_; lbajardsilogic@0: typedef fftf_plan_ *fftf_plan; lbajardsilogic@0: lbajardsilogic@0: fftf_plan fftf_plan_dft_r2c_1d(int n, float *in, fftf_complex *out, unsigned); lbajardsilogic@0: fftf_plan fftf_plan_dft_c2r_1d(int n, fftf_complex *in, float *out, unsigned); lbajardsilogic@0: void fftf_execute(const fftf_plan p); lbajardsilogic@0: void fftf_destroy_plan(fftf_plan p); lbajardsilogic@0: lbajardsilogic@0: #define FFTW_ESTIMATE 0 lbajardsilogic@0: lbajardsilogic@0: #endif lbajardsilogic@0: lbajardsilogic@0: #endif lbajardsilogic@0: