Hi! Let me reply only partially, On Mon, Oct 16, 2017 at 01:10:13AM +0200, Tim Janik wrote:
Btw, the slow suites of resampler tests are still available to
be run manually with:
make tests-testresampler-check-perf # passes fine
make tests-testresampler-check-all
The later fails here, with:
tests/testresampler accuracy --up --precision=24 --freq-scan=50,18000,50 --max-threshold=126.5 # ideally:
144dB
# accuracy test for factor 2 upsampling using SSE instructions
# input frequency range used [ 50.00 Hz, 18000.00 Hz ] (SR = 44100.0 Hz, freq increment = 50.00)
# max difference between correct and computed output: 0.000000 = -126.489977 dB
# (threshold given by user: -126.500000 dB)
tests/testresampler.cc:523: assertion failed: max_diff_db < options.max_threshold_db
Not sure how bad this is, input is appreciated.
The threshold problem is not bad, I looked at the actual output. This can be
easily fixed by a minimal change to the threshold option. Fix is in my branch.
However we have a bigger problem, which I found while looking at the issue:
Both, the FPU and SSE variant of the resampler code need to be tested
(depending on the testresampler --fpu option). From looking at the source code
testresampler tries to enforce this by passing --bse-force-fpu bse_init_test()
if the FPU variant is to be tested. However, currently this doesn't have the
desired effect. So we always test SSE (and never test FPU), which is bad.
Option #1: make --bse-force-fpu do what it used to do.
Option #2: I looked at what bse/tests/blocktests.cc does. Apparently the FPU is
used if we init without Bse::cstrings_to_vector ("load-core-plugins=1", NULL)
I've committed a complete solution based on that on the resampler-test-fix
branch of my beast repo. If you want to go that way, I'd recommend removing
the bse-force-fpu option completely.
https://github.com/swesterfeld/beast/tree/resampler-test-fix
Cu... Stefan
--
Stefan Westerfeld, http://space.twc.de/~stefan
Attachment:
res-sse-fpu.diff
Description: Text Data