22 #ifndef TWOPASSSINCRESAMPLER_H
23 #define TWOPASSSINCRESAMPLER_H
29 #include "Resampler.h"
30 #include "SincResampler.h"
43 std::unique_ptr<SincResampler>
const s1;
44 std::unique_ptr<SincResampler>
const s2;
47 TwoPassSincResampler(
double clockFrequency,
double samplingFrequency,
double highestAccurateFrequency,
double intermediateFrequency) :
48 s1(
new SincResampler(clockFrequency, intermediateFrequency, highestAccurateFrequency)),
49 s2(
new SincResampler(intermediateFrequency, samplingFrequency, highestAccurateFrequency))
54 static TwoPassSincResampler* create(
double clockFrequency,
double samplingFrequency,
double highestAccurateFrequency)
58 double const intermediateFrequency = 2. * highestAccurateFrequency
59 + sqrt(2. * highestAccurateFrequency * clockFrequency
60 * (samplingFrequency - 2. * highestAccurateFrequency) / samplingFrequency);
61 return new TwoPassSincResampler(clockFrequency, samplingFrequency, highestAccurateFrequency, intermediateFrequency);
66 return s1->input(sample) && s2->input(s1->output());
69 int output()
const override