00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef RESAMPLE_H
00020 #define RESAMPLE_H
00021
00022 #include "Typedefs.h"
00023 #include "Debug.h"
00024
00025 #include <samplerate.h>
00026
00050 class Resample{
00051 public:
00058 enum ResamplingMethod {
00059 SINC_BEST_QUALITY = 0 ,
00060 SINC_MEDIUM_QUALITY = 1 ,
00061 SINC_FASTEST = 2 ,
00062 ZERO_ORDER_HOLD = 3 ,
00063 LINEAR = 4
00064 };
00065
00066 protected:
00067 int _inputSize;
00068 int _outputSize;
00069 Real _resamplingRatio;
00070 ResamplingMethod _resamplingMethod;
00071
00072 SRC_DATA _resampleData;
00073
00074 public:
00090 Resample(int inputSize = 1024, int outputSize = 1024, Real resamplingRatio = 1.0, ResamplingMethod resamplingMethod = SINC_BEST_QUALITY);
00091
00095 ~Resample();
00096
00110 void process(const MatrixXR& frames, MatrixXR* resampled);
00111
00112 void setup();
00113 void reset();
00114
00120 int inputSize() const;
00121
00125 void setInputSize( int size, bool callSetup = true );
00126
00132 int outputSize() const;
00133
00137 void setOutputSize( int size, bool callSetup = true );
00138
00145 Real resamplingRatio() const;
00146
00150 void setResamplingRatio( Real ratio, bool callSetup = true );
00151
00157 ResamplingMethod resamplingMethod() const;
00158
00162 void setResamplingMethod( ResamplingMethod method, bool callSetup = true );
00163
00164 };
00165
00166 #endif