diff --git a/lib_com/options.h b/lib_com/options.h index 3077f91f2c6162774a99c63c5dd2e2b61de98fca..7e581b677c0e1a1fb8d38a4e62da7d6605b2abbd 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -98,6 +98,7 @@ #define FIX_BASOP_2509_EVS_CONCEAL_UNINIT_MEM /* FhG: BASOP 2509: st->hTcxCfg->psychParamsCurrent is not initialized */ #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 FIX_BASOP_2532_cx_e /* FhG: Fix issue 2532 about additional exponent variable*/ /* #################### End BE switches ################################## */ diff --git a/lib_dec/ivas_mc_param_dec_fx.c b/lib_dec/ivas_mc_param_dec_fx.c index a11feddf170f335f8c9a59fa493e29e3cd9d6739..2ea6e2518788a6dfe29af30d2a489bc6d2864d94 100644 --- a/lib_dec/ivas_mc_param_dec_fx.c +++ b/lib_dec/ivas_mc_param_dec_fx.c @@ -1801,6 +1801,10 @@ void ivas_param_mc_dec_prepare_renderer( } } cx_e = max_e; +#ifdef FIX_BASOP_2532_cx_e + cx_next_band_e = max_e; + move16(); +#endif move16(); /* we have to do it similar to the encoder in case of attacks (i.e. accumulate two bands) to ensure correct DMX of the target covariance*/ @@ -1815,7 +1819,11 @@ void ivas_param_mc_dec_prepare_renderer( Scale_sig32( cx_fx, len, -Q1 ); // add one bit head room Scale_sig32( cx_next_band_fx, len, -Q1 ); // add one bit head room cx_e = add( cx_e, Q1 ); +#ifndef FIX_BASOP_2532_cx_e cx_next_band_e = add( cx_e, Q1 ); +#else + cx_next_band_e = add( cx_next_band_e, Q1 ); +#endif // !FIX_BASOP_2532_cx_e } v_add_fx( cx_fx, cx_next_band_fx, cx_fx, len ); Copy32( cx_fx, cx_next_band_fx, len ); @@ -1834,7 +1842,11 @@ void ivas_param_mc_dec_prepare_renderer( IF( is_next_band ) { +#ifndef FIX_BASOP_2532_cx_e + ivas_param_mc_get_mixing_matrices_fx( hParamMC, hSynthesisOutputSetup, cx_next_band_fx, cx_next_band_e, add( param_band_idx, is_next_band ), hParamMC->h_output_synthesis_cov_state.mixing_matrix_fx, hParamMC->h_output_synthesis_cov_state.mixing_matrix_exp, hParamMC->h_output_synthesis_cov_state.mixing_matrix_res_fx, hParamMC->h_output_synthesis_cov_state.mixing_matrix_res_exp, nchan_out_transport, hParamMC->synthesis_conf, nchan_transport, nchan_out_cov ); +#else ivas_param_mc_get_mixing_matrices_fx( hParamMC, hSynthesisOutputSetup, cx_next_band_fx, cx_e, add( param_band_idx, is_next_band ), hParamMC->h_output_synthesis_cov_state.mixing_matrix_fx, hParamMC->h_output_synthesis_cov_state.mixing_matrix_exp, hParamMC->h_output_synthesis_cov_state.mixing_matrix_res_fx, hParamMC->h_output_synthesis_cov_state.mixing_matrix_res_exp, nchan_out_transport, hParamMC->synthesis_conf, nchan_transport, nchan_out_cov ); +#endif } ELSE {