Loading lib_enc/ivas_stereo_dft_enc_itd_fx.c +13 −5 Original line number Diff line number Diff line Loading @@ -953,6 +953,7 @@ void stereo_dft_enc_compute_itd_fx( Word16 cng_xcorr_filt_e; #ifdef NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG Word32 sum_nrg_delta; Word16 sum_nrg_delta_e; #endif Word16 prev_itd_max; Word16 itd_max_flip; Loading Loading @@ -1370,24 +1371,31 @@ void stereo_dft_enc_compute_itd_fx( L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ); #ifdef NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG IF( L_temp >= 0 ) sum_nrg_delta = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &sum_nrg_delta_e ); IF( GE_32( sum_nrg_delta, 0 ) ) { L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MAX_32, 0, &L_temp_e ); sum_nrg_delta = L_max( sum_nrg_delta, 1 << sum_nrg_delta_e ); } ELSE { L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MIN_32, 0, &L_temp_e ); sum_nrg_delta = L_min( sum_nrg_delta, L_negate( 1 << sum_nrg_delta_e ) ); } //angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / sum_nrg_delta ) ); L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, sum_nrg_delta, &L_temp2_e ); L_temp2_e = add( L_temp2_e, sub( add( grand_dot_prod_real_e, 1 ), sum_nrg_delta_e ) ); angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14 #else // angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / ( sum_nrg_L - sum_nrg_R + 1.0f ) ) ); L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ); L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MAX_32, 0, &L_temp_e ); #endif L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, L_temp, &L_temp2_e ); L_temp2_e = add( L_temp2_e, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ); angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14 // angle_rot = L_abs( BASOP_util_atan2( grand_dot_prod_real, L_temp, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ) ); // Q13 #endif hStereoClassif->unclr_fv_fx[E_angle_rot] = L_shl( angle_rot, 1 ); // Q15 move32(); Loading Loading
lib_enc/ivas_stereo_dft_enc_itd_fx.c +13 −5 Original line number Diff line number Diff line Loading @@ -953,6 +953,7 @@ void stereo_dft_enc_compute_itd_fx( Word16 cng_xcorr_filt_e; #ifdef NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG Word32 sum_nrg_delta; Word16 sum_nrg_delta_e; #endif Word16 prev_itd_max; Word16 itd_max_flip; Loading Loading @@ -1370,24 +1371,31 @@ void stereo_dft_enc_compute_itd_fx( L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ); #ifdef NONBE_FIX_1063_DIV_BY_ZERO_SUMNRG IF( L_temp >= 0 ) sum_nrg_delta = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &sum_nrg_delta_e ); IF( GE_32( sum_nrg_delta, 0 ) ) { L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MAX_32, 0, &L_temp_e ); sum_nrg_delta = L_max( sum_nrg_delta, 1 << sum_nrg_delta_e ); } ELSE { L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MIN_32, 0, &L_temp_e ); sum_nrg_delta = L_min( sum_nrg_delta, L_negate( 1 << sum_nrg_delta_e ) ); } //angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / sum_nrg_delta ) ); L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, sum_nrg_delta, &L_temp2_e ); L_temp2_e = add( L_temp2_e, sub( add( grand_dot_prod_real_e, 1 ), sum_nrg_delta_e ) ); angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14 #else // angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / ( sum_nrg_L - sum_nrg_R + 1.0f ) ) ); L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ); L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MAX_32, 0, &L_temp_e ); #endif L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, L_temp, &L_temp2_e ); L_temp2_e = add( L_temp2_e, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ); angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14 // angle_rot = L_abs( BASOP_util_atan2( grand_dot_prod_real, L_temp, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ) ); // Q13 #endif hStereoClassif->unclr_fv_fx[E_angle_rot] = L_shl( angle_rot, 1 ); // Q15 move32(); Loading