00001 #ifndef KFC_H 00002 #define KFC_H 00003 #include "kiss_fft.h" 00004 00005 #ifdef __cplusplus 00006 extern "C" { 00007 #endif 00008 00009 /* 00010 KFC -- Kiss FFT Cache 00011 00012 Not needing to deal with kiss_fft_alloc and a config 00013 object may be handy for a lot of programs. 00014 00015 KFC uses the underlying KISS FFT functions, but caches the config object. 00016 The first time kfc_fft or kfc_ifft for a given FFT size, the cfg 00017 object is created for it. All subsequent calls use the cached 00018 configuration object. 00019 00020 NOTE: 00021 You should probably not use this if your program will be using a lot 00022 of various sizes of FFTs. There is a linear search through the 00023 cached objects. If you are only using one or two FFT sizes, this 00024 will be negligible. Otherwise, you may want to use another method 00025 of managing the cfg objects. 00026 00027 There is no automated cleanup of the cached objects. This could lead 00028 to large memory usage in a program that uses a lot of *DIFFERENT* 00029 sized FFTs. If you want to force all cached cfg objects to be freed, 00030 call kfc_cleanup. 00031 00032 */ 00033 00034 /*forward complex FFT */ 00035 void kfc_fft(int nfft, const kiss_fft_cpx * fin,kiss_fft_cpx * fout); 00036 /*reverse complex FFT */ 00037 void kfc_ifft(int nfft, const kiss_fft_cpx * fin,kiss_fft_cpx * fout); 00038 00039 /*free all cached objects*/ 00040 void kfc_cleanup(void); 00041 00042 #ifdef __cplusplus 00043 } 00044 #endif 00045 00046 #endif