Noise estimation update in OMASA
The noise estimation update in the MDCT decoder is done differently for the ISM format. Should it not be done similarly for discretely coded objects in the OMASA format?
The condition under question is at https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/-/blob/main/lib_dec/ivas_tcx_core_dec.c. A possible fix would look like the following:
#ifdef FIX
if ( st->is_ism_format )
#else
if ( ivas_format == ISM_FORMAT )
#endif
{
float buffer[L_FRAME16k];
lerp( signal_outFB, buffer, st->L_frame, hTcxDec->L_frameTCX );
ApplyFdCng( buffer, NULL, NULL, NULL, st, st->bfi, 0 );
}
else
{
ApplyFdCng( signal_out, NULL, NULL, NULL, st, st->bfi, 0 );
}
I do not know why the exception is for the ISM format here, and I would appreciate a review from FhG experts.
Note: the change above has only a minimal impact on the self-test output:
FAILED tests/codec_be_on_mr_nonselection/test_param_file.py::test_param_file_tests[stv-OMASA 2Dir2TC 2ISM at br sw techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 48kHz out, 7.1 out, JBM Prof 5] - Failed: Difference between ref and dut in output only (Non-BE - MAXIMUM ABS DIFF: 1)
FAILED tests/codec_be_on_mr_nonselection/test_param_file.py::test_param_file_tests[stv-OMASA 2Dir2TC 3ISM at br sw techs 13.2 to 512 kbps start 160 kbps, 48kHz in, 48kHz out, MONO out, JBM Prof 5] - Failed: Difference between ref and dut in output only (Non-BE - MAXIMUM ABS DIFF: 11)
FAILED tests/codec_be_on_mr_nonselection/test_param_file.py::test_param_file_tests[stv-OMASA 2Dir1TC 3ISM at br sw techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 32kHz out, STEREO out, JBM Prof 5] - Failed: Difference between ref and dut in output only (Non-BE - MAXIMUM ABS DIFF: 4)
FAILED tests/codec_be_on_mr_nonselection/test_param_file.py::test_param_file_tests[stv-OMASA 1Dir2TC 3ISM at br sw techs 13.2 to 512 kbps start 24.4 kbps, 32kHz in, 48kHz out, 5.1.2 out, JBM Prof 5] - Failed: Difference between ref and dut in output only (Non-BE - MAXIMUM ABS DIFF: 11)
FAILED tests/codec_be_on_mr_nonselection/test_param_file.py::test_param_file_tests[stv-OMASA 1Dir2TC 4ISM at br sw techs 13.2 to 512 kbps start 80 kbps, 48kHz in, 48kHz out, FOA out, JBM Prof 5] - Failed: Difference between ref and dut in output only (Non-BE - MAXIMUM ABS DIFF: 6)
FAILED tests/codec_be_on_mr_nonselection/test_param_file.py::test_param_file_tests[stv-OMASA 2Dir2TC 4ISM at 256 kbps, 48kHz in, 48kHz out, EXT out, JBM Prof 5] - Failed: Difference between ref and dut in output only (Non-BE - MAXIMUM ABS DIFF: 17)
FAILED tests/codec_be_on_mr_nonselection/test_param_file.py::test_param_file_tests[stv-OMASA 1Dir1TC 4ISM at br sw techs 13.2 to 512 kbps start 32 kbps, 48kHz in, 48kHz out, BINAURAL out, FER at 5%] - Failed: Difference between ref and dut in output only (Non-BE - MAXIMUM ABS DIFF: 1)
FAILED tests/codec_be_on_mr_nonselection/test_param_file.py::test_param_file_tests[stv-OMASA 2Dir1TC 3ISM at br sw techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 32kHz out, STEREO out, FER at 10%] - Failed: Difference between ref and dut in output only (Non-BE - MAXIMUM ABS DIFF: 4)
FAILED tests/codec_be_on_mr_nonselection/test_param_file.py::test_param_file_tests[stv-OMASA 2Dir2TC 4ISM at 256 kbps, 48kHz in, 48kHz out, BINAURAL out, object editing, JBM Prof 5, DISC] - Failed: Difference between ref and dut in output only (Non-BE - MAXIMUM ABS DIFF: 16)
FAILED tests/codec_be_on_mr_nonselection/test_param_file.py::test_param_file_tests[stv-OMASA 2Dir2TC 2ISM at 96 kbps, 48kHz in, 48kHz out, FOA out, object editing, JBM Prof 5, DISC] - Failed: Difference between ref and dut in output only (Non-BE - MAXIMUM ABS DIFF: 16)