Commit ecc6cd71 authored by lefort's avatar lefort
Browse files

push_wmops/pop_wmops added to stereo_dmx_evs_enc. Fix 1511 added.

parent e8211265
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -114,8 +114,6 @@
#define NONBE_FIX_979_OSBA_STEREO_5MS                   /* FhG : issue #979 : 5ms and 20ms output different for OSBA and stereo */
#define FIX_983_DISC_ISM_DIGEST_NUM_OBJS                /* FhG: issue #983: the discrete ISM digest function uses the wrong number of objects */

#define BE_FIX_567_DOUBLE_STEREO_DMX                          /* NTT: Fix formal issues */   
#define NONBE_FIX_567_DOUBLE_STEREO_DMX                       /* Orange: Double-precision replaced by single-precision */  
#define NONBE_FIX_947_STEREO_DMX_EVS_POC                      /* Orange: Fix clicks on POC */
#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC
#define NONBE_FIX_947_STEREO_DMX_ROMOPT                       /* Orange: ROM optimisation for POC*/  
+53 −0
Original line number Diff line number Diff line
@@ -100,6 +100,9 @@

#define STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 24576

#define STEREO_DMX_EVS_POC_RENORM_TH    33554432 // 65536 << 9
#define STEREO_DMX_EVS_POC_RENORM_SHIFT 3

#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA
#define STEREO_DMX_EVS_FAD_R 3
#ifdef NONBE_FIX_947_STEREO_DMX_FADOPT
@@ -474,6 +477,17 @@ static void calc_poc_fx(
            Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) );
            Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) );

            IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
                ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
                ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
                ( LT_32( L_abs( Ri ), STEREO_DMX_EVS_POC_RENORM_TH ) ) )
            {
                Lr = L_shl( Lr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
                Li = L_shl( Li, STEREO_DMX_EVS_POC_RENORM_SHIFT );
                Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
                Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT );
            }

            specPOr[i] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e
            move32();
            specPOi[i] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) ); // 2*spec_e
@@ -486,6 +500,17 @@ static void calc_poc_fx(
                Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) );
                Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) );

                IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
                    ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
                    ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
                    ( LT_32( L_abs( Ri ), STEREO_DMX_EVS_POC_RENORM_TH ) ) )
                {
                    Lr = L_shl( Lr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
                    Li = L_shl( Li, STEREO_DMX_EVS_POC_RENORM_SHIFT );
                    Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
                    Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT );
                }

                specPOr[j] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e
                move32();
                specPOi[j] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) ); // 2*spec_e
@@ -506,6 +531,18 @@ static void calc_poc_fx(
            Li = L_add( L_sub( specLi[i], Mpy_32_32_r( specRr[i], eps_sin ) ), Mpy_32_32_r( specRi[i], eps_cos ) );
            Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) );
            Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) );

            IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
                ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
                ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
                ( LT_32( L_abs( Ri ), STEREO_DMX_EVS_POC_RENORM_TH ) ) )
            {
                Lr = L_shl( Lr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
                Li = L_shl( Li, STEREO_DMX_EVS_POC_RENORM_SHIFT );
                Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
                Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT );
            }

            specPOr[i] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e
            move32();
            specPOi[i] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) ); // 2*spec_e
@@ -516,6 +553,18 @@ static void calc_poc_fx(
            Li = L_sub( L_sub( specLi[j], Mpy_32_32_r( specRr[j], eps_sin ) ), Mpy_32_32_r( specRi[j], eps_cos ) );
            Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) );
            Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) );

            IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
                ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
                ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) &&
                ( LT_32( L_abs( Ri ), STEREO_DMX_EVS_POC_RENORM_TH ) ) )
            {
                Lr = L_shl( Lr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
                Li = L_shl( Li, STEREO_DMX_EVS_POC_RENORM_SHIFT );
                Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT );
                Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT );
            }

            specPOr[j] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e
            move32();
            specPOi[j] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) ); // 2*spec_e
@@ -2462,6 +2511,8 @@ void stereo_dmx_evs_enc_fx(
    Word64 W_tmp;
    Word16 W_tmp_q;

    push_wmops( "stereo_dmx_evs_enc" );

    if ( is_binaural )
    {
        /* use of is_binaural flag is to be considered */
@@ -3338,6 +3389,8 @@ void stereo_dmx_evs_enc_fx(
    Copy_Scale_sig32_16( p_dmx_data, data, n_samples, 5 ); // Q26->Q15
#endif

    pop_wmops();

    return;
}