Loading lib_dec/dec_tcx_fx.c +12 −5 Original line number Diff line number Diff line Loading @@ -2575,6 +2575,7 @@ void IMDCT_fx( Word32 *x, Word16 x_e, Word16 *old_syn_overl, Word16 *syn_Overl_T #ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_QWIN static Word16 IMDCT_ivas_fx_calc_qwin( Decoder_State *st, Word16 *syn_Overl_TDAC, Word16 Q_syn_Overl_TDAC, Word16 *syn_Overl, Loading @@ -2588,7 +2589,7 @@ static Word16 IMDCT_ivas_fx_calc_qwin( const Word16 L_frameTCX, const Word16 FB_flag ) { Word16 oldLength, t; Word16 oldLength, t, old_syn_Overl_len; oldLength = s_min( L_FRAME32k, L_frame ); t = L_FRAME32k; Loading @@ -2600,14 +2601,20 @@ static Word16 IMDCT_ivas_fx_calc_qwin( move16(); } old_syn_Overl_len = st->hTcxCfg->tcx_mdct_window_length; IF( ( st->prev_bfi && EQ_16( st->last_core_bfi, ACELP_CORE ) ) || EQ_16( st->last_core, ACELP_CORE ) ) { old_syn_Overl_len = shr( st->L_frame, 1 ); } q_win = 6; move16(); // q_win == norm + Q_syn_Overl_TDAC q_win = s_min( q_win, norm_arr( syn_Overl_TDAC, oldLength / 2 ) + Q_syn_Overl_TDAC ); q_win = s_min( q_win, norm_arr( syn_Overl_TDAC, shr(oldLength, 1) ) + Q_syn_Overl_TDAC ); // q_win = s_min( q_win, norm_arr( syn_Overl, oldLength / 2 ) + Q_syn_Overl ); q_win = s_min( q_win, norm_arr( syn_Overl, t / 2 ) + Q_syn_Overl ); q_win = s_min( q_win, norm_arr( old_syn_Overl, oldLength / 2 ) + Q_old_syn_Overl ); q_win = s_min( q_win, norm_arr( syn_Overl, shr(t, 1) ) + Q_syn_Overl ); q_win = s_min( q_win, norm_arr( old_syn_Overl, old_syn_Overl_len ) + Q_old_syn_Overl ); // q_win = s_min( q_win, norm_arr( old_out_fx, oldLength ) + Q_old_out_fx ); q_win = s_min( q_win, norm_arr( old_out_fx, t ) + Q_old_out_fx ); Loading Loading @@ -3001,7 +3008,7 @@ void IMDCT_ivas_fx( IF( allow_qwin_change ) { // q_win = IMDCT_ivas_fx_adjust_qwin( *Q_syn_Overl_TDAC_fx, *Q_old_syn_overl_fx, hTcxDec->Q_old_syn_Overl, *q_old_out_fx, q_win ); q_win = IMDCT_ivas_fx_calc_qwin( syn_Overl_TDAC_fx, *Q_syn_Overl_TDAC_fx, old_syn_overl_fx, *Q_old_syn_overl_fx, q_win = IMDCT_ivas_fx_calc_qwin( st, syn_Overl_TDAC_fx, *Q_syn_Overl_TDAC_fx, old_syn_overl_fx, *Q_old_syn_overl_fx, hTcxDec->old_syn_Overl, hTcxDec->Q_old_syn_Overl, old_out_fx, *q_old_out_fx, q_win, L_frame, L_frameTCX, FB_flag ); } #else Loading Loading
lib_dec/dec_tcx_fx.c +12 −5 Original line number Diff line number Diff line Loading @@ -2575,6 +2575,7 @@ void IMDCT_fx( Word32 *x, Word16 x_e, Word16 *old_syn_overl, Word16 *syn_Overl_T #ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_QWIN static Word16 IMDCT_ivas_fx_calc_qwin( Decoder_State *st, Word16 *syn_Overl_TDAC, Word16 Q_syn_Overl_TDAC, Word16 *syn_Overl, Loading @@ -2588,7 +2589,7 @@ static Word16 IMDCT_ivas_fx_calc_qwin( const Word16 L_frameTCX, const Word16 FB_flag ) { Word16 oldLength, t; Word16 oldLength, t, old_syn_Overl_len; oldLength = s_min( L_FRAME32k, L_frame ); t = L_FRAME32k; Loading @@ -2600,14 +2601,20 @@ static Word16 IMDCT_ivas_fx_calc_qwin( move16(); } old_syn_Overl_len = st->hTcxCfg->tcx_mdct_window_length; IF( ( st->prev_bfi && EQ_16( st->last_core_bfi, ACELP_CORE ) ) || EQ_16( st->last_core, ACELP_CORE ) ) { old_syn_Overl_len = shr( st->L_frame, 1 ); } q_win = 6; move16(); // q_win == norm + Q_syn_Overl_TDAC q_win = s_min( q_win, norm_arr( syn_Overl_TDAC, oldLength / 2 ) + Q_syn_Overl_TDAC ); q_win = s_min( q_win, norm_arr( syn_Overl_TDAC, shr(oldLength, 1) ) + Q_syn_Overl_TDAC ); // q_win = s_min( q_win, norm_arr( syn_Overl, oldLength / 2 ) + Q_syn_Overl ); q_win = s_min( q_win, norm_arr( syn_Overl, t / 2 ) + Q_syn_Overl ); q_win = s_min( q_win, norm_arr( old_syn_Overl, oldLength / 2 ) + Q_old_syn_Overl ); q_win = s_min( q_win, norm_arr( syn_Overl, shr(t, 1) ) + Q_syn_Overl ); q_win = s_min( q_win, norm_arr( old_syn_Overl, old_syn_Overl_len ) + Q_old_syn_Overl ); // q_win = s_min( q_win, norm_arr( old_out_fx, oldLength ) + Q_old_out_fx ); q_win = s_min( q_win, norm_arr( old_out_fx, t ) + Q_old_out_fx ); Loading Loading @@ -3001,7 +3008,7 @@ void IMDCT_ivas_fx( IF( allow_qwin_change ) { // q_win = IMDCT_ivas_fx_adjust_qwin( *Q_syn_Overl_TDAC_fx, *Q_old_syn_overl_fx, hTcxDec->Q_old_syn_Overl, *q_old_out_fx, q_win ); q_win = IMDCT_ivas_fx_calc_qwin( syn_Overl_TDAC_fx, *Q_syn_Overl_TDAC_fx, old_syn_overl_fx, *Q_old_syn_overl_fx, q_win = IMDCT_ivas_fx_calc_qwin( st, syn_Overl_TDAC_fx, *Q_syn_Overl_TDAC_fx, old_syn_overl_fx, *Q_old_syn_overl_fx, hTcxDec->old_syn_Overl, hTcxDec->Q_old_syn_Overl, old_out_fx, *q_old_out_fx, q_win, L_frame, L_frameTCX, FB_flag ); } #else Loading