Loading lib_basop/enh64.c +29 −3 Original line number Diff line number Diff line Loading @@ -18,6 +18,10 @@ #include <stdlib.h> #include "stl.h" #ifdef FIX_2493_CHECK_64BIT #include <assert.h> #endif #define WMC_TOOL_SKIP /***************************************************************************** Loading Loading @@ -74,7 +78,9 @@ Word64 W_add_nosat( Word64 L64_var1, Word64 L64_var2 ) { Word64 L64_var_out; #ifdef FIX_2493_CHECK_64BIT assert( W_abs( ( ( L64_var1 + L64_var2 ) >> 1 ) - ( ( L64_var1 >> 1 ) + ( L64_var2 >> 1 ) ) ) < 2 ); #endif L64_var_out = L64_var1 + L64_var2; #ifdef WMOPS Loading Loading @@ -117,7 +123,9 @@ Word64 W_add_nosat( Word64 L64_var1, Word64 L64_var2 ) Word64 W_sub_nosat( Word64 L64_var1, Word64 L64_var2 ) { Word64 L64_var_out; #ifdef FIX_2493_CHECK_64BIT assert( W_abs( ( ( L64_var1 - L64_var2 ) >> 1 ) - ( ( L64_var1 >> 1 ) - ( L64_var2 >> 1 ) ) ) < 2 ); #endif L64_var_out = L64_var1 - L64_var2; #ifdef WMOPS Loading Loading @@ -316,6 +324,9 @@ Word64 W_shl_nosat( Word64 L64_var1, Word16 var2 ) } else { #ifdef FIX_2493_CHECK_64BIT assert( ( ( L64_var1 << var2 ) >> var2 ) == L64_var1 ); #endif L64_var_out = L64_var1 << var2; } #ifdef WMOPS Loading Loading @@ -369,6 +380,9 @@ Word64 W_shr_nosat( Word64 L64_var1, Word16 var2 ) if ( var2 < 0 ) { var2 = -var2; #ifdef FIX_2493_CHECK_64BIT assert( ( ( L64_var1 << var2 ) >> var2 ) == L64_var1 ); #endif L64_var_out = L64_var1 << var2; } else Loading Loading @@ -423,6 +437,9 @@ Word64 W_shr_nosat( Word64 L64_var1, Word16 var2 ) Word64 W_mac_32_16( Word64 L64_var1, Word32 L_var2, Word16 var3 ) { Word64 L64_var_out = ( (Word64) L_var2 * var3 ) << 1; #ifdef FIX_2493_CHECK_64BIT assert( W_abs( ( ( L64_var_out + L64_var1 ) >> 1 ) - ( ( L64_var_out >> 1 ) + ( L64_var1 >> 1 ) ) ) < 2 ); #endif L64_var_out += L64_var1; #ifdef WMOPS multiCounter[currCounter].W_mac_32_16++; Loading Loading @@ -470,6 +487,9 @@ Word64 W_mac_32_16( Word64 L64_var1, Word32 L_var2, Word16 var3 ) Word64 W_msu_32_16( Word64 L64_var1, Word32 L_var2, Word16 var3 ) { Word64 L64_var_out = ( (Word64) L_var2 * var3 ) << 1; #ifdef FIX_2493_CHECK_64BIT assert( W_abs( ( ( L64_var1 - L64_var_out ) >> 1 ) - ( ( L64_var1 >> 1 ) - ( L64_var_out >> 1 ) ) ) < 2 ); #endif L64_var_out = L64_var1 - L64_var_out; #ifdef WMOPS multiCounter[currCounter].W_msu_32_16++; Loading Loading @@ -596,6 +616,9 @@ Word64 W_mult0_16_16( Word16 var1, Word16 var2 ) Word64 W_mac0_16_16( Word64 L64_var1, Word16 var2, Word16 var3 ) { Word64 L64_var_out = (Word64) var2 * var3; #ifdef FIX_2493_CHECK_64BIT assert( W_abs( ( ( L64_var_out + L64_var1 ) >> 1 ) - ( ( L64_var_out >> 1 ) + ( L64_var1 >> 1 ) ) ) < 2 ); #endif L64_var_out += L64_var1; #ifdef WMOPS multiCounter[currCounter].W_mac0_16_16++; Loading Loading @@ -642,6 +665,9 @@ Word64 W_mac0_16_16( Word64 L64_var1, Word16 var2, Word16 var3 ) Word64 W_msu0_16_16( Word64 L64_var1, Word16 var2, Word16 var3 ) { Word64 L64_var_out = (Word64) var2 * var3; #ifdef FIX_2493_CHECK_64BIT assert( W_abs( ( ( L64_var1 - L64_var_out ) >> 1 ) - ( ( L64_var1 >> 1 ) - ( L64_var_out >> 1 ) ) ) < 2 ); #endif L64_var_out = L64_var1 - L64_var_out; #ifdef WMOPS multiCounter[currCounter].W_msu0_16_16++; Loading lib_com/cng_exc_fx.c +10 −2 Original line number Diff line number Diff line Loading @@ -690,7 +690,11 @@ void cng_params_postupd_fx( exp_pow = sub( 14, temp_hi_fx ); L_tmp = Pow2( 14, temp_lo_fx ); /* Qexp_pow */ L_tmp = L_shl( L_tmp, sub( 13, exp_pow ) ); /* Q13 */ #ifdef FIX_2493_CHECK_EXTRACT_L tmp = extract_l2( L_tmp ); /* Q13 */ #else tmp = extract_l( L_tmp ); /* Q13 */ #endif exp1 = norm_s( tmp ); tmp = shl( tmp, exp1 ); /*Q(exp1+13) */ Loading Loading @@ -889,7 +893,11 @@ void cng_params_upd_fx( exp_pow = sub( 14, temp_hi_fx ); L_tmp = Pow2( 14, temp_lo_fx ); /* Qexp_pow */ L_tmp = L_shl( L_tmp, sub( 13, exp_pow ) ); /* Q13 */ #ifdef FIX_2493_CHECK_EXTRACT_L tmp = extract_l2( L_tmp ); /* Q13 */ #else tmp = extract_l( L_tmp ); /* Q13 */ #endif exp1 = norm_s( tmp ); tmp = shl( tmp, exp1 ); /*Q(exp1+13) */ Loading lib_com/fft_fx_evs.c +25 −0 Original line number Diff line number Diff line Loading @@ -511,8 +511,13 @@ static void cft1st_fx( move16(); wk1i = w[k2 + 1]; move16(); #ifdef FIX_2493_CHECK_EXTRACT_L wk3r = extract_l2( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2i, wk1i ), 14 ) ) ); wk3i = extract_l2( L_msu0( L_shr( L_mult( wk2i, wk1r ), 14 ), wk1i, 1 ) ); #else wk3r = extract_l( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2i, wk1i ), 14 ) ) ); wk3i = extract_l( L_msu0( L_shr( L_mult( wk2i, wk1r ), 14 ), wk1i, 1 ) ); #endif x0r = L_add( a[j], a[j + 2] ); x0i = L_add( a[j + 1], a[j + 3] ); x1r = L_sub( a[j], a[j + 2] ); Loading Loading @@ -548,8 +553,13 @@ static void cft1st_fx( move16(); wk1i = w[k2 + 3]; move16(); #ifdef FIX_2493_CHECK_EXTRACT_L wk3r = extract_l2( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2r, wk1i ), 14 ) ) ); wk3i = extract_l2( L_msu0( L_shr( L_mult( wk2r, wk1r ), 14 ), wk1i, 1 ) ); #else wk3r = extract_l( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2r, wk1i ), 14 ) ) ); wk3i = extract_l( L_msu0( L_shr( L_mult( wk2r, wk1r ), 14 ), wk1i, 1 ) ); #endif x0r = L_add( a[j + 8], a[j + 10] ); x0i = L_add( a[j + 9], a[j + 11] ); x1r = L_sub( a[j + 8], a[j + 10] ); Loading Loading @@ -686,8 +696,13 @@ static void cftmdl_fx( move16(); wk1i = w[k2 + 1]; move16(); #ifdef FIX_2493_CHECK_EXTRACT_L wk3r = extract_l2( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2i, wk1i ), 14 ) ) ); wk3i = extract_l2( L_msu0( L_shr( L_mult( wk2i, wk1r ), 14 ), wk1i, 1 ) ); #else wk3r = extract_l( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2i, wk1i ), 14 ) ) ); wk3i = extract_l( L_msu0( L_shr( L_mult( wk2i, wk1r ), 14 ), wk1i, 1 ) ); #endif tmp = add( l, k ); FOR( j = k; j < tmp; j += 2 ) Loading Loading @@ -731,8 +746,13 @@ static void cftmdl_fx( move16(); wk1i = w[k2 + 3]; move16(); #ifdef FIX_2493_CHECK_EXTRACT_L wk3r = extract_l2( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2r, wk1i ), 14 ) ) ); wk3i = extract_l2( L_msu0( L_shr( L_mult( wk2r, wk1r ), 14 ), wk1i, 1 ) ); #else wk3r = extract_l( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2r, wk1i ), 14 ) ) ); wk3i = extract_l( L_msu0( L_shr( L_mult( wk2r, wk1r ), 14 ), wk1i, 1 ) ); #endif tmp = add( l, add( k, m ) ); FOR( j = k + m; j < tmp; j += 2 ) Loading Loading @@ -2169,8 +2189,13 @@ static void cftmdl_16fx( L_x0r = L_add( (Word32) x1r, (Word32) x3i ); L_x0i = L_sub( (Word32) x1i, (Word32) x3r ); #ifdef FIX_2493_CHECK_EXTRACT_L x0r = extract_l2( L_x0r ); x0i = extract_l2( L_x0i ); #else x0r = extract_l( L_x0r ); x0i = extract_l( L_x0i ); #endif L_tmp = Mult_32_16( wk3r, x0r ); /*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16( L_tmp, wk3i, x0i ); /*Q(15+Qx+Q_edct) */ a[j3] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ Loading lib_com/gs_bitallocation_fx.c +20 −0 Original line number Diff line number Diff line Loading @@ -197,14 +197,22 @@ void bands_and_bit_alloc_fx( { /* *bit = (short)(core_brate*(1.0f/50) + 0.5f) - bits_used - 25; */ L_tmp = Mult_32_16( core_brate, 20971 /*1/50 in Q20*/ ); #ifdef FIX_2493_CHECK_EXTRACT_L tmp = extract_l2( L_shr_r( L_tmp, 5 ) ); #else tmp = extract_l( L_shr_r( L_tmp, 5 ) ); #endif *bit = sub( sub( tmp, bits_used ), 25 ); /*Q0*/ move16(); } ELSE { L_tmp = Mult_32_16( core_brate, 20971 /*1/50 in Q20*/ ); #ifdef FIX_2493_CHECK_EXTRACT_L tmp = extract_l2( L_shr_r( L_tmp, 5 ) ); #else tmp = extract_l( L_shr_r( L_tmp, 5 ) ); #endif *bit = sub( sub( tmp, bits_used ), 21 ); /*Q0*/ move16(); } Loading @@ -216,7 +224,11 @@ void bands_and_bit_alloc_fx( /* *bit = (short)(core_brate*(1.0f/50) + 0.5f) - bits_used - GSC_freq_bits[bit_index]; */ L_tmp = Mult_32_16( core_brate, 20971 /*1/50 in Q20*/ ); #ifdef FIX_2493_CHECK_EXTRACT_L tmp = extract_l2( L_shr_r( L_tmp, 5 ) ); #else tmp = extract_l( L_shr_r( L_tmp, 5 ) ); #endif *bit = sub( sub( tmp, bits_used ), GSC_freq_bits[bit_index] ); move16(); } Loading Loading @@ -546,7 +558,11 @@ void bands_and_bit_alloc_fx( { bits_per_bands[j] = L_add( bits_per_bands[j], L_shl( etmp, Q3 ) ); /* Q18 */ move32(); #ifdef FIX_2493_CHECK_EXTRACT_L etmp = extract_l2( L_add( etmp, L_shr( bit_fracf, Q3 ) ) ); #else etmp = extract_l( L_add( etmp, L_shr( bit_fracf, Q3 ) ) ); #endif } } ELSE Loading Loading @@ -727,7 +743,11 @@ void bands_and_bit_alloc_fx( move16(); FOR( i = 0; i < nb_bands; i++ ) { #ifdef FIX_2493_CHECK_EXTRACT_L out_bits_per_bands[i] = shl( extract_l2( L_shr( bits_per_bands[i], 18 ) ), 3 ); #else out_bits_per_bands[i] = shl( extract_l( L_shr( bits_per_bands[i], 18 ) ), 3 ); #endif move16(); w_sum_bit = add( w_sum_bit, out_bits_per_bands[i] ); /* Q3 */ } Loading lib_com/gs_gains_fx.c +9 −3 Original line number Diff line number Diff line Loading @@ -125,9 +125,15 @@ Word16 Comp_and_apply_gain_fx( L32 = L_mult( L16, 27213 ); /* 3.321928 in Q13 -> Q26 */ L32 = L_shr( L32, 10 ); /* From Q26 to Q16 */ frac = L_Extract_lc( L32, &exp1 ); /* Extract exponent of gcode0 */ #ifdef FIX_2493_CHECK_EXTRACT_L y_gain = extract_l2( Pow2( 14, frac ) ); /* Put 14 as exponent so that */ /* output of Pow2() will be: */ /* 16384 < Pow2() <= 32767 */ #else y_gain = extract_l( Pow2( 14, frac ) ); /* Put 14 as exponent so that */ /* output of Pow2() will be: */ /* 16384 < Pow2() <= 32767 */ #endif Ener_per_bd_yQ[i_band] = shl_sat( y_gain, sub( exp1, 13 ) ); move16(); /*Q1 */ tmp_exp = add( add( exp1, 1 ), sub( Q_exc, Qexc_diff ) ); Loading Loading
lib_basop/enh64.c +29 −3 Original line number Diff line number Diff line Loading @@ -18,6 +18,10 @@ #include <stdlib.h> #include "stl.h" #ifdef FIX_2493_CHECK_64BIT #include <assert.h> #endif #define WMC_TOOL_SKIP /***************************************************************************** Loading Loading @@ -74,7 +78,9 @@ Word64 W_add_nosat( Word64 L64_var1, Word64 L64_var2 ) { Word64 L64_var_out; #ifdef FIX_2493_CHECK_64BIT assert( W_abs( ( ( L64_var1 + L64_var2 ) >> 1 ) - ( ( L64_var1 >> 1 ) + ( L64_var2 >> 1 ) ) ) < 2 ); #endif L64_var_out = L64_var1 + L64_var2; #ifdef WMOPS Loading Loading @@ -117,7 +123,9 @@ Word64 W_add_nosat( Word64 L64_var1, Word64 L64_var2 ) Word64 W_sub_nosat( Word64 L64_var1, Word64 L64_var2 ) { Word64 L64_var_out; #ifdef FIX_2493_CHECK_64BIT assert( W_abs( ( ( L64_var1 - L64_var2 ) >> 1 ) - ( ( L64_var1 >> 1 ) - ( L64_var2 >> 1 ) ) ) < 2 ); #endif L64_var_out = L64_var1 - L64_var2; #ifdef WMOPS Loading Loading @@ -316,6 +324,9 @@ Word64 W_shl_nosat( Word64 L64_var1, Word16 var2 ) } else { #ifdef FIX_2493_CHECK_64BIT assert( ( ( L64_var1 << var2 ) >> var2 ) == L64_var1 ); #endif L64_var_out = L64_var1 << var2; } #ifdef WMOPS Loading Loading @@ -369,6 +380,9 @@ Word64 W_shr_nosat( Word64 L64_var1, Word16 var2 ) if ( var2 < 0 ) { var2 = -var2; #ifdef FIX_2493_CHECK_64BIT assert( ( ( L64_var1 << var2 ) >> var2 ) == L64_var1 ); #endif L64_var_out = L64_var1 << var2; } else Loading Loading @@ -423,6 +437,9 @@ Word64 W_shr_nosat( Word64 L64_var1, Word16 var2 ) Word64 W_mac_32_16( Word64 L64_var1, Word32 L_var2, Word16 var3 ) { Word64 L64_var_out = ( (Word64) L_var2 * var3 ) << 1; #ifdef FIX_2493_CHECK_64BIT assert( W_abs( ( ( L64_var_out + L64_var1 ) >> 1 ) - ( ( L64_var_out >> 1 ) + ( L64_var1 >> 1 ) ) ) < 2 ); #endif L64_var_out += L64_var1; #ifdef WMOPS multiCounter[currCounter].W_mac_32_16++; Loading Loading @@ -470,6 +487,9 @@ Word64 W_mac_32_16( Word64 L64_var1, Word32 L_var2, Word16 var3 ) Word64 W_msu_32_16( Word64 L64_var1, Word32 L_var2, Word16 var3 ) { Word64 L64_var_out = ( (Word64) L_var2 * var3 ) << 1; #ifdef FIX_2493_CHECK_64BIT assert( W_abs( ( ( L64_var1 - L64_var_out ) >> 1 ) - ( ( L64_var1 >> 1 ) - ( L64_var_out >> 1 ) ) ) < 2 ); #endif L64_var_out = L64_var1 - L64_var_out; #ifdef WMOPS multiCounter[currCounter].W_msu_32_16++; Loading Loading @@ -596,6 +616,9 @@ Word64 W_mult0_16_16( Word16 var1, Word16 var2 ) Word64 W_mac0_16_16( Word64 L64_var1, Word16 var2, Word16 var3 ) { Word64 L64_var_out = (Word64) var2 * var3; #ifdef FIX_2493_CHECK_64BIT assert( W_abs( ( ( L64_var_out + L64_var1 ) >> 1 ) - ( ( L64_var_out >> 1 ) + ( L64_var1 >> 1 ) ) ) < 2 ); #endif L64_var_out += L64_var1; #ifdef WMOPS multiCounter[currCounter].W_mac0_16_16++; Loading Loading @@ -642,6 +665,9 @@ Word64 W_mac0_16_16( Word64 L64_var1, Word16 var2, Word16 var3 ) Word64 W_msu0_16_16( Word64 L64_var1, Word16 var2, Word16 var3 ) { Word64 L64_var_out = (Word64) var2 * var3; #ifdef FIX_2493_CHECK_64BIT assert( W_abs( ( ( L64_var1 - L64_var_out ) >> 1 ) - ( ( L64_var1 >> 1 ) - ( L64_var_out >> 1 ) ) ) < 2 ); #endif L64_var_out = L64_var1 - L64_var_out; #ifdef WMOPS multiCounter[currCounter].W_msu0_16_16++; Loading
lib_com/cng_exc_fx.c +10 −2 Original line number Diff line number Diff line Loading @@ -690,7 +690,11 @@ void cng_params_postupd_fx( exp_pow = sub( 14, temp_hi_fx ); L_tmp = Pow2( 14, temp_lo_fx ); /* Qexp_pow */ L_tmp = L_shl( L_tmp, sub( 13, exp_pow ) ); /* Q13 */ #ifdef FIX_2493_CHECK_EXTRACT_L tmp = extract_l2( L_tmp ); /* Q13 */ #else tmp = extract_l( L_tmp ); /* Q13 */ #endif exp1 = norm_s( tmp ); tmp = shl( tmp, exp1 ); /*Q(exp1+13) */ Loading Loading @@ -889,7 +893,11 @@ void cng_params_upd_fx( exp_pow = sub( 14, temp_hi_fx ); L_tmp = Pow2( 14, temp_lo_fx ); /* Qexp_pow */ L_tmp = L_shl( L_tmp, sub( 13, exp_pow ) ); /* Q13 */ #ifdef FIX_2493_CHECK_EXTRACT_L tmp = extract_l2( L_tmp ); /* Q13 */ #else tmp = extract_l( L_tmp ); /* Q13 */ #endif exp1 = norm_s( tmp ); tmp = shl( tmp, exp1 ); /*Q(exp1+13) */ Loading
lib_com/fft_fx_evs.c +25 −0 Original line number Diff line number Diff line Loading @@ -511,8 +511,13 @@ static void cft1st_fx( move16(); wk1i = w[k2 + 1]; move16(); #ifdef FIX_2493_CHECK_EXTRACT_L wk3r = extract_l2( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2i, wk1i ), 14 ) ) ); wk3i = extract_l2( L_msu0( L_shr( L_mult( wk2i, wk1r ), 14 ), wk1i, 1 ) ); #else wk3r = extract_l( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2i, wk1i ), 14 ) ) ); wk3i = extract_l( L_msu0( L_shr( L_mult( wk2i, wk1r ), 14 ), wk1i, 1 ) ); #endif x0r = L_add( a[j], a[j + 2] ); x0i = L_add( a[j + 1], a[j + 3] ); x1r = L_sub( a[j], a[j + 2] ); Loading Loading @@ -548,8 +553,13 @@ static void cft1st_fx( move16(); wk1i = w[k2 + 3]; move16(); #ifdef FIX_2493_CHECK_EXTRACT_L wk3r = extract_l2( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2r, wk1i ), 14 ) ) ); wk3i = extract_l2( L_msu0( L_shr( L_mult( wk2r, wk1r ), 14 ), wk1i, 1 ) ); #else wk3r = extract_l( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2r, wk1i ), 14 ) ) ); wk3i = extract_l( L_msu0( L_shr( L_mult( wk2r, wk1r ), 14 ), wk1i, 1 ) ); #endif x0r = L_add( a[j + 8], a[j + 10] ); x0i = L_add( a[j + 9], a[j + 11] ); x1r = L_sub( a[j + 8], a[j + 10] ); Loading Loading @@ -686,8 +696,13 @@ static void cftmdl_fx( move16(); wk1i = w[k2 + 1]; move16(); #ifdef FIX_2493_CHECK_EXTRACT_L wk3r = extract_l2( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2i, wk1i ), 14 ) ) ); wk3i = extract_l2( L_msu0( L_shr( L_mult( wk2i, wk1r ), 14 ), wk1i, 1 ) ); #else wk3r = extract_l( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2i, wk1i ), 14 ) ) ); wk3i = extract_l( L_msu0( L_shr( L_mult( wk2i, wk1r ), 14 ), wk1i, 1 ) ); #endif tmp = add( l, k ); FOR( j = k; j < tmp; j += 2 ) Loading Loading @@ -731,8 +746,13 @@ static void cftmdl_fx( move16(); wk1i = w[k2 + 3]; move16(); #ifdef FIX_2493_CHECK_EXTRACT_L wk3r = extract_l2( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2r, wk1i ), 14 ) ) ); wk3i = extract_l2( L_msu0( L_shr( L_mult( wk2r, wk1r ), 14 ), wk1i, 1 ) ); #else wk3r = extract_l( L_sub( L_deposit_l( wk1r ), L_shr( L_mult( wk2r, wk1i ), 14 ) ) ); wk3i = extract_l( L_msu0( L_shr( L_mult( wk2r, wk1r ), 14 ), wk1i, 1 ) ); #endif tmp = add( l, add( k, m ) ); FOR( j = k + m; j < tmp; j += 2 ) Loading Loading @@ -2169,8 +2189,13 @@ static void cftmdl_16fx( L_x0r = L_add( (Word32) x1r, (Word32) x3i ); L_x0i = L_sub( (Word32) x1i, (Word32) x3r ); #ifdef FIX_2493_CHECK_EXTRACT_L x0r = extract_l2( L_x0r ); x0i = extract_l2( L_x0i ); #else x0r = extract_l( L_x0r ); x0i = extract_l( L_x0i ); #endif L_tmp = Mult_32_16( wk3r, x0r ); /*Q(15+Qx+Q_edct) */ L_tmp = Msub_32_16( L_tmp, wk3i, x0i ); /*Q(15+Qx+Q_edct) */ a[j3] = round_fx_sat( L_shl_sat( L_tmp, 1 ) ); /*Q(Qx+Q_edct) */ Loading
lib_com/gs_bitallocation_fx.c +20 −0 Original line number Diff line number Diff line Loading @@ -197,14 +197,22 @@ void bands_and_bit_alloc_fx( { /* *bit = (short)(core_brate*(1.0f/50) + 0.5f) - bits_used - 25; */ L_tmp = Mult_32_16( core_brate, 20971 /*1/50 in Q20*/ ); #ifdef FIX_2493_CHECK_EXTRACT_L tmp = extract_l2( L_shr_r( L_tmp, 5 ) ); #else tmp = extract_l( L_shr_r( L_tmp, 5 ) ); #endif *bit = sub( sub( tmp, bits_used ), 25 ); /*Q0*/ move16(); } ELSE { L_tmp = Mult_32_16( core_brate, 20971 /*1/50 in Q20*/ ); #ifdef FIX_2493_CHECK_EXTRACT_L tmp = extract_l2( L_shr_r( L_tmp, 5 ) ); #else tmp = extract_l( L_shr_r( L_tmp, 5 ) ); #endif *bit = sub( sub( tmp, bits_used ), 21 ); /*Q0*/ move16(); } Loading @@ -216,7 +224,11 @@ void bands_and_bit_alloc_fx( /* *bit = (short)(core_brate*(1.0f/50) + 0.5f) - bits_used - GSC_freq_bits[bit_index]; */ L_tmp = Mult_32_16( core_brate, 20971 /*1/50 in Q20*/ ); #ifdef FIX_2493_CHECK_EXTRACT_L tmp = extract_l2( L_shr_r( L_tmp, 5 ) ); #else tmp = extract_l( L_shr_r( L_tmp, 5 ) ); #endif *bit = sub( sub( tmp, bits_used ), GSC_freq_bits[bit_index] ); move16(); } Loading Loading @@ -546,7 +558,11 @@ void bands_and_bit_alloc_fx( { bits_per_bands[j] = L_add( bits_per_bands[j], L_shl( etmp, Q3 ) ); /* Q18 */ move32(); #ifdef FIX_2493_CHECK_EXTRACT_L etmp = extract_l2( L_add( etmp, L_shr( bit_fracf, Q3 ) ) ); #else etmp = extract_l( L_add( etmp, L_shr( bit_fracf, Q3 ) ) ); #endif } } ELSE Loading Loading @@ -727,7 +743,11 @@ void bands_and_bit_alloc_fx( move16(); FOR( i = 0; i < nb_bands; i++ ) { #ifdef FIX_2493_CHECK_EXTRACT_L out_bits_per_bands[i] = shl( extract_l2( L_shr( bits_per_bands[i], 18 ) ), 3 ); #else out_bits_per_bands[i] = shl( extract_l( L_shr( bits_per_bands[i], 18 ) ), 3 ); #endif move16(); w_sum_bit = add( w_sum_bit, out_bits_per_bands[i] ); /* Q3 */ } Loading
lib_com/gs_gains_fx.c +9 −3 Original line number Diff line number Diff line Loading @@ -125,9 +125,15 @@ Word16 Comp_and_apply_gain_fx( L32 = L_mult( L16, 27213 ); /* 3.321928 in Q13 -> Q26 */ L32 = L_shr( L32, 10 ); /* From Q26 to Q16 */ frac = L_Extract_lc( L32, &exp1 ); /* Extract exponent of gcode0 */ #ifdef FIX_2493_CHECK_EXTRACT_L y_gain = extract_l2( Pow2( 14, frac ) ); /* Put 14 as exponent so that */ /* output of Pow2() will be: */ /* 16384 < Pow2() <= 32767 */ #else y_gain = extract_l( Pow2( 14, frac ) ); /* Put 14 as exponent so that */ /* output of Pow2() will be: */ /* 16384 < Pow2() <= 32767 */ #endif Ener_per_bd_yQ[i_band] = shl_sat( y_gain, sub( exp1, 13 ) ); move16(); /*Q1 */ tmp_exp = add( add( exp1, 1 ), sub( Q_exc, Qexc_diff ) ); Loading