[Speex-dev] Re: AEC FFT replacement for TI 55x

Jean-Marc Valin jean-marc.valin at usherbrooke.ca
Mon Jan 22 01:58:18 PST 2007


Hi Jerry,

I'd say the best would be to simply replace the
#ifdef USE_SMALLFT
by
#ifdef USE_TI_FFT
#include "ti_fft_wrapper.h"
#elif defined(USE_SMALLFT)
and have everything in the include file. There's no real point in
overriding individual functions since they all go together.

Also, make sure you wrap the FFT in the same way as I did with the
fixed-point kissfft. For example, the forward fft is normalised, while
the backward one isn't. Also, in some cases, I do some renormalisation
before the fft to increase accuracy.

Please send me the patch when you have something working. I'm sure other
people would be interested.

	Jean-Marc

Jerry Trantow a écrit :
> I am in the process of dropping the TI DSP lib fft routines into the AEC.  
> 
> Currently, FFTWrap.c uses the USE_SMALLFT and USE_KISS_FFT to select between
> two packages of FFT routines.  ]
> 
> #ifdef USE_SMALLFT
> 	...
> #elif defined(USE_KISS_FFT)
> 	...
> #else
> 	#error No other FFT implemented
> #endif
> 
> My guess is that every DSP and many other processors will have their own
> specific FFT and iFFT.  What method should be used to drop in a DSP specific
> FFT?  
> Should just use something like this for fftwrap.c?
> 
> #if defined(__TMS320C55X__)
> 	#include "FFT_TI55.h"
> #endif
> 
> #ifdef USE_SMALLFT
> 	...
> #elif defined(USE_KISS_FFT)
> 	...
> #else	// Use FFTWrap_*.h file to supply processor specific functions.
> 	#if defined(OVERRIDE_FFT_INIT)
> 		void *spx_fft_init(int size) {};
> 	#endif
> 	#if defined(OVERRIDE_FFT_INIT)
> 		void spx_fft_destroy(void *table) {};
> 	#endif
> 	#if defined(OVERRIDE_FFT_INIT)
> 		void spx_fft(void *table, float *in, float *out) {};
> 	#endif
> 	#if defined(OVERRIDE_FFT_INIT)
> 		void spx_ifft(void *table, float *in, float *out) {};
> 	#endif 
> #endif
> 
> 
> 


More information about the Speex-dev mailing list