Loading lib_com/options.h +4 −0 Original line number Diff line number Diff line Loading @@ -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 ################################## */ Loading lib_enc/fd_cng_enc_fx.c +31 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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 ) ); Loading Loading @@ -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 Loading @@ -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 Loading @@ -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 ) ); Loading Loading
lib_com/options.h +4 −0 Original line number Diff line number Diff line Loading @@ -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 ################################## */ Loading
lib_enc/fd_cng_enc_fx.c +31 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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 ) ); Loading Loading @@ -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 Loading @@ -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 Loading @@ -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 ) ); Loading