Commit c52c6f41 authored by vaillancour's avatar vaillancour
Browse files

more staturation fixes based on a different scaling level

parent e61af58d
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -2378,7 +2378,11 @@ void lsf2lsp_fx(
		{
			offset = negate(offset);
		}
#ifdef BASOP_NOGLOB
        L_tmp = L_mult( sub_sat( offset, lsf_tmp ), round_fx( L_shl( L_and( L_tmp, 0xFFFF ), 15 ) ) );
#else
        L_tmp = L_mult( sub( offset, lsf_tmp ), round_fx( L_shl( L_and( L_tmp, 0xFFFF ), 15 ) ) );
#endif
		L_tmp = L_msu(L_tmp, lsf_tmp, -32768);
		lsp[i] = round_fx(L_tmp);
	}
+5 −1
Original line number Diff line number Diff line
@@ -335,7 +335,11 @@ static void calcHiTempEnv_Fx(

        FOR (k=lowSubband; k < highSubband; k++)
        {
#ifdef BASOP_NOGLOB
            nrg = L_add_sat( nrg, L_shr( pCldfbPow[timeIndex][k], s1 ) );
#else
            nrg = L_add( nrg, L_shr( pCldfbPow[timeIndex][k], s1 ) );
#endif
        }


+21 −2
Original line number Diff line number Diff line
@@ -44,6 +44,20 @@
    FOR (i = 0; i < N; i+=4)
    {
        depack_4_values(cbp+i_mult(shr(i,2),3), val0, val1, val2, val3)
#ifdef BASOP_NOGLOB
        Tmp[i + 0] = mult_r( shl_sat( w[i + 0], 2 ), val0 );
        move16();
        en = L_mac_sat( en, val0, Tmp[i + 0] );
        Tmp[i + 1] = mult_r( shl_sat( w[i + 1], 2 ), val1 );
        move16();
        en = L_mac_sat( en, val1, Tmp[i + 1] );
        Tmp[i + 2] = mult_r( shl_sat( w[i + 2], 2 ), val2 );
        move16();
        en = L_mac_sat( en, val2, Tmp[i + 2] );
        Tmp[i + 3] = mult_r( shl_sat( w[i + 3], 2 ), val3 );
        move16();
        en = L_mac_sat( en, val3, Tmp[i + 3] );
#else
        Tmp[i + 0] = mult_r( shl( w[i + 0], 2 ), val0 );
        move16();
        en = L_mac(en, val0, Tmp[i+0]);
@@ -56,6 +70,7 @@
        Tmp[i+3] = mult_r(shl(w[i+3],2),val3);
        move16();
        en = L_mac(en, val3, Tmp[i+3]);
#endif
    }

    return en;
@@ -245,7 +260,11 @@ void msvq_enc_fx
    move16();
    FOR (j=1; j<N; j++)
    {
#ifdef BASOP_NOGLOB
        ss2 = L_mac_sat( ss2, mult( u[j], shl_sat( w[j], 2 ) ), u[j] );
#else
        ss2 = L_mac( ss2, mult( u[j], shl( w[j], 2 ) ), u[j] );
#endif
    }

    /* Set up inital error (residual) vectors */
+5 −1
Original line number Diff line number Diff line
@@ -1009,7 +1009,11 @@ void norm_corr_fx(
            {
                /* saturation can occur in add() */
                /*excf[i] = add(mult(exc[k], h[i]), excf[i - 1]);     move16();       */
#ifdef BASOP_NOGLOB
                excf[i] = round_fx_sat( L_mac_sat( L_mult( excf[i - 1], 32767 ), exc[k], h[i] ) );
#else
                excf[i] = round_fx( L_mac( L_mult( excf[i - 1], 32767 ), exc[k], h[i] ) );
#endif
            }
            excf[0] = mult_r(exc[k], h[0]);
            move16();
+5 −1
Original line number Diff line number Diff line
@@ -262,7 +262,11 @@ void pvq_encode_fx(
            proj_fac  = div_l(L_num,  den );                  /* L_num always has to be less than den<<16 */

            shift_delta=sub(shift_num,shift_den);
#ifdef BASOP_NOGLOB
            L_proj_fac = L_shl_sat( L_deposit_l( proj_fac ), sub( 9, shift_delta ) ); /* bring  to a fixed  Q12     */
#else
            L_proj_fac = L_shl( L_deposit_l( proj_fac ), sub( 9, shift_delta ) ); /* bring  to a fixed  Q12     */
#endif
        }

        pulse_tot = 0;
Loading