MLD Level dependency
In the planned characterization tests, it is currently foreseen that we will test the level impact on the quality. The levels would correspond to the levels used in the BASOP CI: -16 LKFS, -26 LKFS, -36 LKFS. In the listening test we will however restore the scaling before listening. In the CI we measure the difference directly on the output signal, without restoring the scaling.
For the SegSNR, this should not matter so much, apart from the loss of precision that would come from down-scaling the 16 bit output signal. For MLD it seems there is a level dependency.
This could exaggerate artifacts for high level input while low-level inputs may be more serious than we think. Perhaps this could also explain why the down-mix scaling feature did not show expected results. Should we restore the scaling in our tests before doing the comparison? Pinging @kiene, @pihlajakuja, @doehla
In my test, I picked a test case with high MLD to check this:
Input level | MLD | MLD with restored level |
---|---|---|
+10 dB |
17.055025 |
9.850381 |
-10 dB |
7.2796235 |
13.022493 |
# Get LTV and apply +10 dB level
cp /usr/local/ltv/ltv32_STEREO.wav scripts/testv
tests/scale_pcm.py scripts/testv 3.162
pytest "tests/codec_be_on_mr_nonselection/test_param_file.py::test_param_file_tests[ltv-stereo at 24.4 kbps, 32kHz in, 32kHz out]" --param_file scripts/config/self_test_ltv.prm --update_ref 1 -n 1
pytest "tests/codec_be_on_mr_nonselection/test_param_file.py::test_param_file_tests[ltv-stereo at 24.4 kbps, 32kHz in, 32kHz out]" --param_file scripts/config/self_test_ltv.prm --dut_decoder_path IVAS_dec_ref -n 1 --mld
Copying the output files for closer analysis:
cp tests/ref/param_file/dec/ltv32_STEREO.wav_stereo_at_24_4_kbps_32kHz_in_32kHz_out.dec.wav ref.wav
cp tests/dut/param_file/dec/ltv32_STEREO.wav_stereo_at_24_4_kbps_32kHz_in_32kHz_out.dec.wav dut.wav
# Restore level
mkdir tmp
cp ref.wav dut.wav tmp
tests/scale_pcm.py tmp 0.3162
The MLD for the high level output is reduced when restoring the level.
$ tests/cmp_pcm.py --get_mld ref.wav dut.wav
Cmp PCM Report
=====================
MAXIMUM ABS DIFF ==> 32751 at sample num 5454267 (assuming 2 channels)
First diff found at sample num 0 in channel 0, frame 0 (assuming 2 channels, 32000 sampling rate)
MLD: 17.055025
Non-BE - MAXIMUM ABS DIFF: 32751 - MLD: 17.055025 > 0
$ tests/cmp_pcm.py --get_mld tmp/ref.wav tmp/dut.wav
Cmp PCM Report
=====================
MAXIMUM ABS DIFF ==> 17700 at sample num 4460838 (assuming 2 channels)
First diff found at sample num 11 in channel 0, frame 0 (assuming 2 channels, 32000 sampling rate)
MLD: 9.850381
Non-BE - MAXIMUM ABS DIFF: 17700 - MLD: 9.850381 > 0