Commit 7e573851 authored by thomas dettbarn's avatar thomas dettbarn Committed by Manuel Jander
Browse files

minimal code cleanup in ivas_smc_gmm_fx(). There were two unncessary IF...

minimal code cleanup in ivas_smc_gmm_fx(). There were two unncessary IF clauses which could be replaced with L_max.
parent eb76c9cb
Loading
Loading
Loading
Loading
+19 −30
Original line number Diff line number Diff line
@@ -856,16 +856,8 @@ static Word16 sp_mus_classif_gmm_fx( /* o : decis
    FOR( i = LOWEST_FBIN; i < HIGHEST_FBIN; i++ )
    {
        /*mx = PS_norm[i] > st->past_PS[i] ? PS_norm[i] : st->past_PS[i];*/
        IF( GT_32( PS_norm[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ) )
        {
            mx = PS_norm[i];
            move16(); /*Q25 */
        }
        ELSE
        {
            mx = hSpMusClas->past_PS_fx[i - LOWEST_FBIN];
        mx = L_max( PS_norm[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] );
        move16(); /*Q25 */
        }

        /*ps_sta += mx / (dPS[i] + 1e-5f);*/
        IF( !dPS[i] )
@@ -1611,7 +1603,7 @@ Word16 ivas_smc_gmm_fx(
    Word32 ps_fx[N_SMC_MIXTURES], pm_fx[N_SMC_MIXTURES], pn_fx[N_SMC_MIXTURES];
    Word64 wprob_fx;
    Word32 fvm_fx[N_PCA_COEF];
    Word32 sum_PS_fx, ps_diff_fx, ps_sta_fx;
    Word32 sum_PS_fx, ps_diff_fx;
    Word32 dlp_fx, wrelE_fx, wdrop_fx, wght_fx;
    Word32 wrise_fx;
    Word16 dlp_mean2var_fx;
@@ -1989,32 +1981,29 @@ Word16 ivas_smc_gmm_fx(
    move32();

    /* [14] ps_sta (spectral stationarity) */
    ps_sta_fx = 0;
    {
        Word32 ps_sta_fx = 0;
        move32();
        Word16 ps_sta_exp = 0;
        move16();
        Word32 avoid_divide_by_zero;
        avoid_divide_by_zero = L_shr( 21475, sub( 31, Qfact_PS_past ) ); // 21475 = 1e-5 in Q31
        FOR( i = LOWEST_FBIN; i < HIGHEST_FBIN; i++ )
        {
        IF( GT_32( PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ) )
        {
            temp32 = BASOP_Util_Divide3232_Scale_cadence( PS_norm_fx[i], ( L_add( dPS_fx[i], L_shr( 21475, sub( 31, Qfact_PS_past ) ) ) ), &temp_exp ); // 31-temp_exp
            Word32 tmp_max;
            tmp_max = L_max(PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] );

            temp32 = BASOP_Util_Divide3232_Scale_cadence( tmp_max, L_add( dPS_fx[i], avoid_divide_by_zero ), &temp_exp ); // 31-temp_exp
            move32();
            ps_sta_fx = BASOP_Util_Add_Mant32Exp( temp32, temp_exp, ps_sta_fx, ps_sta_exp, &ps_sta_exp );
            move32();
        }
        ELSE
        {
            // ps_sta += hSpMusClas->past_PS[i - LOWEST_FBIN] / ( dPS[i] + 1e-5f );
            temp32 = BASOP_Util_Divide3232_Scale_cadence( hSpMusClas->past_PS_fx[i - LOWEST_FBIN], ( L_add( dPS_fx[i], L_shr( 21475, sub( 31, Qfact_PS_past ) ) ) ), &temp_exp ); // 31-temp_exp
            ps_sta_fx = BASOP_Util_Add_Mant32Exp( temp32, temp_exp, ps_sta_fx, ps_sta_exp, &ps_sta_exp );
        }
    }
    // temp32_log = L_add( BASOP_Util_Log2( L_add( ps_sta_fx, L_shr( 21475, ps_sta_exp ) ) ), L_shl( ps_sta_exp, Q25 ) );
        temp32_log = L_add( BASOP_Util_Log2( L_add_sat( ps_sta_fx, L_shr( 21475, ps_sta_exp ) ) ), L_shl( ps_sta_exp, Q25 ) );
        temp32_log = Mpy_32_32( temp32_log, 1488522239 ); /*logf(x) = log2(x)*logf(2)*/
        *pFV_fx++ = L_shr( temp32_log, Q5 );              // logf( ps_sta + 1e-5f );
        move32();
        MVR2R_WORD32( &PS_norm_fx[LOWEST_FBIN], hSpMusClas->past_PS_fx, HIGHEST_FBIN - LOWEST_FBIN );
    }

    /* save ps_diff and ps_sta features for XTALK and UNCLR classifier */
    IF( hStereoClassif != NULL )