Commit b2e84c97 authored by vaillancour's avatar vaillancour
Browse files

adding basop sat for signal with extreme saturation

parent 957ebf50
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -599,10 +599,18 @@ void gauss2v_fx(
        div_result = div_s(Num, Den); /* Q15 */

        /* Re-scale to compensate for normalization*/
#ifdef BASOP_NOGLOB
        GainPortion2 = L_shr_sat( L_deposit_l( div_result ), sub( exp_num, exp_den ) );
#else
        GainPortion2 = L_shr( L_deposit_l( div_result ), sub( exp_num, exp_den ) );
#endif
    }

#ifdef BASOP_NOGLOB
    ener_sqrt = Isqrt( L_shl_sat( GainPortion2, 1 ) ); /* Make value a Q16 prior to division (align on power of 4) */
#else
    ener_sqrt = Isqrt( L_shl( GainPortion2, 1 ) ); /* Make value a Q16 prior to division (align on power of 4) */
#endif
    ener_sqrt = L_shr(ener_sqrt, 8);            /* Left-shift Q23 result to make a Q15 result */

    Portion = Mult_32_16(GainPortion1, 19661);  /* Performs GainPortion1*.6 */
+17 −3
Original line number Diff line number Diff line
@@ -132,7 +132,11 @@ void quantize_uvg_fx(Word16 *G, Word16 *iG1, Word16 *iG2, Word16 *quantG, Word16
	FOR(i = 0; i < UVG1_CBSIZE; i++)
	{
		L16 = shr(sub(G1[0], UVG1CB_fx[i][0]), 1); /* Q12 */
#ifdef BASOP_NOGLOB
        L16_1 = shr( sub_sat( G1[1], UVG1CB_fx[i][1] ), 1 ); /* Q12 */
#else
        L16_1 = shr( sub( G1[1], UVG1CB_fx[i][1] ), 1 ); /* Q12 */
#endif
		Lacc = 0;
		Lacc = L_mac0(Lacc, L16, L16); /*Q24 */
		Lacc = L_mac0(Lacc, L16_1, L16_1);/*Q24       */
@@ -189,15 +193,25 @@ void quantize_uvg_fx(Word16 *G, Word16 *iG1, Word16 *iG2, Word16 *quantG, Word16
				{
					/*mse += SQR(G2[i*5+k]-UVG2CB1[j][k]); */
					ind = add(shr(extract_l(L_mult(i, 5)), 1), k);
#ifdef BASOP_NOGLOB
                    temp = sub_sat( G2[ind], UVG2CB1_fx[j][k] );
					Lacc = L_mac0_sat(Lacc, temp, temp); /*Q24 */
#else
                    temp = sub( G2[ind], UVG2CB1_fx[j][k] );
					Lacc = L_mac0(Lacc, temp, temp); /*Q24 */
#endif
				}
				ELSE IF(i == 1)
				{
					/*mse += SQR(G2[i*5+k]-UVG2CB2[j][k]); */
					ind = add(shr(extract_l(L_mult(i, 5)), 1), k);
#ifdef BASOP_NOGLOB
                    temp = sub_sat( G2[ind], UVG2CB2_fx[j][k] );
					Lacc = L_mac0_sat(Lacc, temp, temp); /*Q24 */
#else
                    temp = sub( G2[ind], UVG2CB2_fx[j][k] );
					Lacc = L_mac0(Lacc, temp, temp); /*Q24 */
#endif
				}
			}