some index work (simplifications for dumb compilers) on IMDCT
[opus.git] / libcelt / kiss_fft.h
index fb1c9d0..f71a839 100644 (file)
@@ -36,18 +36,36 @@ extern "C" {
 #ifdef DOUBLE_PRECISION
 #  define kiss_fft_scalar celt_int32_t
 #  define kiss_twiddle_scalar celt_int32_t
+#  define KF_SUFFIX _celt_double
 #else
 #  define kiss_fft_scalar celt_int16_t
 #  define kiss_twiddle_scalar celt_int16_t
+#  define KF_SUFFIX _celt_single
 #endif
 #else
 # ifndef kiss_fft_scalar
 /*  default is float */
 #   define kiss_fft_scalar float
 #   define kiss_twiddle_scalar float
+#   define KF_SUFFIX _celt_single
 # endif
 #endif
 
+
+/* This adds a suffix to all the kiss_fft functions so we
+   can easily link with more than one copy of the fft */
+#define CAT_SUFFIX(a,b) a ## b
+#define SUF(a,b) CAT_SUFFIX(a, b)
+
+#define kiss_fft_alloc SUF(kiss_fft_alloc,KF_SUFFIX)
+#define kf_work SUF(kf_work,KF_SUFFIX)
+#define ki_work SUF(ki_work,KF_SUFFIX)
+#define kiss_fft SUF(kiss_fft,KF_SUFFIX)
+#define kiss_ifft SUF(kiss_ifft,KF_SUFFIX)
+#define kiss_fft_stride SUF(kiss_fft_stride,KF_SUFFIX)
+#define kiss_ifft_stride SUF(kiss_ifft_stride,KF_SUFFIX)
+
+
 typedef struct {
     kiss_fft_scalar r;
     kiss_fft_scalar i;
@@ -85,6 +103,9 @@ typedef struct kiss_fft_state* kiss_fft_cfg;
 
 kiss_fft_cfg kiss_fft_alloc(int nfft,void * mem,size_t * lenmem); 
 
+void kf_work(kiss_fft_cpx * Fout,const kiss_fft_cpx * f,const size_t fstride,
+             int in_stride,int * factors,const kiss_fft_cfg st,int N,int s2,int m2);
+
 /** Internal function. Can be useful when you want to do the bit-reversing yourself */
 void ki_work(kiss_fft_cpx * Fout, const kiss_fft_cpx * f, const size_t fstride,
              int in_stride,int * factors,const kiss_fft_cfg st,int N,int s2,int m2);
@@ -112,12 +133,6 @@ void kiss_ifft_stride(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fou
    buffer and can be simply free()d when no longer needed*/
 #define kiss_fft_free celt_free
 
-/**
- Cleans up some memory that gets managed internally. Not necessary to call, but it might clean up 
- your compiler output to call this before you exit.
-*/
-void kiss_fft_cleanup(void);
-       
 
 #ifdef __cplusplus
 }