Loading lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -92,7 +92,6 @@ #define NONBE_FIX_ISSUE_2206_AVOID_OVERFLOW_MSVQ_Interpol_Tran_fx /* FhG: Fix saturation crash in MSVQ_Interpol_Tran_fx() */ #define NONBE_FIX_ISSUE_2206_SWB_EXPERIMENT_FIX_2527 /* Fix crash from issue #2527 */ #define FIX_FLOAT_1539_G192_FORMAT_SWITCH /* VA/Nokia: reintroduce format switching for g192 bitstreams */ #define HARMONIZE_2539_cng_energy /* FhG: basop issue 2539: harmonize cng_energy with its ivas derivate */ #define FIX_1585_ASAN_FORMAT_SW_ALT /* VA,FhG: float issues 1585,1593: alternative fix memory leaks with format switching */ #define FIX_BASOP_2573_RF_MODE_UPDATE /* FhG: BASOP issue 2573: remove duplicated update of rf_mode parameters from evs_enc_fx(); was already done in updt_enc_common_fx() */ #define FIX_2570_BUF_OVFL /* Orange: basop issue 2570: global-buffer-overflow in lib_rend/ivas_objectRenderer_sources_fx.c */ Loading lib_enc/acelp_core_enc_fx.c +0 −4 Original line number Diff line number Diff line Loading @@ -437,11 +437,7 @@ ivas_error acelp_core_enc_fx( { IF( st->hTdCngEnc != NULL ) { #ifdef HARMONIZE_2539_cng_energy enr = cng_energy_fx( st->element_mode, st->bwidth, st->hDtxEnc->CNG_mode, st->hTdCngEnc->CNG_att_fx, exc_fx, st->L_frame, Q_new ); /* Q8 */ #else enr = cng_energy_ivas_fx( st->element_mode, st->bwidth, st->hDtxEnc->CNG_mode, st->hTdCngEnc->CNG_att_fx, exc_fx, st->L_frame, Q_new ); /* Q8 */ #endif /* calculate the energy quantization index */ enr_index = add( enr, 512 /* Q8(2.0) */ ); /* enr + 2.0 */ Loading lib_enc/fd_cng_enc_fx.c +0 −127 Original line number Diff line number Diff line Loading @@ -1163,103 +1163,6 @@ void generate_comfort_noise_enc_fx( return; } #ifndef HARMONIZE_2539_cng_energy /*-------------------------------------------------------------------* * cng_energy_fx() * * *-------------------------------------------------------------------*/ /*! r: CNG energy */ Word16 cng_energy_fx( const Word16 element_mode, /* i : element mode Q0*/ const Word16 bwidth, /* i : audio bandwidh Q0*/ const Word16 CNG_mode, /* i : mode for DTX configuration Q0*/ const Word16 CNG_att, /* i : attenuation factor for CNG Q7*/ const Word16 *exc, /* i : input signal Q_new*/ const Word16 len, /* i : vector length Q0*/ const Word16 Q_new /* i : Input scaling */ ) { Word16 i, maxv, scale; Word16 hi, lo, enr, tmp16, att; const Word16 *pt_res; Word32 L_ener, L_tmp; maxv = 0; move16(); FOR( i = 0; i < len; i++ ) { maxv = s_max( maxv, abs_s( exc[i] ) ); } scale = norm_s( maxv ); pt_res = exc; L_ener = L_deposit_l( 1 ); IF( EQ_16( len, L_FRAME ) ) { FOR( i = 0; i < 128; i++ ) { tmp16 = shl( *pt_res, scale ); L_tmp = L_mult0( tmp16, tmp16 ); pt_res++; tmp16 = shl( *pt_res, scale ); L_tmp = L_mac0_sat( L_tmp, tmp16, tmp16 ); /* 2*(Q_new+scale) */ pt_res++; L_ener = L_add( L_ener, L_shr( L_tmp, 7 ) ); /* 2*(Q_new+scale)+1, divide by L_frame done here */ } } ELSE /* L_FRAME16k */ { FOR( i = 0; i < 160; i++ ) { tmp16 = shl( *pt_res, scale ); L_tmp = L_mult0( tmp16, tmp16 ); pt_res++; tmp16 = shl( *pt_res, scale ); L_tmp = L_mac0_sat( L_tmp, tmp16, tmp16 ); /* 2*(Q_new+scale) */ pt_res++; 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 */ } } hi = norm_l( L_ener ); lo = Log2_norm_lc( L_shl( L_ener, hi ) ); hi = sub( 30, add( hi, shl( add( Q_new, scale ), 1 ) ) ); /* log2 exp in Q2*(Q_new+scale) */ L_tmp = L_Comp( hi, lo ); /* Q16 */ enr = round_fx( L_shl( L_tmp, 8 ) ); /* Q8 (16+8-16) */ /* decrease the energy in case of WB input */ test(); IF( EQ_16( element_mode, IVAS_CPE_DFT ) || EQ_16( element_mode, IVAS_CPE_TD ) ) { (void) CNG_att; } ELSE IF( NE_16( bwidth, NB ) ) { IF( EQ_16( bwidth, WB ) ) { IF( CNG_mode >= 0 ) { /* Bitrate adapted attenuation */ att = ENR_ATT_fx[CNG_mode]; } ELSE { /* Use least attenuation for higher bitrates */ att = ENR_ATT_fx[4]; } } ELSE { att = 384; move16(); /*Q8*/ } enr = sub( enr, att ); } return enr; } #endif /*-------------------------------------------------------------------* * cng_energy_ivas_fx() Loading @@ -1268,11 +1171,7 @@ Word16 cng_energy_fx( *-------------------------------------------------------------------*/ /*! r: CNG energy */ #ifdef HARMONIZE_2539_cng_energy Word16 cng_energy_fx( #else Word16 cng_energy_ivas_fx( #endif const Word16 element_mode, /* i : element mode Q0*/ const Word16 bwidth, /* i : audio bandwidh Q0*/ const Word16 CNG_mode, /* i : mode for DTX configuration Q0*/ Loading @@ -1286,13 +1185,11 @@ Word16 cng_energy_ivas_fx( Word16 hi, lo, enr, tmp16, att; const Word16 *pt_res; Word32 L_ener, L_tmp; #ifdef HARMONIZE_2539_cng_energy Word64 W_ener = W_shr( W_deposit32_h( 1 ), 1 ); if ( EQ_16( element_mode, EVS_MONO ) ) { W_ener = W_neg( W_ener ); } #endif maxv = 0; move16(); Loading @@ -1304,7 +1201,6 @@ Word16 cng_energy_ivas_fx( pt_res = exc; L_ener = L_deposit_l( 1 ); #ifdef HARMONIZE_2539_cng_energy Word16 scale_tmp; Word32 scale_tmp32; Loading @@ -1317,13 +1213,11 @@ Word16 cng_energy_ivas_fx( move16(); scale_tmp32 = L_shr( 0x40000000, 7 - 1 ); } #endif IF( EQ_16( len, L_FRAME ) ) { FOR( i = 0; i < 128; i++ ) { #ifdef HARMONIZE_2539_cng_energy tmp16 = shl( *pt_res, scale_tmp ); L_tmp = L_mult0( tmp16, tmp16 ); pt_res++; Loading @@ -1331,22 +1225,12 @@ Word16 cng_energy_ivas_fx( L_tmp = L_mac0_sat( L_tmp, tmp16, tmp16 ); pt_res++; W_ener = W_msu0_32_32( W_ener, L_tmp, scale_tmp32 ); /* 2*(Q_new+scale)+1, divide by L_frame done here */ #else tmp16 = shl( *pt_res, sub( scale, 4 ) ); // Q_new + scale - 4 L_tmp = L_mult0( tmp16, tmp16 ); pt_res++; tmp16 = shl( *pt_res, sub( scale, 4 ) ); // Q_new + scale - 4 L_tmp = L_mac0( L_tmp, tmp16, tmp16 ); /* 2*(Q_new+scale) + 7 */ pt_res++; L_ener = L_add( L_ener, L_tmp ); /* 2*(Q_new+scale)+1, divide by L_frame done here */ #endif } } ELSE /* L_FRAME16k */ { FOR( i = 0; i < 160; i++ ) { #ifdef HARMONIZE_2539_cng_energy tmp16 = shl( *pt_res, scale_tmp ); L_tmp = L_mult0( tmp16, tmp16 ); pt_res++; Loading @@ -1354,18 +1238,8 @@ Word16 cng_energy_ivas_fx( L_tmp = L_mac0_sat( L_tmp, tmp16, tmp16 ); pt_res++; W_ener = W_msu0_32_32( W_ener, Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), scale_tmp32 ); /* 2*(Q_new+scale)+15+1-16+1, divide by L_frame done here */ #else tmp16 = shl( *pt_res, sub( scale, 4 ) ); // Q_new + scale - 4 L_tmp = L_mult( tmp16, tmp16 ); pt_res++; tmp16 = shl( *pt_res, sub( scale, 4 ) ); // Q_new + scale - 4 L_tmp = L_mac( L_tmp, tmp16, tmp16 ); /* 2*(Q_new+scale) - 7 */ pt_res++; 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 L_ener = L_shl( W_extract_h( W_ener ), 1 ); if ( EQ_16( element_mode, EVS_MONO ) ) { Loading @@ -1376,7 +1250,6 @@ Word16 cng_energy_ivas_fx( { L_ener = L_shl( L_ener, 1 ); } #endif hi = norm_l( L_ener ); lo = Log2_norm_lc( L_shl( L_ener, hi ) ); Loading lib_enc/prot_fx_enc.h +0 −11 Original line number Diff line number Diff line Loading @@ -3794,17 +3794,6 @@ void writeLPCparam_fx( const Word16 no_param_lpc, /* i : number of LPC parameters */ Word16 *nbits_lpc /* o : LPC bits written */ ); #ifndef HARMONIZE_2539_cng_energy Word16 cng_energy_ivas_fx( const Word16 element_mode, /* i : element mode */ const Word16 bwidth, /* i : audio bandwidh */ const Word16 CNG_mode, /* i : mode for DTX configuration */ const Word16 CNG_att, /* i : attenuation factor for CNG Q7 */ const Word16 *exc, /* i : input signal */ const Word16 len, /* i : vector length */ const Word16 Q_new /* i : Input scaling */ ); #endif void SynthesisSTFT_enc_ivas_fx( Word32 *fftBuffer, /* i : pointer to FFT bins */ Loading Loading
lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -92,7 +92,6 @@ #define NONBE_FIX_ISSUE_2206_AVOID_OVERFLOW_MSVQ_Interpol_Tran_fx /* FhG: Fix saturation crash in MSVQ_Interpol_Tran_fx() */ #define NONBE_FIX_ISSUE_2206_SWB_EXPERIMENT_FIX_2527 /* Fix crash from issue #2527 */ #define FIX_FLOAT_1539_G192_FORMAT_SWITCH /* VA/Nokia: reintroduce format switching for g192 bitstreams */ #define HARMONIZE_2539_cng_energy /* FhG: basop issue 2539: harmonize cng_energy with its ivas derivate */ #define FIX_1585_ASAN_FORMAT_SW_ALT /* VA,FhG: float issues 1585,1593: alternative fix memory leaks with format switching */ #define FIX_BASOP_2573_RF_MODE_UPDATE /* FhG: BASOP issue 2573: remove duplicated update of rf_mode parameters from evs_enc_fx(); was already done in updt_enc_common_fx() */ #define FIX_2570_BUF_OVFL /* Orange: basop issue 2570: global-buffer-overflow in lib_rend/ivas_objectRenderer_sources_fx.c */ Loading
lib_enc/acelp_core_enc_fx.c +0 −4 Original line number Diff line number Diff line Loading @@ -437,11 +437,7 @@ ivas_error acelp_core_enc_fx( { IF( st->hTdCngEnc != NULL ) { #ifdef HARMONIZE_2539_cng_energy enr = cng_energy_fx( st->element_mode, st->bwidth, st->hDtxEnc->CNG_mode, st->hTdCngEnc->CNG_att_fx, exc_fx, st->L_frame, Q_new ); /* Q8 */ #else enr = cng_energy_ivas_fx( st->element_mode, st->bwidth, st->hDtxEnc->CNG_mode, st->hTdCngEnc->CNG_att_fx, exc_fx, st->L_frame, Q_new ); /* Q8 */ #endif /* calculate the energy quantization index */ enr_index = add( enr, 512 /* Q8(2.0) */ ); /* enr + 2.0 */ Loading
lib_enc/fd_cng_enc_fx.c +0 −127 Original line number Diff line number Diff line Loading @@ -1163,103 +1163,6 @@ void generate_comfort_noise_enc_fx( return; } #ifndef HARMONIZE_2539_cng_energy /*-------------------------------------------------------------------* * cng_energy_fx() * * *-------------------------------------------------------------------*/ /*! r: CNG energy */ Word16 cng_energy_fx( const Word16 element_mode, /* i : element mode Q0*/ const Word16 bwidth, /* i : audio bandwidh Q0*/ const Word16 CNG_mode, /* i : mode for DTX configuration Q0*/ const Word16 CNG_att, /* i : attenuation factor for CNG Q7*/ const Word16 *exc, /* i : input signal Q_new*/ const Word16 len, /* i : vector length Q0*/ const Word16 Q_new /* i : Input scaling */ ) { Word16 i, maxv, scale; Word16 hi, lo, enr, tmp16, att; const Word16 *pt_res; Word32 L_ener, L_tmp; maxv = 0; move16(); FOR( i = 0; i < len; i++ ) { maxv = s_max( maxv, abs_s( exc[i] ) ); } scale = norm_s( maxv ); pt_res = exc; L_ener = L_deposit_l( 1 ); IF( EQ_16( len, L_FRAME ) ) { FOR( i = 0; i < 128; i++ ) { tmp16 = shl( *pt_res, scale ); L_tmp = L_mult0( tmp16, tmp16 ); pt_res++; tmp16 = shl( *pt_res, scale ); L_tmp = L_mac0_sat( L_tmp, tmp16, tmp16 ); /* 2*(Q_new+scale) */ pt_res++; L_ener = L_add( L_ener, L_shr( L_tmp, 7 ) ); /* 2*(Q_new+scale)+1, divide by L_frame done here */ } } ELSE /* L_FRAME16k */ { FOR( i = 0; i < 160; i++ ) { tmp16 = shl( *pt_res, scale ); L_tmp = L_mult0( tmp16, tmp16 ); pt_res++; tmp16 = shl( *pt_res, scale ); L_tmp = L_mac0_sat( L_tmp, tmp16, tmp16 ); /* 2*(Q_new+scale) */ pt_res++; 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 */ } } hi = norm_l( L_ener ); lo = Log2_norm_lc( L_shl( L_ener, hi ) ); hi = sub( 30, add( hi, shl( add( Q_new, scale ), 1 ) ) ); /* log2 exp in Q2*(Q_new+scale) */ L_tmp = L_Comp( hi, lo ); /* Q16 */ enr = round_fx( L_shl( L_tmp, 8 ) ); /* Q8 (16+8-16) */ /* decrease the energy in case of WB input */ test(); IF( EQ_16( element_mode, IVAS_CPE_DFT ) || EQ_16( element_mode, IVAS_CPE_TD ) ) { (void) CNG_att; } ELSE IF( NE_16( bwidth, NB ) ) { IF( EQ_16( bwidth, WB ) ) { IF( CNG_mode >= 0 ) { /* Bitrate adapted attenuation */ att = ENR_ATT_fx[CNG_mode]; } ELSE { /* Use least attenuation for higher bitrates */ att = ENR_ATT_fx[4]; } } ELSE { att = 384; move16(); /*Q8*/ } enr = sub( enr, att ); } return enr; } #endif /*-------------------------------------------------------------------* * cng_energy_ivas_fx() Loading @@ -1268,11 +1171,7 @@ Word16 cng_energy_fx( *-------------------------------------------------------------------*/ /*! r: CNG energy */ #ifdef HARMONIZE_2539_cng_energy Word16 cng_energy_fx( #else Word16 cng_energy_ivas_fx( #endif const Word16 element_mode, /* i : element mode Q0*/ const Word16 bwidth, /* i : audio bandwidh Q0*/ const Word16 CNG_mode, /* i : mode for DTX configuration Q0*/ Loading @@ -1286,13 +1185,11 @@ Word16 cng_energy_ivas_fx( Word16 hi, lo, enr, tmp16, att; const Word16 *pt_res; Word32 L_ener, L_tmp; #ifdef HARMONIZE_2539_cng_energy Word64 W_ener = W_shr( W_deposit32_h( 1 ), 1 ); if ( EQ_16( element_mode, EVS_MONO ) ) { W_ener = W_neg( W_ener ); } #endif maxv = 0; move16(); Loading @@ -1304,7 +1201,6 @@ Word16 cng_energy_ivas_fx( pt_res = exc; L_ener = L_deposit_l( 1 ); #ifdef HARMONIZE_2539_cng_energy Word16 scale_tmp; Word32 scale_tmp32; Loading @@ -1317,13 +1213,11 @@ Word16 cng_energy_ivas_fx( move16(); scale_tmp32 = L_shr( 0x40000000, 7 - 1 ); } #endif IF( EQ_16( len, L_FRAME ) ) { FOR( i = 0; i < 128; i++ ) { #ifdef HARMONIZE_2539_cng_energy tmp16 = shl( *pt_res, scale_tmp ); L_tmp = L_mult0( tmp16, tmp16 ); pt_res++; Loading @@ -1331,22 +1225,12 @@ Word16 cng_energy_ivas_fx( L_tmp = L_mac0_sat( L_tmp, tmp16, tmp16 ); pt_res++; W_ener = W_msu0_32_32( W_ener, L_tmp, scale_tmp32 ); /* 2*(Q_new+scale)+1, divide by L_frame done here */ #else tmp16 = shl( *pt_res, sub( scale, 4 ) ); // Q_new + scale - 4 L_tmp = L_mult0( tmp16, tmp16 ); pt_res++; tmp16 = shl( *pt_res, sub( scale, 4 ) ); // Q_new + scale - 4 L_tmp = L_mac0( L_tmp, tmp16, tmp16 ); /* 2*(Q_new+scale) + 7 */ pt_res++; L_ener = L_add( L_ener, L_tmp ); /* 2*(Q_new+scale)+1, divide by L_frame done here */ #endif } } ELSE /* L_FRAME16k */ { FOR( i = 0; i < 160; i++ ) { #ifdef HARMONIZE_2539_cng_energy tmp16 = shl( *pt_res, scale_tmp ); L_tmp = L_mult0( tmp16, tmp16 ); pt_res++; Loading @@ -1354,18 +1238,8 @@ Word16 cng_energy_ivas_fx( L_tmp = L_mac0_sat( L_tmp, tmp16, tmp16 ); pt_res++; W_ener = W_msu0_32_32( W_ener, Mult_32_16( L_tmp, 26214 /* 256/320, Q15 */ ), scale_tmp32 ); /* 2*(Q_new+scale)+15+1-16+1, divide by L_frame done here */ #else tmp16 = shl( *pt_res, sub( scale, 4 ) ); // Q_new + scale - 4 L_tmp = L_mult( tmp16, tmp16 ); pt_res++; tmp16 = shl( *pt_res, sub( scale, 4 ) ); // Q_new + scale - 4 L_tmp = L_mac( L_tmp, tmp16, tmp16 ); /* 2*(Q_new+scale) - 7 */ pt_res++; 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 L_ener = L_shl( W_extract_h( W_ener ), 1 ); if ( EQ_16( element_mode, EVS_MONO ) ) { Loading @@ -1376,7 +1250,6 @@ Word16 cng_energy_ivas_fx( { L_ener = L_shl( L_ener, 1 ); } #endif hi = norm_l( L_ener ); lo = Log2_norm_lc( L_shl( L_ener, hi ) ); Loading
lib_enc/prot_fx_enc.h +0 −11 Original line number Diff line number Diff line Loading @@ -3794,17 +3794,6 @@ void writeLPCparam_fx( const Word16 no_param_lpc, /* i : number of LPC parameters */ Word16 *nbits_lpc /* o : LPC bits written */ ); #ifndef HARMONIZE_2539_cng_energy Word16 cng_energy_ivas_fx( const Word16 element_mode, /* i : element mode */ const Word16 bwidth, /* i : audio bandwidh */ const Word16 CNG_mode, /* i : mode for DTX configuration */ const Word16 CNG_att, /* i : attenuation factor for CNG Q7 */ const Word16 *exc, /* i : input signal */ const Word16 len, /* i : vector length */ const Word16 Q_new /* i : Input scaling */ ); #endif void SynthesisSTFT_enc_ivas_fx( Word32 *fftBuffer, /* i : pointer to FFT bins */ Loading