00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef DCT_H
00020 #define DCT_H
00021
00022 #include "Typedefs.h"
00023 #include "Debug.h"
00024
00049 class DCT {
00050 public:
00057 enum DCTType {
00058 I = 0 ,
00059 II = 1 ,
00060 III = 2 ,
00061 IV = 3 ,
00062 OCTAVE = 4
00063 };
00064
00065 protected:
00066
00067 int _inputSize;
00068 int _dctSize;
00069 Real _scale;
00070
00071 DCTType _dctType;
00072
00073
00074 MatrixXR _dctMatrix;
00075
00076 void type1Matrix(MatrixXR* dctMatrix);
00077
00078 void type2Matrix(MatrixXR* dctMatrix);
00079
00080 void typeOctaveMatrix(MatrixXR* dctMatrix);
00081
00082 public:
00087 DCT(int inputSize = 1024, int dctSize = 1024, bool scale = false, DCTType dctType = OCTAVE);
00088
00092 ~DCT();
00093
00094 void reset();
00095 void setup();
00096
00110 void process(const MatrixXR& frames, MatrixXR* dct);
00111
00117 DCTType dctType() const;
00118
00122 void setDctType( DCTType type, bool callSetup = true );
00123
00130 int inputSize() const;
00131
00139 void setInputSize( int size, bool callSetup = true );
00140
00150 int dctSize() const;
00151
00161 void setDctSize( int size, bool callSetup = true );
00162 };
00163
00164 #endif