Commit 56daf71c authored by thomas dettbarn's avatar thomas dettbarn
Browse files

improved WMOPS performance of IGF_getWhiteSpectralData_ivas() by reimplementing a window sum.

parent 3782eb08
Loading
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -2905,6 +2905,8 @@ static void IGF_getWhiteSpectralData_ivas(
    Word16 tmp_e;
    Word16 out_e_arr[IGF_START_MX + MAX_IGF_SFB_LEN];
    Word16 max_out_e;
    Word64 window_sum;
    Word64 left_one;
    assert( LT_16( stop, IGF_START_MX + MAX_IGF_SFB_LEN ) );

    /* inits */
@@ -2930,15 +2932,21 @@ 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 );

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

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


        n = sub( ak_e, norm_l( ak ) );