Commit 27330bcd authored by Fabian Bauer's avatar Fabian Bauer
Browse files

fix ivas path, add msu0 and mac macro switch

parent 3c52e372
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -95,6 +95,10 @@
#define HARMONIZE_2499_CONFIGUREFDCNGDEC                /* FhG: basop issue 2499: harmonoize configureFdCngDec */
#define FIX_BASOP_2530_IVAS_DECISION_MAT                /* VA: Fix ambiguous usage of extract_l() */
#define HARMONIZE_2539_cng_energy                       /* FhG: basop issue 2499: harmonoize cng_energy */
#ifdef HARMONIZE_2539_cng_energy
#define HARMONIZE_2539_cng_energy_msu0
//#define HARMONIZE_2539_cng_energy_mac
#endif

/* #################### End BE switches ################################## */

+31 −0
Original line number Diff line number Diff line
@@ -1186,7 +1186,12 @@ Word16 cng_energy_fx(
    const Word16 *pt_res;
    Word32 L_ener, L_tmp;
#ifdef HARMONIZE_2539_cng_energy
#ifdef HARMONIZE_2539_cng_energy_msu0
    Word64 W_ener = W_neg( W_deposit32_h( L_shr( 1, 1 ) ) );
#endif
#ifdef HARMONIZE_2539_cng_energy_mac
    Word64 W_ener = W_deposit32_h( 1 );
#endif
    move64();
#endif

@@ -1210,7 +1215,12 @@ Word16 cng_energy_fx(
            L_tmp = L_mac0_sat( L_tmp, tmp16, tmp16 ); /* 2*(Q_new+scale) */
            pt_res++;
#ifdef HARMONIZE_2539_cng_energy
#ifdef HARMONIZE_2539_cng_energy_msu0
            W_ener = W_msu0_32_32( W_ener, L_tmp, L_shr( 0x40000000, 7 - 1 ) ); /* 2*(Q_new+scale)+1, divide by L_frame done here */
#endif
#ifdef HARMONIZE_2539_cng_energy_mac
            W_ener = W_mac_32_32( W_ener, L_tmp, L_shr( 0x40000000, 7 - 1 ) ); /* 2*(Q_new+scale)+1, divide by L_frame done here */
#endif
#else
            L_ener = L_add( L_ener, L_shr( L_tmp, 7 ) ); /* 2*(Q_new+scale)+1, divide by L_frame done here */
#endif
@@ -1227,14 +1237,24 @@ Word16 cng_energy_fx(
            L_tmp = L_mac0_sat( L_tmp, tmp16, tmp16 ); /* 2*(Q_new+scale) */
            pt_res++;
#ifdef HARMONIZE_2539_cng_energy
#ifdef HARMONIZE_2539_cng_energy_msu0
            W_ener = W_msu0_32_32( W_ener, Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), L_shr( 0x40000000, 7 - 1 ) ); /* 2*(Q_new+scale)+15+1-16+1, divide by L_frame done here */
#endif
#ifdef HARMONIZE_2539_cng_energy_mac
            W_ener = W_mac_32_32( W_ener, Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), L_shr( 0x40000000, 7 - 1 ) ); /* 2*(Q_new+scale)+15+1-16+1, divide by L_frame done here */
#endif
#else
            L_ener = L_add( L_ener, L_shr( Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), 7 ) ); /* 2*(Q_new+scale)+15+1-16+1, divide by L_frame done here */
#endif
        }
    }
#ifdef HARMONIZE_2539_cng_energy
#ifdef HARMONIZE_2539_cng_energy_msu0
    L_ener = L_shl( L_negate( W_extract_h( W_ener ) ), 1 );
#endif
#ifdef HARMONIZE_2539_cng_energy_mac
    L_ener = W_extract_h( W_ener );
#endif
#endif
    hi = norm_l( L_ener );
    lo = Log2_norm_lc( L_shl( L_ener, hi ) );
@@ -1296,7 +1316,12 @@ Word16 cng_energy_ivas_fx(
    const Word16 *pt_res;
    Word32 L_ener, L_tmp;
#ifdef HARMONIZE_2539_cng_energy
#ifdef HARMONIZE_2539_cng_energy_msu0
    Word64 W_ener = W_deposit32_h( L_shr( 1, 1 ) );
#endif
#ifdef HARMONIZE_2539_cng_energy_mac
    Word64 W_ener = W_deposit32_h( 1 );
#endif
    move64();
#endif

@@ -1320,7 +1345,9 @@ Word16 cng_energy_ivas_fx(
            L_tmp = L_mac0( L_tmp, tmp16, tmp16 );   /* 2*(Q_new+scale) + 7 */
            pt_res++;
#ifdef HARMONIZE_2539_cng_energy
#ifdef HARMONIZE_2539_cng_energy_msu0
            W_ener = W_msu0_32_32( W_ener, L_tmp, 0x80000000 ); /* 2*(Q_new+scale)+1, divide by L_frame done here */
#endif
#else
            L_ener = L_add( L_ener, L_tmp ); /* 2*(Q_new+scale)+1, divide by L_frame done here */
#endif
@@ -1337,14 +1364,18 @@ Word16 cng_energy_ivas_fx(
            L_tmp = L_mac( L_tmp, tmp16, tmp16 );    /* 2*(Q_new+scale) - 7 */
            pt_res++;
#ifdef HARMONIZE_2539_cng_energy
#ifdef HARMONIZE_2539_cng_energy_msu0
            W_ener = W_msu0_32_32( W_ener, Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), 0x80000000 ); /* 2*(Q_new+scale)+15+1-16+1, divide by L_frame done here */
#endif
#else
            L_ener = L_add( L_ener, Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ) ); /* 2*(Q_new+scale)+15+1-16+1, divide by L_frame done here */
#endif
        }
    }
#ifdef HARMONIZE_2539_cng_energy
#ifdef HARMONIZE_2539_cng_energy_msu0
    L_ener = L_shl( W_extract_h( W_neg( W_ener ) ), 1 );
#endif
#endif
    hi = norm_l( L_ener );
    lo = Log2_norm_lc( L_shl( L_ener, hi ) );