From f29d192e23ec2ead42f8261a441f9271272ec9cc Mon Sep 17 00:00:00 2001 From: vaclav Date: Thu, 4 Apr 2024 11:03:00 +0200 Subject: [PATCH 1/2] issue 1055: Correctly reset LP filter MA and AR memories in bitrate switching; under NON_BE_1055_RESET_LP_MEMORIES --- lib_com/options.h | 2 ++ lib_dec/updt_dec.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 34c6f7410a..d90ba2c9e0 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 543284ce3c..17f19e1125 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 ); -- GitLab From 2ff60b7c6f45fe3961332355cc391e121277c5c3 Mon Sep 17 00:00:00 2001 From: vaclav Date: Thu, 4 Apr 2024 14:17:29 +0200 Subject: [PATCH 2/2] propagate the fix also to the encoder --- lib_enc/core_enc_updt.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib_enc/core_enc_updt.c b/lib_enc/core_enc_updt.c index b336064a35..a04f22fc59 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 ); -- GitLab