1 /* 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the ../../../LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 /*--------------------------------*-C-*---------------------------------* 12 * File: 13 * fftn.h 14 * ---------------------------------------------------------------------* 15 * Re[]: real value array 16 * Im[]: imaginary value array 17 * nTotal: total number of complex values 18 * nPass: number of elements involved in this pass of transform 19 * nSpan: nspan/nPass = number of bytes to increment pointer 20 * in Re[] and Im[] 21 * isign: exponent: +1 = forward -1 = reverse 22 * scaling: normalizing constant by which the final result is *divided* 23 * scaling == -1, normalize by total dimension of the transform 24 * scaling < -1, normalize by the square-root of the total dimension 25 * 26 * ---------------------------------------------------------------------- 27 * See the comments in the code for correct usage! 28 */ 29 30 #ifndef MODULES_THIRD_PARTY_FFT_FFT_H_ 31 #define MODULES_THIRD_PARTY_FFT_FFT_H_ 32 33 #define FFT_MAXFFTSIZE 2048 34 #define FFT_NFACTOR 11 35 36 typedef struct { 37 unsigned int SpaceAlloced; 38 unsigned int MaxPermAlloced; 39 double Tmp0[FFT_MAXFFTSIZE]; 40 double Tmp1[FFT_MAXFFTSIZE]; 41 double Tmp2[FFT_MAXFFTSIZE]; 42 double Tmp3[FFT_MAXFFTSIZE]; 43 int Perm[FFT_MAXFFTSIZE]; 44 int factor[FFT_NFACTOR]; 45 46 } FFTstr; 47 48 /* double precision routine */ 49 50 int WebRtcIsac_Fftns(unsigned int ndim, 51 const int dims[], 52 double Re[], 53 double Im[], 54 int isign, 55 double scaling, 56 FFTstr* fftstate); 57 58 #endif /* MODULES_THIRD_PARTY_FFT_FFT_H_ */ 59