Loading lib_rend/ivas_dirac_dec_binaural_functions.c +11 −15 Original line number Diff line number Diff line Loading @@ -83,7 +83,6 @@ Word16 slot_fx[4] = { 32767, 16384, 10922, 8192 }; #define EPSILON_EXP ( -39 ) #define ONE_DIV_EPSILON_MANT 1953125000 /* 1e+12 = 0,9094947*(2^40) */ #define ONE_DIV_EPSILON_EXP ( 40 ) #endif #define ADAPT_HTPROTO_ROT_LIM_1 0.8f Loading Loading @@ -5138,14 +5137,16 @@ static void eig2x2_fx( q_tmp2 = sub( 31, q_tmp2 ); tmp3 = BASOP_Util_Add_Mant32Exp( tmp2, sub( 31, q_tmp2 ), epsilon_mant, epsilon_exp, &exp_tmp3 ); #ifndef FIX_1009_REPLACE_DIV_SQRT_BY_ISQRT_LC #if !defined(FIX_1009_REPLACE_DIV_SQRT_BY_ISQRT_LC) || 1 tmp2 = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, tmp3, &exp ); exp = sub( exp, sub( Q30, sub( 31, exp_tmp3 ) ) ); normVal_fx = Sqrt32( tmp2, &exp ); // q_tmp2 q_tmp2 = sub( 31, exp ); #else normVal_fx = ISqrt32( tmp3, &exp_tmp3 ); q_tmp2 = sub( 31, exp_tmp3 ); /* Note: This code part does not work yet, see pipeline issue for BASOP #1009 */ /* although the same code works at other places: mantissa and q_format is fine */ normVal_fx = ISqrt32( tmp3, &exp ); q_tmp2 = sub( 31, exp ); #endif IF( LT_16( q_tmp1, q_c ) ) { Loading Loading @@ -5710,14 +5711,11 @@ static void chol2x2_fx( temp = BASOP_Util_Divide3232_Scale_cadence( temp, 4611686, &exp ); q_tmp = add( sub( 31, exp ), sub( q_tmp, 62 ) ); #else Word32 my_temp; Word16 my_q_tmp; my_temp = temp; my_q_tmp = q_tmp; temp = BASOP_Util_Divide3232_Scale_cadence( temp, 4611686, &exp ); q_tmp = add( sub( 31, exp ), sub( q_tmp, 62 ) ); my_temp = Mpy_32_32( my_temp, ONE_DIV_EPSILON_MANT ); my_q_tmp = add( my_q_tmp, ONE_DIV_EPSILON_EXP ); Word16 norm = norm_l(temp); temp = L_shl(temp, norm); q_tmp = add(q_tmp, norm); temp = Mpy_32_32( temp, ONE_DIV_EPSILON_MANT ); q_tmp = sub( q_tmp, ONE_DIV_EPSILON_EXP ); #endif } ELSE Loading Loading @@ -6120,11 +6118,9 @@ static void formulate2x2MixingMatrix_fx( // 4611686 = Q62 IF( maxEne_fx == 0 ) { // maxEneDiv_fx = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, 4611686, &exp ); // 4611686 = 1e-12f in Q62 // q_maxEneDiv = add( sub( 31, exp ), sub( Q30, 62 ) ); maxEneDiv_fx = ONE_DIV_EPSILON_MANT; move32(); q_maxEneDiv = ONE_DIV_EPSILON_EXP; q_maxEneDiv = 31 - ONE_DIV_EPSILON_EXP; move16(); } ELSE Loading Loading
lib_rend/ivas_dirac_dec_binaural_functions.c +11 −15 Original line number Diff line number Diff line Loading @@ -83,7 +83,6 @@ Word16 slot_fx[4] = { 32767, 16384, 10922, 8192 }; #define EPSILON_EXP ( -39 ) #define ONE_DIV_EPSILON_MANT 1953125000 /* 1e+12 = 0,9094947*(2^40) */ #define ONE_DIV_EPSILON_EXP ( 40 ) #endif #define ADAPT_HTPROTO_ROT_LIM_1 0.8f Loading Loading @@ -5138,14 +5137,16 @@ static void eig2x2_fx( q_tmp2 = sub( 31, q_tmp2 ); tmp3 = BASOP_Util_Add_Mant32Exp( tmp2, sub( 31, q_tmp2 ), epsilon_mant, epsilon_exp, &exp_tmp3 ); #ifndef FIX_1009_REPLACE_DIV_SQRT_BY_ISQRT_LC #if !defined(FIX_1009_REPLACE_DIV_SQRT_BY_ISQRT_LC) || 1 tmp2 = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, tmp3, &exp ); exp = sub( exp, sub( Q30, sub( 31, exp_tmp3 ) ) ); normVal_fx = Sqrt32( tmp2, &exp ); // q_tmp2 q_tmp2 = sub( 31, exp ); #else normVal_fx = ISqrt32( tmp3, &exp_tmp3 ); q_tmp2 = sub( 31, exp_tmp3 ); /* Note: This code part does not work yet, see pipeline issue for BASOP #1009 */ /* although the same code works at other places: mantissa and q_format is fine */ normVal_fx = ISqrt32( tmp3, &exp ); q_tmp2 = sub( 31, exp ); #endif IF( LT_16( q_tmp1, q_c ) ) { Loading Loading @@ -5710,14 +5711,11 @@ static void chol2x2_fx( temp = BASOP_Util_Divide3232_Scale_cadence( temp, 4611686, &exp ); q_tmp = add( sub( 31, exp ), sub( q_tmp, 62 ) ); #else Word32 my_temp; Word16 my_q_tmp; my_temp = temp; my_q_tmp = q_tmp; temp = BASOP_Util_Divide3232_Scale_cadence( temp, 4611686, &exp ); q_tmp = add( sub( 31, exp ), sub( q_tmp, 62 ) ); my_temp = Mpy_32_32( my_temp, ONE_DIV_EPSILON_MANT ); my_q_tmp = add( my_q_tmp, ONE_DIV_EPSILON_EXP ); Word16 norm = norm_l(temp); temp = L_shl(temp, norm); q_tmp = add(q_tmp, norm); temp = Mpy_32_32( temp, ONE_DIV_EPSILON_MANT ); q_tmp = sub( q_tmp, ONE_DIV_EPSILON_EXP ); #endif } ELSE Loading Loading @@ -6120,11 +6118,9 @@ static void formulate2x2MixingMatrix_fx( // 4611686 = Q62 IF( maxEne_fx == 0 ) { // maxEneDiv_fx = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, 4611686, &exp ); // 4611686 = 1e-12f in Q62 // q_maxEneDiv = add( sub( 31, exp ), sub( Q30, 62 ) ); maxEneDiv_fx = ONE_DIV_EPSILON_MANT; move32(); q_maxEneDiv = ONE_DIV_EPSILON_EXP; q_maxEneDiv = 31 - ONE_DIV_EPSILON_EXP; move16(); } ELSE Loading