Skip to content

MASA Dec Binaural: Additional click by BASOP_Util_Divide3232_Scale_newton()

This is a follow-up from MRs !1376 (merged) and !1388 (merged) :

Basic info

  • Float reference:
  • Fixed point:
    • Encoder (fixed): n/a
    • Decoder (fixed): 004bf201

Bug description

Replacing BASOP_Util_Divide3232_Scale_cadence() by BASOP_Util_Divide3232_Scale_newton() in lib_rend/ivas_dirac_dec_binaural_functions_fx.c, line 4035 (formulate2x2MixingMatrix_fx()) introduces an additional (audible) click in the output. For better visibility, the first two spectrograms show the difference BASOP - float:

BASOP BASOP_Util_Divide3232_Scale_newton() - float:

Bildschirmfoto 2025-04-13 um 20.42.12.png

BASOP (main) - float:

Bildschirmfoto 2025-04-13 um 20.42.17.png

BASOP BASOP_Util_Divide3232_Scale_newton() :

Bildschirmfoto 2025-04-13 um 20.43.30.png

For the condition BASOP BASOP_Util_Divide3232_Scale_newton(), the following patch has been applied relative to main:

diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c
index ce602160..d9539a21 100644
--- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c
+++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c
@@ -4035,7 +4035,7 @@ static void formulate2x2MixingMatrix_fx(
     }
     ELSE
     {
-        maxEneDiv_fx = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, maxEne_fx, &exp );
+        maxEneDiv_fx = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, maxEne_fx, &exp );
         q_maxEneDiv = add( sub( 31, exp ), sub( Q30, q_maxEne ) );
     }
     exp = norm_l( maxEneDiv_fx );

This is not the only click in the file - there have been clicks before, and overall the file is very noisy which makes ans perceptual evaluation difficult. Nevertheless, I can hear the click in the new version.

This issues only appears with +10dB scaled testvectors, I couldn't spot it with the default 0dB variant.

Attached is the output of the network simulator, which can be used for debugging:

stv1MASA2TC48n.wav_MASA_1dir_2TC_bitrate_switching_from_13_2_kbps_to_512_kbps_48kHz_in_16kHz_out_BINAURAL_out_JBM_Prof_5.netsimout

Ways to reproduce

ivas-float-update/IVAS_cod -masa 2 ivas-codec/scripts/testv_+10dB/stv1MASA2TC48n.met ivas-codec/scripts/switchPaths/sw_13k2_512k.bin 48 ivas-codec/scripts/testv_+10dB/stv1MASA2TC48n.wav stv1MASA2TC48n.wav_MASA_1dir_2TC_bitrate_switching_from_13_2_kbps_to_512_kbps_48kHz_in_16kHz_out_BINAURAL_out_JBM_Prof_5.192

networkSimulator_g192 ivas-codec/scripts/dly_error_profiles/dly_error_profile_5.dat stv1MASA2TC48n.wav_MASA_1dir_2TC_bitrate_switching_from_13_2_kbps_to_512_kbps_48kHz_in_16kHz_out_BINAURAL_out_JBM_Prof_5.192 stv1MASA2TC48n.wav_MASA_1dir_2TC_bitrate_switching_from_13_2_kbps_to_512_kbps_48kHz_in_16kHz_out_BINAURAL_out_JBM_Prof_5.netsimout stv1MASA2TC48n.wav_MASA_1dir_2TC_bitrate_switching_from_13_2_kbps_to_512_kbps_48kHz_in_16kHz_out_BINAURAL_out_JBM_Prof_5.netsimtrace 2 0

ivas-basop/IVAS_dec -VOIP BINAURAL 16 stv1MASA2TC48n.wav_MASA_1dir_2TC_bitrate_switching_from_13_2_kbps_to_512_kbps_48kHz_in_16kHz_out_BINAURAL_out_JBM_Prof_5.netsimout out.wav
Edited by multrus