Commit 1a1e3144 authored by TYAGIRIS's avatar TYAGIRIS
Browse files

Merge branch 'ivas-float-update' of...

Merge branch 'ivas-float-update' of ssh://forge.3gpp.org:29419/sa4/audio/ivas-basop into ivas-float-update
parents c350c65d 53594392
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1199,6 +1199,9 @@ voip-be-on-merge-request:
    - *update-ltv-repo
    - *complexity-measurements-setup
    - which coan
  allow_failure:
    exit_codes:
      - 123
  artifacts:
    name: "$CI_JOB_NAME--$CI_COMMIT_REF_NAME--sha-$CI_COMMIT_SHA"
    when: always
+2 −28
Original line number Diff line number Diff line
@@ -384,13 +384,11 @@ int main(
        goto cleanup;
    }

#ifdef SUPPORT_FORCE_TCX10_TCX20
#ifdef DEBUGGING
    if ( arg.forcedMode == IVAS_ENC_FORCE_TCX10 && totalBitrate < 48000 )
    {
        fprintf( stderr, "Warning: Enforcing the TCX10 mode is only supported for bitrates higher or equal than 48 kbps!\n\n" );
    }
#endif
#endif

    /*------------------------------------------------------------------------------------------*
@@ -1111,7 +1109,6 @@ static bool parseCmdlIVAS_enc(
            }
            else
            {
#ifdef SUPPORT_FORCE_TCX10_TCX20
                if ( arg->forcedMode == IVAS_ENC_FORCE_TCX10 )
                {
                    strcpy( stmp, "TCX10" );
@@ -1126,9 +1123,6 @@ static bool parseCmdlIVAS_enc(
                }

                fprintf( stdout, "Forcing codec to:       %s\n", stmp );
#else
                fprintf( stdout, "Forcing codec to:       %s\n", argv[i + 1] );
#endif
            }
#endif

@@ -2114,24 +2108,14 @@ static IVAS_ENC_FORCED_MODE parseForcedMode(
    {
        return IVAS_ENC_FORCE_GSC;
    }
    if ( ( strcmp( forcedModeChar, "TCX" ) == 0 ) || ( strcmp( forcedModeChar, "'TCX'" ) == 0 )
#ifdef SUPPORT_FORCE_TCX10_TCX20
         || ( strcmp( forcedModeChar, "TCX20" ) == 0 ) || ( strcmp( forcedModeChar, "'TCX20'" ) == 0 )
#endif
    )
    if ( ( strcmp( forcedModeChar, "TCX" ) == 0 ) || ( strcmp( forcedModeChar, "'TCX'" ) == 0 ) || ( strcmp( forcedModeChar, "TCX20" ) == 0 ) || ( strcmp( forcedModeChar, "'TCX20'" ) == 0 ) )
    {
#ifdef SUPPORT_FORCE_TCX10_TCX20
        return IVAS_ENC_FORCE_TCX20;
#else
        return IVAS_ENC_FORCE_TCX;
#endif
    }
#ifdef SUPPORT_FORCE_TCX10_TCX20
    if ( ( strcmp( forcedModeChar, "TCX10" ) == 0 ) || ( strcmp( forcedModeChar, "'TCX10'" ) == 0 ) )
    {
        return IVAS_ENC_FORCE_TCX10;
    }
#endif
    else if ( ( strcmp( forcedModeChar, "HQ" ) == 0 ) || ( strcmp( forcedModeChar, "'HQ'" ) == 0 ) )
    {
        return IVAS_ENC_FORCE_HQ;
@@ -2174,24 +2158,14 @@ static IVAS_ENC_FORCED_MODE parseForcedMode(
    {
        return IVAS_ENC_FORCE_GSC;
    }
    if ( ( strcmp( forcedModeChar, "TCX" ) == 0 ) || ( strcmp( forcedModeChar, "'TCX'" ) == 0 )
#ifdef SUPPORT_FORCE_TCX10_TCX20
         || ( strcmp( forcedModeChar, "TCX20" ) == 0 ) || ( strcmp( forcedModeChar, "'TCX20'" ) == 0 )
#endif
    )
    if ( ( strcmp( forcedModeChar, "TCX" ) == 0 ) || ( strcmp( forcedModeChar, "'TCX'" ) == 0 ) || ( strcmp( forcedModeChar, "TCX20" ) == 0 ) || ( strcmp( forcedModeChar, "'TCX20'" ) == 0 ) )
    {
#ifdef SUPPORT_FORCE_TCX10_TCX20
        return IVAS_ENC_FORCE_TCX20;
#else
        return IVAS_ENC_FORCE_TCX;
#endif
    }
#ifdef SUPPORT_FORCE_TCX10_TCX20
    if ( ( strcmp( forcedModeChar, "TCX10" ) == 0 ) || ( strcmp( forcedModeChar, "'TCX10'" ) == 0 ) )
    {
        return IVAS_ENC_FORCE_TCX10;
    }
#endif
    if ( ( strcmp( forcedModeChar, "HQ" ) == 0 ) || ( strcmp( forcedModeChar, "'HQ'" ) == 0 ) )
    {
        return IVAS_ENC_FORCE_HQ;
+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 */
Loading