From 41000bd22e24a8d46001e5332ca7025fbfbc4de8 Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Mon, 4 May 2026 23:41:21 +0200 Subject: [PATCH] Fix discrepancies for mono modes, resolves assert --- lib_enc/igf_enc_fx.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/lib_enc/igf_enc_fx.c b/lib_enc/igf_enc_fx.c index 6a2416705..845994f0b 100644 --- a/lib_enc/igf_enc_fx.c +++ b/lib_enc/igf_enc_fx.c @@ -2241,6 +2241,8 @@ static void IGF_CalculateEnvelope_ivas_fx( sfbEnergyTileR_e = 0; move16(); move16(); + zeroNrg = 1; + move16(); } BASOP_Util_Divide_MantExp( round_fx_sat( sfbEnergyTileR ), sfbEnergyTileR_e, width, 15, &sfbEnergyTileR16, &sfbEnergyTileR_e ); @@ -2265,6 +2267,13 @@ static void IGF_CalculateEnvelope_ivas_fx( sfbEnergyC_e = 0; move32(); move16(); +#ifdef FIX_2346_DUPLICATED_IGF_FUNCTIONS_2 + IF( element_mode == EVS_MONO ) + { + zeroNrg = 1; + move16(); + } +#endif } IF( sfbEnergyTileC == 0 ) { @@ -2274,8 +2283,21 @@ static void IGF_CalculateEnvelope_ivas_fx( sfbEnergyTileC = EPSILON_FX; #endif sfbEnergyTileC_e = 0; - temp = BASOP_Util_Divide3232_Scale( sfbEnergyC, sfbEnergyTileC, &tmp_e ); - tmp_e = add( tmp_e, sub( sfbEnergyC_e, sfbEnergyTileC_e ) ); +#ifdef FIX_2346_DUPLICATED_IGF_FUNCTIONS_2 + IF( element_mode > EVS_MONO ) + { +#endif + temp = BASOP_Util_Divide3232_Scale( sfbEnergyC, sfbEnergyTileC, &tmp_e ); + tmp_e = add( tmp_e, sub( sfbEnergyC_e, sfbEnergyTileC_e ) ); +#ifdef FIX_2346_DUPLICATED_IGF_FUNCTIONS_2 + } + ELSE + { + BASOP_Util_Divide_MantExp( round_fx_sat( sfbEnergyC ), sfbEnergyC_e, round_fx_sat( sfbEnergyTileC ), sfbEnergyTileC_e, &tmp, &tmp_e ); + zeroNrg = 1; + move16(); + } +#endif move32(); move16(); } @@ -2681,7 +2703,7 @@ static void IGF_CalculateEnvelope_ivas_fx( IF( sfbEnergyR == 0 ) { - sfbEnergyR = EPSILON_FX; + sfbEnergyR = 0x00010000; move32(); sfbEnergyR_e = 0; move16(); -- GitLab