# HG changeset patch # User Chris Cannam # Date 1383669413 0 # Node ID 0d79970811c796d0e3633bbda9b9eaa542f93dde # Parent 279991b6ebe7d1af2665764718d017353d2859dc Add std::vector-returning process call diff -r 279991b6ebe7 -r 0d79970811c7 dsp/rateconversion/Resampler.cpp --- a/dsp/rateconversion/Resampler.cpp Fri Nov 01 17:11:50 2013 +0000 +++ b/dsp/rateconversion/Resampler.cpp Tue Nov 05 16:36:53 2013 +0000 @@ -328,6 +328,17 @@ } std::vector +Resampler::process(const double *src, int n) +{ + int maxout = int(ceil(double(n) * m_targetRate / m_sourceRate)); + std::vector out(maxout, 0.0); + int got = process(src, out.data(), n); + assert(got <= maxout); + if (got < maxout) out.resize(got); + return out; +} + +std::vector Resampler::resample(int sourceRate, int targetRate, const double *data, int n) { Resampler r(sourceRate, targetRate); diff -r 279991b6ebe7 -r 0d79970811c7 dsp/rateconversion/Resampler.h --- a/dsp/rateconversion/Resampler.h Fri Nov 01 17:11:50 2013 +0000 +++ b/dsp/rateconversion/Resampler.h Tue Nov 05 16:36:53 2013 +0000 @@ -55,6 +55,12 @@ int process(const double *src, double *dst, int n); /** + * Read n input samples from src and return resampled data by + * value. + */ + std::vector process(const double *src, int n); + + /** * Return the number of samples of latency at the output due by * the filter. (That is, the output will be delayed by this number * of samples relative to the input.)