Loading lib_com/ivas_dirac_com_fx.c +261 −14 File changed.Preview size limit exceeded, changes collapsed. Show changes lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,7 @@ #define OPT_HEAD_ROT_REND_V1_BE #define OPT_SBA_DEC_V2_BE #define OPT_SBA_ENC_V2_BE #define OPT_SBA_ENC_V2_NBE #define OPT_SBA_ENC_V1_BE #define OPT_BIN_RENDERER_V1 #define OPT_BIN_RENDERER_V2 Loading lib_com/swb_tbe_com_fx.c +28 −3 Original line number Diff line number Diff line Loading @@ -6982,6 +6982,7 @@ void synthesise_fb_high_band_fx( elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); #endif } /* temp1 = sum2_f( tmp, L_FRAME48k ) + 0.001f */ temp1 = sum2_fx_mod( tmp, L_FRAME48k ); L_tmp = L_max( 1, fb_exc_energy ); /*Q(2*Q_fb_exc + 1)*/ Loading @@ -6990,9 +6991,33 @@ void synthesise_fb_high_band_fx( tmp1 = sub( add( Q_fb_exc, Q_fb_exc ), 8 ); /* 1-9*/ exp = sub( sub( 31, tmp1 ), exp ); IF( element_mode != EVS_MONO ) { Word16 sft, t_Q; Word64 P_ONE = 33; /* 0.001f in Q15 */ move64(); Word64 W_temp; t_Q = sub( shl( exp_tmp, 1 ), 8 ); P_ONE = W_shl( P_ONE, sub( t_Q, 15 ) ); W_temp = W_add( P_ONE, temp1 ); sft = W_norm( W_temp ); W_temp = W_shl( W_temp, sft ); temp1 = W_extract_h( W_temp ); t_Q = sub( add( t_Q, sft ), 32 ); tmp2 = extract_h( temp1 ); exp2 = sub( 31, t_Q ); } ELSE { exp2 = norm_l( temp1 ); tmp2 = extract_h( L_shl( temp1, exp2 ) ); exp2 = sub( sub( 31, sub( shl( exp_tmp, 1 ), 8 ) ), exp2 ); /* in Q15 (temp1 in Q9)*/ } exp = sub( exp2, exp ); /* Denormalize and substract */ IF( GT_16( tmp2, tmp3 ) ) Loading lib_dec/ivas_stereo_dft_dec_fx.c +5 −5 Original line number Diff line number Diff line Loading @@ -2608,7 +2608,7 @@ void stereo_dft_dec_fx( q_cna_level = hFdCngDec->smoothed_psd_exp; move16(); l_tmp = Sqrt32( cna_level, &q_cna_level ); scale_fact = Mpy_32_32( l_tmp, scale_fact0 ); /* q_cna_level */ scale_fact = Mpy_32_32( l_tmp, scale_fact0 ); /* Q = (31-q_cna_level) + Q15 - 31 */ /* scale_fact0 will be in Q15 by the time the above operation is performed so the q of scale_fact represented now by q_cna_level has to be updated Loading @@ -2628,12 +2628,12 @@ void stereo_dft_dec_fx( l_tmp = L_add( Madd_32_16( N1, N1, g ), Mpy_32_16_1( N2, gamma ) ); /* q_cna_level */ l_tmp = L_shr( l_tmp, sub( q_cna_level, hStereoDft->q_dft ) ); /* q_dft */ #endif /* OPT_STEREO_32KBPS_V1 */ DFT_L[2 * i] = L_add( DFT_L[2 * i], l_tmp ); /* q_dft */ DFT_L[2 * i] = L_add_sat( DFT_L[2 * i], l_tmp ); /* q_dft */ move32(); #ifdef OPT_STEREO_32KBPS_V1 l_tmp = Msub_32_16( Msub_32_16( N1, N1, g ), N2, gamma ); /* q_cna_level */ l_tmp = L_shr( l_tmp, shift ); /* q_dft */ DFT_R[2 * i] = L_add( DFT_R[2 * i], l_tmp ); /* q_dft */ DFT_R[2 * i] = L_add_sat( DFT_R[2 * i], l_tmp ); /* q_dft */ #else /* OPT_STEREO_32KBPS_V1 */ l_tmp = L_sub( Msub_32_16( N1, N1, g ), Mpy_32_16_1( N2, gamma ) ); /* q_cna_level */ l_tmp = L_shr( l_tmp, sub( q_cna_level, hStereoDft->q_dft ) ); /* q_dft */ Loading @@ -2646,11 +2646,11 @@ void stereo_dft_dec_fx( #ifdef OPT_STEREO_32KBPS_V1 l_tmp = Madd_32_16( Madd_32_16( N1, N1, g ), N2, gamma ); /* q_cna_level */ l_tmp = L_shr( l_tmp, shift ); /* q_dft */ DFT_L[2 * i + 1] = L_add( DFT_L[2 * i + 1], l_tmp ); /* q_dft */ DFT_L[2 * i + 1] = L_add_sat( DFT_L[2 * i + 1], l_tmp ); /* q_dft */ move32(); l_tmp = Msub_32_16( Msub_32_16( N1, N1, g ), N2, gamma ); /* q_cna_level */ l_tmp = L_shr( l_tmp, shift ); /* q_dft */ DFT_R[2 * i + 1] = L_add( DFT_R[2 * i + 1], l_tmp ); /* q_dft */ DFT_R[2 * i + 1] = L_add_sat( DFT_R[2 * i + 1], l_tmp ); /* q_dft */ move32(); #else /* OPT_STEREO_32KBPS_V1 */ l_tmp = L_add( Madd_32_16( N1, N1, g ), Mpy_32_16_1( N2, gamma ) ); /* q_cna_level */ Loading lib_enc/tcx_utils_enc_fx.c +19 −11 Original line number Diff line number Diff line Loading @@ -1392,25 +1392,33 @@ void tcx_scalar_quantization_ivas_fx( s = sub( add( x_e, gain_e ), 15 ); } /* substract 0x8000 to affect the mac_r in the following loop so it acts like extract_h. the 0x4000 will be multiplied by 2 by the mac_r to get to 0x8000 and disable the round. */ offset = sub( offset, 0x4000 ); FOR( ; i >= 0; i-- ) { offs32 = Mpy_32_16_1( L_abs( x[i] ), gain ); /* multiply */ offs32 = Mpy_32_16_1( x[i], gain ); /* multiply */ offs32 = L_shl_sat( offs32, s ); /* convert to 15Q16 */ tmp16 = mac_r_sat( offs32, offset, 1 ); /* add offset and truncate */ IF( x[i] < 0 ) IF( x[i] > 0 ) { tmp16 = negate( tmp16 ); /* restore sign */ offs32 = L_add_sat( offs32, L_shl( offset, 1 ) ); tmp16 = extract_h( offs32 ); IF( GT_32( L_deposit_h( tmp16 ), offs32 ) ) { tmp16 = sub( tmp16, 1 ); } } ELSE { offs32 = L_add_sat( offs32, L_shl( negate( offset ), 1 ) ); tmp16 = extract_h( offs32 ); IF( LT_32( L_deposit_h( tmp16 ), offs32 ) ) { tmp16 = add( tmp16, 1 ); } } xq[i] = tmp16; move16(); } IF( alfe_flag == 0 ) { AdaptLowFreqEmph_fx( x, x_e, xq, gain, gain_e, Loading Loading
lib_com/ivas_dirac_com_fx.c +261 −14 File changed.Preview size limit exceeded, changes collapsed. Show changes
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,7 @@ #define OPT_HEAD_ROT_REND_V1_BE #define OPT_SBA_DEC_V2_BE #define OPT_SBA_ENC_V2_BE #define OPT_SBA_ENC_V2_NBE #define OPT_SBA_ENC_V1_BE #define OPT_BIN_RENDERER_V1 #define OPT_BIN_RENDERER_V2 Loading
lib_com/swb_tbe_com_fx.c +28 −3 Original line number Diff line number Diff line Loading @@ -6982,6 +6982,7 @@ void synthesise_fb_high_band_fx( elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); #endif } /* temp1 = sum2_f( tmp, L_FRAME48k ) + 0.001f */ temp1 = sum2_fx_mod( tmp, L_FRAME48k ); L_tmp = L_max( 1, fb_exc_energy ); /*Q(2*Q_fb_exc + 1)*/ Loading @@ -6990,9 +6991,33 @@ void synthesise_fb_high_band_fx( tmp1 = sub( add( Q_fb_exc, Q_fb_exc ), 8 ); /* 1-9*/ exp = sub( sub( 31, tmp1 ), exp ); IF( element_mode != EVS_MONO ) { Word16 sft, t_Q; Word64 P_ONE = 33; /* 0.001f in Q15 */ move64(); Word64 W_temp; t_Q = sub( shl( exp_tmp, 1 ), 8 ); P_ONE = W_shl( P_ONE, sub( t_Q, 15 ) ); W_temp = W_add( P_ONE, temp1 ); sft = W_norm( W_temp ); W_temp = W_shl( W_temp, sft ); temp1 = W_extract_h( W_temp ); t_Q = sub( add( t_Q, sft ), 32 ); tmp2 = extract_h( temp1 ); exp2 = sub( 31, t_Q ); } ELSE { exp2 = norm_l( temp1 ); tmp2 = extract_h( L_shl( temp1, exp2 ) ); exp2 = sub( sub( 31, sub( shl( exp_tmp, 1 ), 8 ) ), exp2 ); /* in Q15 (temp1 in Q9)*/ } exp = sub( exp2, exp ); /* Denormalize and substract */ IF( GT_16( tmp2, tmp3 ) ) Loading
lib_dec/ivas_stereo_dft_dec_fx.c +5 −5 Original line number Diff line number Diff line Loading @@ -2608,7 +2608,7 @@ void stereo_dft_dec_fx( q_cna_level = hFdCngDec->smoothed_psd_exp; move16(); l_tmp = Sqrt32( cna_level, &q_cna_level ); scale_fact = Mpy_32_32( l_tmp, scale_fact0 ); /* q_cna_level */ scale_fact = Mpy_32_32( l_tmp, scale_fact0 ); /* Q = (31-q_cna_level) + Q15 - 31 */ /* scale_fact0 will be in Q15 by the time the above operation is performed so the q of scale_fact represented now by q_cna_level has to be updated Loading @@ -2628,12 +2628,12 @@ void stereo_dft_dec_fx( l_tmp = L_add( Madd_32_16( N1, N1, g ), Mpy_32_16_1( N2, gamma ) ); /* q_cna_level */ l_tmp = L_shr( l_tmp, sub( q_cna_level, hStereoDft->q_dft ) ); /* q_dft */ #endif /* OPT_STEREO_32KBPS_V1 */ DFT_L[2 * i] = L_add( DFT_L[2 * i], l_tmp ); /* q_dft */ DFT_L[2 * i] = L_add_sat( DFT_L[2 * i], l_tmp ); /* q_dft */ move32(); #ifdef OPT_STEREO_32KBPS_V1 l_tmp = Msub_32_16( Msub_32_16( N1, N1, g ), N2, gamma ); /* q_cna_level */ l_tmp = L_shr( l_tmp, shift ); /* q_dft */ DFT_R[2 * i] = L_add( DFT_R[2 * i], l_tmp ); /* q_dft */ DFT_R[2 * i] = L_add_sat( DFT_R[2 * i], l_tmp ); /* q_dft */ #else /* OPT_STEREO_32KBPS_V1 */ l_tmp = L_sub( Msub_32_16( N1, N1, g ), Mpy_32_16_1( N2, gamma ) ); /* q_cna_level */ l_tmp = L_shr( l_tmp, sub( q_cna_level, hStereoDft->q_dft ) ); /* q_dft */ Loading @@ -2646,11 +2646,11 @@ void stereo_dft_dec_fx( #ifdef OPT_STEREO_32KBPS_V1 l_tmp = Madd_32_16( Madd_32_16( N1, N1, g ), N2, gamma ); /* q_cna_level */ l_tmp = L_shr( l_tmp, shift ); /* q_dft */ DFT_L[2 * i + 1] = L_add( DFT_L[2 * i + 1], l_tmp ); /* q_dft */ DFT_L[2 * i + 1] = L_add_sat( DFT_L[2 * i + 1], l_tmp ); /* q_dft */ move32(); l_tmp = Msub_32_16( Msub_32_16( N1, N1, g ), N2, gamma ); /* q_cna_level */ l_tmp = L_shr( l_tmp, shift ); /* q_dft */ DFT_R[2 * i + 1] = L_add( DFT_R[2 * i + 1], l_tmp ); /* q_dft */ DFT_R[2 * i + 1] = L_add_sat( DFT_R[2 * i + 1], l_tmp ); /* q_dft */ move32(); #else /* OPT_STEREO_32KBPS_V1 */ l_tmp = L_add( Madd_32_16( N1, N1, g ), Mpy_32_16_1( N2, gamma ) ); /* q_cna_level */ Loading
lib_enc/tcx_utils_enc_fx.c +19 −11 Original line number Diff line number Diff line Loading @@ -1392,25 +1392,33 @@ void tcx_scalar_quantization_ivas_fx( s = sub( add( x_e, gain_e ), 15 ); } /* substract 0x8000 to affect the mac_r in the following loop so it acts like extract_h. the 0x4000 will be multiplied by 2 by the mac_r to get to 0x8000 and disable the round. */ offset = sub( offset, 0x4000 ); FOR( ; i >= 0; i-- ) { offs32 = Mpy_32_16_1( L_abs( x[i] ), gain ); /* multiply */ offs32 = Mpy_32_16_1( x[i], gain ); /* multiply */ offs32 = L_shl_sat( offs32, s ); /* convert to 15Q16 */ tmp16 = mac_r_sat( offs32, offset, 1 ); /* add offset and truncate */ IF( x[i] < 0 ) IF( x[i] > 0 ) { tmp16 = negate( tmp16 ); /* restore sign */ offs32 = L_add_sat( offs32, L_shl( offset, 1 ) ); tmp16 = extract_h( offs32 ); IF( GT_32( L_deposit_h( tmp16 ), offs32 ) ) { tmp16 = sub( tmp16, 1 ); } } ELSE { offs32 = L_add_sat( offs32, L_shl( negate( offset ), 1 ) ); tmp16 = extract_h( offs32 ); IF( LT_32( L_deposit_h( tmp16 ), offs32 ) ) { tmp16 = add( tmp16, 1 ); } } xq[i] = tmp16; move16(); } IF( alfe_flag == 0 ) { AdaptLowFreqEmph_fx( x, x_e, xq, gain, gain_e, Loading