Commit 2b8aa34a authored by vaillancour's avatar vaillancour
Browse files

Fixes for stv16n1_16400_16kHz.*.COD, addition of L_shr_ro and L_shr_r_sat,...

Fixes for stv16n1_16400_16kHz.*.COD, addition of L_shr_ro and L_shr_r_sat, start to use *_sat operator
parent be02f69a
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -2320,14 +2320,21 @@ Word32 L_deposit_l (Word16 var1) {
 |             range : 0x8000 0000 <= var_out <= 0x7fff ffff.                |
 |___________________________________________________________________________|
*/
#ifdef BASOP_NOGLOB
Word32 L_shr_ro (Word32 L_var1, Word16 var2, Flag * Overflow) {
#else
Word32 L_shr_r (Word32 L_var1, Word16 var2) {
#endif
  Word32 L_var_out;

  if (var2 > 31) {
    L_var_out = 0;
  } else {
#ifdef BASOP_NOGLOB
      L_var_out = L_shr_o (L_var1, var2, Overflow);
#else
      L_var_out = L_shr (L_var1, var2);

#endif
#if (WMOPS)
    multiCounter[currCounter].L_shr--;
#endif
@@ -2343,6 +2350,15 @@ Word32 L_shr_r (Word32 L_var1, Word16 var2) {
#endif
  return (L_var_out);
}
#ifdef BASOP_NOGLOB
Word32 L_shr_r(Word32 L_var1, Word16 var2) {
    return L_shr_ro(L_var1, var2, NULL);
}
Word32 L_shr_r_sat(Word32 L_var1, Word16 var2) {
    Flag Overflow = 0;
    return L_shr_ro(L_var1,  var2, &Overflow);
}
#endif


/*___________________________________________________________________________
+4 −0
Original line number Diff line number Diff line
@@ -221,6 +221,8 @@ 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);
Word32 L_sat_co (Word32 L_var1, Flag Carry, Flag Overflow);
Word32 L_shr_ro(Word32 L_var1, Word16 var2, Flag* Overflow);


/*
 * Saturating operators
@@ -248,6 +250,8 @@ Word32 L_msu0_sat(Word32 L_var3, Word16 var1, Word16 var2);
Word16 mult_r_sat(Word16 var1, Word16 var2);
Word16 mac_r_sat(Word32 L_var3, Word16 var1, Word16 var2);
Word16 msu_r_sat(Word32 L_var3, Word16 var1, Word16 var2);
Word32 L_shr_r_sat(Word32 L_var1, Word16 var2);

#endif /* BASOP_NOGLOB */

#endif /* ifndef _BASIC_OP_H */
+8 −2
Original line number Diff line number Diff line
@@ -1190,8 +1190,11 @@ void scalebands (
                    s = norm_l(tmp);
                    s1 = sub(delta_s, s);

#ifdef BASOP_NOGLOB
                    delta = round_fx_sat(L_shl_sat(tmp, s));
#else
                    delta = round_fx(L_shl(tmp, s));

#endif
                    /* Choose scale such that the interpolation start and end point both are representable and add 1 additional bit hr. */
                    delta_s = sub(s_min(norm_l(partpow[j-1]), norm_l(partpow[j])), 1);
                    val = L_shl(partpow[j-1], delta_s);
@@ -1703,8 +1706,11 @@ void lpc_from_spectrum (
        maxVal = L_max(maxVal, L_abs(powspec[i]));
    }
    s1 = norm_l(maxVal);
#ifdef BASOP_NOGLOB
    nf = L_shr_r_sat(1099511680l/*1e-3f Q40*/,add(sub(powspec_exp,s1),9));
#else
    nf = L_shr_r(1099511680l/*1e-3f Q40*/,add(sub(powspec_exp,s1),9));

#endif
    ptr = fftBuffer;
    pti = fftBuffer+1;

+4 −0
Original line number Diff line number Diff line
@@ -1054,7 +1054,11 @@ void wb_tbe_dec_fx(

            L_tmp = Mult_32_16( Lacc, 102 ); /* Q22 */
            exp = norm_l( L_tmp );
#ifdef BASOP_NOGLOB
            tmp = round_fx_o( L_shl_o( L_tmp, exp , &Overflow), &Overflow);
#else
            tmp = round_fx( L_shl( L_tmp, exp ) );
#endif
            exp = sub( add( exp, 22 ), 30 );
            tmp = div_s( 16384, tmp );
            L_tmp = Isqrt_lc( L_deposit_h( tmp ), &exp ); /* Q(31-exp) */