Loading lib_dec/er_dec_tcx_fx.c +55 −30 Original line number Diff line number Diff line Loading @@ -1845,25 +1845,28 @@ void con_tcx_ivas_fx( syn = buf + M; /*Q_syn*/ Copy( synth - M, buf, M ); /*Q_syn*/ #ifdef HARMONIZE_2446_CON_TCX_FX IF( !leg_flag ) // to keep evs bit-exactness { #endif // HARMONIZE_2446_CON_TCX_FX #ifndef 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); #else IF(!leg_flag || NE_32(st->element_mode, EVS_MONO)) { 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 { ELSE{ new_Q = sub(Q_exc, 3); new_Q = s_max(new_Q, -1); scf = 0; move16(); } #endif // HARMONIZE_2446_CON_TCX_FX #endif // !HARMONIZE_2446_CON_TCX_FX tmp16 = s_min( new_Q, st->prev_Q_syn ); st->prev_Q_syn = new_Q; move16(); Loading @@ -1873,27 +1876,49 @@ void con_tcx_ivas_fx( move16(); Copy_Scale_sig( buf, mem_syn, M, exp_scale ); /* Q: tmp16 */ #ifdef HARMONIZE_2446_CON_TCX_FX IF( !leg_flag ) // to keep evs bit-exactness #ifndef HARMONIZE_2446_CON_TCX_FX if ( GT_16( sub( Q_syn, st->Q_syn_factor ), scf ) ) { #endif // !HARMONIZE_2446_CON_TCX_FX Q_syn = add( scf, st->Q_syn_factor ); // so that (Q_syn - st->Q_syn_factor) = scf; } tmp_deemph = shl_sat( tmp_deemph, sub( Q_syn, st->Q_syn_factor ) ); st->Q_syn = Q_syn; move16(); #else IF(!leg_flag) { 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_sat(tmp_deemph, sub(Q_syn, st->Q_syn_factor)); #ifdef HARMONIZE_2446_CON_TCX_FX st->Q_syn = Q_syn; move16(); } ELSE { IF(NE_32(st->element_mode, EVS_MONO)) // to keep evs bit-exactness { 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)); } 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(); } #endif // !HARMONIZE_2446_CON_TCX_FX /*buf[OLD_EXC_SIZE_DEC;3/2 L_frame] Q1: exc*/ /*buf[0;M] Q0: mem_syn*/ #ifndef HARMONIZE_2446_CON_TCX_FX Loading Loading @@ -2139,7 +2164,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( leg_flag ) IF( !leg_flag ) { st->hHQ_core->Q_old_wtda_LB = Q_syn; // st->hHQ_core->Q_old_wtda } Loading Loading
lib_dec/er_dec_tcx_fx.c +55 −30 Original line number Diff line number Diff line Loading @@ -1845,25 +1845,28 @@ void con_tcx_ivas_fx( syn = buf + M; /*Q_syn*/ Copy( synth - M, buf, M ); /*Q_syn*/ #ifdef HARMONIZE_2446_CON_TCX_FX IF( !leg_flag ) // to keep evs bit-exactness { #endif // HARMONIZE_2446_CON_TCX_FX #ifndef 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); #else IF(!leg_flag || NE_32(st->element_mode, EVS_MONO)) { 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 { ELSE{ new_Q = sub(Q_exc, 3); new_Q = s_max(new_Q, -1); scf = 0; move16(); } #endif // HARMONIZE_2446_CON_TCX_FX #endif // !HARMONIZE_2446_CON_TCX_FX tmp16 = s_min( new_Q, st->prev_Q_syn ); st->prev_Q_syn = new_Q; move16(); Loading @@ -1873,27 +1876,49 @@ void con_tcx_ivas_fx( move16(); Copy_Scale_sig( buf, mem_syn, M, exp_scale ); /* Q: tmp16 */ #ifdef HARMONIZE_2446_CON_TCX_FX IF( !leg_flag ) // to keep evs bit-exactness #ifndef HARMONIZE_2446_CON_TCX_FX if ( GT_16( sub( Q_syn, st->Q_syn_factor ), scf ) ) { #endif // !HARMONIZE_2446_CON_TCX_FX Q_syn = add( scf, st->Q_syn_factor ); // so that (Q_syn - st->Q_syn_factor) = scf; } tmp_deemph = shl_sat( tmp_deemph, sub( Q_syn, st->Q_syn_factor ) ); st->Q_syn = Q_syn; move16(); #else IF(!leg_flag) { 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_sat(tmp_deemph, sub(Q_syn, st->Q_syn_factor)); #ifdef HARMONIZE_2446_CON_TCX_FX st->Q_syn = Q_syn; move16(); } ELSE { IF(NE_32(st->element_mode, EVS_MONO)) // to keep evs bit-exactness { 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)); } 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(); } #endif // !HARMONIZE_2446_CON_TCX_FX /*buf[OLD_EXC_SIZE_DEC;3/2 L_frame] Q1: exc*/ /*buf[0;M] Q0: mem_syn*/ #ifndef HARMONIZE_2446_CON_TCX_FX Loading Loading @@ -2139,7 +2164,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( leg_flag ) IF( !leg_flag ) { st->hHQ_core->Q_old_wtda_LB = Q_syn; // st->hHQ_core->Q_old_wtda } Loading