Files
jens 5a5a5cfd57 Initial import
git-svn-id: http://moon:8086/svn/software/trunk/libsrc/avfft@1 b431acfa-c32f-4a4a-93f1-934dc6c82436
2014-07-19 07:44:42 +00:00

57 lines
2.3 KiB
C
Executable File

/***************************************************************************/
/* FFT.H */
/* Fast-Fourier-Transformation
/* Author: Jens Ahrensfeld */
/* Datum : 24.06.1999 */
/* letzte Änderung: 09.06.2000 */
/***************************************************************************/
/* Tabellen und Funktionen für die FFT */
/***************************************************************************/
#ifndef FFT_H
#define FFT_H
#define PI 3.1415926535897932384626433832795
#define fft_float_t FLOAT32
#define FFT_ERROR 0x80000000
typedef struct _sfft_t
{
UINT32 m_numPoints, m_numStages;
fft_float_t *pTwfRe, *pTwfIm;
} fft_t;
typedef struct _sfft2_t
{
fft_t *pXfft, *pYfft;
UINT32 m_Nx, m_Ny;
} fft2_t;
/* DFT functions */
extern void DFT(fft_float_t *pDataR, fft_float_t *pDataI, UINT32 N);
extern void IDFT(fft_float_t *pDataR, fft_float_t *pDataI, UINT32 N);
/* FFT functions */
extern void FFTinit(fft_t *pFFT, UINT32 N);
extern void FFTfree(fft_t *pFFT);
extern void fft(fft_t *pFFT, fft_float_t*, fft_float_t*);
extern void ifft(fft_t *pFFT, fft_float_t*, fft_float_t*);
extern void ffts(fft_t *pFFT, fft_float_t *in_re, fft_float_t *in_im);
extern void FFTCalcTwiddleTable (fft_float_t *pRealData, fft_float_t *pImagData, UINT32 numPoints);
/* 2D FFT functions */
extern void FFT2Dinit(fft2_t *pFFT, UINT32 Nx, UINT32 Ny);
extern void FFT2Dfree(fft2_t *pFFT);
extern void fft2d(fft2_t *pFFT, fft_float_t **ppReal, fft_float_t **ppImag);
extern void ifft2d(fft2_t *pFFT, fft_float_t **ppReal, fft_float_t **ppImag);
/* Helper functions */
extern void Scale(fft_float_t *pRealData, fft_float_t *pImagData , fft_float_t scaleFactor, UINT32 N);
extern void Modulus(fft_float_t *pRealData, fft_float_t *pImagData, UINT32 N);
extern void Hanning (fft_float_t *pRealData, fft_float_t *pImagData, UINT32 N, UINT32 maximum);
extern fft_float_t hanning_k (UINT32, UINT32);
extern fft_float_t gauss_k(UINT32, UINT32, UINT32);
extern UINT32 IsPowerOfTwo(UINT32 N);
#endif /* FFT_H */