Mercurial > hg > qm-dsp
diff dsp/rateconversion/Resampler.cpp @ 374:3e5f13ac984f
Add bandwidth, snr parameters
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Fri, 18 Oct 2013 14:57:48 +0100 |
parents | 395771a6db7f |
children | 23558405a7d1 |
line wrap: on
line diff
--- a/dsp/rateconversion/Resampler.cpp Fri Oct 18 11:11:41 2013 +0100 +++ b/dsp/rateconversion/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;