diff --git a/lib_enc/igf_enc_fx.c b/lib_enc/igf_enc_fx.c index 6a24167059b475842278ad6b763c9d676c6f76bf..845994f0b8f4d2ea8bac74adbe9f6eb66bf1c531 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();