/* FrvTF.h by F. Marion and B. Mours Mau 01, 2002 */ #ifndef FRVTF #define FRVTF #ifndef _POSIX_SOURCE #define _POSIX_SOURCE #endif #include "FrameL.h" #include "FrvBuf.h" #include "FrvFFT.h" #ifdef __cplusplus extern "C" { #endif struct FrvTF { /*--------------------- input data -------------*/ double decay; /* decay time for averageing (could by changed) */ long nDecay; /* #of fft for the mean spectrum(could be reset)*/ int outSize; /* number of bin for the transfert function */ int decimate; /* decimation */ /*------------------- internal data ------------*/ FRBOOL optionC; /* if = FR_YES compute the coherence */ FRBOOL optionE; /* if = FR_YES compute the TF errors */ FrVect *output; /* transfer function (last) */ FrVect *correlation; /* mean correaltion in the frequency domain */ FrVect *modulus; /* transfer function: module (mean) */ FrVect *phase; /* transfer function: phase (mean) */ FrVect *coherence; /* transfer function: coherence (if optionC=YES)*/ FrVect *errorM; /* error on the module (if optionE=YES) */ FrVect *errorP; /* error on the phase (if optionE=YES) */ FrvBuf *bufferS; /* buffer for the signal */ FrvBuf *bufferR; /* buffer for the reference */ FrvRFFT *fftS; /* fft for the signal */ FrvRFFT *fftR; /* fft for the reference */ long nCall; /* number of calls */ char err[256]; /* hold error message if any */ }; typedef struct FrvTF FrvTF; void FrvTFError(FrvTF *tf); void FrvTFFree(FrvTF *tf); int FrvTFInit(FrvTF *tf, FrVect *signal, FrVect *ref); FrvTF* FrvTFNew(char* option, int outsize, int decimate); int FrvTFProc(FrvTF *tf, FrVect *signal, FrVect *ref); void FrvTFSetDecay(FrvTF* tf, double decay); #ifdef __cplusplus } #endif #endif