Mercurial > hg > qm-dsp
changeset 385:0d79970811c7
Add std::vector-returning process call
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Tue, 05 Nov 2013 16:36:53 +0000 |
parents | 279991b6ebe7 |
children | 6acd63422d44 |
files | dsp/rateconversion/Resampler.cpp dsp/rateconversion/Resampler.h |
diffstat | 2 files changed, 17 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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<double> +Resampler::process(const double *src, int n) +{ + int maxout = int(ceil(double(n) * m_targetRate / m_sourceRate)); + std::vector<double> out(maxout, 0.0); + int got = process(src, out.data(), n); + assert(got <= maxout); + if (got < maxout) out.resize(got); + return out; +} + +std::vector<double> Resampler::resample(int sourceRate, int targetRate, const double *data, int n) { Resampler r(sourceRate, targetRate);
--- 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<double> 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.)