Commit 3121c8ac authored by multrus's avatar multrus
Browse files

[cleanup] accept OPT_MCT_ENC_V1_BE, OPT_MCT_ENC_V1_NBE

parent 1c66fbfe
Loading
Loading
Loading
Loading
+0 −26
Original line number Diff line number Diff line
@@ -614,7 +614,6 @@ void ivas_fb_mixer_get_windowed_fr_fx(
    Word16 n_new_samples;
    Word32 fr_in_block_fx[L_FRAME48k * 2];
    const Word16 *win_ptr_fx;
#ifdef OPT_MCT_ENC_V1_BE
    Word16 two_mdft_len = shl( mdft_len, 1 );
    Word16 tmp = sub( shl( mdft_len, 1 ), length );
    Word16 gb_neg = negate( gb );
@@ -622,11 +621,6 @@ void ivas_fb_mixer_get_windowed_fr_fx(
    n_old_samples = s_min( ( sub( hFbMixer->fb_cfg->prior_input_length, hFbMixer->fb_cfg->windowed_fr_offset ) ), two_mdft_len );
    offset = sub( tmp, hFbMixer->ana_window_offset );
    rev_offset = sub( two_mdft_len, hFbMixer->ana_window_offset );
#else
    n_old_samples = s_min( ( sub( hFbMixer->fb_cfg->prior_input_length, hFbMixer->fb_cfg->windowed_fr_offset ) ), ( shl( mdft_len, 1 ) ) );
    offset = sub( sub( shl( mdft_len, 1 ), length ), hFbMixer->ana_window_offset );
    rev_offset = sub( shl( mdft_len, 1 ), hFbMixer->ana_window_offset );
#endif
    set32_fx( fr_in_block_fx, 0, offset );
    n_new_samples = s_max( 0, sub( shl( length, 1 ), n_old_samples ) );
    FOR( ch_idx = 0; ch_idx < nchan_fb_in; ch_idx++ )
@@ -636,41 +630,21 @@ void ivas_fb_mixer_get_windowed_fr_fx(

        win_ptr_fx = hFbMixer->pAna_window_fx; /*Q15*/

#ifdef OPT_MCT_ENC_V1_BE
        FOR( j = offset; j < tmp; j++ )
#else
        FOR( j = offset; j < sub( shl( mdft_len, 1 ), length ); j++ )
#endif
        {
            fr_in_block_fx[j] = Mpy_32_16_1( fr_in_block_fx[j], ( *( win_ptr_fx++ ) ) ); // Qx + 15 - 15 = Qx
            move32();
        }

#ifdef OPT_MCT_ENC_V1_BE
        FOR( j = rev_offset; j < two_mdft_len; j++ )
#else
        FOR( j = rev_offset; j < shl( mdft_len, 1 ); j++ )
#endif
        {
            fr_in_block_fx[j] = Mpy_32_16_1( fr_in_block_fx[j], ( *( --win_ptr_fx ) ) ); // Qx + 15 - 15 = Qx
            move32();
        }

#ifdef OPT_MCT_ENC_V1_BE
        scale_sig32( fr_in_block_fx, two_mdft_len, gb_neg );
#else
        FOR( Word16 i = 0; i < shl( mdft_len, 1 ); i++ )
        {
            fr_in_block_fx[i] = L_shr( fr_in_block_fx[i], gb ); // Qx - gb
            move32();
        }
#endif

#ifdef OPT_MCT_ENC_V1_BE
        ivas_mdft_fx( fr_in_block_fx, frame_f_real_fx[ch_idx], frame_f_imag_fx[ch_idx], two_mdft_len, mdft_len );
#else
        ivas_mdft_fx( fr_in_block_fx, frame_f_real_fx[ch_idx], frame_f_imag_fx[ch_idx], shl( mdft_len, 1 ), mdft_len );
#endif
    }

    return;
+0 −8
Original line number Diff line number Diff line
@@ -1965,11 +1965,7 @@ void v_multc_acc_32_16(

    FOR( i = 0; i < N; i++ )
    {
#ifdef OPT_MCT_ENC_V1_BE
        y[i] = Madd_32_16( y[i], x[i], c );
#else
        y[i] = L_add( y[i], Mpy_32_16_1( x[i], c ) );
#endif
        move32();
    }

@@ -1986,11 +1982,7 @@ void v_multc_acc_32_32(

    FOR( i = 0; i < N; i++ )
    {
#ifdef OPT_MCT_ENC_V1_BE
        y[i] = Madd_32_32( y[i], x[i], c ); /*Qx*/
#else
        y[i] = L_add( y[i], Mpy_32_32( x[i], c ) ); /*Qx*/
#endif
        move32();
    }

+0 −2
Original line number Diff line number Diff line
@@ -77,8 +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
#define OPT_MCT_ENC_V1_NBE
#define OPT_MCT_ENC_V1_BE
#define OPT_SBA_REND_V1_BE
#define OPT_HEAD_ROT_REND_V1_BE
#define OPT_SBA_DEC_V2_BE
+0 −9
Original line number Diff line number Diff line
@@ -1207,13 +1207,8 @@ static Word32 FIRLattice(
    move32();
    FOR( i = 0; i < order - 1; i++ )
    {
#ifdef OPT_MCT_ENC_V1_BE
        tmp = Madd_32_16( state[i], x, parCoeff[i] ); /*Q0*/
        x = Madd_32_16( x, state[i], parCoeff[i] );   /* exponent: 31+0 */
#else
        tmp = L_add( state[i], Mpy_32_16_1( x, parCoeff[i] ) );           /*Q0*/
        x = L_add( x, Mpy_32_16_1( state[i], parCoeff[i] ) );             /* exponent: 31+0 */
#endif
        state[i] = tmpSave; /*Q0*/
        move32();
        tmpSave = tmp; /*Q0*/
@@ -1221,11 +1216,7 @@ static Word32 FIRLattice(
    }

    /* last stage: only need half operations */
#ifdef OPT_MCT_ENC_V1_BE
    x = Madd_32_16( x, state[order - 1], parCoeff[order - 1] ); /*Q0*/
#else
    x = L_add( x, Mpy_32_16_1( state[order - 1], parCoeff[order - 1] ) ); /*Q0*/
#endif
    state[order - 1] = tmpSave; /*Q0*/
    move32();

+0 −122
Original line number Diff line number Diff line
@@ -2099,7 +2099,6 @@ static void compute_cov_mtx_fx(
)
{
    Word16 i, j;
#ifdef OPT_MCT_ENC_V1_NBE
    Word64 temp64_1, temp64_2;
    Word16 tmp_16, max_exp;
    Word16 temp_exp = shl( inp_exp, 1 );
@@ -2133,44 +2132,9 @@ static void compute_cov_mtx_fx(
            move32();
        }
    }
#else
    Word32 a, b, c, d;
    Word32 temp;
    Word16 norm_a, norm_b, norm_c, norm_d;
    Word16 shift;
    FOR( i = 0; i < N; i++ )
    {
        a = sr[i][freq];
        move32();
        b = si[i][freq];
        move32();
        norm_a = norm_l( a );
        norm_b = norm_l( b );
        a = L_shl( a, norm_a ); /*inp_exp-norm_a*/
        b = L_shl( b, norm_b ); /*inp_exp-norm_b*/
        FOR( j = i; j < N; j++ )
        {
            c = sr[j][freq];
            move32();
            d = si[j][freq];
            move32();
            norm_c = norm_l( c );
            norm_d = norm_l( d );
            c = L_shl( c, norm_c );                                                                                                                                                              /*inp_exp-norm_c*/
            d = L_shl( d, norm_d );                                                                                                                                                              /*inp_exp-norm_d*/
            temp = BASOP_Util_Add_Mant32Exp( Mult_32_32( a, c ), sub( shl( inp_exp, 1 ), add( norm_a, norm_c ) ), Mult_32_32( b, d ), sub( shl( inp_exp, 1 ), add( norm_b, norm_d ) ), &shift ); /*exp=inp_exp-norm_ab+inp_exp-norm_cd*/
            COVls->xr_fx[i][j] = BASOP_Util_Add_Mant32Exp( COVls->xr_fx[i][j], COVls->xr_e[i][j], temp, shift, &COVls->xr_e[i][j] );
            move32();
            temp = BASOP_Util_Add_Mant32Exp( Mult_32_32( b, c ), sub( shl( inp_exp, 1 ), add( norm_b, norm_c ) ), L_negate( Mult_32_32( a, d ) ), sub( shl( inp_exp, 1 ), add( norm_a, norm_d ) ), &shift );
            COVls->xi_fx[i][j] = BASOP_Util_Add_Mant32Exp( COVls->xi_fx[i][j], COVls->xi_e[i][j], temp, shift, &COVls->xi_e[i][j] );
            move32();
        }
    }
#endif
    return;
}

#ifdef OPT_MCT_ENC_V1_BE
static void computeIntensityVector_enc_fx(
    const Word16 *band_grouping,
    Word32 Cldfb_RealBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], /*inp_q*/
@@ -2248,92 +2212,6 @@ static void computeIntensityVector_enc_fx(

    return;
}
#else
static void computeIntensityVector_enc_fx(
    const Word16 *band_grouping,
    Word32 Cldfb_RealBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], /*inp_q*/
    Word32 Cldfb_ImagBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], /*inp_q*/
    const Word16 enc_param_start_band,                            /* i  : first band to process */
    const Word16 num_frequency_bands,
    Word32 intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS], /*exp: exp_intensity_real*/
    Word16 q_intensity_real[MASA_FREQUENCY_BANDS],
    Word16 inp_q )
{
    Word16 i, j;
    Word32 real, img;
    Word16 brange[2];
    Word16 shift_intensity_real, num_bins, guard_bits, norm;

    Word64 intensity_real64[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS];

    FOR( i = 0; i < DIRAC_NUM_DIMS; i++ )
    {
        set64_fx( intensity_real64[i], 0, MASA_FREQUENCY_BANDS );
    }

    shift_intensity_real = sub( shl( inp_q, 1 ), 32 );

    FOR( i = enc_param_start_band; i < enc_param_start_band + num_frequency_bands; i++ )
    {
        brange[0] = band_grouping[i];
        move16();
        brange[1] = band_grouping[i + 1];
        move16();

        num_bins = sub( brange[1], brange[0] );
        guard_bits = find_guarded_bits_fx( num_bins );

        intensity_real[0][i] = 0;
        move32();
        intensity_real[1][i] = 0;
        move32();
        intensity_real[2][i] = 0;
        move32();

        FOR( j = brange[0]; j < brange[1]; j++ )
        {
            real = Cldfb_RealBuffer[0][j];
            move32();
            img = Cldfb_ImagBuffer[0][j];
            move32();
            /* Intensity is XYZ order, audio is WYZX order. */
            intensity_real64[0][i] = W_add( intensity_real64[0][i], W_shr( W_add( W_mult0_32_32( Cldfb_RealBuffer[3][j], real ), W_mult0_32_32( Cldfb_ImagBuffer[3][j], img ) ), guard_bits ) ); // output Q= 2* input_q - guard_bits
            move32();
            intensity_real64[1][i] = W_add( intensity_real64[1][i], W_shr( W_add( W_mult0_32_32( Cldfb_RealBuffer[1][j], real ), W_mult0_32_32( Cldfb_ImagBuffer[1][j], img ) ), guard_bits ) ); // output Q= 2* input_q - guard_bits
            move32();
            intensity_real64[2][i] = W_add( intensity_real64[2][i], W_shr( W_add( W_mult0_32_32( Cldfb_RealBuffer[2][j], real ), W_mult0_32_32( Cldfb_ImagBuffer[2][j], img ) ), guard_bits ) ); // output Q= 2* input_q - guard_bits
            move32();
        }

        norm = 63;
        move16();
        IF( intensity_real64[0][i] != 0 )
        {
            norm = s_min( norm, W_norm( intensity_real64[0][i] ) );
        }
        IF( intensity_real64[1][i] != 0 )
        {
            norm = s_min( norm, W_norm( intensity_real64[1][i] ) );
        }
        IF( intensity_real64[2][i] != 0 )
        {
            norm = s_min( norm, W_norm( intensity_real64[2][i] ) );
        }

        intensity_real[0][i] = W_extract_h( W_shl( intensity_real64[0][i], norm ) ); /*2 * inp_q - guard_bits + norm - 32*/
        move32();
        intensity_real[1][i] = W_extract_h( W_shl( intensity_real64[1][i], norm ) ); /*2 * inp_q - guard_bits + norm - 32*/
        move32();
        intensity_real[2][i] = W_extract_h( W_shl( intensity_real64[2][i], norm ) ); /*2 * inp_q - guard_bits + norm - 32*/
        move32();

        q_intensity_real[i] = add( shift_intensity_real, sub( norm, guard_bits ) );
        move16();
    }

    return;
}
#endif

static void computeVerticalDiffuseness_fx(
    Word32 **buffer_intensity,     /* i  : Intensity vectors           */