diff dsp/rateconversion/Resampler.cpp @ 160:0a47ec0a1a56

Add std::vector-returning process call
author Chris Cannam
date Tue, 05 Nov 2013 16:36:53 +0000
parents edb86e0d850c
children 5f720340b0dd
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);