diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c index ef8670388ba9cb29199ca589b244e93c60934b6a..323f98f8e8cb189def50e1e70baec97490085abd 100644 --- a/lib_dec/acelp_core_dec_ivas_fx.c +++ b/lib_dec/acelp_core_dec_ivas_fx.c @@ -953,13 +953,14 @@ ivas_error acelp_core_dec_ivas_fx( /* Prepare ACB memory from last HQ frame */ old_exc_s_fx = st->old_exc_fx + sub( L_EXC_MEM_DEC, st->L_frame ); tmpF_fx = *old_exc_s_fx; - st->mem_deemph_fx = old_exc_s_fx[sub( st->L_frame, 1 )]; + st->mem_deemph_fx = shl_sat( old_exc_s_fx[sub( st->L_frame, 1 )], st->Q_syn ); /* Q0 -> Q_syn */ move16(); PREEMPH_FX( old_exc_s_fx, st->preemph_fac, L_FRAME16k, &tmpF_fx ); Copy( old_exc_s_fx + sub( st->L_frame, M ), st->mem_syn2_fx, M ); + Scale_sig( st->mem_syn2_fx, M, st->Q_syn ); /* Q0 -> Q_syn */ Residu3_fx( Aq_fx, old_exc_s_fx, old_exc_fx + sub( L_EXC_MEM_DEC, st->L_frame ), st->L_frame, 0 ); #ifdef FIX_737_HQ_ACELP_SWITCH_SCALING_ERROR - Scale_sig( old_exc_fx + sub( L_EXC_MEM_DEC, st->L_frame ), st->L_frame, st->Q_exc ); + Scale_sig( old_exc_fx + sub( L_EXC_MEM_DEC, st->L_frame ), st->L_frame, st->Q_exc ); /* Q0 -> Q_exc */ #endif } test();