Loading lib_enc/ivas_stereo_mdct_stereo_enc_fx.c +45 −3 Original line number Diff line number Diff line Loading @@ -861,7 +861,49 @@ static Word32 SQ_gain_estimate_stereo_fx( // e_res /* ignore that we may take no all lines into account, max. 3 lines at the upper end of the spectrum can be missed (if lg is not a multiple of 4, happens also in SQGain()*/ #ifdef FIX_1464_SQ_GAIN_PRECISION e_tmp = s_min( 8, sub( L_norm_arr( xL_fx, lg ), 2 ) ); #if 1 FOR( q = 0; q < lg_4; q++ ) { e_tmp = s_min( add( e_xL, 3 ), sub( L_norm_arr( xL_fx + i, 4 ), 2 ) ); e_ener = shl( sub( e_xL, e_tmp ), 1 ); ener_fx = L_shr( 21474836 /* 0.01 */, e_ener ); tmp_32 = L_shl( xL_fx[i + 0], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); tmp_32 = L_shl( xL_fx[i + 1], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); tmp_32 = L_shl( xL_fx[i + 2], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); tmp_32 = L_shl( xL_fx[i + 3], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); en_fx[q] = BASOP_Util_Log2( ener_fx ); /* saves a MAC */ move32(); en_fx[q] = Mpy_32_16_1( L_add( e_ener * ONE_IN_Q25, en_fx[q] ), 9864 /* log10(2) in Q15 */ ); // Q(25) move32(); i = add( i, 4 ); } i = 0; FOR( ; q < lg2_4; q++ ) { e_tmp = s_min( add( e_xR, 3 ), sub( L_norm_arr( xR_fx + i, 4 ), 2 ) ); e_ener = shl( sub( e_xR, e_tmp ), 1 ); ener_fx = L_shr( 21474836 /* 0.01 */, e_ener ); tmp_32 = L_shl( xR_fx[i + 0], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); tmp_32 = L_shl( xR_fx[i + 1], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); tmp_32 = L_shl( xR_fx[i + 2], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); tmp_32 = L_shl( xR_fx[i + 3], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); en_fx[q] = BASOP_Util_Log2( ener_fx ); /* saves a MAC */ move32(); en_fx[q] = Mpy_32_16_1( L_add( e_ener * ONE_IN_Q25, en_fx[q] ), 9864 /* log10(2) in Q15 */ ); // Q(25) move32(); i = add( i, 4 ); } #else e_tmp = s_min( add( e_xL, 3 ), sub( L_norm_arr( xL_fx, lg ), 2 ) ); e_xL = sub( e_xL, e_tmp ); FOR( q = 0; q < lg_4; q++ ) { Loading @@ -880,7 +922,7 @@ static Word32 SQ_gain_estimate_stereo_fx( // e_res move32(); i = add( i, 4 ); } e_tmp = s_min( 8, sub( L_norm_arr( xR_fx, lg ), 2 ) ); e_tmp = s_min( add( e_xR, 3 ), sub( L_norm_arr( xR_fx, lg ), 2 ) ); e_xR = sub( e_xR, e_tmp ); i = 0; FOR( ; q < lg2_4; q++ ) Loading @@ -900,7 +942,7 @@ static Word32 SQ_gain_estimate_stereo_fx( // e_res move32(); i = add( i, 4 ); } #endif #else FOR( q = 0; q < lg_4; q++ ) { Loading Loading
lib_enc/ivas_stereo_mdct_stereo_enc_fx.c +45 −3 Original line number Diff line number Diff line Loading @@ -861,7 +861,49 @@ static Word32 SQ_gain_estimate_stereo_fx( // e_res /* ignore that we may take no all lines into account, max. 3 lines at the upper end of the spectrum can be missed (if lg is not a multiple of 4, happens also in SQGain()*/ #ifdef FIX_1464_SQ_GAIN_PRECISION e_tmp = s_min( 8, sub( L_norm_arr( xL_fx, lg ), 2 ) ); #if 1 FOR( q = 0; q < lg_4; q++ ) { e_tmp = s_min( add( e_xL, 3 ), sub( L_norm_arr( xL_fx + i, 4 ), 2 ) ); e_ener = shl( sub( e_xL, e_tmp ), 1 ); ener_fx = L_shr( 21474836 /* 0.01 */, e_ener ); tmp_32 = L_shl( xL_fx[i + 0], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); tmp_32 = L_shl( xL_fx[i + 1], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); tmp_32 = L_shl( xL_fx[i + 2], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); tmp_32 = L_shl( xL_fx[i + 3], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); en_fx[q] = BASOP_Util_Log2( ener_fx ); /* saves a MAC */ move32(); en_fx[q] = Mpy_32_16_1( L_add( e_ener * ONE_IN_Q25, en_fx[q] ), 9864 /* log10(2) in Q15 */ ); // Q(25) move32(); i = add( i, 4 ); } i = 0; FOR( ; q < lg2_4; q++ ) { e_tmp = s_min( add( e_xR, 3 ), sub( L_norm_arr( xR_fx + i, 4 ), 2 ) ); e_ener = shl( sub( e_xR, e_tmp ), 1 ); ener_fx = L_shr( 21474836 /* 0.01 */, e_ener ); tmp_32 = L_shl( xR_fx[i + 0], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); tmp_32 = L_shl( xR_fx[i + 1], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); tmp_32 = L_shl( xR_fx[i + 2], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); tmp_32 = L_shl( xR_fx[i + 3], e_tmp ); ener_fx = L_add( ener_fx, Mpy_32_32( tmp_32, tmp_32 ) ); en_fx[q] = BASOP_Util_Log2( ener_fx ); /* saves a MAC */ move32(); en_fx[q] = Mpy_32_16_1( L_add( e_ener * ONE_IN_Q25, en_fx[q] ), 9864 /* log10(2) in Q15 */ ); // Q(25) move32(); i = add( i, 4 ); } #else e_tmp = s_min( add( e_xL, 3 ), sub( L_norm_arr( xL_fx, lg ), 2 ) ); e_xL = sub( e_xL, e_tmp ); FOR( q = 0; q < lg_4; q++ ) { Loading @@ -880,7 +922,7 @@ static Word32 SQ_gain_estimate_stereo_fx( // e_res move32(); i = add( i, 4 ); } e_tmp = s_min( 8, sub( L_norm_arr( xR_fx, lg ), 2 ) ); e_tmp = s_min( add( e_xR, 3 ), sub( L_norm_arr( xR_fx, lg ), 2 ) ); e_xR = sub( e_xR, e_tmp ); i = 0; FOR( ; q < lg2_4; q++ ) Loading @@ -900,7 +942,7 @@ static Word32 SQ_gain_estimate_stereo_fx( // e_res move32(); i = add( i, 4 ); } #endif #else FOR( q = 0; q < lg_4; q++ ) { Loading