From 9a69085215e70cc3697c60c34058e48fa252c7af Mon Sep 17 00:00:00 2001 From: vaclav Date: Fri, 23 Jan 2026 14:59:34 +0100 Subject: [PATCH] FIX_BASOP_2350_HARM_0B_BWE_2 --- lib_com/options.h | 1 + lib_dec/acelp_core_dec_fx.c | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index c7cd38dd8..16566b275 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -106,6 +106,7 @@ #define FIX_2362_TOTAL_BRATE_CALCULATION /* FhG: basop issue 2362: fix calculation of st->total_brate in ivas_cpe_enc_fx() */ #define FIX_2330_CLANG_18_WARNINGS_REND /* FhG: Fix renderer warnings */ #define FIX_BASOP_2350_HARM_0B_BWE /* VA: basop issue 2350: harmonization of the 0b BWE */ +#define FIX_BASOP_2350_HARM_0B_BWE_2 /* VA: basop issue 2350: Simplify calling of hf_synth_fx() */ #define FIX_2349_HARM_FIND_UV /* VA: basop issue 2349: harmonization of find_uv() function */ /* #################### End BE switches ################################## */ diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index a11a25b1b..bdb8c5d85 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -74,7 +74,9 @@ ivas_error acelp_core_dec_fx( const Word16 read_sid_info /* i : read SID info flag */ ) { +#ifndef FIX_BASOP_2350_HARM_0B_BWE_2 Word32 synth_fx[960], save_hb_synth_fx[960] /*, bwe_exc_extended_fx[L_FRAME32k + NL_BUFF_OFFSET]*/; +#endif Word16 old_exc_fx[L_EXC_DEC], *exc_fx; /* excitation signal buffer */ Word16 syn_tmp_fx[L_FRAME16k + L_SUBFR], *psyn_fx; /* synthesis signal buffer */ Word16 output_frame; /* frame length at output sampling freq. */ @@ -1896,6 +1898,9 @@ ivas_error acelp_core_dec_fx( st->stab_fac_fx, &st->stab_fac_smooth_fx, st->coder_type, st->Q_syn, bpf_error_signal_16fx ); } +#ifdef FIX_BASOP_2350_HARM_0B_BWE_2 + Word32 synth_fx[L_FRAME48k]; +#endif Word32 syn_tmp_32_fx[L_FRAME16k + L_SUBFR], *syn_32_fx; set32_fx( syn_tmp_32_fx, 0, L_FRAME16k + L_SUBFR ); syn_32_fx = syn_tmp_32_fx + L_SUBFR; @@ -2049,7 +2054,11 @@ ivas_error acelp_core_dec_fx( } } - cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, save_hb_synth_fx, -1, sub( Q11, Q_real ), -10, st->cldfbSynHB ); + cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx /*tmp buffer for save_hb_synth_fx[] */, -1, sub( Q11, Q_real ), -10, st->cldfbSynHB ); + +#ifdef FIX_BASOP_2350_HARM_0B_BWE_2 + Copy_Scale_sig_32_16( synth_fx, save_hb_synth_fx16, output_frame, 0 ); // Q0 +#endif /* restore lowband */ FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) @@ -2197,6 +2206,9 @@ ivas_error acelp_core_dec_fx( Copy( psyn_fx, output_fx, st->L_frame ); /*Q_syn*/ } +#ifdef FIX_BASOP_2350_HARM_0B_BWE_2 + Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q_syn2 +#endif st->Q_syn2 = 0; move16(); } @@ -2217,6 +2229,9 @@ ivas_error acelp_core_dec_fx( IF( ( EQ_16( st->L_frame, L_FRAME ) && ( st->bwidth != NB ) && GE_16( output_frame, L_FRAME16k ) && ( EQ_16( st->extl, -1 ) || EQ_16( st->extl, SWB_CNG ) || ( EQ_16( st->extl, WB_BWE ) && st->extl_brate == 0 && NE_16( st->coder_type, AUDIO ) ) ) ) ) { +#ifdef FIX_BASOP_2350_HARM_0B_BWE_2 + hf_synth_fx( st->hBWE_zero, st->element_mode, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 ); +#else IF( EQ_16( st->element_mode, EVS_MONO ) ) { #ifndef FIX_BASOP_2350_HARM_0B_BWE @@ -2235,6 +2250,7 @@ ivas_error acelp_core_dec_fx( #endif Copy_Scale_sig_16_32_DEPREC( synth_fx16, synth_fx, output_frame, 0 ); } +#endif } ELSE { @@ -2352,6 +2368,7 @@ ivas_error acelp_core_dec_fx( } } +#ifndef FIX_BASOP_2350_HARM_0B_BWE_2 IF( NE_16( st->element_mode, EVS_MONO ) ) { IF( save_hb_synth_fx16 != NULL ) @@ -2360,7 +2377,7 @@ ivas_error acelp_core_dec_fx( } Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q_syn2 } - +#endif pop_wmops(); return error; } -- GitLab