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.)