Loading lib_dec/er_dec_tcx_fx.c +32 −6 Original line number Diff line number Diff line Loading @@ -1872,11 +1872,24 @@ void con_tcx_ivas_fx( syn = buf + M; /*Q_syn*/ Copy( synth - M, buf, M ); /*Q_syn*/ #ifdef HARMONIZE_2446_CON_TCX_FX IF(NE_32(st->element_mode, EVS_MONO)) // to keep evs bit-exactness { #endif // HARMONIZE_2446_CON_TCX_FX scf = norm_s(tmp_deemph); new_Q = sub(Q_exc, 4); // deemph_fx filter gain can be up to 10 (~2^3.32), so 4 bits of headroom are needed to avoid overflow new_Q = s_max(new_Q, -1); new_Q = s_min(new_Q, scf); #ifdef HARMONIZE_2446_CON_TCX_FX } ELSE { new_Q = sub(Q_exc, 3); new_Q = s_max(new_Q, -1); scf = 0; move16(); } #endif // HARMONIZE_2446_CON_TCX_FX tmp16 = s_min( new_Q, st->prev_Q_syn ); st->prev_Q_syn = new_Q; move16(); Loading @@ -1886,11 +1899,24 @@ void con_tcx_ivas_fx( move16(); Copy_Scale_sig( buf, mem_syn, M, exp_scale ); /* Q: tmp16 */ #ifdef HARMONIZE_2446_CON_TCX_FX IF(NE_32(st->element_mode, EVS_MONO)) // to keep evs bit-exactness { #endif // !HARMONIZE_2446_CON_TCX_FX if ( GT_16( sub( Q_syn, st->Q_syn_factor ), scf ) ) { Q_syn = add( scf, st->Q_syn_factor ); // so that (Q_syn - st->Q_syn_factor) = scf; } tmp_deemph = shl( tmp_deemph, sub( Q_syn, st->Q_syn_factor ) ); #ifdef HARMONIZE_2446_CON_TCX_FX } ELSE { tmp_deemph = shl_sat(tmp_deemph, Q_syn); /*Q_syn*/ st->Q_syn_factor = 0; move16(); } #endif // !HARMONIZE_2446_CON_TCX_FX st->Q_syn = Q_syn; move16(); Loading Loading @@ -2139,7 +2165,7 @@ void con_tcx_ivas_fx( #ifndef HARMONIZE_2446_CON_TCX_FX st->hHQ_core->Q_old_wtda_LB = Q_syn; // st->hHQ_core->Q_old_wtda #else IF( NE_16( st->element_mode, EVS_MONO ) ) IF( EQ_16( st->element_mode, EVS_MONO ) ) { st->hHQ_core->Q_old_wtda_LB = Q_syn; // st->hHQ_core->Q_old_wtda } Loading Loading
lib_dec/er_dec_tcx_fx.c +32 −6 Original line number Diff line number Diff line Loading @@ -1872,11 +1872,24 @@ void con_tcx_ivas_fx( syn = buf + M; /*Q_syn*/ Copy( synth - M, buf, M ); /*Q_syn*/ #ifdef HARMONIZE_2446_CON_TCX_FX IF(NE_32(st->element_mode, EVS_MONO)) // to keep evs bit-exactness { #endif // HARMONIZE_2446_CON_TCX_FX scf = norm_s(tmp_deemph); new_Q = sub(Q_exc, 4); // deemph_fx filter gain can be up to 10 (~2^3.32), so 4 bits of headroom are needed to avoid overflow new_Q = s_max(new_Q, -1); new_Q = s_min(new_Q, scf); #ifdef HARMONIZE_2446_CON_TCX_FX } ELSE { new_Q = sub(Q_exc, 3); new_Q = s_max(new_Q, -1); scf = 0; move16(); } #endif // HARMONIZE_2446_CON_TCX_FX tmp16 = s_min( new_Q, st->prev_Q_syn ); st->prev_Q_syn = new_Q; move16(); Loading @@ -1886,11 +1899,24 @@ void con_tcx_ivas_fx( move16(); Copy_Scale_sig( buf, mem_syn, M, exp_scale ); /* Q: tmp16 */ #ifdef HARMONIZE_2446_CON_TCX_FX IF(NE_32(st->element_mode, EVS_MONO)) // to keep evs bit-exactness { #endif // !HARMONIZE_2446_CON_TCX_FX if ( GT_16( sub( Q_syn, st->Q_syn_factor ), scf ) ) { Q_syn = add( scf, st->Q_syn_factor ); // so that (Q_syn - st->Q_syn_factor) = scf; } tmp_deemph = shl( tmp_deemph, sub( Q_syn, st->Q_syn_factor ) ); #ifdef HARMONIZE_2446_CON_TCX_FX } ELSE { tmp_deemph = shl_sat(tmp_deemph, Q_syn); /*Q_syn*/ st->Q_syn_factor = 0; move16(); } #endif // !HARMONIZE_2446_CON_TCX_FX st->Q_syn = Q_syn; move16(); Loading Loading @@ -2139,7 +2165,7 @@ void con_tcx_ivas_fx( #ifndef HARMONIZE_2446_CON_TCX_FX st->hHQ_core->Q_old_wtda_LB = Q_syn; // st->hHQ_core->Q_old_wtda #else IF( NE_16( st->element_mode, EVS_MONO ) ) IF( EQ_16( st->element_mode, EVS_MONO ) ) { st->hHQ_core->Q_old_wtda_LB = Q_syn; // st->hHQ_core->Q_old_wtda } Loading