Mercurial > hg > qm-dsp
diff dsp/rateconversion/TestResampler.cpp @ 148:9db2712b3ce4
Avoid int overflow in resample; tidy
author | Chris Cannam |
---|---|
date | Fri, 18 Oct 2013 11:11:41 +0100 |
parents | c1e98c18628a |
children |
line wrap: on
line diff
--- a/dsp/rateconversion/TestResampler.cpp Thu Oct 17 22:12:36 2013 +0100 +++ b/dsp/rateconversion/TestResampler.cpp Fri Oct 18 11:11:41 2013 +0100 @@ -35,7 +35,7 @@ BOOST_CHECK_EQUAL(resampled.size(), m); } for (int i = 0; i < m; ++i) { - BOOST_CHECK_SMALL(resampled[i + skip] - expected[i], 1e-8); + BOOST_CHECK_SMALL(resampled[i + skip] - expected[i], 1e-6); } } @@ -93,7 +93,7 @@ delete[] outPadded; delete[] inPadded; } -/* + BOOST_AUTO_TEST_CASE(sameRateOneShot) { double d[] = { 0, 0.1, -0.3, -0.4, -0.3, 0, 0.5, 0.2, 0.8, -0.1 }; @@ -149,7 +149,7 @@ } testResamplerOneShot(16, 8, 2000, in, 200, out, 256); } -*/ + vector<double> squareWave(int rate, double freq, int n) { @@ -172,12 +172,8 @@ // One second of a square wave int freq = 500; - std::cerr << "inrate = " << inrate << ", outrate = " << outrate << ", freq * outrate / inrate = " << (double(freq) * double(outrate)) / double(inrate) << std::endl; - - std::cerr << "making square wave... "; vector<double> square = squareWave(inrate, freq, inrate); - std::cerr << "done" << std::endl; vector<double> maybeSquare = Resampler::resample(inrate, outrate, square.data(), square.size()); @@ -191,13 +187,13 @@ vector<double> inSpectrum(inrate, 0.0); FFTReal(inrate).forwardMagnitude(square.data(), inSpectrum.data()); - for (int i = 0; i < inSpectrum.size(); ++i) { + for (int i = 0; i < (int)inSpectrum.size(); ++i) { inSpectrum[i] /= inrate; } vector<double> outSpectrum(outrate, 0.0); FFTReal(outrate).forwardMagnitude(maybeSquare.data(), outSpectrum.data()); - for (int i = 0; i < outSpectrum.size(); ++i) { + for (int i = 0; i < (int)outSpectrum.size(); ++i) { outSpectrum[i] /= outrate; } @@ -213,8 +209,8 @@ BOOST_AUTO_TEST_CASE(spectrum) { int rates[] = { 8000, 22050, 44100, 48000 }; - for (int i = 0; i < sizeof(rates)/sizeof(rates[0]); ++i) { - for (int j = 0; j < sizeof(rates)/sizeof(rates[0]); ++j) { + for (int i = 0; i < (int)(sizeof(rates)/sizeof(rates[0])); ++i) { + for (int j = 0; j < (int)(sizeof(rates)/sizeof(rates[0])); ++j) { testSpectrum(rates[i], rates[j]); } }