00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef AUTOCORRELATION_H
00020 #define AUTOCORRELATION_H
00021
00022 #include "Typedefs.h"
00023 #include "Debug.h"
00024
00025 #include "FFT.h"
00026 #include "IFFT.h"
00027
00028 #include <limits>
00029
00060 class Autocorrelation {
00061 protected:
00062
00063 int _inputSize;
00064 int _minLag;
00065 int _maxLag;
00066 bool _useFft;
00067
00068
00069 int _calcMinLag;
00070 int _calcMaxLag;
00071 FFT _fft;
00072 IFFT _ifft;
00073 MatrixXC _tempFft;
00074 MatrixXR _temp;
00075
00076 public:
00089 Autocorrelation(int inputSize, int maxLag, int minLag, bool useFft);
00090 Autocorrelation(int inputSize, int maxLag, int minLag);
00091 Autocorrelation(int inputSize, int maxLag);
00092 Autocorrelation(int inputSize = 1024);
00093
00097 ~Autocorrelation();
00098
00099 void setup();
00100 void reset();
00101
00115 void process(const MatrixXR& frames, MatrixXR* autocorrelation);
00116
00123 int inputSize() const;
00124
00132 void setInputSize( int size, bool callSetup = true );
00133
00140 int minLag() const;
00141
00148 void setMinLag( int lag, bool callSetup = true );
00149
00156 int maxLag() const;
00157
00164 void setMaxLag( int lag, bool callSetup = true );
00165
00172 bool useFft() const;
00173
00179 void setUseFft( bool useFft, bool callSetup = true );
00180 };
00181
00182 #endif