Loading lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,8 @@ #define FIX_2406_FIX_GAIN_ON_INACTIVE /* VA: basop issue 2406: gain between 6.4 and 8kHz was too weak during inactive content with Fs=16kHz */ #define FIX_2407_FIX_RESIDU_IVAS /* VA: basop 2407, Implementation issue in residu_ivas + unnecessary complexity */ #define NONBE_MR2809 /* ##################### End NON-BE switches ########################### */ /* ################## End MAINTENANCE switches ######################### */ Loading lib_enc/ivas_rom_enc.h +5 −0 Original line number Diff line number Diff line Loading @@ -50,8 +50,13 @@ extern const Word32 unclr_coef_td[]; extern const Word16 xtalk_isel_td[]; extern const Word32 xtalk_mean_td[]; #ifdef NONBE_MR2809 extern const Word32 xtalk_factor_td_m[]; extern const Word16 xtalk_factor_td_e[]; #else extern const Word32 xtalk_scale_td[]; extern const Word32 xtalk_coef_td[]; #endif extern const Word16 xtalk_isel_dft[]; extern const Word32 xtalk_mean_dft_q15[]; extern const Word32 xtalk_scale_dft_q15[]; Loading lib_enc/ivas_rom_enc_fx.c +12 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,17 @@ const Word32 xtalk_mean_td[SIZE_XTALK_ISEL_TD] = /*Q15*/ 19572, 4323, 44674958, 20928, 248554, 5077, 123099, 19205, 217973, 57391, 22648, 21, 23142, 342411, 59, 612, -71224 }; #ifdef NONBE_MR2809 const Word32 xtalk_factor_td_m[SIZE_XTALK_ISEL_TD] = { 1699245373, 1831181873, 1809297797, -618548720, 1524499779, 1779553202, -37818623, 1749773419, 2137615296, -1823588164, -296137032, -2147483648, 2065624539, -562715, -2147483648, 1263996665, 1129562195 }; const Word16 xtalk_factor_td_e[SIZE_XTALK_ISEL_TD] = { -4, 1, -12, 0, -7, -2, 0, -4, 0, 0, 0, 0, -2, 0, 0, -7, -1 }; #else const Word32 xtalk_scale_td[SIZE_XTALK_ISEL_TD] = /*Q15*/ { 37220, 2553, 16147962, 18786, 191263, 13110, 139310, 20547, 45408, 60617, 17627, 43, 9123, 2070239, 88, 21549, 68968 Loading @@ -107,6 +118,7 @@ const Word32 xtalk_coef_td[SIZE_XTALK_ISEL_TD] = /*Q15*/ { 1841, 4353, 3322, -5411, 1061, 2716, -2453, 1046, 45199, -51474, -2431, -2245, 2194, -542, -135853, 99, 18138 }; #endif const Word16 xtalk_isel_dft[SIZE_XTALK_ISEL_DFT] = { E_clas, E_gainILD, E_gainIPD, E_angle_rot, E_g_pred, E_d_prodL_prodR, E_sum_xcorr, E_xcorr_itd_value, E_gphat_d_itd2, E_gphat_ratio_m1_m2, E_gphat_m2_m2 Loading lib_enc/ivas_stereo_classifier_fx.c +9 −0 Original line number Diff line number Diff line Loading @@ -1146,12 +1146,21 @@ void xtalk_classifier_td_fx( move16(); /* mean & std removal */ #ifdef NONBE_MR2809 fvn = L_sub( hStereoClassif->xtalk_fv_fx[ind], xtalk_mean_td[i] ); fvn = Mpy_32_32( fvn, xtalk_factor_td_m[i] ); // exp = 16 + 20 = 36 exp = add( 16, xtalk_factor_td_e[i] ); /* LR */ score = BASOP_Util_Add_Mant32Exp( score, score_exp, fvn, exp, &score_exp ); #else fvn = BASOP_Util_Divide3232_Scale_newton( L_sub( hStereoClassif->xtalk_fv_fx[ind], xtalk_mean_td[i] ), xtalk_scale_td[i], &exp ); fvn = Mpy_32_32( fvn, xtalk_coef_td[i] ); // Q = 31-exp+15-31 = 15-exp exp = add( exp, 16 ); // exp = 31-(15-exp) = 16+exp /* LR */ score = BASOP_Util_Add_Mant32Exp( score, score_exp, fvn, exp, &score_exp ); #endif } score = L_shl_sat( score, sub( score_exp, 3 ) ); // Q28 Loading lib_enc/ivas_stereo_ica_enc_fx.c +6 −0 Original line number Diff line number Diff line Loading @@ -2040,6 +2040,12 @@ void stereo_tca_enc_fx( move16(); sts[1]->q_inp32 = input_mem_loc_q; move16(); #ifdef NONBE_MR2809 sts[0]->q_old_inp32 = input_mem_loc_q; move16(); sts[1]->q_old_inp32 = input_mem_loc_q; move16(); #endif icaMemUpdate_fx( sts, hCPE, input_mem_loc_fx[0], input_mem_loc_fx[1], input_mem_loc_q, lMemRecalc, lMemRecalc_SCh, input_frame ); Loading Loading
lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,8 @@ #define FIX_2406_FIX_GAIN_ON_INACTIVE /* VA: basop issue 2406: gain between 6.4 and 8kHz was too weak during inactive content with Fs=16kHz */ #define FIX_2407_FIX_RESIDU_IVAS /* VA: basop 2407, Implementation issue in residu_ivas + unnecessary complexity */ #define NONBE_MR2809 /* ##################### End NON-BE switches ########################### */ /* ################## End MAINTENANCE switches ######################### */ Loading
lib_enc/ivas_rom_enc.h +5 −0 Original line number Diff line number Diff line Loading @@ -50,8 +50,13 @@ extern const Word32 unclr_coef_td[]; extern const Word16 xtalk_isel_td[]; extern const Word32 xtalk_mean_td[]; #ifdef NONBE_MR2809 extern const Word32 xtalk_factor_td_m[]; extern const Word16 xtalk_factor_td_e[]; #else extern const Word32 xtalk_scale_td[]; extern const Word32 xtalk_coef_td[]; #endif extern const Word16 xtalk_isel_dft[]; extern const Word32 xtalk_mean_dft_q15[]; extern const Word32 xtalk_scale_dft_q15[]; Loading
lib_enc/ivas_rom_enc_fx.c +12 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,17 @@ const Word32 xtalk_mean_td[SIZE_XTALK_ISEL_TD] = /*Q15*/ 19572, 4323, 44674958, 20928, 248554, 5077, 123099, 19205, 217973, 57391, 22648, 21, 23142, 342411, 59, 612, -71224 }; #ifdef NONBE_MR2809 const Word32 xtalk_factor_td_m[SIZE_XTALK_ISEL_TD] = { 1699245373, 1831181873, 1809297797, -618548720, 1524499779, 1779553202, -37818623, 1749773419, 2137615296, -1823588164, -296137032, -2147483648, 2065624539, -562715, -2147483648, 1263996665, 1129562195 }; const Word16 xtalk_factor_td_e[SIZE_XTALK_ISEL_TD] = { -4, 1, -12, 0, -7, -2, 0, -4, 0, 0, 0, 0, -2, 0, 0, -7, -1 }; #else const Word32 xtalk_scale_td[SIZE_XTALK_ISEL_TD] = /*Q15*/ { 37220, 2553, 16147962, 18786, 191263, 13110, 139310, 20547, 45408, 60617, 17627, 43, 9123, 2070239, 88, 21549, 68968 Loading @@ -107,6 +118,7 @@ const Word32 xtalk_coef_td[SIZE_XTALK_ISEL_TD] = /*Q15*/ { 1841, 4353, 3322, -5411, 1061, 2716, -2453, 1046, 45199, -51474, -2431, -2245, 2194, -542, -135853, 99, 18138 }; #endif const Word16 xtalk_isel_dft[SIZE_XTALK_ISEL_DFT] = { E_clas, E_gainILD, E_gainIPD, E_angle_rot, E_g_pred, E_d_prodL_prodR, E_sum_xcorr, E_xcorr_itd_value, E_gphat_d_itd2, E_gphat_ratio_m1_m2, E_gphat_m2_m2 Loading
lib_enc/ivas_stereo_classifier_fx.c +9 −0 Original line number Diff line number Diff line Loading @@ -1146,12 +1146,21 @@ void xtalk_classifier_td_fx( move16(); /* mean & std removal */ #ifdef NONBE_MR2809 fvn = L_sub( hStereoClassif->xtalk_fv_fx[ind], xtalk_mean_td[i] ); fvn = Mpy_32_32( fvn, xtalk_factor_td_m[i] ); // exp = 16 + 20 = 36 exp = add( 16, xtalk_factor_td_e[i] ); /* LR */ score = BASOP_Util_Add_Mant32Exp( score, score_exp, fvn, exp, &score_exp ); #else fvn = BASOP_Util_Divide3232_Scale_newton( L_sub( hStereoClassif->xtalk_fv_fx[ind], xtalk_mean_td[i] ), xtalk_scale_td[i], &exp ); fvn = Mpy_32_32( fvn, xtalk_coef_td[i] ); // Q = 31-exp+15-31 = 15-exp exp = add( exp, 16 ); // exp = 31-(15-exp) = 16+exp /* LR */ score = BASOP_Util_Add_Mant32Exp( score, score_exp, fvn, exp, &score_exp ); #endif } score = L_shl_sat( score, sub( score_exp, 3 ) ); // Q28 Loading
lib_enc/ivas_stereo_ica_enc_fx.c +6 −0 Original line number Diff line number Diff line Loading @@ -2040,6 +2040,12 @@ void stereo_tca_enc_fx( move16(); sts[1]->q_inp32 = input_mem_loc_q; move16(); #ifdef NONBE_MR2809 sts[0]->q_old_inp32 = input_mem_loc_q; move16(); sts[1]->q_old_inp32 = input_mem_loc_q; move16(); #endif icaMemUpdate_fx( sts, hCPE, input_mem_loc_fx[0], input_mem_loc_fx[1], input_mem_loc_q, lMemRecalc, lMemRecalc_SCh, input_frame ); Loading