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 +6 −6 Original line number Diff line number Diff line Loading @@ -79,7 +79,7 @@ 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 ); 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; Loading Loading @@ -124,7 +124,7 @@ 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 ); 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; Loading Loading @@ -438,7 +438,7 @@ 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 ); 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 Loading Loading @@ -488,7 +488,7 @@ 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 ); 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 Loading Loading @@ -617,7 +617,7 @@ 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 ); 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 Loading Loading @@ -666,7 +666,7 @@ 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 ); 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 Loading lib_com/basop_util.c +5 −21 Original line number Diff line number Diff line Loading @@ -2720,19 +2720,14 @@ Word32 dotWord32_16_Mant32Exp( const Word32 *bufX32, /* i: 32-bit buffer with un const Word16 *bufY16, /* i: 16-bit buffer quite right-aligned */ Word16 bufY16_exp, /* i: exponent of buffer bufY16 */ Word16 len, /* i: buffer len to process */ #ifdef FIX_BASOP_1765_MASA1TC_CNG_MISMATCH Word16 *exp, /* o: result exponent */ const Word16 is_ivas ) /* i: flag indicating IVAS to maintain EVS BE */ #else Word16 *exp ) /* o: result exponent */ #endif { Word32 L_sum; Word16 shift, shift1, i; shift = getScaleFactor32( bufX32, len ); /* current available headroom */ #ifdef FIX_BASOP_1765_MASA1TC_CNG_MISMATCH IF( EQ_16( is_ivas, 1 ) ) { shift = sub( shift, sub( 15, norm_s( len ) ) ); /* reduced required headroom */ Loading @@ -2741,14 +2736,10 @@ Word32 dotWord32_16_Mant32Exp( const Word32 *bufX32, /* i: 32-bit buffer with un { shift = sub( shift, sub( 14, norm_s( len ) ) ); /* reduced required headroom */ } #else shift = sub( shift, sub( 14, norm_s( len ) ) ); /* reduced required headroom */ #endif L_sum = 0; /* Clear accu */ move32(); FOR( i = 0; i < len; i++ ) { #ifdef FIX_BASOP_1765_MASA1TC_CNG_MISMATCH IF( EQ_16( is_ivas, 1 ) ) { L_sum = L_add( L_sum, Mpy_32_16_1( L_shl( bufX32[i], shift ), bufY16[i] ) ); Loading @@ -2757,22 +2748,15 @@ Word32 dotWord32_16_Mant32Exp( const Word32 *bufX32, /* i: 32-bit buffer with un { L_sum = L_mac0( L_sum, round_fx( L_shl( bufX32[i], shift ) ), bufY16[i] ); } #else L_sum = L_mac0( L_sum, round_fx( L_shl( bufX32[i], shift ) ), bufY16[i] ); #endif } shift1 = norm_l( L_sum ); L_sum = L_shl( L_sum, shift1 ); /* return value */ shift = sub( add( bufX32_exp, bufY16_exp ), add( shift, shift1 ) ); #ifdef FIX_BASOP_1765_MASA1TC_CNG_MISMATCH IF( EQ_16( is_ivas, 0 ) ) { shift = add( shift, 1 ); /* compensate for factor of 2 introduced by L_mac0 */ } #else shift = add( shift, 1 ); /* compensate for factor of 2 introduced by L_mac0 */ #endif /* In case of NULL result, we want to have a 0 exponent too */ if ( L_sum == 0 ) shift = 0; Loading lib_com/basop_util.h +5 −9 Original line number Diff line number Diff line Loading @@ -864,12 +864,8 @@ Word32 dotWord32_16_Mant32Exp( const Word32 *bufX32, /* i: 32-bit buffer with un const Word16 *bufY16, /* i: 16-bit buffer quite right-aligned */ Word16 bufY16_exp, /* i: exponent of buffer bufY16 */ Word16 len, /* i: buffer len to process */ #ifdef FIX_BASOP_1765_MASA1TC_CNG_MISMATCH Word16 *exp, /* o: result exponent */ const Word16 is_ivas ); /* i: flag indicating IVAS to maintain EVS BE */ #else Word16 *exp ); /* o: result exponent */ #endif /*!********************************************************************** \brief Converts linear factor or energy to Decibel 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 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 +6 −6 Original line number Diff line number Diff line Loading @@ -79,7 +79,7 @@ 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 ); 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; Loading Loading @@ -124,7 +124,7 @@ 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 ); 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; Loading Loading @@ -438,7 +438,7 @@ 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 ); 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 Loading Loading @@ -488,7 +488,7 @@ 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 ); 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 Loading Loading @@ -617,7 +617,7 @@ 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 ); 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 Loading Loading @@ -666,7 +666,7 @@ 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 ); 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 Loading
lib_com/basop_util.c +5 −21 Original line number Diff line number Diff line Loading @@ -2720,19 +2720,14 @@ Word32 dotWord32_16_Mant32Exp( const Word32 *bufX32, /* i: 32-bit buffer with un const Word16 *bufY16, /* i: 16-bit buffer quite right-aligned */ Word16 bufY16_exp, /* i: exponent of buffer bufY16 */ Word16 len, /* i: buffer len to process */ #ifdef FIX_BASOP_1765_MASA1TC_CNG_MISMATCH Word16 *exp, /* o: result exponent */ const Word16 is_ivas ) /* i: flag indicating IVAS to maintain EVS BE */ #else Word16 *exp ) /* o: result exponent */ #endif { Word32 L_sum; Word16 shift, shift1, i; shift = getScaleFactor32( bufX32, len ); /* current available headroom */ #ifdef FIX_BASOP_1765_MASA1TC_CNG_MISMATCH IF( EQ_16( is_ivas, 1 ) ) { shift = sub( shift, sub( 15, norm_s( len ) ) ); /* reduced required headroom */ Loading @@ -2741,14 +2736,10 @@ Word32 dotWord32_16_Mant32Exp( const Word32 *bufX32, /* i: 32-bit buffer with un { shift = sub( shift, sub( 14, norm_s( len ) ) ); /* reduced required headroom */ } #else shift = sub( shift, sub( 14, norm_s( len ) ) ); /* reduced required headroom */ #endif L_sum = 0; /* Clear accu */ move32(); FOR( i = 0; i < len; i++ ) { #ifdef FIX_BASOP_1765_MASA1TC_CNG_MISMATCH IF( EQ_16( is_ivas, 1 ) ) { L_sum = L_add( L_sum, Mpy_32_16_1( L_shl( bufX32[i], shift ), bufY16[i] ) ); Loading @@ -2757,22 +2748,15 @@ Word32 dotWord32_16_Mant32Exp( const Word32 *bufX32, /* i: 32-bit buffer with un { L_sum = L_mac0( L_sum, round_fx( L_shl( bufX32[i], shift ) ), bufY16[i] ); } #else L_sum = L_mac0( L_sum, round_fx( L_shl( bufX32[i], shift ) ), bufY16[i] ); #endif } shift1 = norm_l( L_sum ); L_sum = L_shl( L_sum, shift1 ); /* return value */ shift = sub( add( bufX32_exp, bufY16_exp ), add( shift, shift1 ) ); #ifdef FIX_BASOP_1765_MASA1TC_CNG_MISMATCH IF( EQ_16( is_ivas, 0 ) ) { shift = add( shift, 1 ); /* compensate for factor of 2 introduced by L_mac0 */ } #else shift = add( shift, 1 ); /* compensate for factor of 2 introduced by L_mac0 */ #endif /* In case of NULL result, we want to have a 0 exponent too */ if ( L_sum == 0 ) shift = 0; Loading
lib_com/basop_util.h +5 −9 Original line number Diff line number Diff line Loading @@ -864,12 +864,8 @@ Word32 dotWord32_16_Mant32Exp( const Word32 *bufX32, /* i: 32-bit buffer with un const Word16 *bufY16, /* i: 16-bit buffer quite right-aligned */ Word16 bufY16_exp, /* i: exponent of buffer bufY16 */ Word16 len, /* i: buffer len to process */ #ifdef FIX_BASOP_1765_MASA1TC_CNG_MISMATCH Word16 *exp, /* o: result exponent */ const Word16 is_ivas ); /* i: flag indicating IVAS to maintain EVS BE */ #else Word16 *exp ); /* o: result exponent */ #endif /*!********************************************************************** \brief Converts linear factor or energy to Decibel 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