Loading lib_com/options.h +1 −2 Original line number Diff line number Diff line Loading @@ -148,8 +148,7 @@ #define FIX_1824 #define FIX_1822 #define FIX_1764_RENORM /* NTT: update renorm for ivas_stereo_dmx_evs */ #define FIX_1764_ABS /* NTT: use abs in ivas_stereo_dmx_evs */ #define FIX_ISSUE_1764 /* NTT: update renorm and use abs */ /* #################### Start BASOP porting switches ############################ */ Loading lib_enc/ivas_stereo_dmx_evs_fx.c +45 −15 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ #define STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 24576 #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 #define STEREO_DMX_EVS_POC_RENORM_TH 1048576 // 65536 * 16 #define STEREO_DMX_EVS_POC_RENORM_SHIFT 10 #else Loading Loading @@ -232,7 +232,7 @@ static Word32 spectral_flatness_fx( const Word16 *sig_fx_e, /* i : input signal (exponent) - can be NULL */ const Word16 sig_length /* i : input signal length */ ); #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 static void renorm_poc_fx( Word32 *real, /* i/o real-part*/ Word32 *imag /* i/o imaginary-part */ Loading Loading @@ -420,7 +420,11 @@ static void calc_poc_fx( mult_angle = 2; /*****/ move16(); } #ifdef FIX_ISSUE_1764 ELSE IF( EQ_16( input_frame, L_FRAME32k ) ) #else if ( EQ_16( input_frame, L_FRAME32k ) ) #endif { mult_angle = 2; move16(); Loading Loading @@ -448,7 +452,7 @@ static void calc_poc_fx( Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) ); Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) ); #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 renorm_poc_fx( &Lr, &Li ); renorm_poc_fx( &Rr, &Ri ); #else Loading Loading @@ -476,7 +480,7 @@ static void calc_poc_fx( Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) ); Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) ); #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 renorm_poc_fx( &Lr, &Li ); renorm_poc_fx( &Rr, &Ri ); #else Loading Loading @@ -513,7 +517,7 @@ static void calc_poc_fx( Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) ); Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) ); #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 renorm_poc_fx( &Lr, &Li ); renorm_poc_fx( &Rr, &Ri ); #else Loading @@ -540,7 +544,7 @@ static void calc_poc_fx( Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) ); Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) ); #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 renorm_poc_fx( &Lr, &Li ); renorm_poc_fx( &Rr, &Ri ); #else Loading Loading @@ -569,7 +573,7 @@ static void calc_poc_fx( Rr = L_add( specRr[i], Mpy_32_32_r( specLi[i], EPS ) ); Ri = L_sub( specRi[i], Mpy_32_32_r( specLr[i], EPS ) ); #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 renorm_poc_fx( &Lr, &Li ); renorm_poc_fx( &Rr, &Ri ); #endif Loading Loading @@ -604,7 +608,7 @@ static void calc_poc_fx( { tmp1 = Mpy_32_32_r( wnd[i * step + bias], gamma ); // Q31 #ifdef FIX_1764_ABS #ifdef FIX_ISSUE_1764 IF( GT_32( L_abs( specPOr[i] ), L_abs( specPOi[i] ) ) ) #else IF( W_mult0_32_32( L_sub( specPOr[i], specPOi[i] ), L_add( specPOr[i], specPOi[i] ) ) > 0 ) Loading @@ -627,13 +631,13 @@ static void calc_poc_fx( FOR( ; i < end; i++ ) /* binary search from 16 angles */ { tmp1 = Mpy_32_32_r( wnd[i * step + bias], gamma ); // Q31 #ifdef FIX_1764_ABS #ifdef FIX_ISSUE_1764 IF( GT_32( L_abs( specPOr[i] ), L_abs( specPOi[i] ) ) ) #else IF( W_mult0_32_32( L_sub( specPOr[i], specPOi[i] ), L_add( specPOr[i], specPOi[i] ) ) > 0 ) #endif { #ifdef FIX_1764_ABS #ifdef FIX_ISSUE_1764 IF( GT_32( L_abs( Mpy_32_16_1( specPOr[i], 13573 /*0.414213f*/ ) ), L_abs( specPOi[i] ) ) ) /*tan(PI/8)*/ #else IF( W_mult0_32_32( L_sub( Mpy_32_16_1( specPOr[i], 13573 /*0.414213f*/ ), specPOi[i] ), L_add( Mpy_32_16_1( specPOr[i], 13573 /*0.414213f*/ ), specPOi[i] ) ) > 0 ) /*tan(PI/8)*/ Loading @@ -654,7 +658,7 @@ static void calc_poc_fx( } ELSE { #ifdef FIX_1764_ABS #ifdef FIX_ISSUE_1764 IF( GT_32( L_abs( specPOr[i] ), L_abs( Mpy_32_16_1( specPOi[i], 13573 /*0.414213f*/ ) ) ) ) /*tan(PI/8)*/ #else IF( W_mult0_32_32( L_sub( specPOr[i], Mpy_32_16_1( specPOi[i], 13573 /*0.414213f*/ ) ), L_add( specPOr[i], Mpy_32_16_1( specPOi[i], 13573 /*0.414213f*/ ) ) ) > 0 ) /*tan(PI/8)*/ Loading Loading @@ -753,8 +757,11 @@ static void calc_poc_fx( hPHA->pha_hys_cnt = 0; move16(); } #ifdef FIX_ISSUE_1764 IF( GE_32( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) ) #else if ( GE_32( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) ) #endif { hPHA->curr_pha = STEREO_DMX_EVS_PHA_IPD; move32(); Loading @@ -778,8 +785,11 @@ static void calc_poc_fx( hPHA->pha_hys_cnt = 0; move16(); } #ifdef FIX_ISSUE_1764 IF( GE_16( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) ) #else if ( GE_16( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) ) #endif { hPHA->curr_pha = STEREO_DMX_EVS_PHA_IPD2; move32(); Loading Loading @@ -1674,6 +1684,11 @@ static Word32 find_poc_peak_fx( { Q_fx[i] = L_shr( Q_fx[i], negate( Q_e[i] ) ); // Q31 move32(); #ifndef FIX_ISSUE_1764 } FOR( i = 0; i < CPE_CHANNELS; i++ ) { #endif peakQ_fx[i] = L_shr( peakQ_fx[i], sub( 15, peakQ_e[i] ) ); // Q16 move32(); } Loading Loading @@ -1873,7 +1888,7 @@ static Word32 spectral_flatness_fx( return L_shl_sat( L_deposit_h( sf ), L_tmp_e ); } #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 /*-------------------------------------------------------------------* * renorm_poc_fx() * Loading Loading @@ -2419,7 +2434,11 @@ void stereo_dmx_evs_enc_fx( FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ ) { // ftmp += p_data_mem[n - m] * p_prev_taps[m]; #ifdef FIX_ISSUE_1764 fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_prev_taps[m] ) ); // Q25 #else fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[sub( n, m )], p_prev_taps[m] ) ); // Q25 #endif } fx_tmp = L_shl( fx_tmp, 1 ); // Q26 mem_prev[n] = L_add( mem_prev[n], Mpy_32_32( fx_tmp, INV_SQRT_2_Q31 ) ); Loading @@ -2444,7 +2463,11 @@ void stereo_dmx_evs_enc_fx( FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ ) { // ftmp += p_data_mem[n - m] * p_curr_taps[m]; #ifdef FIX_ISSUE_1764 fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_curr_taps[m] ) ); // Q25 #else fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[sub( n, m )], p_curr_taps[m] ) ); // Q25 #endif } fx_tmp = L_shl( fx_tmp, 1 ); // Q26 // dmx_pha_data[n] += ftmp * INV_SQRT_2; Loading Loading @@ -2490,8 +2513,11 @@ void stereo_dmx_evs_enc_fx( hPHA->prc_hys_cnt = 0; move16(); } #ifdef FIX_ISSUE_1764 IF( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) #else if ( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) #endif { hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC; move32(); Loading @@ -2515,7 +2541,11 @@ void stereo_dmx_evs_enc_fx( move16(); } #ifdef FIX_ISSUE_1764 IF( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) #else if ( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) #endif { hPHA->curr_prc = STEREO_DMX_EVS_PRC_PHA; move32(); Loading Loading
lib_com/options.h +1 −2 Original line number Diff line number Diff line Loading @@ -148,8 +148,7 @@ #define FIX_1824 #define FIX_1822 #define FIX_1764_RENORM /* NTT: update renorm for ivas_stereo_dmx_evs */ #define FIX_1764_ABS /* NTT: use abs in ivas_stereo_dmx_evs */ #define FIX_ISSUE_1764 /* NTT: update renorm and use abs */ /* #################### Start BASOP porting switches ############################ */ Loading
lib_enc/ivas_stereo_dmx_evs_fx.c +45 −15 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ #define STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 24576 #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 #define STEREO_DMX_EVS_POC_RENORM_TH 1048576 // 65536 * 16 #define STEREO_DMX_EVS_POC_RENORM_SHIFT 10 #else Loading Loading @@ -232,7 +232,7 @@ static Word32 spectral_flatness_fx( const Word16 *sig_fx_e, /* i : input signal (exponent) - can be NULL */ const Word16 sig_length /* i : input signal length */ ); #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 static void renorm_poc_fx( Word32 *real, /* i/o real-part*/ Word32 *imag /* i/o imaginary-part */ Loading Loading @@ -420,7 +420,11 @@ static void calc_poc_fx( mult_angle = 2; /*****/ move16(); } #ifdef FIX_ISSUE_1764 ELSE IF( EQ_16( input_frame, L_FRAME32k ) ) #else if ( EQ_16( input_frame, L_FRAME32k ) ) #endif { mult_angle = 2; move16(); Loading Loading @@ -448,7 +452,7 @@ static void calc_poc_fx( Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) ); Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) ); #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 renorm_poc_fx( &Lr, &Li ); renorm_poc_fx( &Rr, &Ri ); #else Loading Loading @@ -476,7 +480,7 @@ static void calc_poc_fx( Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) ); Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) ); #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 renorm_poc_fx( &Lr, &Li ); renorm_poc_fx( &Rr, &Ri ); #else Loading Loading @@ -513,7 +517,7 @@ static void calc_poc_fx( Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) ); Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) ); #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 renorm_poc_fx( &Lr, &Li ); renorm_poc_fx( &Rr, &Ri ); #else Loading @@ -540,7 +544,7 @@ static void calc_poc_fx( Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) ); Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) ); #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 renorm_poc_fx( &Lr, &Li ); renorm_poc_fx( &Rr, &Ri ); #else Loading Loading @@ -569,7 +573,7 @@ static void calc_poc_fx( Rr = L_add( specRr[i], Mpy_32_32_r( specLi[i], EPS ) ); Ri = L_sub( specRi[i], Mpy_32_32_r( specLr[i], EPS ) ); #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 renorm_poc_fx( &Lr, &Li ); renorm_poc_fx( &Rr, &Ri ); #endif Loading Loading @@ -604,7 +608,7 @@ static void calc_poc_fx( { tmp1 = Mpy_32_32_r( wnd[i * step + bias], gamma ); // Q31 #ifdef FIX_1764_ABS #ifdef FIX_ISSUE_1764 IF( GT_32( L_abs( specPOr[i] ), L_abs( specPOi[i] ) ) ) #else IF( W_mult0_32_32( L_sub( specPOr[i], specPOi[i] ), L_add( specPOr[i], specPOi[i] ) ) > 0 ) Loading @@ -627,13 +631,13 @@ static void calc_poc_fx( FOR( ; i < end; i++ ) /* binary search from 16 angles */ { tmp1 = Mpy_32_32_r( wnd[i * step + bias], gamma ); // Q31 #ifdef FIX_1764_ABS #ifdef FIX_ISSUE_1764 IF( GT_32( L_abs( specPOr[i] ), L_abs( specPOi[i] ) ) ) #else IF( W_mult0_32_32( L_sub( specPOr[i], specPOi[i] ), L_add( specPOr[i], specPOi[i] ) ) > 0 ) #endif { #ifdef FIX_1764_ABS #ifdef FIX_ISSUE_1764 IF( GT_32( L_abs( Mpy_32_16_1( specPOr[i], 13573 /*0.414213f*/ ) ), L_abs( specPOi[i] ) ) ) /*tan(PI/8)*/ #else IF( W_mult0_32_32( L_sub( Mpy_32_16_1( specPOr[i], 13573 /*0.414213f*/ ), specPOi[i] ), L_add( Mpy_32_16_1( specPOr[i], 13573 /*0.414213f*/ ), specPOi[i] ) ) > 0 ) /*tan(PI/8)*/ Loading @@ -654,7 +658,7 @@ static void calc_poc_fx( } ELSE { #ifdef FIX_1764_ABS #ifdef FIX_ISSUE_1764 IF( GT_32( L_abs( specPOr[i] ), L_abs( Mpy_32_16_1( specPOi[i], 13573 /*0.414213f*/ ) ) ) ) /*tan(PI/8)*/ #else IF( W_mult0_32_32( L_sub( specPOr[i], Mpy_32_16_1( specPOi[i], 13573 /*0.414213f*/ ) ), L_add( specPOr[i], Mpy_32_16_1( specPOi[i], 13573 /*0.414213f*/ ) ) ) > 0 ) /*tan(PI/8)*/ Loading Loading @@ -753,8 +757,11 @@ static void calc_poc_fx( hPHA->pha_hys_cnt = 0; move16(); } #ifdef FIX_ISSUE_1764 IF( GE_32( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) ) #else if ( GE_32( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) ) #endif { hPHA->curr_pha = STEREO_DMX_EVS_PHA_IPD; move32(); Loading @@ -778,8 +785,11 @@ static void calc_poc_fx( hPHA->pha_hys_cnt = 0; move16(); } #ifdef FIX_ISSUE_1764 IF( GE_16( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) ) #else if ( GE_16( hPHA->pha_hys_cnt, STEREO_DMX_EVS_SWTCH_HYS_THRES ) ) #endif { hPHA->curr_pha = STEREO_DMX_EVS_PHA_IPD2; move32(); Loading Loading @@ -1674,6 +1684,11 @@ static Word32 find_poc_peak_fx( { Q_fx[i] = L_shr( Q_fx[i], negate( Q_e[i] ) ); // Q31 move32(); #ifndef FIX_ISSUE_1764 } FOR( i = 0; i < CPE_CHANNELS; i++ ) { #endif peakQ_fx[i] = L_shr( peakQ_fx[i], sub( 15, peakQ_e[i] ) ); // Q16 move32(); } Loading Loading @@ -1873,7 +1888,7 @@ static Word32 spectral_flatness_fx( return L_shl_sat( L_deposit_h( sf ), L_tmp_e ); } #ifdef FIX_1764_RENORM #ifdef FIX_ISSUE_1764 /*-------------------------------------------------------------------* * renorm_poc_fx() * Loading Loading @@ -2419,7 +2434,11 @@ void stereo_dmx_evs_enc_fx( FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ ) { // ftmp += p_data_mem[n - m] * p_prev_taps[m]; #ifdef FIX_ISSUE_1764 fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_prev_taps[m] ) ); // Q25 #else fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[sub( n, m )], p_prev_taps[m] ) ); // Q25 #endif } fx_tmp = L_shl( fx_tmp, 1 ); // Q26 mem_prev[n] = L_add( mem_prev[n], Mpy_32_32( fx_tmp, INV_SQRT_2_Q31 ) ); Loading @@ -2444,7 +2463,11 @@ void stereo_dmx_evs_enc_fx( FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ ) { // ftmp += p_data_mem[n - m] * p_curr_taps[m]; #ifdef FIX_ISSUE_1764 fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_curr_taps[m] ) ); // Q25 #else fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[sub( n, m )], p_curr_taps[m] ) ); // Q25 #endif } fx_tmp = L_shl( fx_tmp, 1 ); // Q26 // dmx_pha_data[n] += ftmp * INV_SQRT_2; Loading Loading @@ -2490,8 +2513,11 @@ void stereo_dmx_evs_enc_fx( hPHA->prc_hys_cnt = 0; move16(); } #ifdef FIX_ISSUE_1764 IF( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) #else if ( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) #endif { hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC; move32(); Loading @@ -2515,7 +2541,11 @@ void stereo_dmx_evs_enc_fx( move16(); } #ifdef FIX_ISSUE_1764 IF( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) #else if ( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) #endif { hPHA->curr_prc = STEREO_DMX_EVS_PRC_PHA; move32(); Loading