Commit e392e205 authored by multrus's avatar multrus
Browse files

wrap changes in OPT_IGF_GET_WHITE_SPEC_DATA

parent 42d2b358
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@
#define FIX_2010_PREP_TBE_EXC                                /* FhG: fix issues with varying Q-values for code_preQ_fx[] */
#define FIX_2025_FDCNG_MULT                                  /* Nokia, FhG: Fix LB FDCNG noise introduced by changing mult to i_mult */

#define OPT_IGF_GET_WHITE_SPEC_DATA                          /* FhG: optimized version of IGF_getWhiteSpectralData_ivas() */
#define FIX_1962_FORMAT_CONV_SPECTRAL_DIFF                   /* FhG: Improved precision of targetEnergy in ivas_ls_setup_conversion_process_mdct_fx() */
#define FIX_2003_CON_TCX_OVERFLOW                            /* FhG: Use a dynamic scaling factor for the synth buffer at the output of con_tcx_ivas_fx() */
#define OPT_TCXLTP_FILTER_LOOP                               /* FhG: optimize loop in tcx_ltp_synth_filter */
+28 −1
Original line number Diff line number Diff line
@@ -2905,7 +2905,9 @@ static void IGF_getWhiteSpectralData_ivas(
    Word16 tmp_e;
    Word16 out_e_arr[IGF_START_MX + MAX_IGF_SFB_LEN];
    Word16 max_out_e;
#ifdef OPT_IGF_GET_WHITE_SPEC_DATA
    Word64 window_sum;
#endif
    assert( LT_16( stop, IGF_START_MX + MAX_IGF_SFB_LEN ) );

    /* inits */
@@ -2931,19 +2933,30 @@ static void IGF_getWhiteSpectralData_ivas(
    ak_e = add( tmp_e, sub( shl( sub( in_e, s_l ), 1 ), 15 ) ); // tmp_e + 2 * (in_e - s_l) - 15
    ak_e = sub( ak_e, 1 );

#ifdef OPT_IGF_GET_WHITE_SPEC_DATA
    window_sum = 0;
    move64();
    FOR( j = start - level; j < start + level; j++ )
    {
        window_sum = W_mac_32_32( window_sum, in[j], in[j] );
    }
#endif

    FOR( i = start; i < stop - level; i++ )
    {
#ifdef OPT_IGF_GET_WHITE_SPEC_DATA
        window_sum = W_mac_32_32( window_sum, in[i + level], in[i + level] );           /* add the right one */
        ak = Mult_32_16( W_shl_sat_l( window_sum, shift ), quo );                       // add( shl( level, 1 ), 1 ), &tmp_e ) );
        window_sum = W_sub( window_sum, W_mult_32_32( in[i - level], in[i - level] ) ); /* subtract the left one */

#else
        Word64 temp = 0;
        move64();
        FOR( j = i - level; j < i + level + 1; j++ )
        {
            temp = W_mac_32_32( temp, in[j], in[j] );
        }
        ak = Mult_32_16( W_shl_sat_l( temp, shift ), quo ); // add( shl( level, 1 ), 1 ), &tmp_e ) );
#endif

        n = sub( ak_e, norm_l( ak ) );
        n = shr( n, 1 );
@@ -2955,9 +2968,23 @@ static void IGF_getWhiteSpectralData_ivas(

    FOR( ; i < stop; i++ )
    {
#ifdef OPT_IGF_GET_WHITE_SPEC_DATA
        ak = L_deposit_h( BASOP_Util_Divide3216_Scale( W_shl_sat_l( window_sum, shift ), sub( stop, sub( i, level ) ), &tmp_e ) );
        window_sum = W_sub( window_sum, W_mult_32_32( in[i - level], in[i - level] ) ); /* subtract the left one */
        ak_e = add( tmp_e, eff_e );                                                     // tmp_e + 2 * (in_e - s_l) - 15
#else
        Word64 temp = 0;
        move64();

        FOR( j = i - level; j < stop; j++ )
        {
            temp = W_mac_32_32( temp, in[j], in[j] );
        }

        ak = L_deposit_h( BASOP_Util_Divide3216_Scale( W_shl_sat_l( temp, shift ), sub( stop, sub( i, level ) ), &tmp_e ) );
        ak_e = add( tmp_e, eff_e ); // tmp_e + 2 * (in_e - s_l) - 15
#endif

        n = sub( ak_e, add( norm_l( ak ), 1 ) );
        n = shr( n, 1 );