]> sjero.net Git - linphone/blob - linphone/mediastreamer2/src/kiss_fftr.h
remote ortp and add it as a submodule instead.
[linphone] / linphone / mediastreamer2 / src / kiss_fftr.h
1 #ifndef KISS_FTR_H
2 #define KISS_FTR_H
3
4 #include "kiss_fft.h"
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8
9 #define kiss_fftr_alloc ms_kiss_fftr_alloc
10 #define kiss_fftr       ms_kiss_fftr
11 #define kiss_fftr2      ms_kiss_fftr2
12 #define kiss_fftri      ms_kiss_fftri
13 #define kiss_fftri2     ms_kiss_fftri2
14
15
16 /* 
17  
18  Real optimized version can save about 45% cpu time vs. complex fft of a real seq.
19
20  
21  
22  */
23
24 typedef struct kiss_fftr_state *kiss_fftr_cfg;
25
26
27 kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenmem);
28 /*
29  nfft must be even
30
31  If you don't care to allocate space, use mem = lenmem = NULL 
32 */
33
34
35 void kiss_fftr(kiss_fftr_cfg cfg,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata);
36 /*
37  input timedata has nfft scalar points
38  output freqdata has nfft/2+1 complex points
39 */
40
41 void kiss_fftr2(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_scalar *freqdata);
42
43 void kiss_fftri(kiss_fftr_cfg cfg,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata);
44
45 void kiss_fftri2(kiss_fftr_cfg st,const kiss_fft_scalar *freqdata, kiss_fft_scalar *timedata);
46
47 /*
48  input freqdata has  nfft/2+1 complex points
49  output timedata has nfft scalar points
50 */
51
52 #define kiss_fftr_free ms_free
53
54 #ifdef __cplusplus
55 }
56 #endif
57 #endif