Commit c3efc79c authored by Fabian Bauer's avatar Fabian Bauer
Browse files

cng_enc_fx.c : replaced overflow basops

parent a3d7e73c
Loading
Loading
Loading
Loading
+56 −17
Original line number Diff line number Diff line
@@ -615,9 +615,11 @@ void cng_params_postupd_fx(
    Word16 CNG_mode;
    Word16 ptr;
    Word32 last_active_brate;
#ifndef ISSUE_1836_replace_overflow_libcom
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
    Flag Overflow = 0;
    move32();
#endif
#endif

    ptr = add( sub( ho_circ_ptr, *cng_buf_cnt ), 1 );
@@ -644,9 +646,15 @@ void cng_params_postupd_fx(
        FOR( i = 0; i < NUM_ENV_CNG; i++ )
        {
            /* sp[i] = 2.0f*(*ptR * *ptR + *ptI * *ptI)/L_FFT; */
#ifdef ISSUE_1836_replace_overflow_libcom
            L_tmp = L_mult_sat( *ptR, *ptR );                                       /* 2*Q_exc+1 */
            L_tmp = L_add_sat( L_tmp, L_mult_sat( *ptI, *ptI ) );                   /* 2*Q_exc+1 */
            L_tmp = L_add_sat( L_tmp, L_tmp );                                      /* 2*Q_exc+1 */
#else
            L_tmp = L_mult_o( *ptR, *ptR, &Overflow );                              /* 2*Q_exc+1 */
            L_tmp = L_add_o( L_tmp, L_mult_o( *ptI, *ptI, &Overflow ), &Overflow ); /* 2*Q_exc+1 */
            L_tmp = L_add_o( L_tmp, L_tmp, &Overflow );                             /* 2*Q_exc+1 */
#endif
            L_tmp = Mult_32_16( L_tmp, 128 );                                       /* 2*Q_exc+1 */
            tmp = add( add( Q_exc, Q_exc ), 1 );
            sp[i] = L_shr( L_tmp, sub( tmp, 6 ) );
@@ -725,9 +733,11 @@ void cng_params_postupd_ivas_fx(
    Word16 CNG_mode;
    Word16 ptr;
    Word32 last_active_brate;
#ifndef ISSUE_1836_replace_overflow_libcom
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
    Flag Overflow = 0;
    move32();
#endif
#endif

    ptr = add( sub( ho_circ_ptr, *cng_buf_cnt ), 1 );
@@ -754,9 +764,15 @@ void cng_params_postupd_ivas_fx(
        FOR( i = 0; i < NUM_ENV_CNG; i++ )
        {
            /* sp[i] = 2.0f*(*ptR * *ptR + *ptI * *ptI)/L_FFT; */
#ifdef ISSUE_1836_replace_overflow_libcom
            L_tmp = L_mult_sat( *ptR, *ptR );                                       /* 2*Q_exc+1 */
            L_tmp = L_add_sat( L_tmp, L_mult_sat( *ptI, *ptI ) );                   /* 2*Q_exc+1 */
            L_tmp = L_add_sat( L_tmp, L_tmp );                                      /* 2*Q_exc+1 */
#else
            L_tmp = L_mult_o( *ptR, *ptR, &Overflow );                              /* 2*Q_exc+1 */
            L_tmp = L_add_o( L_tmp, L_mult_o( *ptI, *ptI, &Overflow ), &Overflow ); /* 2*Q_exc+1 */
            L_tmp = L_add_o( L_tmp, L_tmp, &Overflow );                             /* 2*Q_exc+1 */
#endif
            L_tmp = Mult_32_16( L_tmp, 128 );                                       /* 2*Q_exc+1 */
            tmp = add( add( Q_exc, Q_exc ), 1 );
            // To do : Saturation to be re-validated.
@@ -861,10 +877,12 @@ void cng_params_upd_fx(
    Word16 tmp;
    Word16 temp_lo_fx, temp_hi_fx;
    Word16 exp_pow;
#ifndef ISSUE_1836_replace_overflow_libcom
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
    Flag Overflow = 0;
    move32();
#endif
#endif


    /* update the pointer to circular buffer of old LSP vectors */
@@ -902,11 +920,13 @@ void cng_params_upd_fx(
            L_tmp = L_mult0( tmpv, tmpv ); /* 2*(Q_exc+scale) */
            pt_exc2++;
            tmpv = shl( *pt_exc2, scale );
            L_tmp = L_mac0_o( L_tmp, tmpv, tmpv, &Overflow );
#ifdef ISSUE_1836_replace_overflow_libcom
            L_tmp = L_mac0_sat( L_tmp, tmpv, tmpv );
            pt_exc2++;
#ifdef ISSUE_1799_replace_L_shr_o
            L_ener = L_add_o( L_ener, L_shr_sat( L_tmp, 7 ), &Overflow ); /* Q(2*(Q_exc+scale)+1) ,division by L_frame done here */
            L_ener = L_add_sat( L_ener, L_shr_sat( L_tmp, 7 ) ); /* Q(2*(Q_exc+scale)+1) ,division by L_frame done here */
#else
            L_tmp = L_mac0_o( L_tmp, tmpv, tmpv, &Overflow );
            pt_exc2++;
            L_ener = L_add_o( L_ener, L_shr_o( L_tmp, 7, &Overflow ), &Overflow );                                         /* Q(2*(Q_exc+scale)+1) ,division by L_frame done here */
#endif
        }
@@ -919,16 +939,18 @@ void cng_params_upd_fx(
            L_tmp = L_mult0( tmpv, tmpv ); /* 2*(Q_exc+scale) */
            pt_exc2++;
            tmpv = shl( *pt_exc2, scale );
            L_tmp = L_mac0_o( L_tmp, tmpv, tmpv, &Overflow );
#ifdef ISSUE_1836_replace_overflow_libcom
            L_tmp = L_mac0_sat( L_tmp, tmpv, tmpv );
            pt_exc2++;
#ifdef ISSUE_1799_replace_L_shr_o
            L_ener = L_add_o( L_ener, L_shr_sat( Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), 7 ), &Overflow ); /* Q(2*(Q_exc+scale)+15+1-16+1) ,division by L_frame done here */
            L_ener = L_add_sat( L_ener, L_shr_sat( Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), 7 ) ); /* Q(2*(Q_exc+scale)+15+1-16+1) ,division by L_frame done here */
#else
            L_tmp = L_mac0_o( L_tmp, tmpv, tmpv, &Overflow );
            pt_exc2++;
            L_ener = L_add_o( L_ener, L_shr_o( Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), 7, &Overflow ), &Overflow ); /* Q(2*(Q_exc+scale)+15+1-16+1) ,division by L_frame done here */
#endif
        }
    }
#ifdef ISSUE_1799_replace_L_shr_o
#ifdef ISSUE_1836_replace_overflow_libcom
    L_ener = L_shr_sat( L_ener, sub( shl( add( Q_exc, scale ), 1 ), 5 ) ); /* Q6 (2*(Q_exc+scale)+1-2*(Q_exc+scale)+5) */
#else
    L_ener = L_shr_o( L_ener, sub( shl( add( Q_exc, scale ), 1 ), 5 ), &Overflow );                                        /* Q6 (2*(Q_exc+scale)+1-2*(Q_exc+scale)+5) */
@@ -966,9 +988,15 @@ void cng_params_upd_fx(
        FOR( i = 0; i < NUM_ENV_CNG; i++ )
        {
            /* sp[i] = 2.0f*(*ptR * *ptR + *ptI * *ptI)/L_FFT; */
#ifdef ISSUE_1836_replace_overflow_libcom
            L_tmp = L_mult_sat( *ptR, *ptR );                                       /* 2*Q_exc+1 */
            L_tmp = L_add_sat( L_tmp, L_mult_sat( *ptI, *ptI ) );                   /* 2*Q_exc+1 */
            L_tmp = L_add_sat( L_tmp, L_tmp );                                      /* 2*Q_exc+1 */
#else
            L_tmp = L_mult_o( *ptR, *ptR, &Overflow );                              /* 2*Q_exc+1 */
            L_tmp = L_add_o( L_tmp, L_mult_o( *ptI, *ptI, &Overflow ), &Overflow ); /* 2*Q_exc+1 */
            L_tmp = L_add_o( L_tmp, L_tmp, &Overflow );                             /* 2*Q_exc+1 */
#endif
            L_tmp = Mult_32_16( L_tmp, 128 );                                       /* 2*Q_exc+1 */
            tmp = add( add( Q_exc, Q_exc ), 1 );
            sp[i] = L_shr( L_tmp, sub( tmp, 6 ) );
@@ -1052,9 +1080,11 @@ void cng_params_upd_ivas_fx(
    move16();
    Word16 temp_lo_fx, temp_hi_fx;
    Word16 exp_pow;
#ifndef ISSUE_1836_replace_overflow_libcom
#ifdef BASOP_NOGLOB_DECLARE_LOCAL
    Flag Overflow = 0;
    move32();
#endif
#endif

    /* update the pointer to circular buffer of old LSP vectors */
@@ -1092,11 +1122,13 @@ void cng_params_upd_ivas_fx(
            L_tmp = L_mult0( tmpv, tmpv ); /* 2*(Q_exc+scale) */
            pt_exc2++;
            tmpv = shl( *pt_exc2, scale );
            L_tmp = L_mac0_o( L_tmp, tmpv, tmpv, &Overflow );
#ifdef ISSUE_1836_replace_overflow_libcom
            L_tmp = L_mac0_sat( L_tmp, tmpv, tmpv );
            pt_exc2++;
#ifdef ISSUE_1799_replace_L_shr_o
            L_ener = L_add_o( L_ener, L_shr_sat( L_tmp, 7 ), &Overflow ); /* Q(2*(Q_exc+scale)+1) ,division by L_frame done here */
            L_ener = L_add_sat( L_ener, L_shr_sat( L_tmp, 7 ) ); /* Q(2*(Q_exc+scale)+1) ,division by L_frame done here */
#else
            L_tmp = L_mac0_o( L_tmp, tmpv, tmpv, &Overflow );
            pt_exc2++;
            L_ener = L_add_o( L_ener, L_shr_o( L_tmp, 7, &Overflow ), &Overflow );                                         /* Q(2*(Q_exc+scale)+1) ,division by L_frame done here */
#endif
        }
@@ -1109,16 +1141,18 @@ void cng_params_upd_ivas_fx(
            L_tmp = L_mult0( tmpv, tmpv ); /* 2*(Q_exc+scale) */
            pt_exc2++;
            tmpv = shl( *pt_exc2, scale );
            L_tmp = L_mac0_o( L_tmp, tmpv, tmpv, &Overflow );
#ifdef ISSUE_1836_replace_overflow_libcom
            L_tmp = L_mac0_sat( L_tmp, tmpv, tmpv );
            pt_exc2++;
#ifdef ISSUE_1799_replace_L_shr_o
            L_ener = L_add_o( L_ener, L_shr_sat( Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), 7 ), &Overflow ); /* Q(2*(Q_exc+scale)+15+1-16+1) ,division by L_frame done here */
            L_ener = L_add_sat( L_ener, L_shr_sat( Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), 7 ) ); /* Q(2*(Q_exc+scale)+15+1-16+1) ,division by L_frame done here */
#else
            L_tmp = L_mac0_o( L_tmp, tmpv, tmpv, &Overflow );
            pt_exc2++;
            L_ener = L_add_o( L_ener, L_shr_o( Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), 7, &Overflow ), &Overflow ); /* Q(2*(Q_exc+scale)+15+1-16+1) ,division by L_frame done here */
#endif
        }
    }
#ifdef ISSUE_1799_replace_L_shr_o
#ifdef ISSUE_1836_replace_overflow_libcom
    L_ener = L_shr_sat( L_ener, sub( shl( add( Q_exc, scale ), 1 ), 5 ) ); /* Q6 (2*(Q_exc+scale)+1-2*(Q_exc+scale)+5) */
#else
    L_ener = L_shr_o( L_ener, sub( shl( add( Q_exc, scale ), 1 ), 5 ), &Overflow );                                        /* Q6 (2*(Q_exc+scale)+1-2*(Q_exc+scale)+5) */
@@ -1156,14 +1190,19 @@ void cng_params_upd_ivas_fx(
        FOR( i = 0; i < NUM_ENV_CNG; i++ )
        {
            /* sp[i] = 2.0f*(*ptR * *ptR + *ptI * *ptI)/L_FFT; */
#ifdef ISSUE_1836_replace_overflow_libcom
            L_tmp = L_mult_sat( *ptR, *ptR );                                       /* 2*Q_exc+1 */
            L_tmp = L_add_sat( L_tmp, L_mult_sat( *ptI, *ptI ) );                   /* 2*Q_exc+1 */
            L_tmp = L_add_sat( L_tmp, L_tmp );                                      /* 2*Q_exc+1 */
            L_tmp = Mult_32_16( L_tmp, 128 );                                       /* 2*Q_exc+1 */
            tmp = add( add( Q_exc, Q_exc ), 1 );
            sp[i] = L_shr_sat( L_tmp, sub( tmp, 6 ) );
#else
            L_tmp = L_mult_o( *ptR, *ptR, &Overflow );                              /* 2*Q_exc+1 */
            L_tmp = L_add_o( L_tmp, L_mult_o( *ptI, *ptI, &Overflow ), &Overflow ); /* 2*Q_exc+1 */
            L_tmp = L_add_o( L_tmp, L_tmp, &Overflow );                             /* 2*Q_exc+1 */
            L_tmp = Mult_32_16( L_tmp, 128 );                                       /* 2*Q_exc+1 */
            tmp = add( add( Q_exc, Q_exc ), 1 );
#ifdef ISSUE_1799_replace_L_shr_o
            sp[i] = L_shr_sat( L_tmp, sub( tmp, 6 ) );
#else
            sp[i] = L_shr_o( L_tmp, sub( tmp, 6 ), &Overflow );
#endif
            move32(); /* Q6 */