diff --git a/lib_com/options.h b/lib_com/options.h index a94a4f977508780b0bea0962a007ab4add7dbaaf..0c5dfdfd2a74a902992804ce8b714807dc64d33c 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -205,6 +205,7 @@ #define FIX_1430_EVS_STEREO_DMX_CHANNEL_DISAPPEARING /* Orange: Fix for basop issue 2184 - to prevent one channel from becoming inaudible in the mono downmix output */ +#define FIX_1440_AMR_WB_RESET /* VA: issue 1440: Fix missing AMR-WB IO memory reset (applicable to float only) */ /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/amr_wb_dec.c b/lib_dec/amr_wb_dec.c index 1b4712da1100fe3c9bc9de5538c19e16dde1ffc1..bbb0c7b10d6aa529a0c0b8e505a699d94e152a6d 100644 --- a/lib_dec/amr_wb_dec.c +++ b/lib_dec/amr_wb_dec.c @@ -295,6 +295,17 @@ ivas_error amr_wb_dec( st->bfi_pitch_frame = L_FRAME; } +#ifdef FIX_1440_AMR_WB_RESET + if ( st->last_core != AMR_WB_CORE ) + { + /* reset the unvoiced/audio signal improvement memories */ + isp2a( st->lsp_old, st->hAmrwb_IO->old_Aq, M ); + mvr2r( st->hAmrwb_IO->old_Aq, st->hAmrwb_IO->old_Aq + ( M + 1 ), M + 1 ); + mvr2r( st->hAmrwb_IO->old_Aq, st->hAmrwb_IO->old_Aq + 2 * ( M + 1 ), M + 1 ); + mvr2r( st->hAmrwb_IO->old_Aq, st->hAmrwb_IO->old_Aq + 3 * ( M + 1 ), M + 1 ); + } + +#endif if ( st->last_bwidth == NB && st->ini_frame != 0 ) { st->rate_switching_reset = 1;