Commit ae433577 authored by multrus's avatar multrus
Browse files

[cleanup] accept MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE, remove...

[cleanup] accept MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE, remove inactive IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE
parent 4a865300
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -77,10 +77,6 @@
/* Note: each compile switch (FIX_1101_...) is independent from the other ones */
#define OPT_MCT_ENC_V3_BE
#define OPT_BIN_REND_V2_NBE
/* Both following 2 macros (IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST*) are independent from each other, they refer to different code blocks */
//#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE /* FhG: reduces WMOPS of param_mc_prm_est, not bit-exact to previous version. Obsoleted by MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE. */
#define MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of dmx calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Requires MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE. */


#define FIX_1348_BIT_PRECISION_IMPROVEMENT
#define FIX_1348_BIT_PRECISION_IMPROVEMENT_QWIN
+0 −119
Original line number Diff line number Diff line
@@ -664,15 +664,8 @@ static void ivas_param_mc_param_est_enc_fx(
    Word32 *p_slot_frame_f_real_fx[MAX_CICP_CHANNELS];                     /* Output of the MDFT FB - real part */
    Word32 *p_slot_frame_f_imag_fx[MAX_CICP_CHANNELS];                     /* Output of the MDFT FB - imag part */

#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
    Word64 dmx_real_64[PARAM_MC_MAX_TRANSPORT_CHANS];
    Word64 dmx_imag_64[PARAM_MC_MAX_TRANSPORT_CHANS];
#else
    Word32 dmx_real_fx[PARAM_MC_MAX_TRANSPORT_CHANS]; /* Downmix channel - Real Part */
    Word16 dmx_real_e[PARAM_MC_MAX_TRANSPORT_CHANS];  /* Downmix channel - Real Part */
    Word32 dmx_imag_fx[PARAM_MC_MAX_TRANSPORT_CHANS]; /* Downmix channel - Imag Part */
    Word16 dmx_imag_e[PARAM_MC_MAX_TRANSPORT_CHANS];  /* Downmix channel - Imag Part */
#endif
    Word32 a_fx, b_fx, c_fx, d_fx; /* Tmp complex values */
    Word16 a_e, b_e, c_e, d_e;     /* Tmp complex values */
    Word64 Cy_sum_real_64[PARAM_MC_MAX_PARAMETER_BANDS][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS];
@@ -749,9 +742,6 @@ static void ivas_param_mc_param_est_enc_fx(
    }

    Word16 gb = find_guarded_bits_fx( l_ts );
#ifndef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
    Word16 add20gb = add( 20, gb );
#endif

    sub35gb = sub( 32, sub( 11, find_guarded_bits_fx( l_ts ) ) );           // 31 - (((11 - gb) + 31 + norm) - 32)
    sub62gb = sub( 63, shl( sub( 11, find_guarded_bits_fx( l_ts ) ), 1 ) ); // 31 - ((2*(11 - gb) + norm) - 32)
@@ -784,7 +774,6 @@ static void ivas_param_mc_param_est_enc_fx(

                FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 )
                {
#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
                    Word64 real_64;
                    Word64 imag_64;

@@ -803,61 +792,17 @@ static void ivas_param_mc_param_est_enc_fx(
                    move64();
                    move64();

#else
                    Word32 real_fx = L_add( 0, 0 );
                    Word16 real_e = add( 0, 0 );
                    Word32 imag_fx = L_add( 0, 0 );
                    Word16 imag_e = add( 0, 0 );
                    FOR( inp_ch = 0; inp_ch < nchan_input; inp_ch++ )
                    {
                        L_tmp = Mpy_32_32( slot_frame_f_real_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) );
                        real_fx = BASOP_Util_Add_Mant32Exp( real_fx, real_e, L_tmp, add20gb, &real_e );
                        L_tmp = Mpy_32_32( slot_frame_f_imag_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) );
                        imag_fx = BASOP_Util_Add_Mant32Exp( imag_fx, imag_e, L_tmp, add20gb, &imag_e );
                        p_dmx_fac_fx++;
                    }
                    dmx_real_fx[ch_idx1] = real_fx;
                    dmx_real_e[ch_idx1] = real_e;
                    dmx_imag_fx[ch_idx1] = imag_fx;
                    dmx_imag_e[ch_idx1] = imag_e;
                    move32();
                    move16();
                    move32();
                    move16();

#endif
                }

                /* Cx for transport channels */
                FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 )
                {
#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
                    CONVERT_DMX( dmx_real_64[ch_idx1], a_fx, a_e );
                    CONVERT_DMX( dmx_imag_64[ch_idx1], b_fx, b_e );
#endif
                    FOR( ch_idx2 = 0; ch_idx2 < nchan_transport; ++ch_idx2 )
                    {
#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
                        CONVERT_DMX( dmx_real_64[ch_idx2], c_fx, c_e );
                        CONVERT_DMX( dmx_imag_64[ch_idx2], d_fx, d_e );
#else
                        a_fx = dmx_real_fx[ch_idx1];
                        move32();
                        a_e = dmx_real_e[ch_idx1];
                        move16();
                        b_fx = dmx_imag_fx[ch_idx1];
                        move32();
                        b_e = dmx_imag_e[ch_idx1];
                        move16();
                        c_fx = dmx_real_fx[ch_idx2];
                        move32();
                        c_e = dmx_real_e[ch_idx2];
                        move16();
                        d_fx = dmx_imag_fx[ch_idx2];
                        move32();
                        d_e = dmx_imag_e[ch_idx2];
                        move16();
#endif

                        /* (a-ib)(c+id) = ac + bd + i(ad-bc) */
                        L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e );
@@ -907,7 +852,6 @@ static void ivas_param_mc_param_est_enc_fx(

                FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 )
                {
#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
                    Word64 real_64;
                    Word64 imag_64;

@@ -926,54 +870,15 @@ static void ivas_param_mc_param_est_enc_fx(
                    dmx_imag_64[ch_idx1] = imag_64;
                    move64();
                    move64();
#else
                    Word32 real_fx = L_add( 0, 0 );
                    Word16 real_e = 0;
                    move16();
                    Word32 imag_fx = L_add( 0, 0 );
                    Word16 imag_e = 0;
                    move16();

                    FOR( inp_ch = 0; inp_ch < nchan_input; inp_ch++ )
                    {
                        L_tmp = Mpy_32_32( slot_frame_f_real_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) );
                        real_fx = BASOP_Util_Add_Mant32Exp( real_fx, real_e, L_tmp, add20gb, &real_e );
                        L_tmp = Mpy_32_32( slot_frame_f_imag_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) );
                        imag_fx = BASOP_Util_Add_Mant32Exp( imag_fx, imag_e, L_tmp, add20gb, &imag_e );
                        p_dmx_fac_fx++;
                    }
                    dmx_real_fx[ch_idx1] = real_fx;
                    move32();
                    dmx_real_e[ch_idx1] = real_e;
                    move16();
                    dmx_imag_fx[ch_idx1] = imag_fx;
                    move32();
                    dmx_imag_e[ch_idx1] = imag_e;
                    move16();

#endif
                }

                /* Cx for transport channels */
                FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 )
                {
#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
                    CONVERT_DMX( dmx_real_64[ch_idx1], a_fx, a_e );
                    CONVERT_DMX( dmx_imag_64[ch_idx1], b_fx, b_e );
#else
                    a_fx = dmx_real_fx[ch_idx1];
                    move32();
                    a_e = dmx_real_e[ch_idx1];
                    move16();
                    b_fx = dmx_imag_fx[ch_idx1];
                    move32();
                    b_e = dmx_imag_e[ch_idx1];
                    move16();

#endif
                    FOR( ch_idx2 = 0; ch_idx2 < nchan_transport; ++ch_idx2 )
                    {
#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE
                        CONVERT_DMX( dmx_real_64[ch_idx2], c_fx, c_e );
                        CONVERT_DMX( dmx_imag_64[ch_idx2], d_fx, d_e );

@@ -981,12 +886,6 @@ static void ivas_param_mc_param_est_enc_fx(
                        L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e );
                        Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cx_sum_e[cur_param_band][ch_idx1][ch_idx2], L_tmp, tmp_e,
                                                                                                &Cx_sum_e[cur_param_band][ch_idx1][ch_idx2] );
#else
                        /* (a-ib)(c+id) = ac + bd + i(ad-bc) */
                        L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, dmx_real_fx[ch_idx2] ), add( a_e, dmx_real_e[ch_idx2] ), Mpy_32_32( b_fx, dmx_imag_fx[ch_idx2] ), add( b_e, dmx_imag_e[ch_idx2] ), &tmp_e );
                        Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cx_sum_e[cur_param_band][ch_idx1][ch_idx2], L_tmp, tmp_e,
                                                                                                &Cx_sum_e[cur_param_band][ch_idx1][ch_idx2] );
#endif
                        move32();
                    }
                }
@@ -994,24 +893,6 @@ static void ivas_param_mc_param_est_enc_fx(
                /* Cy for input channels */
                FOR( ch_idx1 = 0; ch_idx1 < nchan_input; ++ch_idx1 )
                {
#ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE
                    a_e = norm_l( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band] );
                    a_fx = L_shl( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], a_e );
                    a_e = sub( add20gb, a_e );
                    if ( a_fx == 0 )
                    {
                        a_e = 0;
                        move16();
                    }
                    b_e = norm_l( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band] );
                    b_fx = L_shl( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band], b_e );
                    b_e = sub( add20gb, b_e );
                    if ( b_fx == 0 )
                    {
                        b_e = 0;
                        move16();
                    }
#endif
                    a_fx = slot_frame_f_real_fx[ch_idx1][cur_cldfb_band];
                    b_fx = slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band];
                    move32();