00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __JackLibSampleRateResampler__
00021 #define __JackLibSampleRateResampler__
00022
00023 #include "JackResampler.h"
00024 #include <samplerate.h>
00025
00026 namespace Jack
00027 {
00028
00029 inline float Range(float min, float max, float val)
00030 {
00031 return (val < min) ? min : ((val > max) ? max : val);
00032 }
00033
00038 class JackLibSampleRateResampler : public JackResampler
00039 {
00040
00041 private:
00042
00043 SRC_STATE* fResampler;
00044 double fRatio;
00045
00046 public:
00047
00048 JackLibSampleRateResampler();
00049 virtual ~JackLibSampleRateResampler();
00050
00051 unsigned int ReadResample(float* buffer, unsigned int frames);
00052 unsigned int WriteResample(float* buffer, unsigned int frames);
00053
00054 void SetRatio(unsigned int num, unsigned int denom)
00055 {
00056 JackResampler::SetRatio(num, denom);
00057 fRatio = Range(0.25f, 4.0f, (double(num) / double(denom)));
00058 }
00059
00060 void Reset();
00061
00062 };
00063 }
00064
00065 #endif