Further reset tests

This commit is contained in:
Chris Cannam
2023-03-23 17:26:36 +00:00
parent 963752951d
commit fbb4979f87

View File

@@ -1285,10 +1285,12 @@ static void with_resets(RubberBandStretcher::Options options,
// 5. Reset called again, timeRatio and pitchScale set again (to // 5. Reset called again, timeRatio and pitchScale set again (to
// the same things, just in case the act of setting them // the same things, just in case the act of setting them
// changes anything) and run again // changes anything) and run again
// 6. More input supplied and left in stretcher (output not
// retrieved) - then reset called and run again
for (int run = 1; run <= 4; ++run) { // run being index into list above for (int run = 1; run <= 6; ++run) { // run being index into list above
float *inp = in.data(), *outRefp = outRef.data(), *outp = out.data(); float *inp = in.data(), *outp = out.data();
if (run == 1 || run == 3) { if (run == 1 || run == 3) {
delete stretcher; delete stretcher;
@@ -1302,7 +1304,7 @@ static void with_resets(RubberBandStretcher::Options options,
} }
} }
if (run == 2 || run == 4 || run == 5) { if (run == 2 || run > 3) {
stretcher->reset(); stretcher->reset();
if (run == 5) { if (run == 5) {
stretcher->setTimeRatio(timeRatio); stretcher->setTimeRatio(timeRatio);
@@ -1310,6 +1312,16 @@ static void with_resets(RubberBandStretcher::Options options,
} }
} }
if (run == 6) {
if (realtime) {
stretcher->process(&inp, n / 2, false);
} else {
stretcher->study(&inp, n / 2, true);
stretcher->process(&inp, n / 2, false);
}
stretcher->reset();
}
// In every case we request nOut samples into out, and nActual // In every case we request nOut samples into out, and nActual
// records how many we actually get // records how many we actually get
int nActual = 0; int nActual = 0;