diff --git a/lib_com/options.h b/lib_com/options.h index 34c6f7410a9c3d5a1ee5136c0d43397d04428716..d90ba2c9e03cc366d79ff7f4fc503782dee282a4 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -166,6 +166,8 @@ /* any switch which is non-be wrt selection floating point code */ /* all switches in this category should start with "NONBE_" */ +#define NON_BE_1055_RESET_LP_MEMORIES /* VA: issue 1055: Correctly reset LP filter MA and AR memories in bitrate switching */ + /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/updt_dec.c b/lib_dec/updt_dec.c index 543284ce3c3920fccf8ae5096cfe1bc41cb153e7..17f19e112518a96fb5af57586a165084abbd6780 100644 --- a/lib_dec/updt_dec.c +++ b/lib_dec/updt_dec.c @@ -521,7 +521,11 @@ void updt_dec_common( st->stab_fac_smooth_lt = ENV_SMOOTH_FAC * st->stab_fac + ( 1.0f - ENV_SMOOTH_FAC ) * st->stab_fac_smooth_lt; } +#ifdef NON_BE_1055_RESET_LP_MEMORIES + if ( ( st->core_brate <= SID_2k40 && st->cng_type == FD_CNG ) || ( st->tcxonly && ( st->codec_mode == MODE2 || st->element_mode > EVS_MONO ) ) ) +#else if ( ( st->core_brate <= SID_2k40 && st->cng_type == FD_CNG ) || ( st->tcxonly && st->codec_mode == MODE2 ) ) +#endif { /* reset LP memories */ set_zero( st->mem_MA, M ); diff --git a/lib_enc/core_enc_updt.c b/lib_enc/core_enc_updt.c index b336064a355e5dd752b61fc3e46a101eec81eb8d..a04f22fc59d3e25ba0d11a7de7da3f1c5f7de8e9 100644 --- a/lib_enc/core_enc_updt.c +++ b/lib_enc/core_enc_updt.c @@ -92,7 +92,11 @@ void core_encode_update( } } +#ifdef NON_BE_1055_RESET_LP_MEMORIES + if ( ( st->Opt_DTX_ON && st->core_brate <= SID_2k40 && st->cng_type == FD_CNG ) || ( st->tcxonly && ( st->codec_mode == MODE2 || st->element_mode > EVS_MONO ) ) ) +#else if ( ( st->Opt_DTX_ON && st->core_brate <= SID_2k40 && st->cng_type == FD_CNG ) || ( st->tcxonly && st->codec_mode == MODE2 ) ) +#endif { /* reset LP memories */ set_zero( st->mem_MA, M );