Commit aafc14a1 authored by Mohammadreza Naghibzadeh's avatar Mohammadreza Naghibzadeh
Browse files

Removed calculations using the dynamic q_old_out to check its effect on the pipeline tests.

parent 59c183c9
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -79,4 +79,5 @@
#define HARM_ENC_INIT
//#define HARM_SCE_INIT
#define FIX_1348_BIT_PRECISION_IMPROVEMENT
//#define FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
#endif
+1 −1
Original line number Diff line number Diff line
@@ -9848,7 +9848,7 @@ void IMDCT_ivas_fx(
    const Word16 frame_cnt,
    const Word16 bfi,
    Word16 *old_out_fx,
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
    Word16 *q_old_out_fx,
#endif
    const Word16 FB_flag,
+20 −19
Original line number Diff line number Diff line
@@ -2601,7 +2601,7 @@ void IMDCT_ivas_fx(
    const Word16 frame_cnt,
    const Word16 bfi,
    Word16 *old_out_fx, // Q(-2)
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
    Word16 *q_old_out_fx,
#endif
    const Word16 FB_flag,
@@ -2865,12 +2865,12 @@ void IMDCT_ivas_fx(
                move16();

                Word16 diff = sub( q_tmp_fx_32, q_win );
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                Word16 q_old_out_diff = sub( q_tmp_fx_32, *q_old_out_fx );
#endif
                FOR( Word16 ind = 0; ind < L_frame; ind++ )
                {
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                    old_out_fx_32[ind] = L_shl( old_out_fx[ind], q_old_out_diff );
#else
                    old_out_fx_32[ind] = L_shl( old_out_fx[ind], diff );
@@ -2882,7 +2882,7 @@ void IMDCT_ivas_fx(

                FOR( Word16 ind = 0; ind < L_frame; ind++ )
                {
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                    old_out_fx[ind] = extract_l( L_shr( old_out_fx_32[ind], q_old_out_diff ) );
#else
                    old_out_fx[ind] = extract_l( L_shr( old_out_fx_32[ind], diff ) );
@@ -2897,7 +2897,8 @@ void IMDCT_ivas_fx(
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
                Scale_sig32( x_fx, L_frame, 1 );
                q_xn_buf_fx_32++;
#else
#endif
#ifndef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                Word16 q_old_out = q_win;
#endif
                move16();
@@ -2923,7 +2924,7 @@ void IMDCT_ivas_fx(
                    move16();
                }

#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                window_ola_fx( tmp_fx_32, xn_buf_fx, &q_tmp_fx_32, old_out_fx, q_old_out_fx, L_frame, hTcxCfg->tcx_last_overlap_mode, hTcxCfg->tcx_curr_overlap_mode, 0, 0, NULL );
#else
                window_ola_fx( tmp_fx_32, xn_buf_fx, &q_tmp_fx_32, old_out_fx, &q_old_out, L_frame, hTcxCfg->tcx_last_overlap_mode, hTcxCfg->tcx_curr_overlap_mode, 0, 0, NULL );
@@ -2934,7 +2935,7 @@ void IMDCT_ivas_fx(
                Word16 diff = sub( q_tmp_fx_32, q_win );
                FOR( Word16 ind = 0; ind < L_frame; ind++ )
                {
#ifndef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifndef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                    old_out_fx[ind] = shr_sat( old_out_fx[ind], q_diff );
                    move16();
#endif
@@ -3029,13 +3030,13 @@ void IMDCT_ivas_fx(

            IF( hTcxCfg->last_aldo != 0 )
            {
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                Word16 tmp_old_out;
                Word16 q_diff = sub( *q_old_out_fx, q_win );
#endif
                FOR( i = 0; i < sub( overlap, tcx_mdct_window_min_length ); i++ )
                {
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                    tmp_old_out = shr_sat( old_out_fx[( i + nz )], q_diff );
                    xn_buf_fx[( i + ( ( overlap / 2 ) - tcx_offset ) )] = add_sat( xn_buf_fx[( i + ( ( overlap / 2 ) - tcx_offset ) )], tmp_old_out ); // Q(-2)
#else
@@ -3053,7 +3054,7 @@ void IMDCT_ivas_fx(
                    // tested
                    FOR( ; i < overlap; i++ ) /* perfectly reconstructing ALDO shortening */
                    {
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                        tmp_old_out = shr_sat( old_out_fx[( i + nz )], q_diff );
                        xn_buf_fx[( ( i + ( overlap / 2 ) ) - tcx_offset )] = add_sat( xn_buf_fx[( ( i + ( overlap / 2 ) ) - tcx_offset )], tmp_old_out ); // Q(-2)
#else
@@ -3063,7 +3064,7 @@ void IMDCT_ivas_fx(
                    }
                    FOR( i = 0; i < ( tcx_mdct_window_min_length / 2 ); i++ )
                    {
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                        tmp_old_out = shr_sat( old_out_fx[( ( i + nz ) + overlap )], q_diff );
                        xn_buf_fx[( ( ( i + ( overlap / 2 ) ) - tcx_offset ) + overlap )] = add_sat( xn_buf_fx[( ( ( i + ( overlap / 2 ) ) - tcx_offset ) + overlap )], mult_r( tmp_old_out, tcx_mdct_window_minimum_fx[i].v.re ) ); // Q(-2)
#else
@@ -3073,7 +3074,7 @@ void IMDCT_ivas_fx(
                    }
                    FOR( ; i < tcx_mdct_window_min_length; i++ )
                    {
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                        tmp_old_out = shr_sat( old_out_fx[( ( i + nz ) + overlap )], q_diff );
                        xn_buf_fx[( ( ( i + ( overlap / 2 ) ) - tcx_offset ) + overlap )] = add_sat( xn_buf_fx[( ( ( i + ( overlap / 2 ) ) - tcx_offset ) + overlap )], mult_r( tmp_old_out, tcx_mdct_window_minimum_fx[( tcx_mdct_window_min_length - ( 1 + i ) )].v.im ) ); // Q(-2)
#else
@@ -3086,7 +3087,7 @@ void IMDCT_ivas_fx(
                {
                    FOR( ; i < ( overlap - ( tcx_mdct_window_min_length / 2 ) ); i++ )
                    {
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                        tmp_old_out = shr_sat( old_out_fx[( i + nz )], q_diff );
                        xn_buf_fx[( ( i + ( overlap / 2 ) ) - tcx_offset )] = add_sat( xn_buf_fx[( ( i + ( overlap / 2 ) ) - tcx_offset )], mult_r( tmp_old_out, tcx_mdct_window_minimum_fx[( ( tcx_mdct_window_min_length - overlap ) + i )].v.re ) ); // Q(-2)
#else
@@ -3096,7 +3097,7 @@ void IMDCT_ivas_fx(
                    }
                    FOR( ; i < overlap; i++ )
                    {
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                        tmp_old_out = shr_sat( old_out_fx[( i + nz )], q_diff );
                        xn_buf_fx[( i + ( ( overlap / 2 ) - tcx_offset ) )] = add_sat( xn_buf_fx[( ( i + ( overlap / 2 ) ) - tcx_offset )], mult_r( tmp_old_out, tcx_mdct_window_minimum_fx[( overlap - ( 1 + i ) )].v.im ) ); // Q(-2)
#else
@@ -3150,7 +3151,7 @@ void IMDCT_ivas_fx(
        /* Compute windowed synthesis in case of switching to ALDO windows in next frame */
        Copy( xn_buf_fx + sub( L_frame, nz ), old_out_fx, add( nz, overlap ) );
        set16_fx( old_out_fx + add( nz, overlap ), 0, nz );
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
        *q_old_out_fx = q_win;
#endif
        tcx_windowing_synthesis_past_frame( old_out_fx + nz, tcx_aldo_window_1_trunc_fx, tcx_mdct_window_half_fx, tcx_mdct_window_minimum_fx, overlap, tcx_mdct_window_half_length, tcx_mdct_window_min_length, hTcxCfg->tcx_curr_overlap_mode );
@@ -5257,7 +5258,7 @@ void decoder_tcx_imdct_fx(

        IMDCT_ivas_fx( xn_bufFB_fx, q_x, hTcxDec->syn_Overl, hTcxDec->syn_Overl_TDAC, xn_buf_fx, hTcxCfg->tcx_aldo_window_1, hTcxCfg->tcx_aldo_window_1_trunc, hTcxCfg->tcx_aldo_window_2,
                       hTcxCfg->tcx_mdct_window_half, hTcxCfg->tcx_mdct_window_minimum, hTcxCfg->tcx_mdct_window_trans, hTcxCfg->tcx_mdct_window_half_length, hTcxCfg->tcx_mdct_window_min_length, index,
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                       kernelType, left_rect, tcx_offset, overlap, L_frame, L_frameTCX, shr( s_max( L_frameTCX, L_spec ), 1 ), L_frame_glob, frame_cnt, bfi, st->hHQ_core->old_out_LB_fx, &st->hHQ_core->q_old_out_LB_fx, 0, st, 0, acelp_zir_fx, q_win );
#else
                       kernelType, left_rect, tcx_offset, overlap, L_frame, L_frameTCX, shr( s_max( L_frameTCX, L_spec ), 1 ), L_frame_glob, frame_cnt, bfi, st->hHQ_core->old_out_LB_fx, 0, st, 0, acelp_zir_fx, q_win );
@@ -5283,7 +5284,7 @@ void decoder_tcx_imdct_fx(
        Copy32( x_fx, xn_bufFB_fx, s_max( L_spec, s_max( L_frame, L_frameTCX ) ) ); // q_x

        IMDCT_ivas_fx( xn_bufFB_fx, q_x, hTcxDec->syn_Overl, hTcxDec->syn_Overl_TDAC, xn_buf_fx, hTcxCfg->tcx_aldo_window_1, hTcxCfg->tcx_aldo_window_1_trunc, hTcxCfg->tcx_aldo_window_2, hTcxCfg->tcx_mdct_window_half, hTcxCfg->tcx_mdct_window_minimum, hTcxCfg->tcx_mdct_window_trans, hTcxCfg->tcx_mdct_window_half_length, hTcxCfg->tcx_mdct_window_min_length, index,
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                       kernelType, left_rect, tcx_offset, overlap, L_frame, L_frameTCX, shr( s_max( L_frameTCX, L_spec ), 1 ), L_frame_glob, frame_cnt, bfi, st->hHQ_core->old_out_LB_fx, &st->hHQ_core->q_old_out_LB_fx, 0, st, 0, acelp_zir_fx, q_win );
#else
                       kernelType, left_rect, tcx_offset, overlap, L_frame, L_frameTCX, shr( s_max( L_frameTCX, L_spec ), 1 ), L_frame_glob, frame_cnt, bfi, st->hHQ_core->old_out_LB_fx, 0, st, 0, acelp_zir_fx, q_win );
@@ -5304,7 +5305,7 @@ void decoder_tcx_imdct_fx(
    {
        IMDCT_ivas_fx( x_tmp_fx, q_x, hTcxDec->syn_OverlFB, hTcxDec->syn_Overl_TDACFB, xn_bufFB_fx_16, hTcxCfg->tcx_aldo_window_1_FB, hTcxCfg->tcx_aldo_window_1_FB_trunc, hTcxCfg->tcx_aldo_window_2_FB,
                       hTcxCfg->tcx_mdct_window_halfFB, hTcxCfg->tcx_mdct_window_minimumFB, hTcxCfg->tcx_mdct_window_transFB, hTcxCfg->tcx_mdct_window_half_lengthFB, hTcxCfg->tcx_mdct_window_min_lengthFB, index,
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                       kernelType, left_rect, tcx_offsetFB, overlapFB, L_frameTCX, L_frameTCX, shr( s_max( L_frameTCX, L_spec ), 1 ), L_frameTCX_glob, frame_cnt, bfi, st->hHQ_core->old_out_fx, &st->hHQ_core->q_old_out_fx, 1, st, ratio, acelp_zir_fx, q_win );
#else
                       kernelType, left_rect, tcx_offsetFB, overlapFB, L_frameTCX, L_frameTCX, shr( s_max( L_frameTCX, L_spec ), 1 ), L_frameTCX_glob, frame_cnt, bfi, st->hHQ_core->old_out_fx, 1, st, ratio, acelp_zir_fx, q_win );
@@ -5314,7 +5315,7 @@ void decoder_tcx_imdct_fx(
    {

        IMDCT_ivas_fx( x_fx, q_x, hTcxDec->syn_OverlFB, hTcxDec->syn_Overl_TDACFB, xn_bufFB_fx_16, hTcxCfg->tcx_aldo_window_1_FB, hTcxCfg->tcx_aldo_window_1_FB_trunc, hTcxCfg->tcx_aldo_window_2_FB, hTcxCfg->tcx_mdct_window_halfFB, hTcxCfg->tcx_mdct_window_minimumFB, hTcxCfg->tcx_mdct_window_transFB, hTcxCfg->tcx_mdct_window_half_lengthFB, hTcxCfg->tcx_mdct_window_min_lengthFB, index,
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                       kernelType, left_rect, tcx_offsetFB, overlapFB, L_frameTCX, L_frameTCX, shr( s_max( L_frameTCX, L_spec ), 1 ), L_frameTCX_glob, frame_cnt, bfi, st->hHQ_core->old_out_fx, &st->hHQ_core->q_old_out_fx, 1, st, ratio, acelp_zir_fx, q_win );
#else
                       kernelType, left_rect, tcx_offsetFB, overlapFB, L_frameTCX, L_frameTCX, shr( s_max( L_frameTCX, L_spec ), 1 ), L_frameTCX_glob, frame_cnt, bfi, st->hHQ_core->old_out_fx, 1, st, ratio, acelp_zir_fx, q_win );
+1 −1
Original line number Diff line number Diff line
@@ -1202,7 +1202,7 @@ void HQ_core_dec_init_fx(
    hHQ_core->Q_old_wtda = 15;
    hHQ_core->Q_old_postdec = 0;
    hHQ_core->Q_old_wtda_LB = 0;
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
    hHQ_core->q_old_out_fx = 0;
    hHQ_core->q_old_out_LB_fx = 0;
#endif
+3 −3
Original line number Diff line number Diff line
@@ -1178,7 +1178,7 @@ void ivas_mdct_core_reconstruct_fx(
            st->hTcxDec->Q_old_syn_Overl = q_win;
            Scale_sig( st->hTcxDec->syn_Overl, L_FRAME32k / 2, sub( q_win, st->Q_syn ) );    // Q(st->Q_syn) -> q_win
            Scale_sig( st->hTcxDec->syn_OverlFB, L_FRAME_MAX / 2, sub( q_win, st->Q_syn ) ); // Q(st->Q_syn) -> q_win
#ifndef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifndef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
            Scale_sig( st->hHQ_core->old_out_LB_fx, L_FRAME32k, sub( q_win, st->hHQ_core->Q_old_wtda_LB ) ); // Q(st->hHQ_core->Q_old_wtda_LB) -> q_win
            Scale_sig( st->hHQ_core->old_out_fx, L_FRAME48k, sub( q_win, st->hHQ_core->Q_old_wtda ) );       // Q(st->hHQ_core->Q_old_wtda) -> q_win
#endif
@@ -1212,7 +1212,7 @@ void ivas_mdct_core_reconstruct_fx(
                    /* Note: these buffers are not subframe-based, hence no indexing with k */
                    set16_fx( &st->hHQ_core->old_out_LB_fx[0], 0, L_frame[ch] );
                    set16_fx( &st->hHQ_core->old_out_fx[0], 0, L_frameTCX[ch] );
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
                    st->hHQ_core->q_old_out_LB_fx = 0;
                    st->hHQ_core->q_old_out_fx = 0;
#endif
@@ -1256,7 +1256,7 @@ void ivas_mdct_core_reconstruct_fx(
            Scale_sig( st->syn, M + 1, add( st->Q_syn, 2 ) );
            Scale_sig( st->hTcxDec->syn_OverlFB, L_FRAME_MAX / 2, sub( st->Q_syn, q_win ) ); // q_win -> st->Q_syn
            Scale_sig( st->hTcxDec->syn_Overl, L_FRAME32k / 2, sub( st->Q_syn, q_win ) );    // q_win -> st->Q_syn
#ifndef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifndef FIX_1348_BIT_PRECISION_IMPROVEMENT_DYNAMIC_QOLD
            Scale_sig( st->hHQ_core->old_out_LB_fx, L_FRAME32k, sub( st->Q_syn, q_win ) ); // q_win -> st->Q_syn
            Scale_sig( st->hHQ_core->old_out_fx, L_FRAME48k, sub( st->Q_syn, q_win ) );    // q_win -> st->Q_syn
#endif
Loading