Commit 5a29b6aa authored by Jan Kiene's avatar Jan Kiene
Browse files

add state of ivas-float-update at 56d5ea554

parent 6a06b484
Loading
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -272,7 +272,7 @@ void tcx_hm_modify_envelope(
    const int16_t L_frame /* i  : number of spectral lines              */
)
{
    int32_t h, x, k;
    int32_t k, h, x;
    Word16 inv_shape[2 * kTcxHmParabolaHalfWidth + 1]; /* Q15 */

    if ( gain == 0 )
@@ -290,6 +290,7 @@ void tcx_hm_modify_envelope(

    while ( k <= L_frame + kTcxHmParabolaHalfWidth - 1 )
    {

        for ( x = max( 0, k - kTcxHmParabolaHalfWidth ); x <= min( k + kTcxHmParabolaHalfWidth, L_frame - 1 ); ++x )
        {
            env[x] = Mpy_32_16( env[x], inv_shape[x - k + kTcxHmParabolaHalfWidth] );
+0 −23
Original line number Diff line number Diff line
@@ -243,10 +243,7 @@ void tcx_arith_scale_envelope(
    Word16 statesi, bits;
    Word32 mean, a, s, L_tmp;
    Word16 mean_e, tmp, tmp2;
#ifdef BASOP_NOGLOB
    Flag Overflow;
#endif /* BASOP_NOGLOB */


    lob_bits = 0;
    move16();
@@ -271,11 +268,7 @@ void tcx_arith_scale_envelope(

        tmp = norm_l( env[k] );
        tmp2 = sub( 15, tmp );
#ifndef BASOP_NOGLOB
        tmp = Inv16( round_fx( L_shl( env[k], tmp ) ), &tmp2 );
#else                                                           /* BASOP_NOGLOB */
        tmp = Inv16( round_fx_o( L_shl( env[k], tmp ), &Overflow ), &tmp2 );
#endif                                                          /* BASOP_NOGLOB */
        ienv[k] = L_shl( L_deposit_h( tmp ), sub( tmp2, 15 ) ); /* Q16 */
        move32();
        mean = L_add( mean, ienv[k] );
@@ -309,11 +302,7 @@ void tcx_arith_scale_envelope(
    b_e = add( b_e, mean_e );

    /* scale = (-b + sqrtf(b*b - 4.0f*a*0.035f)) / (2.0f * a); */
#ifndef BASOP_NOGLOB
    tmp = round_fx( BASOP_Util_Add_Mant32Exp( L_mult( b, b ), shl( b_e, 1 ), Mpy_32_16( a, FL2WORD16( -4.0f * 0.035f ) ), a_e, &tmp2 ) );
#else
    tmp = round_fx_o( BASOP_Util_Add_Mant32Exp( L_mult( b, b ), shl( b_e, 1 ), Mpy_32_16( a, FL2WORD16( -4.0f * 0.035f ) ), a_e, &tmp2 ), &Overflow );
#endif

    IF( tmp <= 0 )
    {
@@ -332,11 +321,7 @@ void tcx_arith_scale_envelope(

    tmp2 = BASOP_Util_Add_MantExp( negate( b ), b_e, tmp, tmp2, &scale );
    scale = BASOP_Util_Divide1616_Scale( scale, round_fx( a ), &tmp );
#ifndef BASOP_NOGLOB
    scale = shl( scale, sub( sub( add( tmp, tmp2 ), a_e ), 1 ) ); /* Q15 */
#else
    scale = shl_o( scale, sub( sub( add( tmp, tmp2 ), a_e ), 1 ), &Overflow ); /* Q15 */
#endif

    /* iscale = 1.0f / scale; */
    iscale_e = 0;
@@ -385,11 +370,7 @@ void tcx_arith_scale_envelope(
                L_tmp = L_add( L_tmp, L_shl( Mpy_32_16( env[k], mult_r( FL2WORD16( 0.035f ), iscale ) ), iscale_e ) );

                tmp = norm_l( L_tmp );
#ifndef BASOP_NOGLOB
                statesi = mult_r( statesi, round_fx( L_shl( L_tmp, tmp ) ) );
#else  /* BASOP_NOGLOB */
                statesi = mult_r( statesi, round_fx_o( L_shl( L_tmp, tmp ), &Overflow ) );
#endif /* BASOP_NOGLOB */
                bits = add( bits, sub( 15, tmp ) );

                tmp = norm_s( statesi );
@@ -489,11 +470,7 @@ void tcx_arith_scale_envelope(
    *s_env_e = sub( add( 15, iscale_e ), tmp );
    move16();
    BASOP_SATURATE_WARNING_OFF;
#ifndef BASOP_NOGLOB
    a = L_shl( 1265000, sub( 15, *s_env_e ) );
#else  /* BASOP_NOGLOB */
    a = L_shl_o( 1265000, sub( 15, *s_env_e ), &Overflow );
#endif /* BASOP_NOGLOB */
    BASOP_SATURATE_WARNING_ON;

    FOR( k = 0; k < L_frame; k++ )
+0 −239

File changed.

Preview size limit exceeded, changes collapsed.

+31 −107
Original line number Diff line number Diff line
@@ -86,17 +86,12 @@
 |   Constants and Globals                                                   |
 |___________________________________________________________________________|
*/
#ifndef BASOP_NOGLOB
extern Flag Overflow, Overflow2;
extern Flag Carry;

#else  /* BASOP_NOGLOB */
/* DISABLED TO AVOID GLOBAL VARIABLES */
/*
extern Flag BASOP_Overflow, BASOP_Overflow2;
extern Flag BASOP_Carry;
*/
#endif /* BASOP_NOGLOB */
#define BASOP_SATURATE_WARNING_ON
#define BASOP_SATURATE_WARNING_OFF
#define BASOP_SATURATE_ERROR_ON
@@ -116,23 +111,7 @@ extern Flag BASOP_Carry;
 |___________________________________________________________________________|
*/

#ifndef BASOP_NOGLOB
Word16 add( Word16 var1, Word16 var2 );                    /* Short add,           1   */
Word16 sub( Word16 var1, Word16 var2 );                    /* Short sub,           1   */
Word16 abs_s( Word16 var1 );                               /* Short abs,           1   */
Word16 shl( Word16 var1, Word16 var2 );                    /* Short shift left,    1   */
Word16 shr( Word16 var1, Word16 var2 );                    /* Short shift right,   1   */
Word16 mult( Word16 var1, Word16 var2 );                   /* Short mult,          1   */
Word32 L_mult( Word16 var1, Word16 var2 );                 /* Long mult,           1   */
Word16 negate( Word16 var1 );                              /* Short negate,        1   */
Word16 extract_h( Word32 L_var1 );                         /* Extract high,        1   */
Word16 extract_l( Word32 L_var1 );                         /* Extract low,         1   */
Word16 round_fx( Word32 L_var1 );                          /* Round,               1   */
Word32 L_mac( Word32 L_var3, Word16 var1, Word16 var2 );   /* Mac,  1  */
Word32 L_msu( Word32 L_var3, Word16 var1, Word16 var2 );   /* Msu,  1  */
Word32 L_macNs( Word32 L_var3, Word16 var1, Word16 var2 ); /* Mac without
                                                             sat, 1   */
#else                                                      /* BASOP_NOGLOB */

Word16 add( Word16 var1, Word16 var2 );                                      /* Short add,           1   */
Word16 sub( Word16 var1, Word16 var2 );                                      /* Short sub,           1   */
Word16 abs_s( Word16 var1 );                                                 /* Short abs,           1   */
@@ -146,29 +125,10 @@ Word16 extract_l( Word32 L_var1 ); /*
Word16 round_fx( Word32 L_var1 );                                            /* Round,               1   */
Word32 L_mac( Word32 L_var3, Word16 var1, Word16 var2 );                     /* Mac,  1  */
Word32 L_msu( Word32 L_var3, Word16 var1, Word16 var2 );                     /* Msu,  1  */
Word32 DEPR_L_macNs( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry ); /* Mac without
                                                             sat, 1   */
#endif                                                     /* BASOP_NOGLOB */

#ifndef BASOP_NOGLOB
Word32 L_msuNs( Word32 L_var3, Word16 var1, Word16 var2 ); /* Msu without
                                                              sat, 1   */
#else                                                      /* BASOP_NOGLOB */
Word32 DEPR_L_msuNs( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry ); /* Msu without
                                                              sat, 1   */
#endif                                                     /* BASOP_NOGLOB */
#ifndef BASOP_NOGLOB
Word32 L_add( Word32 L_var1, Word32 L_var2 );   /* Long add,        1 */
Word32 L_sub( Word32 L_var1, Word32 L_var2 );   /* Long sub,        1 */
Word32 L_add_c( Word32 L_var1, Word32 L_var2 ); /* Long add with c, 2 */
Word32 L_sub_c( Word32 L_var1, Word32 L_var2 ); /* Long sub with c, 2 */
Word32 L_negate( Word32 L_var1 );               /* Long negate,     1 */
Word16 mult_r( Word16 var1, Word16 var2 );      /* Mult with round, 1 */
Word32 L_shl( Word32 L_var1, Word16 var2 );     /* Long shift left, 1 */
Word32 L_shr( Word32 L_var1, Word16 var2 );     /* Long shift right, 1 */
Word16 shr_r( Word16 var1, Word16 var2 );       /* Shift right with
                                                   round, 2           */
#else                                           /* BASOP_NOGLOB */
Word32 DEPR_L_macNs( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry ); /* Mac without sat, 1   */

Word32 DEPR_L_msuNs( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry ); /* Msu without sat, 1   */

Word32 L_add( Word32 L_var1, Word32 L_var2 );                     /* Long add,        1 */
Word32 L_sub( Word32 L_var1, Word32 L_var2 );                     /* Long sub,        1 */
Word32 DEPR_L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry ); /* Long add with c, 2 */
@@ -179,64 +139,30 @@ Word32 L_shl( Word32 L_var1, Word16 var2 ); /*
Word32 L_shr( Word32 L_var1, Word16 var2 );                       /* Long shift right, 1 */
Word16 shr_r( Word16 var1, Word16 var2 );                         /* Shift right with
                                        round, 2           */
#endif                                          /* BASOP_NOGLOB */

#ifndef BASOP_NOGLOB
Word16 mac_r( Word32 L_var3, Word16 var1, Word16 var2 ); /* Mac with
                                                           rounding, 1 */
#else                                                    /* BASOP_NOGLOB */
Word16 mac_r( Word32 L_var3, Word16 var1, Word16 var2 ); /* Mac with
                                                         rounding, 1 */
#endif                                                   /* BASOP_NOGLOB */
#ifndef BASOP_NOGLOB
Word16 msu_r( Word32 L_var3, Word16 var1, Word16 var2 ); /* Msu with
                                                           rounding, 1 */
#else                                                    /* BASOP_NOGLOB */
Word16 msu_r( Word32 L_var3, Word16 var1, Word16 var2 ); /* Msu with
                                       rounding, 1 */
#endif                                                   /* BASOP_NOGLOB */
#ifndef BASOP_NOGLOB
Word32 L_deposit_h( Word16 var1 ); /* 16 bit var1 -> MSB,     1 */
Word32 L_deposit_l( Word16 var1 ); /* 16 bit var1 -> LSB,     1 */
#else                              /* BASOP_NOGLOB */
Word32 L_deposit_h( Word16 var1 );                       /* 16 bit var1 -> MSB,     1 */
Word32 L_deposit_l( Word16 var1 );                       /* 16 bit var1 -> LSB,     1 */
#endif                             /* BASOP_NOGLOB */

#ifndef BASOP_NOGLOB
Word32 L_shr_r( Word32 L_var1, Word16 var2 ); /* Long shift right with
                 round,             3  */
#else                                         /* BASOP_NOGLOB */
Word32 L_shr_r( Word32 L_var1, Word16 var2 );                                /* Long shift right with
                                                round,             3  */
#endif                                        /* BASOP_NOGLOB */
#ifndef BASOP_NOGLOB
Word32 L_abs( Word32 L_var1 );            /* Long abs,              1  */
Word32 L_sat( Word32 L_var1 );            /* Long saturation,       4  */
Word16 norm_s( Word16 var1 );             /* Short norm,            1  */
Word16 div_s( Word16 var1, Word16 var2 ); /* Short division,       18  */
Word16 norm_l( Word32 L_var1 );           /* Long norm,             1  */
#else                                     /* BASOP_NOGLOB */

Word32 L_abs( Word32 L_var1 );                                    /* Long abs,              1  */
Word32 DEPR_L_sat_co( Word32 L_var1, Flag Overflow, Flag Carry ); /* Long saturation,       4  */
Word16 norm_s( Word16 var1 );                                     /* Short norm,            1  */
Word16 div_s( Word16 var1, Word16 var2 );                         /* Short division,       18  */
Word16 norm_l( Word32 L_var1 );                                   /* Long norm,             1  */
#endif                                    /* BASOP_NOGLOB */


/*
 * Additional G.723.1 operators
 */
#ifndef BASOP_NOGLOB
Word32 L_mls( Word32, Word16 );      /* Weight FFS; currently assigned 5 */
Word16 div_l( Word32, Word16 );      /* Weight FFS; currently assigned 32 */
Word16 i_mult( Word16 a, Word16 b ); /* Weight FFS; currently assigned 3 */
#else                                /* BASOP_NOGLOB */
Word32 L_mls( Word32, Word16 );           /* Weight FFS; currently assigned 5 */
Word16 div_l( Word32, Word16 );           /* Weight FFS; currently assigned 32 */
Word16 DEPR_i_mult( Word16 a, Word16 b ); /* Weight FFS; currently assigned 3 */
#endif                               /* BASOP_NOGLOB */

/*
 *  New shiftless operators, not used in G.729/G.723.1
@@ -244,7 +170,6 @@ Word16 DEPR_i_mult( Word16 a, Word16 b ); /*
Word32 L_mult0( Word16 v1, Word16 v2 );             /* 32-bit Multiply w/o shift         1 */
Word32 L_mac0( Word32 L_v3, Word16 v1, Word16 v2 ); /* 32-bit Mac w/o shift  1 */
Word32 L_msu0( Word32 L_v3, Word16 v1, Word16 v2 ); /* 32-bit Msu w/o shift  1 */
#ifdef BASOP_NOGLOB

/*
 * Overflowing operators
@@ -267,7 +192,6 @@ Word32 L_msu0_o( Word32 L_var3, Word16 var1, Word16 var2, Flag *Overflow );
Word16 mult_ro( Word16 var1, Word16 var2, Flag *Overflow );
Word16 mac_ro( Word32 L_var3, Word16 var1, Word16 var2, Flag *Overflow );
Word16 msu_ro( Word32 L_var3, Word16 var1, Word16 var2, Flag *Overflow );
#endif /* BASOP_NOGLOB */


#endif /* ifndef _BASIC_OP_H */
+1 −5
Original line number Diff line number Diff line
@@ -243,10 +243,7 @@ static Word16 E_LPC_f_lsp_pol_get(
    Word16 Ovf = 0;
    Word16 Q_out;
    Word16 m2;
#ifdef BASOP_NOGLOB
    Flag Overflow;
#endif /* BASOP_NOGLOB */


    Q_out = 31 - 23;
    move16();
@@ -300,9 +297,8 @@ static Word16 E_LPC_f_lsp_pol_get(
    test();
    IF( Overflow > 0 && isMODE1 )
    {
#ifdef BASOP_NOGLOB
        assert( 0 );
#endif /* BASOP_NOGLOB */

        /* If an overflow is detected, redo the computation with 1 bit less */
        Ovf = add( Ovf, 1 );
        Ovf = E_LPC_f_lsp_pol_get( lsp, f, n, Ovf, isMODE1 );
Loading