diff --git a/tests/testresample.c b/tests/testresample.c index aa83a46..640df5a 100644 --- a/tests/testresample.c +++ b/tests/testresample.c @@ -19,6 +19,8 @@ #define MIN(A, B) (A) < (B)? (A) : (B) +int global_error; + void runtest(int srclen, double freq, double factor, int srcblocksize, int dstblocksize) { @@ -65,10 +67,12 @@ void runtest(int srclen, double freq, double factor, if (o < 0) { printf("Error: resample_process returned an error: %d\n", o); + global_error = 1; } if (out <= 0) { printf("Error: resample_process returned %d samples\n", out); + global_error = 1; free(src); free(dst); return; @@ -79,15 +83,16 @@ void runtest(int srclen, double freq, double factor, printf(" Expected ~%d, got %d samples out\n", expectedlen, out); } - + sum = 0.0; sumsq = 0.0; errcount = 0.0; - /* Don't compute statistics on all output values; the last few - are guaranteed to be off because it's based on far less - interpolation. */ - statlen = out - fwidth; + /* Don't compute statistics on all output values; the last small fraction + are guaranteed to be off since they are interpolated based on far fewer + values. When upsampling, the length of the range where this concern + applies is in direct proportion to the upsampling factor. */ + statlen = out - ((int)round(fwidth * factor)); for(i=0; i