Loading lib_basop/basop32.c +0 −4 Original line number Diff line number Diff line Loading @@ -896,7 +896,6 @@ Word16 shr_o( Word16 var1, Word16 var2, Flag *Overflow ) Word16 shr( Word16 var1, Word16 var2 ) { #ifdef FIX_BASOP_2563_CRASH_HQ_GENERIC_DEC Flag Overflow; Word16 result; Loading @@ -908,9 +907,6 @@ Word16 shr( Word16 var1, Word16 var2 ) assert( 0 ); } return result; #else return shr_o( var1, var2, NULL ); #endif } Word16 shr_sat( Word16 var1, Word16 var2 ) { Loading lib_basop/enh64.c +28 −2 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( !( ( L64_var2 > 0 && L64_var1 > MAX_64 - L64_var2 ) || ( L64_var2 < 0 && L64_var1 < MIN_64 - L64_var2 ) ) ); #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( !( ( L64_var2 < 0 && L64_var1 > MAX_64 + L64_var2 ) || ( L64_var2 > 0 && L64_var1 < MIN_64 + L64_var2 ) ) ); #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( !( ( L64_var_out > 0 && L64_var1 > MAX_64 - L64_var_out ) || ( L64_var_out < 0 && L64_var1 < MIN_64 - L64_var_out ) ) ); #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( !( ( L64_var_out < 0 && L64_var1 > MAX_64 + L64_var_out ) || ( L64_var_out > 0 && L64_var1 < MIN_64 + L64_var_out ) ) ); #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( !( ( L64_var_out > 0 && L64_var1 > MAX_64 - L64_var_out ) || ( L64_var_out < 0 && L64_var1 < MIN_64 - L64_var_out ) ) ); #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( !( ( L64_var_out < 0 && L64_var1 > MAX_64 + L64_var_out ) || ( L64_var_out > 0 && L64_var1 < MIN_64 + L64_var_out ) ) ); #endif L64_var_out = L64_var1 - L64_var_out; #ifdef WMOPS multiCounter[currCounter].W_msu0_16_16++; Loading lib_com/ivas_fb_mixer_fx.c +5 −0 Original line number Diff line number Diff line Loading @@ -1165,7 +1165,12 @@ static Word16 ivas_calculate_abs_fr_fx( FOR( i = 0; i < frame_len; i++ ) { #ifdef FIX_BASOP_2642_INCORRECT_IF_THRESHOLD test(); if ( LT_32( ppFilterbank_FRs_s_fx[i], 419430 ) ) #else if ( ppFilterbank_FRs_s_fx[i] < 0 ) #endif { ppFilterbank_FRs_s_fx[i] = 419430; // 0.1 in Q22 move32(); Loading lib_com/ivas_omasa_com_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -349,7 +349,11 @@ Word32 ivas_interformat_brate_fx( limit_high = IVAS_512k / FRAMES_PER_SEC; move16(); #ifdef FIX_2636_OMASA_INTERFORMAT_BRATE IF( LT_32( element_brate, SCE_CORE_16k_LOW_LIMIT ) ) #else IF( LE_32( element_brate, SCE_CORE_16k_LOW_LIMIT ) ) #endif { limit_high = ACELP_12k8_HIGH_LIMIT / FRAMES_PER_SEC; move16(); Loading lib_com/ivas_spar_com_quant_util_fx.c +15 −0 Original line number Diff line number Diff line Loading @@ -356,23 +356,38 @@ void ivas_map_prior_coeffs_quant( { FOR( j = 0; j < IVAS_SPAR_MAX_CH - 1; j++ ) { #ifdef FIX_2493_CHECK_EXTRACT_L_FIX_INSTRUMENTATION Word16 trial1_16 = imult1616( sub( qs.PR.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].pred_index_re[j] ); /*q0*/ pSpar_md_prior->band_coeffs_idx_mapped[i].pred_index_re[j] = round_fx( Mpy_32_16_1( one_by_q_lvl_PR_fx, trial1_16 ) ); /*q0*/ #else Word32 trial1 = L_mult0( sub( qs.PR.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].pred_index_re[j] ); /*q0*/ trial1 = L_shl( trial1, 16 ); /*q16*/ trial1 = round_fx( Mpy_32_32( trial1, one_by_q_lvl_PR_fx ) ); /*q16+q31-31-16->0*/ pSpar_md_prior->band_coeffs_idx_mapped[i].pred_index_re[j] = extract_l( trial1 ); /*q0*/ #endif move16(); #ifdef FIX_2493_CHECK_EXTRACT_L_FIX_INSTRUMENTATION Word16 trial2_16 = imult1616( sub( qs.P_r.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].decd_index_re[j] ); /*q0*/ pSpar_md_prior->band_coeffs_idx_mapped[i].decd_index_re[j] = round_fx( Mpy_32_16_1( one_by_q_lvl_P_r_fx, trial2_16 ) ); /*q0*/ #else Word32 trial2 = L_mult0( sub( qs.P_r.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].decd_index_re[j] ); /*q0*/ trial2 = L_shl( trial2, 16 ); /*q16*/ trial2 = round_fx( Mpy_32_32( trial2, one_by_q_lvl_P_r_fx ) ); /*q16+q31-31-16->0*/ pSpar_md_prior->band_coeffs_idx_mapped[i].decd_index_re[j] = extract_l( trial2 ); /*q0*/ #endif move16(); } FOR( j = 0; j < IVAS_SPAR_MAX_C_COEFF; j++ ) { #ifdef FIX_2493_CHECK_EXTRACT_L_FIX_INSTRUMENTATION Word16 trial1_16 = imult1616( sub( qs.C.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].drct_index_re[j] ); /*q0*/ pSpar_md_prior->band_coeffs_idx_mapped[i].drct_index_re[j] = round_fx( Mpy_32_16_1( one_by_q_lvl_C_fx, trial1_16 ) ); /*q0*/ #else Word32 trial1 = L_mult0( sub( qs.C.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].drct_index_re[j] ); /*q0*/ trial1 = L_shl( trial1, 16 ); /*q16*/ trial1 = round_fx( Mpy_32_32( trial1, one_by_q_lvl_C_fx ) ); /*q16+q31-31-16->0*/ pSpar_md_prior->band_coeffs_idx_mapped[i].drct_index_re[j] = extract_l( trial1 ); /*q0*/ #endif move16(); } } Loading Loading
lib_basop/basop32.c +0 −4 Original line number Diff line number Diff line Loading @@ -896,7 +896,6 @@ Word16 shr_o( Word16 var1, Word16 var2, Flag *Overflow ) Word16 shr( Word16 var1, Word16 var2 ) { #ifdef FIX_BASOP_2563_CRASH_HQ_GENERIC_DEC Flag Overflow; Word16 result; Loading @@ -908,9 +907,6 @@ Word16 shr( Word16 var1, Word16 var2 ) assert( 0 ); } return result; #else return shr_o( var1, var2, NULL ); #endif } Word16 shr_sat( Word16 var1, Word16 var2 ) { Loading
lib_basop/enh64.c +28 −2 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( !( ( L64_var2 > 0 && L64_var1 > MAX_64 - L64_var2 ) || ( L64_var2 < 0 && L64_var1 < MIN_64 - L64_var2 ) ) ); #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( !( ( L64_var2 < 0 && L64_var1 > MAX_64 + L64_var2 ) || ( L64_var2 > 0 && L64_var1 < MIN_64 + L64_var2 ) ) ); #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( !( ( L64_var_out > 0 && L64_var1 > MAX_64 - L64_var_out ) || ( L64_var_out < 0 && L64_var1 < MIN_64 - L64_var_out ) ) ); #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( !( ( L64_var_out < 0 && L64_var1 > MAX_64 + L64_var_out ) || ( L64_var_out > 0 && L64_var1 < MIN_64 + L64_var_out ) ) ); #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( !( ( L64_var_out > 0 && L64_var1 > MAX_64 - L64_var_out ) || ( L64_var_out < 0 && L64_var1 < MIN_64 - L64_var_out ) ) ); #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( !( ( L64_var_out < 0 && L64_var1 > MAX_64 + L64_var_out ) || ( L64_var_out > 0 && L64_var1 < MIN_64 + L64_var_out ) ) ); #endif L64_var_out = L64_var1 - L64_var_out; #ifdef WMOPS multiCounter[currCounter].W_msu0_16_16++; Loading
lib_com/ivas_fb_mixer_fx.c +5 −0 Original line number Diff line number Diff line Loading @@ -1165,7 +1165,12 @@ static Word16 ivas_calculate_abs_fr_fx( FOR( i = 0; i < frame_len; i++ ) { #ifdef FIX_BASOP_2642_INCORRECT_IF_THRESHOLD test(); if ( LT_32( ppFilterbank_FRs_s_fx[i], 419430 ) ) #else if ( ppFilterbank_FRs_s_fx[i] < 0 ) #endif { ppFilterbank_FRs_s_fx[i] = 419430; // 0.1 in Q22 move32(); Loading
lib_com/ivas_omasa_com_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -349,7 +349,11 @@ Word32 ivas_interformat_brate_fx( limit_high = IVAS_512k / FRAMES_PER_SEC; move16(); #ifdef FIX_2636_OMASA_INTERFORMAT_BRATE IF( LT_32( element_brate, SCE_CORE_16k_LOW_LIMIT ) ) #else IF( LE_32( element_brate, SCE_CORE_16k_LOW_LIMIT ) ) #endif { limit_high = ACELP_12k8_HIGH_LIMIT / FRAMES_PER_SEC; move16(); Loading
lib_com/ivas_spar_com_quant_util_fx.c +15 −0 Original line number Diff line number Diff line Loading @@ -356,23 +356,38 @@ void ivas_map_prior_coeffs_quant( { FOR( j = 0; j < IVAS_SPAR_MAX_CH - 1; j++ ) { #ifdef FIX_2493_CHECK_EXTRACT_L_FIX_INSTRUMENTATION Word16 trial1_16 = imult1616( sub( qs.PR.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].pred_index_re[j] ); /*q0*/ pSpar_md_prior->band_coeffs_idx_mapped[i].pred_index_re[j] = round_fx( Mpy_32_16_1( one_by_q_lvl_PR_fx, trial1_16 ) ); /*q0*/ #else Word32 trial1 = L_mult0( sub( qs.PR.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].pred_index_re[j] ); /*q0*/ trial1 = L_shl( trial1, 16 ); /*q16*/ trial1 = round_fx( Mpy_32_32( trial1, one_by_q_lvl_PR_fx ) ); /*q16+q31-31-16->0*/ pSpar_md_prior->band_coeffs_idx_mapped[i].pred_index_re[j] = extract_l( trial1 ); /*q0*/ #endif move16(); #ifdef FIX_2493_CHECK_EXTRACT_L_FIX_INSTRUMENTATION Word16 trial2_16 = imult1616( sub( qs.P_r.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].decd_index_re[j] ); /*q0*/ pSpar_md_prior->band_coeffs_idx_mapped[i].decd_index_re[j] = round_fx( Mpy_32_16_1( one_by_q_lvl_P_r_fx, trial2_16 ) ); /*q0*/ #else Word32 trial2 = L_mult0( sub( qs.P_r.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].decd_index_re[j] ); /*q0*/ trial2 = L_shl( trial2, 16 ); /*q16*/ trial2 = round_fx( Mpy_32_32( trial2, one_by_q_lvl_P_r_fx ) ); /*q16+q31-31-16->0*/ pSpar_md_prior->band_coeffs_idx_mapped[i].decd_index_re[j] = extract_l( trial2 ); /*q0*/ #endif move16(); } FOR( j = 0; j < IVAS_SPAR_MAX_C_COEFF; j++ ) { #ifdef FIX_2493_CHECK_EXTRACT_L_FIX_INSTRUMENTATION Word16 trial1_16 = imult1616( sub( qs.C.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].drct_index_re[j] ); /*q0*/ pSpar_md_prior->band_coeffs_idx_mapped[i].drct_index_re[j] = round_fx( Mpy_32_16_1( one_by_q_lvl_C_fx, trial1_16 ) ); /*q0*/ #else Word32 trial1 = L_mult0( sub( qs.C.q_levels[0], 1 ), pSpar_md_prior->band_coeffs_idx[i].drct_index_re[j] ); /*q0*/ trial1 = L_shl( trial1, 16 ); /*q16*/ trial1 = round_fx( Mpy_32_32( trial1, one_by_q_lvl_C_fx ) ); /*q16+q31-31-16->0*/ pSpar_md_prior->band_coeffs_idx_mapped[i].drct_index_re[j] = extract_l( trial1 ); /*q0*/ #endif move16(); } } Loading