Mercurial > hg > qm-dsp
comparison dsp/rateconversion/TestResampler.cpp @ 364:01d7da967123
Save extra samples from one process to next (+ other fixes and debug out)
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Mon, 14 Oct 2013 08:15:51 +0100 |
parents | 2fe2ab316c8e |
children | ce50eef47bdf |
comparison
equal
deleted
inserted
replaced
363:2fe2ab316c8e | 364:01d7da967123 |
---|---|
39 int n, | 39 int n, |
40 double *in, | 40 double *in, |
41 int m, | 41 int m, |
42 double *expected) | 42 double *expected) |
43 { | 43 { |
44 //!!! to be useful, this should provide the input in varying-size chunks | 44 // Here we provide the input in chunks (of varying size) |
45 | 45 |
46 Resampler r(sourceRate, targetRate); | 46 Resampler r(sourceRate, targetRate); |
47 int latency = r.getLatency(); | 47 int latency = r.getLatency(); |
48 std::cerr << "latency = " << latency << std::endl; | 48 std::cerr << "latency = " << latency << std::endl; |
49 | 49 |
60 | 60 |
61 for (int i = 0; i < m1; ++i) { | 61 for (int i = 0; i < m1; ++i) { |
62 outPadded[i] = -999.0; | 62 outPadded[i] = -999.0; |
63 } | 63 } |
64 | 64 |
65 int got = r.process(inPadded, outPadded, n1); | 65 int chunkSize = 1; |
66 int got = 0; | |
67 int i = 0; | |
66 | 68 |
67 std::cerr << n1 << " in, " << got << " out" << std::endl; | 69 while (true) { |
70 std::cerr << "i = " << i << ", n1 = " << n1 << ", chunkSize = " << chunkSize << std::endl; | |
71 got += r.process(inPadded + i, outPadded + got, chunkSize); | |
72 i = i + chunkSize; | |
73 chunkSize = chunkSize + 1; | |
74 if (i + 1 >= n1) { | |
75 break; | |
76 } else if (i + chunkSize >= n1) { | |
77 chunkSize = n1 - i; | |
78 } | |
79 } | |
80 | |
81 // int got = r.process(inPadded, outPadded, n1); | |
82 std::cerr << i << " in, " << got << " out" << std::endl; | |
68 | 83 |
69 BOOST_CHECK_EQUAL(got, m1); | 84 BOOST_CHECK_EQUAL(got, m1); |
70 | 85 /* |
71 std::cerr << "results including latency padding:" << std::endl; | 86 std::cerr << "results including latency padding:" << std::endl; |
72 for (int i = 0; i < m1; ++i) { | 87 for (int i = 0; i < m1; ++i) { |
73 std::cerr << outPadded[i] << " "; | 88 std::cerr << outPadded[i] << " "; |
74 if (i % 6 == 5) std::cerr << "\n"; | 89 if (i % 6 == 5) std::cerr << "\n"; |
75 } | 90 } |
76 std::cerr << "\n"; | 91 std::cerr << "\n"; |
77 | 92 */ |
78 for (int i = latency; i < m1; ++i) { | 93 for (int i = latency; i < m1; ++i) { |
79 BOOST_CHECK_SMALL(outPadded[i] - expected[i-latency], 1e-8); | 94 BOOST_CHECK_SMALL(outPadded[i] - expected[i-latency], 1e-8); |
80 } | 95 } |
81 delete[] outPadded; | 96 delete[] outPadded; |
82 delete[] inPadded; | 97 delete[] inPadded; |