Mercurial > hg > decimation
diff garage-resampler/Resampler.cpp @ 16:66abf86c864d
Add bandwidth, snr parameters
author | Chris Cannam |
---|---|
date | Fri, 18 Oct 2013 14:57:48 +0100 |
parents | 381823e25b8a |
children |
line wrap: on
line diff
--- a/garage-resampler/Resampler.cpp Fri Oct 18 13:08:00 2013 +0100 +++ b/garage-resampler/Resampler.cpp Fri Oct 18 14:57:48 2013 +0100 @@ -21,7 +21,15 @@ m_sourceRate(sourceRate), m_targetRate(targetRate) { - initialise(); + initialise(100, 0.02); +} + +Resampler::Resampler(int sourceRate, int targetRate, + double snr, double bandwidth) : + m_sourceRate(sourceRate), + m_targetRate(targetRate) +{ + initialise(snr, bandwidth); } Resampler::~Resampler() @@ -37,7 +45,7 @@ knownFilterMutex; void -Resampler::initialise() +Resampler::initialise(double snr, double bandwidth) { int higher = std::max(m_sourceRate, m_targetRate); int lower = std::min(m_sourceRate, m_targetRate); @@ -47,7 +55,7 @@ int peakToPole = higher / m_gcd; KaiserWindow::Parameters params = - KaiserWindow::parametersForBandwidth(100, 0.02, peakToPole); + KaiserWindow::parametersForBandwidth(snr, bandwidth, peakToPole); params.length = (params.length % 2 == 0 ? params.length + 1 : params.length); @@ -269,6 +277,7 @@ // NB gcc can only vectorize this with -ffast-math v += buf[i] * filt[i]; } + m_bufferOrigin += pd.drop; m_phase = pd.nextPhase; return v;