From 8041f52d854a24525b8e6db1710a31937ca1a468 Mon Sep 17 00:00:00 2001 From: vaclav Date: Thu, 22 Jan 2026 12:49:40 +0100 Subject: [PATCH 01/12] SIMPLIFY_SCALING_OLD_INP, REMOVE_UNUSED_BUFFER_CORE_ENC, REMOVE_SCALING_SHB_SPEECH, SCALING_SWB_SPEECH_32 --- lib_com/ivas_prot_fx.h | 23 +++++++- lib_com/options.h | 4 ++ lib_com/prot_fx.h | 8 ++- lib_enc/ivas_core_enc_fx.c | 80 +++++++++++++++++++++++--- lib_enc/ivas_mdct_core_enc_fx.c | 38 ++++++++++-- lib_enc/ivas_stereo_icbwe_enc_fx.c | 23 ++++++-- lib_enc/ivas_stereo_mdct_core_enc_fx.c | 11 +++- lib_enc/ivas_tcx_core_enc_fx.c | 52 +++++++++++++---- lib_enc/swb_pre_proc_fx.c | 14 ++++- 9 files changed, 218 insertions(+), 35 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 0fb526b41..e2f98b524 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -1357,11 +1357,15 @@ void stereo_tcx_init_dec_fx( const Word16 last_element_mode /* i : element mode of previous frame */ ); -void stereo_icBWE_enc_ivas_fx( +void stereo_icBWE_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ const Word32 shb_speech_ref_fx[], /* i : SHB speech ref channel */ const Word16 shb_speech_ref_e, /* i : SHB speech ref channel */ +#ifdef SCALING_SWB_SPEECH_32 + Word16 shb_speech_nonref_fx_16[], /* i/o: SHB speech non-ref channel Q15-shb_speech_nonref_e*/ +#else Word32 shb_speech_nonref_fx[], /* i/o: SHB speech non-ref channel */ +#endif Word16 shb_speech_nonref_e, /* i/o: SHB speech non-ref channel */ const Word32 *voice_factors_fx /* i : voicing factors Q31 */ ); @@ -3083,15 +3087,24 @@ void InternalTCXDecoder_fx( void stereo_tcx_core_enc( Encoder_State *st, /* i/o: encoder state structure */ +#ifdef SIMPLIFY_SCALING_OLD_INP + Word16 new_samples_12k8[], /* i : buffer of input signal @12.8 kHz Q_new-1*/ + Word16 new_samples_16k[], /* i : buffer of input signal @16 kHz Q_new-1*/ +#else const Word16 new_samples_12k8[], /* i : buffer of input signal @12.8 kHz */ const Word16 new_samples_16k[], /* i : buffer of input signal @16 kHz */ +#endif const Word16 Aw_fx[], /* i : weighted A(z) unquant. for subframes,Q12*/ Word16 lsp_new_fx[], /* i : LSPs at the end of the frame, Q15 */ Word16 lsp_mid_fx[], /* i : LSPs in the middle of the frame, Q15 */ Word16 pitch_buf_fx[NB_SUBFR16k], /* o : pitch for each subframe, Q6 */ const Word16 last_element_mode, /* i : last element mode, Q0 */ const Word16 vad_hover_flag, /* i : VAD hangover flag, Q0 */ +#ifdef SIMPLIFY_SCALING_OLD_INP + Word16 Q_new_inp /* i : Q factor of input buffer */ +#else Word16 Q_new +#endif ); Word16 transient_analysis_ivas_fx( @@ -6420,7 +6433,10 @@ UWord16 get_indice_st( void stereo_mdct_core_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q0*/ + Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Qnew-1*/ +#ifdef SIMPLIFY_SCALING_OLD_INP + Word16 Q_new_inp[CPE_CHANNELS], /* i : Q factor of input buffer */ +#endif Word16 old_wsp[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/ Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k] /* o : floating pitch for each subframe Q6*/ ); @@ -6468,6 +6484,9 @@ void stereo_switching_dec( void ivas_mdct_core_whitening_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ Word16 new_samples_fx[CPE_CHANNELS][L_INP], /* i : new samples */ +#ifdef SIMPLIFY_SCALING_OLD_INP + Word16 Q_new_inp[CPE_CHANNELS], /* i : Q factor of input buffer */ +#endif Word16 old_wsp_fx[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP */ Word16 pitch_buf[CPE_CHANNELS][NB_SUBFR16k], /* o : floating pitch for each subframe */ Word32 *mdst_spectrum_long[CPE_CHANNELS], /* o : buffer for MDST spectrum */ diff --git a/lib_com/options.h b/lib_com/options.h index a1ac29acd..fa11260fa 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -116,6 +116,10 @@ #define FIX_BASOP_2332_ASAN_OVERFLOW_IN_EXT_DIRAC_REND /* Nokia: basop issue 2332: Uses predefined memory sizes instead computing wrong */ #define FIX_BASOP_2333_MCMASA_ANA_MEMORY_LEAK /* Nokia: basop issue 2333: Add missing free for direction_vector_e to ivas_mcmasa_ana_fx.c */ #define HARM_COREDECODER_FUNCTIONS /* VA: basop issue 2347: Remove various duplicated code in core-decoder */ +#define SIMPLIFY_SCALING_OLD_INP +#define REMOVE_UNUSED_BUFFER_CORE_ENC +#define REMOVE_SCALING_SHB_SPEECH +#define SCALING_SWB_SPEECH_32 /* #################### End BE switches ################################## */ diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index fac7485fb..0d97361bb 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -10488,10 +10488,12 @@ void Copy_Scale_sig32( ); void swb_pre_proc_ivas_fx( - Encoder_State *st, /* i/o: encoder state structure */ - Word16 *new_swb_speech, /* o : original input signal at 32kHz - Q0 */ + Encoder_State *st, /* i/o: encoder state structure */ + Word16 *new_swb_speech, /* o : original input signal at 32kHz - Q0 */ +#ifndef SCALING_SWB_SPEECH_32 Word32 *new_swb_speech_fx, /* o : original input signal at 32kHz - Q - q_reImBuffer */ - Word16 *shb_speech, /* o : SHB target signal (6-14kHz) at 16kHz- Q(Q_shb_spch) */ +#endif + Word16 *shb_speech, /* o : SHB target signal (6-14kHz) at 16kHz- Q(Q_shb_spch) */ Word16 *Q_shb_spch, Word32 realBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : real buffer Q - q_reImbuffer */ Word32 imagBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : imag buffer Q - q_reImbuffer */ diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c index 206a3e25c..cf1456364 100644 --- a/lib_enc/ivas_core_enc_fx.c +++ b/lib_enc/ivas_core_enc_fx.c @@ -88,11 +88,15 @@ ivas_error ivas_core_enc_fx( STEREO_TD_ENC_DATA_HANDLE hStereoTD; Word16 voice_factors_fx[CPE_CHANNELS][NB_SUBFR16k]; /* Q15 */ Word32 shb_speech_fx32[L_FRAME16k]; +#ifndef SCALING_SWB_SPEECH_32 Word32 *new_swb_speech_fx; +#endif Word16 *inp_fx[CPE_CHANNELS]; Word16 *shb_speech_fx; Word16 Q_shb_spch; +#ifndef SCALING_SWB_SPEECH_32 Word32 new_swb_speech_buffer_fx[L_FRAME48k + STEREO_DFT_OVL_MAX]; +#endif Word16 new_inp_resamp16k_fx[CPE_CHANNELS][L_FRAME16k]; /* new input signal @16kHz, non pre-emphasised, used by the WB TBE/BWE */ Word16 *hb_speech_fx; Word32 bwe_exc_extended_fx[CPE_CHANNELS][L_FRAME32k + NL_BUFF_OFFSET]; /* 2 * Q_new */ @@ -110,8 +114,9 @@ ivas_error ivas_core_enc_fx( Word16 max_num_indices_BWE; Word16 i, shift, Q_min; +#ifndef SCALING_SWB_SPEECH_32 set32_fx( new_swb_speech_buffer_fx, 0, L_FRAME48k + STEREO_DFT_OVL_MAX ); - +#endif FOR( i = 0; i < CPE_CHANNELS; i++ ) { set_zero_fx( bwe_exc_extended_fx[i], L_FRAME32k + NL_BUFF_OFFSET ); @@ -364,9 +369,10 @@ ivas_error ivas_core_enc_fx( TCX_ENC_HANDLE hTcxEnc = st->hTcxEnc; Word16 Q_spec_old, L_spec; +#ifndef SIMPLIFY_SCALING_OLD_INP Scale_sig( old_inp_12k8_fx[n], L_INP_12k8, sub( Q1, Q_new[n] ) ); // Q0 Scale_sig( old_inp_16k_fx[n], L_INP, sub( Q1, Q_new[n] ) ); // Q0 - +#endif Scale_sig( st->hTcxEnc->Txnq, L_FRAME32k / 2 + 64, sub( negate( 1 ), st->hTcxEnc->q_Txnq ) ); /* Q(-1) */ st->hTcxEnc->q_Txnq = -Q1; move16(); @@ -374,10 +380,14 @@ ivas_error ivas_core_enc_fx( move16(); /* TCX core encoder */ +#ifdef SIMPLIFY_SCALING_OLD_INP + stereo_tcx_core_enc( st, old_inp_12k8_fx[n] + L_INP_MEM, old_inp_16k_fx[n] + L_INP_MEM, Aw_fx[n], lsp_new_fx[n], lsp_mid_fx[n], pitch_buf_fx[n], last_element_mode, vad_hover_flag[0], Q_new[n] ); +#else stereo_tcx_core_enc( st, old_inp_12k8_fx[n] + L_INP_MEM, old_inp_16k_fx[n] + L_INP_MEM, Aw_fx[n], lsp_new_fx[n], lsp_mid_fx[n], pitch_buf_fx[n], last_element_mode, vad_hover_flag[0], 0 ); Scale_sig( old_inp_12k8_fx[n], L_INP_12k8, sub( Q_new[n], Q1 ) ); // Q_new[n] - 1 Scale_sig( old_inp_16k_fx[n], L_INP, sub( Q_new[n], Q1 ) ); // Q_new[n] - 1 +#endif Scale_sig( st->hTcxEnc->old_out_fx, L_FRAME32k, negate( st->hTcxEnc->Q_old_out ) ); // scaling back to Q0 st->hTcxEnc->Q_old_out = 0; @@ -458,7 +468,9 @@ ivas_error ivas_core_enc_fx( FOR( n = 0; n < n_CoreChannels; n++ ) { st = sts[n]; +#ifndef SIMPLIFY_SCALING_OLD_INP Scale_sig( old_inp_16k_fx[n], L_INP, sub( Q1, Q_new[n] ) ); // Q0 +#endif IF( NE_16( st->element_mode, IVAS_CPE_DFT ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { st->hTcxEnc->exp_buf_speech_ltp = st->exp_buf_speech_enc; @@ -471,15 +483,22 @@ ivas_error ivas_core_enc_fx( Q_spec_old[1] = hCPE->hCoreCoder[1]->hTcxEnc->spectrum_long_e; move16(); +#ifdef SIMPLIFY_SCALING_OLD_INP + ivas_mdct_core_whitening_enc_fx( hCPE, old_inp_16k_fx, Q_new, old_wsp_fx, pitch_buf_fx_new, hMCT->p_mdst_spectrum_long_fx[cpe_id], hMCT->tnsBits[cpe_id], hMCT->p_orig_spectrum_long_fx[cpe_id], + hMCT->tnsSize[cpe_id], hMCT->p_param[cpe_id], hMCT->hBstr, 1, hMCT->nchan_out_woLFE, mdst_spectrum_e, orig_spectrum_e ); +#else ivas_mdct_core_whitening_enc_fx( hCPE, old_inp_16k_fx, old_wsp_fx, pitch_buf_fx_new, hMCT->p_mdst_spectrum_long_fx[cpe_id], hMCT->tnsBits[cpe_id], hMCT->p_orig_spectrum_long_fx[cpe_id], hMCT->tnsSize[cpe_id], hMCT->p_param[cpe_id], hMCT->hBstr, 1, hMCT->nchan_out_woLFE, mdst_spectrum_e, orig_spectrum_e ); +#endif FOR( i = 0; i < CPE_CHANNELS; i++ ) { st = sts[i]; Word16 nSubframes = NB_DIV; move16(); +#ifndef SIMPLIFY_SCALING_OLD_INP Scale_sig( old_inp_16k_fx[i], L_INP, sub( Q_new[i], Q1 ) ); // Q_new[n] - 1 +#endif if ( EQ_16( st->hTcxEnc->tcxMode, TCX_20 ) ) { nSubframes = 1; @@ -544,8 +563,9 @@ ivas_error ivas_core_enc_fx( FOR( i = 0; i < CPE_CHANNELS; i++ ) { st = sts[i]; +#ifndef SIMPLIFY_SCALING_OLD_INP Scale_sig( old_inp_16k_fx[i], L_INP, sub( Q1, Q_new[i] ) ); // Q0 - +#endif test(); IF( NE_16( st->element_mode, IVAS_CPE_DFT ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { @@ -571,11 +591,17 @@ ivas_error ivas_core_enc_fx( Q_spec_old[1] = hCPE->hCoreCoder[1]->hTcxEnc->spectrum_long_e; move16(); +#ifdef SIMPLIFY_SCALING_OLD_INP + stereo_mdct_core_enc_fx( hCPE, old_inp_16k_fx, Q_new, old_wsp_fx, pitch_buf_fx ); +#else stereo_mdct_core_enc_fx( hCPE, old_inp_16k_fx, old_wsp_fx, pitch_buf_fx ); +#endif FOR( i = 0; i < CPE_CHANNELS; i++ ) { +#ifndef SIMPLIFY_SCALING_OLD_INP Scale_sig( old_inp_16k_fx[i], L_INP, sub( Q_new[i], Q1 ) ); // Q_new[n] - 1 +#endif st = sts[i]; IF( EQ_16( st->hTcxEnc->tcxMode, TCX_20 ) ) { @@ -643,8 +669,9 @@ ivas_error ivas_core_enc_fx( * Postprocessing, BWEs and Updates *---------------------------------------------------------------------*/ +#ifndef REMOVE_UNUSED_BUFFER_CORE_ENC Word16 tmp_input_fx[L_FRAME48k], tmp_old_input_fx[L_FRAME48k], q_inp[2]; - +#endif FOR( n = 0; n < n_CoreChannels; n++ ) { st = sts[n]; @@ -659,11 +686,12 @@ ivas_error ivas_core_enc_fx( move16(); } +#ifndef REMOVE_UNUSED_BUFFER_CORE_ENC Copy( st->input_fx - input_frame, tmp_old_input_fx, input_frame ); Copy( st->input_fx, tmp_input_fx, input_frame ); q_inp[0] = st->q_old_inp; q_inp[1] = st->q_inp; - +#endif Scale_sig( st->input_fx - input_frame, shl( input_frame, 1 ), sub( -1, st->q_inp ) ); st->q_inp = -1; move16(); @@ -713,7 +741,9 @@ ivas_error ivas_core_enc_fx( * SWB(FB) BWE encoding *---------------------------------------------------------------------*/ +#ifndef SCALING_SWB_SPEECH_32 new_swb_speech_fx = new_swb_speech_buffer_fx + STEREO_DFT_OVL_MAX; +#endif new_swb_speech_fx_16 = new_swb_speech_buffer_fx_16 + STEREO_DFT_OVL_MAX; set16_fx( new_swb_speech_buffer_fx_16, 0, L_FRAME48k + STEREO_DFT_OVL_MAX ); shb_speech_fx = new_inp_resamp16k_fx[n]; /* reuse existing buffer: shb_speech[L_FRAME16k] */ @@ -746,7 +776,17 @@ ivas_error ivas_core_enc_fx( st->cldfbSynTd->Q_cldfb_state = sub( q_re_im_buf[n], 1 ); } +#ifdef SCALING_SWB_SPEECH_32 + Word32 *new_swb_speech_fx; + Word32 new_swb_speech_buffer_fx[L_FRAME48k + STEREO_DFT_OVL_MAX]; + set32_fx( new_swb_speech_buffer_fx, 0, L_FRAME48k + STEREO_DFT_OVL_MAX ); + new_swb_speech_fx = new_swb_speech_buffer_fx + STEREO_DFT_OVL_MAX; +#endif +#ifdef SCALING_SWB_SPEECH_32 + swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, shb_speech_fx ,& Q_shb_spch, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); +#else swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, new_swb_speech_fx, shb_speech_fx, &Q_shb_spch, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); +#endif st->cldfbSynTd->Q_cldfb_state = sub( q_re_im_buf[n], 1 ); } @@ -765,10 +805,11 @@ ivas_error ivas_core_enc_fx( // IF( st->tcxonly == 0 ) #endif { +#ifndef REMOVE_SCALING_SHB_SPEECH shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch Q_shb_spch = add( Q_shb_spch, shift ); - +#endif IF( st->hBWE_FD ) { shift = getScaleFactor16( st->hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k ); @@ -800,6 +841,11 @@ ivas_error ivas_core_enc_fx( } ELSE IF( EQ_16( st->extl, SWB_BWE ) || EQ_16( st->extl, FB_BWE ) ) { +#ifdef REMOVE_SCALING_SHB_SPEECH + shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); + Q_shb_spch = add( Q_shb_spch_16, shift ); + Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch +#endif Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, -Q16 ); // Q_shb_spch - 16 /* SWB(FB) BWE encoder */ swb_bwe_enc_ivas_fx( st, last_element_mode, old_inp_12k8_fx[n], old_inp_16k_fx[n], old_syn_12k8_16k_fx[n], new_swb_speech_fx_16, st->q_inp, shb_speech_fx, sub( Q_shb_spch, Q16 ), sub( Q_new[n], 1 ) ); @@ -817,6 +863,11 @@ ivas_error ivas_core_enc_fx( IF( st->hTdCngEnc != NULL && st->Opt_DTX_ON && ( GE_16( input_frame, L_FRAME32k ) || EQ_16( st->element_mode, IVAS_CPE_DFT ) ) ) { /* SHB DTX/CNG encoder */ +#ifdef REMOVE_SCALING_SHB_SPEECH + shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); + Q_shb_spch = add( Q_shb_spch_16, shift ); + Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch +#endif Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, negate( Q_shb_spch ) ); // Q0 #ifdef HARM_NON_LINEARITY swb_CNG_enc_fx( st, shb_speech_fx /* Unmodified */, old_syn_12k8_16k_fx[n] ); @@ -840,10 +891,21 @@ ivas_error ivas_core_enc_fx( stereo_icBWE_preproc_fx( hCPE, input_frame, new_swb_speech_buffer_fx_16 /*tmp buffer*/, q_new_swb_speech_buffer ); q_new_swb_speech_buffer = add( q_new_swb_speech_buffer, 16 ); +#ifndef SCALING_SWB_SPEECH_32 Copy_Scale_sig_16_32_no_sat( new_swb_speech_buffer_fx_16, new_swb_speech_buffer_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer+st->q_inp - 16 - > q_new_swb_speech_buffer+st->q_inp - Copy_Scale_sig_16_32_no_sat( voice_factors_fx[0], voice_factors_fx32[0], NB_SUBFR16k, Q16 ); // Q31 +#endif + Copy_Scale_sig_16_32_no_sat( voice_factors_fx[0], voice_factors_fx32[0], NB_SUBFR16k, Q16 ); // Q31 - stereo_icBWE_enc_ivas_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx32[0] ); +#ifdef REMOVE_SCALING_SHB_SPEECH + shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); + Q_shb_spch = add( Q_shb_spch_16, shift ); + Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch +#endif +#ifdef SCALING_SWB_SPEECH_32 + stereo_icBWE_enc_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx_16, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx32[0] ); +#else + stereo_icBWE_enc_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx32[0] ); +#endif IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { @@ -861,12 +923,14 @@ ivas_error ivas_core_enc_fx( } } +#ifndef REMOVE_UNUSED_BUFFER_CORE_ENC Copy( tmp_old_input_fx, st->input_fx - input_frame, input_frame ); Copy( tmp_input_fx, st->input_fx, input_frame ); st->q_old_inp = q_inp[0]; move16(); st->q_inp = q_inp[1]; move16(); +#endif #ifndef REMOVE_CAM_FROM_IVAS /*---------------------------------------------------------------------* diff --git a/lib_enc/ivas_mdct_core_enc_fx.c b/lib_enc/ivas_mdct_core_enc_fx.c index f4889bf5f..ac3305d74 100644 --- a/lib_enc/ivas_mdct_core_enc_fx.c +++ b/lib_enc/ivas_mdct_core_enc_fx.c @@ -1117,7 +1117,10 @@ void enc_prm_igf_mdct( void ivas_mdct_core_whitening_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - Word16 new_samples_fx[CPE_CHANNELS][L_INP], /* i : new samples Q0*/ + Word16 new_samples_fx[CPE_CHANNELS][L_INP], /* i : new samples Qnew-1*/ +#ifdef SIMPLIFY_SCALING_OLD_INP + Word16 Q_new_inp[CPE_CHANNELS], /* i : Q factor of input buffer */ +#endif Word16 old_wsp_fx[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/ Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k], /* o : floating pitch for each subframe Q6*/ Word32 *mdst_spectrum_long_fx[CPE_CHANNELS], /* o : buffer for MDST spectrum mdst_spectrum_e*/ @@ -1183,6 +1186,13 @@ void ivas_mdct_core_whitening_enc_fx( move16(); move16(); +#ifdef SIMPLIFY_SCALING_OLD_INP + FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) + { + Scale_sig( new_samples_fx[ch], L_INP, sub( Q1, Q_new_inp[ch] ) ); // Q0 + } +#endif + /*--------------------------------------------------------------* * Initialization *---------------------------------------------------------------*/ @@ -1222,6 +1232,7 @@ void ivas_mdct_core_whitening_enc_fx( windowedSignal_fx[0] = orig_spectrum_long[0]; /* NOTE temporarily available */ windowedSignal_fx[1] = temp_buffer; /* orig_spectrum_long isn't long enough */ + /*--------------------------------------------------------------* * TCX20/TCX10 switching decision *---------------------------------------------------------------*/ @@ -1321,6 +1332,7 @@ void ivas_mdct_core_whitening_enc_fx( move32(); } } + /*--------------------------------------------------------------* * Transform Kernel Switching, Stereo Pre-Processing, and TNS *---------------------------------------------------------------*/ @@ -1522,6 +1534,7 @@ void ivas_mdct_core_whitening_enc_fx( move16(); move16(); } + FOR( n = 0; n < nSubframes; n++ ) { test(); @@ -1708,7 +1721,6 @@ void ivas_mdct_core_whitening_enc_fx( init_tcx_enc_info_fx( sts[ch], &L_subframe, &L_subframeTCX, &tcx_subframe_coded_lines ); - nSubframes = NB_DIV; move16(); shift = 1; @@ -1758,6 +1770,7 @@ void ivas_mdct_core_whitening_enc_fx( } } } + TCX_ENC_HANDLE hTcxEnc = NULL; q_min = 0; move16(); @@ -1810,10 +1823,12 @@ void ivas_mdct_core_whitening_enc_fx( } } TNSAnalysisStereo_fx( sts, mdst_spectrum_fx, 0, tnsSize, tnsBits, param_core, mct_on ); + /*--------------------------------------------------------------* * Envelope Quantization and FDNS *---------------------------------------------------------------*/ - /* Common q for spectrum and mdst */ + + /* Common q for spectrum and mdst */ q_min = 0; move16(); q_com = Q31; @@ -2062,7 +2077,6 @@ void ivas_mdct_core_whitening_enc_fx( init_tcx_enc_info_fx( st, &L_subframe, &L_subframeTCX, &tcx_subframe_coded_lines ); - IF( NE_16( st->hTcxEnc->tcxMode, TCX_20 ) ) { /* nSubframes = NB_DIV = 2 */ @@ -2091,6 +2105,7 @@ void ivas_mdct_core_whitening_enc_fx( Scale_sig32( st->hTcxEnc->spectrum_fx[n] + L_subframe, sub( L_subframeTCX, L_subframe ), sub( exp_tmp, st->hTcxEnc->spectrum_e[n] ) ); } } + /*--------------------------------------------------------------* * TNS *---------------------------------------------------------------*/ @@ -2313,6 +2328,7 @@ void ivas_mdct_core_whitening_enc_fx( /*--------------------------------------------------------------------------------* * SNS parameters *--------------------------------------------------------------------------------*/ + test(); test(); test(); @@ -2474,11 +2490,25 @@ void ivas_mdct_core_whitening_enc_fx( } } +#ifdef SIMPLIFY_SCALING_OLD_INP + // scaling the input buffer back to Q_new-1 - actually not needed because the buffer is not used in the subsequent processing + FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) + { + Scale_sig( new_samples_fx[ch], L_INP, sub( Q_new_inp[ch], Q1 ) ); // Q0 + } +#endif + pop_wmops(); return; } +/*--------------------------------------------------------------* + * ivas_mdct_quant_coder() + * + * Spectrum quantization and coding + *---------------------------------------------------------------*/ + void ivas_mdct_quant_coder_fx( CPE_ENC_HANDLE hCPE, /* i/o: Encoder CPE handle */ Word16 tnsBits[CPE_CHANNELS][NB_DIV], /* i : bits needed for TNS parameters */ diff --git a/lib_enc/ivas_stereo_icbwe_enc_fx.c b/lib_enc/ivas_stereo_icbwe_enc_fx.c index 61a2f0490..9fc7059b7 100644 --- a/lib_enc/ivas_stereo_icbwe_enc_fx.c +++ b/lib_enc/ivas_stereo_icbwe_enc_fx.c @@ -611,13 +611,23 @@ static void icbwe_dft_stereo_param_ivas_fx( return; } -void stereo_icBWE_enc_ivas_fx( +/*-------------------------------------------------------------------* + * stereo_icBWE_enc() + * + * Encode the spatial mapping of reference to the non-reference channels in HB + *-------------------------------------------------------------------*/ + +void stereo_icBWE_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ const Word32 shb_speech_ref_fx[], /* i : SHB speech ref channel Q31-shb_speech_ref_e*/ const Word16 shb_speech_ref_e, /* i : SHB speech ref channel */ - Word32 shb_speech_nonref_fx[], /* i/o: SHB speech non-ref channel Q31-shb_speech_nonref_e*/ - Word16 shb_speech_nonref_e, /* i/o: SHB speech non-ref channel */ - const Word32 *voice_factors_fx /* i : voicing factors Q31 */ +#ifdef SCALING_SWB_SPEECH_32 + Word16 shb_speech_nonref_fx_16[], /* i/o: SHB speech non-ref channel Q15-shb_speech_nonref_e*/ +#else + Word32 shb_speech_nonref_fx[], /* i/o: SHB speech non-ref channel Q31-shb_speech_nonref_e*/ +#endif + Word16 shb_speech_nonref_e, /* i/o: SHB speech non-ref channel */ + const Word32 *voice_factors_fx /* i : voicing factors Q31 */ ) { Word16 i, j, k, nbSubFr; @@ -641,6 +651,11 @@ void stereo_icBWE_enc_ivas_fx( Word32 temp1_fx, temp2_fx; Word16 temp1_e, temp2_e, shb_frame_ref_e, shb_frame_nonref_e, gDes_e, tmp, exp; +#ifdef SCALING_SWB_SPEECH_32 + Word32 shb_speech_nonref_fx[L_FRAME48k + STEREO_DFT_OVL_MAX]; + + Copy_Scale_sig_16_32_no_sat( shb_speech_nonref_fx_16, shb_speech_nonref_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer+st->q_inp - 16 - > q_new_swb_speech_buffer+st->q_inp +#endif /* initialization */ hStereoDft = hCPE->hStereoDft; diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index 705635d88..2c197ed0b 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -126,9 +126,13 @@ static void sync_tcx_mode_fx( * * joint stereo mdct core encoder *-------------------------------------------------------------------*/ + void stereo_mdct_core_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q0*/ + Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q_new-1*/ +#ifdef SIMPLIFY_SCALING_OLD_INP + Word16 Q_new_inp[CPE_CHANNELS], /* i : Q factor of input buffer */ +#endif Word16 old_wsp[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/ Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k] /* o : floating pitch for each subframe Q6*/ ) @@ -284,8 +288,13 @@ void stereo_mdct_core_enc_fx( * - TNS *---------------------------------------------------------------*/ +#ifdef SIMPLIFY_SCALING_OLD_INP + ivas_mdct_core_whitening_enc_fx( hCPE, new_samples, Q_new_inp, old_wsp, pitch_buf_fx, p_mdst_spectrum_long_fx, + tnsBits, p_orig_spectrum_long_fx, tnsSize, p_param, hBstr, 0, CPE_CHANNELS, mdst_spectrum_e, orig_spectrum_e ); +#else ivas_mdct_core_whitening_enc_fx( hCPE, new_samples, old_wsp, pitch_buf_fx, p_mdst_spectrum_long_fx, tnsBits, p_orig_spectrum_long_fx, tnsSize, p_param, hBstr, 0, CPE_CHANNELS, mdst_spectrum_e, orig_spectrum_e ); +#endif FOR( i = 0; i < CPE_CHANNELS; i++ ) { diff --git a/lib_enc/ivas_tcx_core_enc_fx.c b/lib_enc/ivas_tcx_core_enc_fx.c index 1b2833473..9d83d8df1 100644 --- a/lib_enc/ivas_tcx_core_enc_fx.c +++ b/lib_enc/ivas_tcx_core_enc_fx.c @@ -151,16 +151,26 @@ void stereo_tcx_init_enc_fx( *-------------------------------------------------------------------*/ void stereo_tcx_core_enc( - Encoder_State *st, /* i/o: encoder state structure */ - const Word16 new_samples_12k8[], /* i : buffer of input signal @12.8 kHz Q_new*/ - const Word16 new_samples_16k[], /* i : buffer of input signal @16 kHz Q_new*/ + Encoder_State *st, /* i/o: encoder state structure */ +#ifdef SIMPLIFY_SCALING_OLD_INP + Word16 new_samples_12k8[], /* i : buffer of input signal @12.8 kHz Q_new-1*/ + Word16 new_samples_16k[], /* i : buffer of input signal @16 kHz Q_new-1*/ +#else + const Word16 new_samples_12k8[], /* i : buffer of input signal @12.8 kHz Q_new*/ + const Word16 new_samples_16k[], /* i : buffer of input signal @16 kHz Q_new*/ +#endif const Word16 Aw_fx[], /* i : weighted A(z) unquant. for subframes, Q12 */ Word16 lsp_new_fx[], /* i : LSPs at the end of the frame, Q15 */ Word16 lsp_mid_fx[], /* i : LSPs in the middle of the frame, Q15 */ Word16 pitch_buf_fx[NB_SUBFR16k], /* o : pitch for each subframe, Q6 */ const Word16 last_element_mode, /* i : last element mode, Q0 */ const Word16 vad_hover_flag, /* i : VAD hangover flag, Q0 */ - Word16 Q_new ) +#ifdef SIMPLIFY_SCALING_OLD_INP + Word16 Q_new /* i : Q factor of input buffer */ +#else + Word16 Q_new +#endif +) { TCX_ENC_HANDLE hTcxEnc; Word16 i, n; @@ -173,7 +183,8 @@ void stereo_tcx_core_enc( Word16 last_core_orig; /*Bits*/ - Word16 nbits_start, total_nbbits, nbits_header; + Word16 nbits_start, + total_nbbits, nbits_header; Word16 target_bits[2], bitsAvailable; Word16 nbits_lpc[2]; Word16 tnsSize[2]; /* number of tns parameters put into prm */ @@ -202,15 +213,12 @@ void stereo_tcx_core_enc( /*HM*/ Word16 indexBuffer[2 * ( ( N_MAX / 2 ) + 1 )]; - Word16 s; - CONTEXT_HM_CONFIG hm_cfg[2]; /* bitstream */ BSTR_ENC_HANDLE hBstr = st->hBstr; - push_wmops( "stereo_tcx_core_enc" ); /*Sanity check*/ @@ -300,11 +308,17 @@ void stereo_tcx_core_enc( IF( EQ_16( st->L_frame, L_FRAME ) ) { - p_new_samples = new_samples_12k8; /* Q_new */ +#ifdef SIMPLIFY_SCALING_OLD_INP + Scale_sig( new_samples_12k8, L_INP_12k8, sub( Q1, Q_new ) ); // Q0 +#endif + p_new_samples = new_samples_12k8; /* Q0 */ } ELSE { - p_new_samples = new_samples_16k; /* Q_new */ +#ifdef SIMPLIFY_SCALING_OLD_INP + Scale_sig( new_samples_16k, L_INP, sub( Q1, Q_new ) ); // Q0 +#endif + p_new_samples = new_samples_16k; /* Q0 */ } /*--------------------------------------------------------------* @@ -372,6 +386,10 @@ void stereo_tcx_core_enc( st->prev_Q_new = 0; st->Q_old = 0; +#ifdef SIMPLIFY_SCALING_OLD_INP + Word16 Q_new_orig = Q_new; + move16(); +#endif Q_new = 0; move16(); @@ -685,6 +703,7 @@ void stereo_tcx_core_enc( /*--------------------------------------------------------------------------------* * Encode TCX20/10 parameters *--------------------------------------------------------------------------------*/ + writeTCXparam_fx( st, hBstr, hm_cfg, param_core, nbits_header, nbits_start, add( nbits_lpc[0], nbits_lpc[1] ), NULL, NULL, NULL, -1 ); total_nbbits = sub( hBstr->nb_bits_tot, nbits_start ); @@ -709,6 +728,7 @@ void stereo_tcx_core_enc( move16(); } } + Scale_sig( st->synth, st->L_frame, -Q_new ); IF( st->tcxonly == 0 ) { @@ -716,6 +736,18 @@ void stereo_tcx_core_enc( move16(); } +#ifdef SIMPLIFY_SCALING_OLD_INP + // scaling the input buffer back to Q_new-1 - actually not needed because the buffer is not used in the subsequent processing + IF( EQ_16( st->L_frame, L_FRAME ) ) + { + Scale_sig( new_samples_12k8, L_INP_12k8, sub( Q_new_orig, Q1 ) ); // Q_new-1 + } + ELSE + { + Scale_sig( new_samples_16k, L_INP, sub( Q_new_orig, Q1 ) ); // Q_new-1 + } +#endif + pop_wmops(); return; } diff --git a/lib_enc/swb_pre_proc_fx.c b/lib_enc/swb_pre_proc_fx.c index 04d546ffa..a36715bd5 100644 --- a/lib_enc/swb_pre_proc_fx.c +++ b/lib_enc/swb_pre_proc_fx.c @@ -773,10 +773,12 @@ void swb_pre_proc_fx( /*full implementation pending*/ void swb_pre_proc_ivas_fx( - Encoder_State *st, /* i/o: encoder state structure */ - Word16 *new_swb_speech, /* o : original input signal at 32kHz - st->q_inp */ + Encoder_State *st, /* i/o: encoder state structure */ + Word16 *new_swb_speech, /* o : original input signal at 32kHz - st->q_inp */ +#ifndef SCALING_SWB_SPEECH_32 Word32 *new_swb_speech_fx, /* o : original input signal at 32kHz - Q - q_reImBuffer */ - Word16 *shb_speech, /* o : SHB target signal (6-14kHz) at 16kHz- Q(Q_shb_spch) */ +#endif + Word16 *shb_speech, /* o : SHB target signal (6-14kHz) at 16kHz- Q(Q_shb_spch) */ Word16 *Q_shb_spch, Word32 realBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : real buffer Q - q_reImbuffer */ Word32 imagBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : imag buffer Q - q_reImbuffer */ @@ -1063,6 +1065,12 @@ void swb_pre_proc_ivas_fx( ELSE /* IVAS_CPE_DFT */ { Word16 out_start_ind, out_end_ind; +#ifdef SCALING_SWB_SPEECH_32 + Word32 new_swb_speech_buffer_fx[L_FRAME48k + STEREO_DFT_OVL_MAX]; + Word32 *new_swb_speech_fx; + set32_fx( new_swb_speech_buffer_fx, 0, L_FRAME48k + STEREO_DFT_OVL_MAX ); + new_swb_speech_fx = new_swb_speech_buffer_fx + STEREO_DFT_OVL_MAX; +#endif stereo_dft_enc_synthesize_fx( hCPE->hStereoDft, new_swb_speech_fx, &out_start_ind, &out_end_ind, st->idchan, input_Fs, 32000, 0, NULL ); Copy_Scale_sig32_16( new_swb_speech_fx - STEREO_DFT_OVL_MAX, new_swb_speech - STEREO_DFT_OVL_MAX, L_FRAME48k + STEREO_DFT_OVL_MAX, add( st->q_inp, add( q_reImBuffer, 1 ) ) ); // st->q_inp -- GitLab From 8f55cce016a358701e34b1d390228c3e6231d488 Mon Sep 17 00:00:00 2001 From: vaclav Date: Thu, 22 Jan 2026 18:47:39 +0100 Subject: [PATCH 02/12] updt --- lib_com/ivas_prot_fx.h | 4 +++ lib_com/options.h | 3 ++- lib_enc/ivas_core_enc_fx.c | 42 ++++++++++++++++++++---------- lib_enc/ivas_stereo_icbwe_enc_fx.c | 6 +++++ 4 files changed, 40 insertions(+), 15 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index e2f98b524..25f1c07d6 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -1367,7 +1367,11 @@ void stereo_icBWE_enc_fx( Word32 shb_speech_nonref_fx[], /* i/o: SHB speech non-ref channel */ #endif Word16 shb_speech_nonref_e, /* i/o: SHB speech non-ref channel */ +#ifdef SCALING_SWB_SPEECH_32 + const Word16 *voice_factors_fx /* i : voicing factors Q15 */ +#else const Word32 *voice_factors_fx /* i : voicing factors Q31 */ + #endif ); void initMdctStereoDecData_fx( diff --git a/lib_com/options.h b/lib_com/options.h index fa11260fa..1b54ab393 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -118,7 +118,8 @@ #define HARM_COREDECODER_FUNCTIONS /* VA: basop issue 2347: Remove various duplicated code in core-decoder */ #define SIMPLIFY_SCALING_OLD_INP #define REMOVE_UNUSED_BUFFER_CORE_ENC -#define REMOVE_SCALING_SHB_SPEECH +#define REMOVE_SCALING_SHB_SPEECH_BE +#define REMOVE_SCALING_SHB_SPEECH_NONBE #define SCALING_SWB_SPEECH_32 /* #################### End BE switches ################################## */ diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c index cf1456364..181714dcb 100644 --- a/lib_enc/ivas_core_enc_fx.c +++ b/lib_enc/ivas_core_enc_fx.c @@ -783,7 +783,7 @@ ivas_error ivas_core_enc_fx( new_swb_speech_fx = new_swb_speech_buffer_fx + STEREO_DFT_OVL_MAX; #endif #ifdef SCALING_SWB_SPEECH_32 - swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, shb_speech_fx ,& Q_shb_spch, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); + swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, shb_speech_fx ,&Q_shb_spch, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); #else swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, new_swb_speech_fx, shb_speech_fx, &Q_shb_spch, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); #endif @@ -798,6 +798,9 @@ ivas_error ivas_core_enc_fx( } } +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + Word16 flag_shb_scale = 0; // just temporary to keep BE, it will disappear +#endif Word16 Q_shb_spch_16 = Q_shb_spch; move16(); #ifdef FIX_2344_ALIGN_PREPROC @@ -805,7 +808,7 @@ ivas_error ivas_core_enc_fx( // IF( st->tcxonly == 0 ) #endif { -#ifndef REMOVE_SCALING_SHB_SPEECH +#ifndef REMOVE_SCALING_SHB_SPEECH_BE shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch Q_shb_spch = add( Q_shb_spch, shift ); @@ -841,10 +844,11 @@ ivas_error ivas_core_enc_fx( } ELSE IF( EQ_16( st->extl, SWB_BWE ) || EQ_16( st->extl, FB_BWE ) ) { -#ifdef REMOVE_SCALING_SHB_SPEECH +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + flag_shb_scale = 1; shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); Q_shb_spch = add( Q_shb_spch_16, shift ); - Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch + Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch #endif Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, -Q16 ); // Q_shb_spch - 16 /* SWB(FB) BWE encoder */ @@ -863,10 +867,14 @@ ivas_error ivas_core_enc_fx( IF( st->hTdCngEnc != NULL && st->Opt_DTX_ON && ( GE_16( input_frame, L_FRAME32k ) || EQ_16( st->element_mode, IVAS_CPE_DFT ) ) ) { /* SHB DTX/CNG encoder */ -#ifdef REMOVE_SCALING_SHB_SPEECH - shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); - Q_shb_spch = add( Q_shb_spch_16, shift ); - Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + if( flag_shb_scale == 0 ) + { + flag_shb_scale = 1; + shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); + Q_shb_spch = add( Q_shb_spch_16, shift ); + Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch + } #endif Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, negate( Q_shb_spch ) ); // Q0 #ifdef HARM_NON_LINEARITY @@ -883,26 +891,32 @@ ivas_error ivas_core_enc_fx( Word16 q_new_swb_speech_buffer = getScaleFactor16( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX ); Scale_sig( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX, q_new_swb_speech_buffer ); // st->q_inp+q_new_swb_speech_buffer q_new_swb_speech_buffer = add( st->q_inp, q_new_swb_speech_buffer ); + test(); test(); IF( n == 0 && GE_32( input_Fs, 32000 ) && hStereoICBWE != NULL ) { +#ifndef SCALING_SWB_SPEECH_32 Word32 voice_factors_fx32[CPE_CHANNELS][NB_SUBFR16k]; +#endif stereo_icBWE_preproc_fx( hCPE, input_frame, new_swb_speech_buffer_fx_16 /*tmp buffer*/, q_new_swb_speech_buffer ); q_new_swb_speech_buffer = add( q_new_swb_speech_buffer, 16 ); #ifndef SCALING_SWB_SPEECH_32 Copy_Scale_sig_16_32_no_sat( new_swb_speech_buffer_fx_16, new_swb_speech_buffer_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer+st->q_inp - 16 - > q_new_swb_speech_buffer+st->q_inp -#endif Copy_Scale_sig_16_32_no_sat( voice_factors_fx[0], voice_factors_fx32[0], NB_SUBFR16k, Q16 ); // Q31 +#endif -#ifdef REMOVE_SCALING_SHB_SPEECH - shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); - Q_shb_spch = add( Q_shb_spch_16, shift ); - Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + if ( flag_shb_scale == 0 ) + { + shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); + Q_shb_spch = add( Q_shb_spch_16, shift ); + Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch + } #endif #ifdef SCALING_SWB_SPEECH_32 - stereo_icBWE_enc_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx_16, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx32[0] ); + stereo_icBWE_enc_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx_16, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx[0] ); #else stereo_icBWE_enc_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx32[0] ); #endif diff --git a/lib_enc/ivas_stereo_icbwe_enc_fx.c b/lib_enc/ivas_stereo_icbwe_enc_fx.c index 9fc7059b7..95d44fba5 100644 --- a/lib_enc/ivas_stereo_icbwe_enc_fx.c +++ b/lib_enc/ivas_stereo_icbwe_enc_fx.c @@ -627,7 +627,11 @@ void stereo_icBWE_enc_fx( Word32 shb_speech_nonref_fx[], /* i/o: SHB speech non-ref channel Q31-shb_speech_nonref_e*/ #endif Word16 shb_speech_nonref_e, /* i/o: SHB speech non-ref channel */ +#ifdef SCALING_SWB_SPEECH_32 + const Word16 *voice_factors_fx16 /* i : voicing factors Q15 */ +#else const Word32 *voice_factors_fx /* i : voicing factors Q31 */ +#endif ) { Word16 i, j, k, nbSubFr; @@ -653,8 +657,10 @@ void stereo_icBWE_enc_fx( #ifdef SCALING_SWB_SPEECH_32 Word32 shb_speech_nonref_fx[L_FRAME48k + STEREO_DFT_OVL_MAX]; + Word32 voice_factors_fx[NB_SUBFR16k]; Copy_Scale_sig_16_32_no_sat( shb_speech_nonref_fx_16, shb_speech_nonref_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer+st->q_inp - 16 - > q_new_swb_speech_buffer+st->q_inp + Copy_Scale_sig_16_32_no_sat( voice_factors_fx16, voice_factors_fx, NB_SUBFR16k, Q16 ); // Q31 #endif /* initialization */ -- GitLab From 764c841db64d968be85c72812069be4c6dab2993 Mon Sep 17 00:00:00 2001 From: vaclav Date: Fri, 23 Jan 2026 08:04:03 +0100 Subject: [PATCH 03/12] updt --- lib_enc/cng_enc_fx.c | 16 ++++++++-- lib_enc/evs_enc_fx.c | 4 +++ lib_enc/ivas_core_enc_fx.c | 60 +++++++++++++++----------------------- lib_enc/prot_fx_enc.h | 11 +++++-- lib_enc/swb_bwe_enc_fx.c | 12 +++++++- lib_enc/swb_pre_proc_fx.c | 1 - 6 files changed, 60 insertions(+), 44 deletions(-) diff --git a/lib_enc/cng_enc_fx.c b/lib_enc/cng_enc_fx.c index 1bc7cab41..abdbc2cd2 100644 --- a/lib_enc/cng_enc_fx.c +++ b/lib_enc/cng_enc_fx.c @@ -2972,9 +2972,14 @@ void swb_CNG_enc_fx( #else void swb_CNG_enc_ivas_fx( #endif - Encoder_State *st, /* i/o: State structure */ - const Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz Q0 */ - const Word16 *syn_12k8_16k_fx /* i : ACELP core synthesis at 12.8kHz or 16kHz Q0 */ + Encoder_State *st, /* i/o: State structure */ +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + const Word16 *shb_speech_fx_orig, /* i : SHB target signal (6-14kHz) at 16kHz Q_shb_spch */ + const Word16 Q_shb_spch, +#else + const Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz Q0 */ +#endif + const Word16 *syn_12k8_16k_fx /* i : ACELP core synthesis at 12.8kHz or 16kHz Q0 */ ) { Word16 shb_SID_updt; @@ -2987,6 +2992,11 @@ void swb_CNG_enc_ivas_fx( test(); IF( GE_32( st->input_Fs, L_FRAME32k * FRAMES_PER_SEC ) ) { +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + Word16 shb_speech_fx[L_FRAME16k]; + Copy_Scale_sig( shb_speech_fx_orig, shb_speech_fx, L_FRAME16k, negate( Q_shb_spch ) ); // Q0 +#endif + /* decide if SHB SID encoding or not */ #ifdef HARM_NON_LINEARITY shb_SID_updt = shb_DTX_fx( st, shb_speech_fx, syn_12k8_16k_fx ); diff --git a/lib_enc/evs_enc_fx.c b/lib_enc/evs_enc_fx.c index 34abe9537..12e907f09 100644 --- a/lib_enc/evs_enc_fx.c +++ b/lib_enc/evs_enc_fx.c @@ -528,7 +528,11 @@ ivas_error evs_enc_fx( test(); IF( st->Opt_DTX_ON && GE_16( input_frame, L_FRAME32k ) ) { +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + swb_CNG_enc_fx( st, shb_speech, 0, old_syn_12k8_16k ); +#else swb_CNG_enc_fx( st, shb_speech, old_syn_12k8_16k ); +#endif } /*---------------------------------------------------------------------* diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c index 181714dcb..1eb549753 100644 --- a/lib_enc/ivas_core_enc_fx.c +++ b/lib_enc/ivas_core_enc_fx.c @@ -777,13 +777,7 @@ ivas_error ivas_core_enc_fx( } #ifdef SCALING_SWB_SPEECH_32 - Word32 *new_swb_speech_fx; - Word32 new_swb_speech_buffer_fx[L_FRAME48k + STEREO_DFT_OVL_MAX]; - set32_fx( new_swb_speech_buffer_fx, 0, L_FRAME48k + STEREO_DFT_OVL_MAX ); - new_swb_speech_fx = new_swb_speech_buffer_fx + STEREO_DFT_OVL_MAX; -#endif -#ifdef SCALING_SWB_SPEECH_32 - swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, shb_speech_fx ,&Q_shb_spch, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); + swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, shb_speech_fx, &Q_shb_spch, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); #else swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, new_swb_speech_fx, shb_speech_fx, &Q_shb_spch, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); #endif @@ -798,9 +792,10 @@ ivas_error ivas_core_enc_fx( } } -#ifdef REMOVE_SCALING_SHB_SPEECH_BE - Word16 flag_shb_scale = 0; // just temporary to keep BE, it will disappear +#ifdef REMOVE_SCALING_SHB_SPEECH_NONBE + Word16 shift_shb_spch = 0; #endif + Q_shb_spch = 0; Word16 Q_shb_spch_16 = Q_shb_spch; move16(); #ifdef FIX_2344_ALIGN_PREPROC @@ -808,11 +803,15 @@ ivas_error ivas_core_enc_fx( // IF( st->tcxonly == 0 ) #endif { -#ifndef REMOVE_SCALING_SHB_SPEECH_BE shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); +#ifdef REMOVE_SCALING_SHB_SPEECH_NONBE + shift_shb_spch = shift; +#endif +#ifndef REMOVE_SCALING_SHB_SPEECH_NONBE Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch - Q_shb_spch = add( Q_shb_spch, shift ); #endif + Q_shb_spch = add( Q_shb_spch, shift ); + IF( st->hBWE_FD ) { shift = getScaleFactor16( st->hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k ); @@ -844,13 +843,9 @@ ivas_error ivas_core_enc_fx( } ELSE IF( EQ_16( st->extl, SWB_BWE ) || EQ_16( st->extl, FB_BWE ) ) { -#ifdef REMOVE_SCALING_SHB_SPEECH_BE - flag_shb_scale = 1; - shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); - Q_shb_spch = add( Q_shb_spch_16, shift ); - Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch -#endif +#ifndef REMOVE_SCALING_SHB_SPEECH_BE Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, -Q16 ); // Q_shb_spch - 16 +#endif /* SWB(FB) BWE encoder */ swb_bwe_enc_ivas_fx( st, last_element_mode, old_inp_12k8_fx[n], old_inp_16k_fx[n], old_syn_12k8_16k_fx[n], new_swb_speech_fx_16, st->q_inp, shb_speech_fx, sub( Q_shb_spch, Q16 ), sub( Q_new[n], 1 ) ); } @@ -867,18 +862,15 @@ ivas_error ivas_core_enc_fx( IF( st->hTdCngEnc != NULL && st->Opt_DTX_ON && ( GE_16( input_frame, L_FRAME32k ) || EQ_16( st->element_mode, IVAS_CPE_DFT ) ) ) { /* SHB DTX/CNG encoder */ -#ifdef REMOVE_SCALING_SHB_SPEECH_BE - if( flag_shb_scale == 0 ) - { - flag_shb_scale = 1; - shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); - Q_shb_spch = add( Q_shb_spch_16, shift ); - Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch - } -#endif +#ifndef REMOVE_SCALING_SHB_SPEECH_BE Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, negate( Q_shb_spch ) ); // Q0 +#endif #ifdef HARM_NON_LINEARITY +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + swb_CNG_enc_fx( st, shb_speech_fx, Q_shb_spch_16, old_syn_12k8_16k_fx[n] ); +#else swb_CNG_enc_fx( st, shb_speech_fx /* Unmodified */, old_syn_12k8_16k_fx[n] ); +#endif #else swb_CNG_enc_ivas_fx( st, shb_speech_fx /* Unmodified */, old_syn_12k8_16k_fx[n] ); #endif @@ -891,7 +883,7 @@ ivas_error ivas_core_enc_fx( Word16 q_new_swb_speech_buffer = getScaleFactor16( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX ); Scale_sig( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX, q_new_swb_speech_buffer ); // st->q_inp+q_new_swb_speech_buffer q_new_swb_speech_buffer = add( st->q_inp, q_new_swb_speech_buffer ); - + test(); test(); IF( n == 0 && GE_32( input_Fs, 32000 ) && hStereoICBWE != NULL ) @@ -901,20 +893,16 @@ ivas_error ivas_core_enc_fx( #endif stereo_icBWE_preproc_fx( hCPE, input_frame, new_swb_speech_buffer_fx_16 /*tmp buffer*/, q_new_swb_speech_buffer ); - q_new_swb_speech_buffer = add( q_new_swb_speech_buffer, 16 ); + q_new_swb_speech_buffer = add( q_new_swb_speech_buffer, Q16 ); #ifndef SCALING_SWB_SPEECH_32 Copy_Scale_sig_16_32_no_sat( new_swb_speech_buffer_fx_16, new_swb_speech_buffer_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer+st->q_inp - 16 - > q_new_swb_speech_buffer+st->q_inp - Copy_Scale_sig_16_32_no_sat( voice_factors_fx[0], voice_factors_fx32[0], NB_SUBFR16k, Q16 ); // Q31 + Copy_Scale_sig_16_32_no_sat( voice_factors_fx[0], voice_factors_fx32[0], NB_SUBFR16k, Q16 ); // Q31 #endif -#ifdef REMOVE_SCALING_SHB_SPEECH_BE - if ( flag_shb_scale == 0 ) - { - shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); - Q_shb_spch = add( Q_shb_spch_16, shift ); - Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch - } +#ifdef REMOVE_SCALING_SHB_SPEECH_NONBE + Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift_shb_spch ); // Q_shb_spch #endif + #ifdef SCALING_SWB_SPEECH_32 stereo_icBWE_enc_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx_16, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx[0] ); #else diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 7e172b31d..357c8c81d 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -640,8 +640,13 @@ void swb_bwe_enc_ivas_fx( Word16 Q_slb_speech ); void swb_CNG_enc_fx( - Encoder_State *st_fx, /* i/o: State structure */ - const Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */ + Encoder_State *st_fx, /* i/o: State structure */ +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + const Word16 *shb_speech_fx_orig, /* i : SHB target signal (6-14kHz) at 16kHz Q_shb_spch */ + const Word16 Q_shb_spch, +#else + const Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */ +#endif const Word16 *syn_12k8_16k_fx /* i : ACELP core synthesis at 12.8kHz or 16kHz */ ); @@ -880,7 +885,7 @@ void gsc_enc_fx( #ifndef FIX_1904_HARM_GSC_ENC Word16 *lsf_new, /* i : ISFs at the end of the frame */ #else - const Word16 *lsf_new, /* i : ISFs at the end of the frame */ + const Word16 *lsf_new, /* i : ISFs at the end of the frame */ #endif Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill */ Word16 *tmp_noise, /* o : noise energy */ diff --git a/lib_enc/swb_bwe_enc_fx.c b/lib_enc/swb_bwe_enc_fx.c index 6e4e8b391..59504ea6b 100644 --- a/lib_enc/swb_bwe_enc_fx.c +++ b/lib_enc/swb_bwe_enc_fx.c @@ -262,6 +262,7 @@ void wb_bwe_enc_ivas_fx( * * SWB BWE encoder (only for 32kHz signals) *-------------------------------------------------------------------*/ + void swb_bwe_enc_ivas_fx( Encoder_State *st_fx, /* i/o: encoder state structure */ const Word16 last_element_mode, /* i : last element mode */ @@ -270,7 +271,11 @@ void swb_bwe_enc_ivas_fx( const Word16 *old_syn_12k8_16k_fx, /* i : ACELP core synthesis at 12.8kHz or 16kHz */ const Word16 *new_swb_speech_fx, /* i : original input signal at 32kHz */ const Word16 Q_new_swb_speech, /* i : Q for new_swb_speech_fx */ - Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */ +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + Word16 *shb_speech_fx_orig, /* i : SHB target signal (6-14kHz) at 16kHz */ +#else + Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */ +#endif Word16 Q_shb_speech, Word16 Q_slb_speech ) { @@ -304,6 +309,11 @@ void swb_bwe_enc_ivas_fx( move16(); Word16 fb_band_begin; Word16 q_new_input_hp; +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + Word16 shb_speech_fx[L_FRAME16k]; + + Copy_Scale_sig( shb_speech_fx_orig, shb_speech_fx, L_FRAME16k, Q_shb_speech ); // Q_shb_spch +#endif FD_BWE_ENC_HANDLE hBWE_FD = st_fx->hBWE_FD; TD_BWE_ENC_HANDLE hBWE_TD = st_fx->hBWE_TD; diff --git a/lib_enc/swb_pre_proc_fx.c b/lib_enc/swb_pre_proc_fx.c index a36715bd5..7c549c3b1 100644 --- a/lib_enc/swb_pre_proc_fx.c +++ b/lib_enc/swb_pre_proc_fx.c @@ -771,7 +771,6 @@ void swb_pre_proc_fx( * - Common SWB TBE and SWB BWE pre-processing *-------------------------------------------------------------------*/ -/*full implementation pending*/ void swb_pre_proc_ivas_fx( Encoder_State *st, /* i/o: encoder state structure */ Word16 *new_swb_speech, /* o : original input signal at 32kHz - st->q_inp */ -- GitLab From 9b4e5fb729ec20e4081fd7c2ec99fff7a18a29d6 Mon Sep 17 00:00:00 2001 From: vaclav Date: Fri, 23 Jan 2026 09:02:08 +0100 Subject: [PATCH 04/12] updt --- lib_com/ivas_prot_fx.h | 4 +++ lib_com/prot_fx.h | 10 +++--- lib_enc/cng_enc_fx.c | 16 ++-------- lib_enc/evs_enc_fx.c | 4 --- lib_enc/ivas_core_enc_fx.c | 50 ++++++++++++++++++------------ lib_enc/ivas_stereo_icbwe_enc_fx.c | 23 +++++++++++--- lib_enc/prot_fx_enc.h | 23 +++++++------- lib_enc/swb_bwe_enc_fx.c | 16 +++++++--- lib_enc/swb_pre_proc_fx.c | 20 +++++++----- 9 files changed, 97 insertions(+), 69 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 25f1c07d6..221b5a86e 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -1359,8 +1359,12 @@ void stereo_tcx_init_dec_fx( void stereo_icBWE_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + const Word16 shb_speech_ref_fx16[], /* i : SHB speech ref channel Q0*/ +#else const Word32 shb_speech_ref_fx[], /* i : SHB speech ref channel */ const Word16 shb_speech_ref_e, /* i : SHB speech ref channel */ +#endif #ifdef SCALING_SWB_SPEECH_32 Word16 shb_speech_nonref_fx_16[], /* i/o: SHB speech non-ref channel Q15-shb_speech_nonref_e*/ #else diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 0d97361bb..3ec8936ab 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -10488,16 +10488,18 @@ void Copy_Scale_sig32( ); void swb_pre_proc_ivas_fx( - Encoder_State *st, /* i/o: encoder state structure */ - Word16 *new_swb_speech, /* o : original input signal at 32kHz - Q0 */ + Encoder_State *st, /* i/o: encoder state structure */ + Word16 *new_swb_speech, /* o : original input signal at 32kHz - Q0 */ #ifndef SCALING_SWB_SPEECH_32 - Word32 *new_swb_speech_fx, /* o : original input signal at 32kHz - Q - q_reImBuffer */ + Word32 *new_swb_speech_fx, /* o : original input signal at 32kHz - Q0 */ #endif +#ifndef REMOVE_SCALING_SHB_SPEECH_BE Word16 *shb_speech, /* o : SHB target signal (6-14kHz) at 16kHz- Q(Q_shb_spch) */ +#endif Word16 *Q_shb_spch, Word32 realBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : real buffer Q - q_reImbuffer */ Word32 imagBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : imag buffer Q - q_reImbuffer */ - Word16 q_reImBuffer, /* i : scale data of real and imag CLDFB buffers */ + Word16 q_reImBuffer, /* i : scale data of real and imag CLDFB buffers*/ CPE_ENC_HANDLE hCPE /* i/o: CPE encoder structure */ ); diff --git a/lib_enc/cng_enc_fx.c b/lib_enc/cng_enc_fx.c index abdbc2cd2..0466af832 100644 --- a/lib_enc/cng_enc_fx.c +++ b/lib_enc/cng_enc_fx.c @@ -2972,14 +2972,9 @@ void swb_CNG_enc_fx( #else void swb_CNG_enc_ivas_fx( #endif - Encoder_State *st, /* i/o: State structure */ -#ifdef REMOVE_SCALING_SHB_SPEECH_BE - const Word16 *shb_speech_fx_orig, /* i : SHB target signal (6-14kHz) at 16kHz Q_shb_spch */ - const Word16 Q_shb_spch, -#else - const Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz Q0 */ -#endif - const Word16 *syn_12k8_16k_fx /* i : ACELP core synthesis at 12.8kHz or 16kHz Q0 */ + Encoder_State *st, /* i/o: State structure */ + const Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz Q0 */ + const Word16 *syn_12k8_16k_fx /* i : ACELP core synthesis at 12.8kHz or 16kHz Q0 */ ) { Word16 shb_SID_updt; @@ -2992,11 +2987,6 @@ void swb_CNG_enc_ivas_fx( test(); IF( GE_32( st->input_Fs, L_FRAME32k * FRAMES_PER_SEC ) ) { -#ifdef REMOVE_SCALING_SHB_SPEECH_BE - Word16 shb_speech_fx[L_FRAME16k]; - Copy_Scale_sig( shb_speech_fx_orig, shb_speech_fx, L_FRAME16k, negate( Q_shb_spch ) ); // Q0 -#endif - /* decide if SHB SID encoding or not */ #ifdef HARM_NON_LINEARITY shb_SID_updt = shb_DTX_fx( st, shb_speech_fx, syn_12k8_16k_fx ); diff --git a/lib_enc/evs_enc_fx.c b/lib_enc/evs_enc_fx.c index 12e907f09..34abe9537 100644 --- a/lib_enc/evs_enc_fx.c +++ b/lib_enc/evs_enc_fx.c @@ -528,11 +528,7 @@ ivas_error evs_enc_fx( test(); IF( st->Opt_DTX_ON && GE_16( input_frame, L_FRAME32k ) ) { -#ifdef REMOVE_SCALING_SHB_SPEECH_BE - swb_CNG_enc_fx( st, shb_speech, 0, old_syn_12k8_16k ); -#else swb_CNG_enc_fx( st, shb_speech, old_syn_12k8_16k ); -#endif } /*---------------------------------------------------------------------* diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c index 1eb549753..258752d42 100644 --- a/lib_enc/ivas_core_enc_fx.c +++ b/lib_enc/ivas_core_enc_fx.c @@ -87,13 +87,17 @@ ivas_error ivas_core_enc_fx( STEREO_ICBWE_ENC_HANDLE hStereoICBWE; STEREO_TD_ENC_DATA_HANDLE hStereoTD; Word16 voice_factors_fx[CPE_CHANNELS][NB_SUBFR16k]; /* Q15 */ +#ifndef REMOVE_SCALING_SHB_SPEECH_BE Word32 shb_speech_fx32[L_FRAME16k]; +#endif #ifndef SCALING_SWB_SPEECH_32 Word32 *new_swb_speech_fx; #endif Word16 *inp_fx[CPE_CHANNELS]; Word16 *shb_speech_fx; +#ifndef REMOVE_SCALING_SHB_SPEECH_BE Word16 Q_shb_spch; +#endif #ifndef SCALING_SWB_SPEECH_32 Word32 new_swb_speech_buffer_fx[L_FRAME48k + STEREO_DFT_OVL_MAX]; #endif @@ -131,9 +135,10 @@ ivas_error ivas_core_enc_fx( error = IVAS_ERR_OK; move32(); +#ifndef REMOVE_SCALING_SHB_SPEECH_BE Q_shb_spch = 0; move16(); - +#endif /*------------------------------------------------------------------* * General initialization *-----------------------------------------------------------------*/ @@ -777,7 +782,11 @@ ivas_error ivas_core_enc_fx( } #ifdef SCALING_SWB_SPEECH_32 +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, shb_speech_fx, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); +#else swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, shb_speech_fx, &Q_shb_spch, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); +#endif #else swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, new_swb_speech_fx, shb_speech_fx, &Q_shb_spch, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); #endif @@ -792,27 +801,21 @@ ivas_error ivas_core_enc_fx( } } -#ifdef REMOVE_SCALING_SHB_SPEECH_NONBE - Word16 shift_shb_spch = 0; -#endif - Q_shb_spch = 0; +#ifndef REMOVE_SCALING_SHB_SPEECH_BE Word16 Q_shb_spch_16 = Q_shb_spch; move16(); +#endif #ifdef FIX_2344_ALIGN_PREPROC IF( st->tcxonly == 0 || hStereoICBWE != NULL || st->core == ACELP_CORE ) // temp. fix to keep BE until #1504 (FLP) is solved, then it will become: // IF( st->tcxonly == 0 ) #endif { +#ifndef REMOVE_SCALING_SHB_SPEECH_BE shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); -#ifdef REMOVE_SCALING_SHB_SPEECH_NONBE - shift_shb_spch = shift; -#endif -#ifndef REMOVE_SCALING_SHB_SPEECH_NONBE Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch -#endif Q_shb_spch = add( Q_shb_spch, shift ); - - IF( st->hBWE_FD ) +#endif + IF( st->hBWE_FD ) // VE: to be moved to the end of swb_pre_proc_ivas_fx() { shift = getScaleFactor16( st->hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k ); st->Q_old_wtda = add( st->Q_old_wtda, shift ); @@ -832,7 +835,11 @@ ivas_error ivas_core_enc_fx( Word16 Q_fb_exc; Word16 fb_exc_fx[L_FRAME16k]; +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + swb_tbe_enc_ivas_fx( st, hStereoICBWE, shb_speech_fx, bwe_exc_extended_fx[n], voice_factors_fx[n], fb_exc_fx, &Q_fb_exc, Q_new[n], 0, st->voicing_fx, pitch_buf_fx[n] ); +#else swb_tbe_enc_ivas_fx( st, hStereoICBWE, shb_speech_fx, bwe_exc_extended_fx[n], voice_factors_fx[n], fb_exc_fx, &Q_fb_exc, Q_new[n], Q_shb_spch_16, st->voicing_fx, pitch_buf_fx[n] ); +#endif IF( EQ_16( st->extl, FB_TBE ) ) { @@ -847,7 +854,11 @@ ivas_error ivas_core_enc_fx( Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, -Q16 ); // Q_shb_spch - 16 #endif /* SWB(FB) BWE encoder */ +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + swb_bwe_enc_ivas_fx( st, last_element_mode, old_inp_12k8_fx[n], old_inp_16k_fx[n], old_syn_12k8_16k_fx[n], new_swb_speech_fx_16, st->q_inp, shb_speech_fx, sub( Q_new[n], 1 ) ); +#else swb_bwe_enc_ivas_fx( st, last_element_mode, old_inp_12k8_fx[n], old_inp_16k_fx[n], old_syn_12k8_16k_fx[n], new_swb_speech_fx_16, st->q_inp, shb_speech_fx, sub( Q_shb_spch, Q16 ), sub( Q_new[n], 1 ) ); +#endif } Scale_sig( old_syn_12k8_16k_fx[n], L_FRAME16k, sub( Q1, Q_new[n] ) ); // Q0 @@ -866,11 +877,7 @@ ivas_error ivas_core_enc_fx( Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, negate( Q_shb_spch ) ); // Q0 #endif #ifdef HARM_NON_LINEARITY -#ifdef REMOVE_SCALING_SHB_SPEECH_BE - swb_CNG_enc_fx( st, shb_speech_fx, Q_shb_spch_16, old_syn_12k8_16k_fx[n] ); -#else - swb_CNG_enc_fx( st, shb_speech_fx /* Unmodified */, old_syn_12k8_16k_fx[n] ); -#endif + swb_CNG_enc_fx( st, shb_speech_fx, old_syn_12k8_16k_fx[n] ); #else swb_CNG_enc_ivas_fx( st, shb_speech_fx /* Unmodified */, old_syn_12k8_16k_fx[n] ); #endif @@ -899,12 +906,17 @@ ivas_error ivas_core_enc_fx( Copy_Scale_sig_16_32_no_sat( voice_factors_fx[0], voice_factors_fx32[0], NB_SUBFR16k, Q16 ); // Q31 #endif -#ifdef REMOVE_SCALING_SHB_SPEECH_NONBE - Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift_shb_spch ); // Q_shb_spch +#ifdef REMOVE_SCALING_SHB_SPEECH_BEaaa + Q_shb_spch = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); + Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, Q_shb_spch ); // Q_shb_spch #endif #ifdef SCALING_SWB_SPEECH_32 +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + stereo_icBWE_enc_fx( hCPE, shb_speech_fx, new_swb_speech_buffer_fx_16, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx[0] ); +#else stereo_icBWE_enc_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx_16, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx[0] ); +#endif #else stereo_icBWE_enc_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx32[0] ); #endif diff --git a/lib_enc/ivas_stereo_icbwe_enc_fx.c b/lib_enc/ivas_stereo_icbwe_enc_fx.c index 95d44fba5..d18a7ee49 100644 --- a/lib_enc/ivas_stereo_icbwe_enc_fx.c +++ b/lib_enc/ivas_stereo_icbwe_enc_fx.c @@ -618,19 +618,23 @@ static void icbwe_dft_stereo_param_ivas_fx( *-------------------------------------------------------------------*/ void stereo_icBWE_enc_fx( - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ + CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + const Word16 shb_speech_ref_fx16[], /* i : SHB speech ref channel Q0*/ +#else const Word32 shb_speech_ref_fx[], /* i : SHB speech ref channel Q31-shb_speech_ref_e*/ const Word16 shb_speech_ref_e, /* i : SHB speech ref channel */ +#endif #ifdef SCALING_SWB_SPEECH_32 Word16 shb_speech_nonref_fx_16[], /* i/o: SHB speech non-ref channel Q15-shb_speech_nonref_e*/ #else - Word32 shb_speech_nonref_fx[], /* i/o: SHB speech non-ref channel Q31-shb_speech_nonref_e*/ + Word32 shb_speech_nonref_fx[], /* i/o: SHB speech non-ref channel Q31-shb_speech_nonref_e*/ #endif - Word16 shb_speech_nonref_e, /* i/o: SHB speech non-ref channel */ + Word16 shb_speech_nonref_e, /* i/o: SHB speech non-ref channel */ #ifdef SCALING_SWB_SPEECH_32 const Word16 *voice_factors_fx16 /* i : voicing factors Q15 */ #else - const Word32 *voice_factors_fx /* i : voicing factors Q31 */ + const Word32 *voice_factors_fx /* i : voicing factors Q31 */ #endif ) { @@ -655,12 +659,21 @@ void stereo_icBWE_enc_fx( Word32 temp1_fx, temp2_fx; Word16 temp1_e, temp2_e, shb_frame_ref_e, shb_frame_nonref_e, gDes_e, tmp, exp; +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + Word32 shb_speech_ref_fx[L_FRAME16k]; + Word16 shb_speech_ref_e; + + shb_speech_ref_e = add( getScaleFactor16( shb_speech_ref_fx16, L_FRAME16k ), Q16 ); + Copy_Scale_sig_16_32_no_sat( shb_speech_ref_fx16, shb_speech_ref_fx, L_FRAME16k, shb_speech_ref_e ); + shb_speech_ref_e = Q31 - shb_speech_ref_e; +#endif + #ifdef SCALING_SWB_SPEECH_32 Word32 shb_speech_nonref_fx[L_FRAME48k + STEREO_DFT_OVL_MAX]; Word32 voice_factors_fx[NB_SUBFR16k]; Copy_Scale_sig_16_32_no_sat( shb_speech_nonref_fx_16, shb_speech_nonref_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer+st->q_inp - 16 - > q_new_swb_speech_buffer+st->q_inp - Copy_Scale_sig_16_32_no_sat( voice_factors_fx16, voice_factors_fx, NB_SUBFR16k, Q16 ); // Q31 + Copy_Scale_sig_16_32_no_sat( voice_factors_fx16, voice_factors_fx, NB_SUBFR16k, Q16 ); // Q31 #endif /* initialization */ diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 357c8c81d..4c6427b78 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -635,19 +635,20 @@ void swb_bwe_enc_ivas_fx( const Word16 *old_syn_12k8_16k_fx, /* i : ACELP core synthesis at 12.8kHz or 16kHz */ const Word16 *new_swb_speech_fx, /* i : original input signal at 32kHz */ const Word16 Q_new_swb_speech, /* i : Q for new_swb_speech_fx */ - Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */ - Word16 Q_shb_speech, - Word16 Q_slb_speech ); - -void swb_CNG_enc_fx( - Encoder_State *st_fx, /* i/o: State structure */ #ifdef REMOVE_SCALING_SHB_SPEECH_BE - const Word16 *shb_speech_fx_orig, /* i : SHB target signal (6-14kHz) at 16kHz Q_shb_spch */ - const Word16 Q_shb_spch, + Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz Q0 */ + const Word16 Q_slb_speech #else - const Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */ + Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */ + Word16 Q_shb_speech, + Word16 Q_slb_speech #endif - const Word16 *syn_12k8_16k_fx /* i : ACELP core synthesis at 12.8kHz or 16kHz */ +); + +void swb_CNG_enc_fx( + Encoder_State *st_fx, /* i/o: State structure */ + const Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */ + const Word16 *syn_12k8_16k_fx /* i : ACELP core synthesis at 12.8kHz or 16kHz */ ); #ifndef HARM_NON_LINEARITY @@ -885,7 +886,7 @@ void gsc_enc_fx( #ifndef FIX_1904_HARM_GSC_ENC Word16 *lsf_new, /* i : ISFs at the end of the frame */ #else - const Word16 *lsf_new, /* i : ISFs at the end of the frame */ + const Word16 *lsf_new, /* i : ISFs at the end of the frame */ #endif Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill */ Word16 *tmp_noise, /* o : noise energy */ diff --git a/lib_enc/swb_bwe_enc_fx.c b/lib_enc/swb_bwe_enc_fx.c index 59504ea6b..763df2fa5 100644 --- a/lib_enc/swb_bwe_enc_fx.c +++ b/lib_enc/swb_bwe_enc_fx.c @@ -272,12 +272,14 @@ void swb_bwe_enc_ivas_fx( const Word16 *new_swb_speech_fx, /* i : original input signal at 32kHz */ const Word16 Q_new_swb_speech, /* i : Q for new_swb_speech_fx */ #ifdef REMOVE_SCALING_SHB_SPEECH_BE - Word16 *shb_speech_fx_orig, /* i : SHB target signal (6-14kHz) at 16kHz */ + Word16 *shb_speech_fx_Q0, /* i : SHB target signal (6-14kHz) at 16kHz Q0 */ + const Word16 Q_slb_speech #else Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */ -#endif Word16 Q_shb_speech, - Word16 Q_slb_speech ) + Word16 Q_slb_speech +#endif +) { Word16 i; Word16 *new_input_fx; @@ -311,17 +313,21 @@ void swb_bwe_enc_ivas_fx( Word16 q_new_input_hp; #ifdef REMOVE_SCALING_SHB_SPEECH_BE Word16 shb_speech_fx[L_FRAME16k]; - - Copy_Scale_sig( shb_speech_fx_orig, shb_speech_fx, L_FRAME16k, Q_shb_speech ); // Q_shb_spch + Word16 Q_shb_speech; #endif FD_BWE_ENC_HANDLE hBWE_FD = st_fx->hBWE_FD; TD_BWE_ENC_HANDLE hBWE_TD = st_fx->hBWE_TD; +#ifdef REMOVE_SCALING_SHB_SPEECH_BE + Q_shb_speech = getScaleFactor16( shb_speech_fx_Q0, L_FRAME16k ); + Copy_Scale_sig( shb_speech_fx_Q0, shb_speech_fx, L_FRAME16k, Q_shb_speech ); // Q0 -> Q_shb_spch +#endif /*---------------------------------------------------------------------* * Delay the original input signal to be synchronized with ACELP core synthesis *---------------------------------------------------------------------*/ + IF( EQ_16( st_fx->extl, FB_BWE ) ) { inner_frame = L_FRAME48k; diff --git a/lib_enc/swb_pre_proc_fx.c b/lib_enc/swb_pre_proc_fx.c index 7c549c3b1..0cccc621c 100644 --- a/lib_enc/swb_pre_proc_fx.c +++ b/lib_enc/swb_pre_proc_fx.c @@ -772,17 +772,19 @@ void swb_pre_proc_fx( *-------------------------------------------------------------------*/ void swb_pre_proc_ivas_fx( - Encoder_State *st, /* i/o: encoder state structure */ - Word16 *new_swb_speech, /* o : original input signal at 32kHz - st->q_inp */ + Encoder_State *st, /* i/o: encoder state structure */ + Word16 *new_swb_speech, /* o : original input signal at 32kHz - st->q_inp */ #ifndef SCALING_SWB_SPEECH_32 Word32 *new_swb_speech_fx, /* o : original input signal at 32kHz - Q - q_reImBuffer */ #endif - Word16 *shb_speech, /* o : SHB target signal (6-14kHz) at 16kHz- Q(Q_shb_spch) */ + Word16 *shb_speech, /* o : SHB target signal (6-14kHz) at 16kHz - Q0 */ +#ifndef REMOVE_SCALING_SHB_SPEECH_BE Word16 *Q_shb_spch, - Word32 realBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : real buffer Q - q_reImbuffer */ - Word32 imagBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : imag buffer Q - q_reImbuffer */ - Word16 q_reImBuffer, /* i : scale data of real and imag CLDFB buffers */ - CPE_ENC_HANDLE hCPE /* i/o: CPE encoder structure */ +#endif + Word32 realBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : real buffer Q - q_reImbuffer */ + Word32 imagBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : imag buffer Q - q_reImbuffer */ + Word16 q_reImBuffer, /* i : scale data of real and imag CLDFB buffers */ + CPE_ENC_HANDLE hCPE /* i/o: CPE encoder structure */ ) { Word16 Sample_Delay_SWB_BWE, inner_frame, delay; @@ -1279,9 +1281,11 @@ void swb_pre_proc_ivas_fx( regV = icbwe_regressionValuesTDM_fx; cldfbSynthesis_ivas_fx( realBufferFlipped, imagBufferFlipped, shb_speech_fx_32, -1, 0, 0, st->cldfbSynTd ); - Copy_Scale_sig_32_16( shb_speech_fx_32, shb_speech, L_FRAME16k, negate( sub( q_reImBuffer, 1 ) ) ); + Copy_Scale_sig_32_16( shb_speech_fx_32, shb_speech, L_FRAME16k, negate( sub( q_reImBuffer, 1 ) ) ); // Q0 +#ifndef REMOVE_SCALING_SHB_SPEECH_BE *Q_shb_spch = 0; move16(); +#endif } IF( GE_16( st->element_mode, IVAS_CPE_DFT ) && hCPE->hStereoICBWE != NULL ) -- GitLab From 59abd0e42258c7f7f44b02da6eded3865b0b35c0 Mon Sep 17 00:00:00 2001 From: vaclav Date: Fri, 23 Jan 2026 09:35:27 +0100 Subject: [PATCH 05/12] cleaning --- lib_com/options.h | 1 - lib_com/prot_fx.h | 10 +++++----- lib_enc/ivas_core_enc_fx.c | 18 ++++++++---------- lib_enc/ivas_mdct_core_enc_fx.c | 16 ++++++++-------- lib_enc/ivas_stereo_icbwe_enc_fx.c | 5 +++-- lib_enc/ivas_stereo_mdct_core_enc_fx.c | 6 +++--- lib_enc/ivas_tcx_core_enc_fx.c | 4 ++-- lib_enc/prot_fx_enc.h | 4 ++-- lib_enc/swb_bwe_enc_fx.c | 2 +- lib_enc/swb_tbe_enc_fx.c | 4 ++-- 10 files changed, 34 insertions(+), 36 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 1b54ab393..7e3954141 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -119,7 +119,6 @@ #define SIMPLIFY_SCALING_OLD_INP #define REMOVE_UNUSED_BUFFER_CORE_ENC #define REMOVE_SCALING_SHB_SPEECH_BE -#define REMOVE_SCALING_SHB_SPEECH_NONBE #define SCALING_SWB_SPEECH_32 /* #################### End BE switches ################################## */ diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 3ec8936ab..e3431d987 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -10488,15 +10488,15 @@ void Copy_Scale_sig32( ); void swb_pre_proc_ivas_fx( - Encoder_State *st, /* i/o: encoder state structure */ - Word16 *new_swb_speech, /* o : original input signal at 32kHz - Q0 */ + Encoder_State *st, /* i/o: encoder state structure */ + Word16 *new_swb_speech, /* o : original input signal at 32kHz - Q0 */ #ifndef SCALING_SWB_SPEECH_32 - Word32 *new_swb_speech_fx, /* o : original input signal at 32kHz - Q0 */ + Word32 *new_swb_speech_fx, /* o : original input signal at 32kHz - Q - q_reImBuffer */ #endif + Word16 *shb_speech, /* o : SHB target signal (6-14kHz) at 16kHz - Q0*/ #ifndef REMOVE_SCALING_SHB_SPEECH_BE - Word16 *shb_speech, /* o : SHB target signal (6-14kHz) at 16kHz- Q(Q_shb_spch) */ -#endif Word16 *Q_shb_spch, +#endif Word32 realBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : real buffer Q - q_reImbuffer */ Word32 imagBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : imag buffer Q - q_reImbuffer */ Word16 q_reImBuffer, /* i : scale data of real and imag CLDFB buffers*/ diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c index 258752d42..803bf45e4 100644 --- a/lib_enc/ivas_core_enc_fx.c +++ b/lib_enc/ivas_core_enc_fx.c @@ -887,35 +887,33 @@ ivas_error ivas_core_enc_fx( * Inter-channel BWE encoding *-------------------------------------------------------------------*/ +#ifndef SCALING_SWB_SPEECH_32 Word16 q_new_swb_speech_buffer = getScaleFactor16( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX ); Scale_sig( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX, q_new_swb_speech_buffer ); // st->q_inp+q_new_swb_speech_buffer q_new_swb_speech_buffer = add( st->q_inp, q_new_swb_speech_buffer ); - +#endif test(); test(); IF( n == 0 && GE_32( input_Fs, 32000 ) && hStereoICBWE != NULL ) { #ifndef SCALING_SWB_SPEECH_32 Word32 voice_factors_fx32[CPE_CHANNELS][NB_SUBFR16k]; -#endif stereo_icBWE_preproc_fx( hCPE, input_frame, new_swb_speech_buffer_fx_16 /*tmp buffer*/, q_new_swb_speech_buffer ); +#else + stereo_icBWE_preproc_fx( hCPE, input_frame, new_swb_speech_buffer_fx_16 /*tmp buffer*/, st->q_inp ); +#endif - q_new_swb_speech_buffer = add( q_new_swb_speech_buffer, Q16 ); #ifndef SCALING_SWB_SPEECH_32 + q_new_swb_speech_buffer = add( q_new_swb_speech_buffer, Q16 ); Copy_Scale_sig_16_32_no_sat( new_swb_speech_buffer_fx_16, new_swb_speech_buffer_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer+st->q_inp - 16 - > q_new_swb_speech_buffer+st->q_inp Copy_Scale_sig_16_32_no_sat( voice_factors_fx[0], voice_factors_fx32[0], NB_SUBFR16k, Q16 ); // Q31 #endif -#ifdef REMOVE_SCALING_SHB_SPEECH_BEaaa - Q_shb_spch = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); - Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, Q_shb_spch ); // Q_shb_spch -#endif - #ifdef SCALING_SWB_SPEECH_32 #ifdef REMOVE_SCALING_SHB_SPEECH_BE - stereo_icBWE_enc_fx( hCPE, shb_speech_fx, new_swb_speech_buffer_fx_16, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx[0] ); + stereo_icBWE_enc_fx( hCPE, shb_speech_fx, new_swb_speech_buffer_fx_16, st->q_inp, voice_factors_fx[0] ); #else - stereo_icBWE_enc_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx_16, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx[0] ); + stereo_icBWE_enc_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx_16, st->q_inp, voice_factors_fx[0] ); #endif #else stereo_icBWE_enc_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx32[0] ); diff --git a/lib_enc/ivas_mdct_core_enc_fx.c b/lib_enc/ivas_mdct_core_enc_fx.c index ac3305d74..12d820641 100644 --- a/lib_enc/ivas_mdct_core_enc_fx.c +++ b/lib_enc/ivas_mdct_core_enc_fx.c @@ -1116,10 +1116,10 @@ void enc_prm_igf_mdct( *-------------------------------------------------------------------*/ void ivas_mdct_core_whitening_enc_fx( - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - Word16 new_samples_fx[CPE_CHANNELS][L_INP], /* i : new samples Qnew-1*/ + CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ + Word16 new_samples_fx[CPE_CHANNELS][L_INP], /* i : new samples Qnew-1*/ #ifdef SIMPLIFY_SCALING_OLD_INP - Word16 Q_new_inp[CPE_CHANNELS], /* i : Q factor of input buffer */ + Word16 Q_new_inp[CPE_CHANNELS], /* i : Q factor of input buffer */ #endif Word16 old_wsp_fx[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/ Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k], /* o : floating pitch for each subframe Q6*/ @@ -1232,7 +1232,7 @@ void ivas_mdct_core_whitening_enc_fx( windowedSignal_fx[0] = orig_spectrum_long[0]; /* NOTE temporarily available */ windowedSignal_fx[1] = temp_buffer; /* orig_spectrum_long isn't long enough */ - + /*--------------------------------------------------------------* * TCX20/TCX10 switching decision *---------------------------------------------------------------*/ @@ -1823,12 +1823,12 @@ void ivas_mdct_core_whitening_enc_fx( } } TNSAnalysisStereo_fx( sts, mdst_spectrum_fx, 0, tnsSize, tnsBits, param_core, mct_on ); - + /*--------------------------------------------------------------* * Envelope Quantization and FDNS *---------------------------------------------------------------*/ - - /* Common q for spectrum and mdst */ + + /* Common q for spectrum and mdst */ q_min = 0; move16(); q_com = Q31; @@ -2328,7 +2328,7 @@ void ivas_mdct_core_whitening_enc_fx( /*--------------------------------------------------------------------------------* * SNS parameters *--------------------------------------------------------------------------------*/ - + test(); test(); test(); diff --git a/lib_enc/ivas_stereo_icbwe_enc_fx.c b/lib_enc/ivas_stereo_icbwe_enc_fx.c index d18a7ee49..86e662b57 100644 --- a/lib_enc/ivas_stereo_icbwe_enc_fx.c +++ b/lib_enc/ivas_stereo_icbwe_enc_fx.c @@ -622,11 +622,11 @@ void stereo_icBWE_enc_fx( #ifdef REMOVE_SCALING_SHB_SPEECH_BE const Word16 shb_speech_ref_fx16[], /* i : SHB speech ref channel Q0*/ #else - const Word32 shb_speech_ref_fx[], /* i : SHB speech ref channel Q31-shb_speech_ref_e*/ + const Word32 shb_speech_ref_fx[], /* i : SHB speech ref channel shb_speech_ref_e*/ const Word16 shb_speech_ref_e, /* i : SHB speech ref channel */ #endif #ifdef SCALING_SWB_SPEECH_32 - Word16 shb_speech_nonref_fx_16[], /* i/o: SHB speech non-ref channel Q15-shb_speech_nonref_e*/ + Word16 shb_speech_nonref_fx_16[], /* i/o: SHB speech non-ref channel shb_speech_nonref_e*/ #else Word32 shb_speech_nonref_fx[], /* i/o: SHB speech non-ref channel Q31-shb_speech_nonref_e*/ #endif @@ -672,6 +672,7 @@ void stereo_icBWE_enc_fx( Word32 shb_speech_nonref_fx[L_FRAME48k + STEREO_DFT_OVL_MAX]; Word32 voice_factors_fx[NB_SUBFR16k]; + shb_speech_nonref_e = Q15 - shb_speech_nonref_e; Copy_Scale_sig_16_32_no_sat( shb_speech_nonref_fx_16, shb_speech_nonref_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer+st->q_inp - 16 - > q_new_swb_speech_buffer+st->q_inp Copy_Scale_sig_16_32_no_sat( voice_factors_fx16, voice_factors_fx, NB_SUBFR16k, Q16 ); // Q31 #endif diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index 2c197ed0b..ce689dcd3 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -128,10 +128,10 @@ static void sync_tcx_mode_fx( *-------------------------------------------------------------------*/ void stereo_mdct_core_enc_fx( - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q_new-1*/ + CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ + Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q_new-1*/ #ifdef SIMPLIFY_SCALING_OLD_INP - Word16 Q_new_inp[CPE_CHANNELS], /* i : Q factor of input buffer */ + Word16 Q_new_inp[CPE_CHANNELS], /* i : Q factor of input buffer */ #endif Word16 old_wsp[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/ Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k] /* o : floating pitch for each subframe Q6*/ diff --git a/lib_enc/ivas_tcx_core_enc_fx.c b/lib_enc/ivas_tcx_core_enc_fx.c index 9d83d8df1..2aa707c11 100644 --- a/lib_enc/ivas_tcx_core_enc_fx.c +++ b/lib_enc/ivas_tcx_core_enc_fx.c @@ -184,7 +184,7 @@ void stereo_tcx_core_enc( /*Bits*/ Word16 nbits_start, - total_nbbits, nbits_header; + total_nbbits, nbits_header; Word16 target_bits[2], bitsAvailable; Word16 nbits_lpc[2]; Word16 tnsSize[2]; /* number of tns parameters put into prm */ @@ -703,7 +703,7 @@ void stereo_tcx_core_enc( /*--------------------------------------------------------------------------------* * Encode TCX20/10 parameters *--------------------------------------------------------------------------------*/ - + writeTCXparam_fx( st, hBstr, hm_cfg, param_core, nbits_header, nbits_start, add( nbits_lpc[0], nbits_lpc[1] ), NULL, NULL, NULL, -1 ); total_nbbits = sub( hBstr->nb_bits_tot, nbits_start ); diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 4c6427b78..3425ceeec 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -636,7 +636,7 @@ void swb_bwe_enc_ivas_fx( const Word16 *new_swb_speech_fx, /* i : original input signal at 32kHz */ const Word16 Q_new_swb_speech, /* i : Q for new_swb_speech_fx */ #ifdef REMOVE_SCALING_SHB_SPEECH_BE - Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz Q0 */ + Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz Q0 */ const Word16 Q_slb_speech #else Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */ @@ -691,7 +691,7 @@ void swb_tbe_enc_fx( void swb_tbe_enc_ivas_fx( Encoder_State *st_fx, /* i/o: encoder state structure */ STEREO_ICBWE_ENC_HANDLE hStereoICBWE, /* i/o: IC-BWE state structure */ - Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz Q_shb */ + Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz Q0 */ Word32 *bwe_exc_extended, /* i : bandwidth extended exciatation 2 * Q_new */ const Word16 voice_factors_fx[], /* i : voicing factors Q15 */ Word16 *White_exc16k_fx, /* o : shaped white excitation for the FB TBE Q_white_exc */ diff --git a/lib_enc/swb_bwe_enc_fx.c b/lib_enc/swb_bwe_enc_fx.c index 763df2fa5..c288857c9 100644 --- a/lib_enc/swb_bwe_enc_fx.c +++ b/lib_enc/swb_bwe_enc_fx.c @@ -278,7 +278,7 @@ void swb_bwe_enc_ivas_fx( Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */ Word16 Q_shb_speech, Word16 Q_slb_speech -#endif +#endif ) { Word16 i; diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index ebe37fae5..c0af2d1e5 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -2823,9 +2823,9 @@ void swb_tbe_enc_fx( /*======================================================================================*/ void swb_tbe_enc_ivas_fx( - Encoder_State *st_fx, /* i/o: encoder state structure */ + Encoder_State *st_fx, /* i/o: encoder state structure */ STEREO_ICBWE_ENC_HANDLE hStereoICBWE, /* i/o: IC-BWE state structure */ - Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz Q_shb */ + Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz Q0 */ Word32 *bwe_exc_extended, /* i : bandwidth extended exciatation 2 * Q_new */ const Word16 voice_factors_fx[], /* i : voicing factors Q15 */ Word16 *White_exc16k_fx, /* o : shaped white excitation for the FB TBE Q_white_exc */ -- GitLab From ce9b838672eeae32e45c4e3a8a5497dd4e1cb2c6 Mon Sep 17 00:00:00 2001 From: vaclav Date: Fri, 23 Jan 2026 13:01:49 +0100 Subject: [PATCH 06/12] disable two fixes --- lib_com/options.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 07c86b4c5..eeffebc4a 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -107,8 +107,8 @@ #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_2349_HARM_FIND_UV /* VA: basop issue 2349: harmonization of find_uv() function */ -#define SIMPLIFY_SCALING_OLD_INP -#define REMOVE_UNUSED_BUFFER_CORE_ENC +//#define SIMPLIFY_SCALING_OLD_INP +//#define REMOVE_UNUSED_BUFFER_CORE_ENC #define REMOVE_SCALING_SHB_SPEECH_BE #define SCALING_SWB_SPEECH_32 -- GitLab From 4c8bdbdf08320b90bb80848bf4dfa9122c84a58b Mon Sep 17 00:00:00 2001 From: vaclav Date: Fri, 23 Jan 2026 13:12:19 +0100 Subject: [PATCH 07/12] remove SIMPLIFY_SCALING_OLD_INP --- lib_com/ivas_prot_fx.h | 15 ------------- lib_com/options.h | 1 - lib_enc/ivas_core_enc_fx.c | 23 ------------------- lib_enc/ivas_mdct_core_enc_fx.c | 18 --------------- lib_enc/ivas_stereo_mdct_core_enc_fx.c | 8 ------- lib_enc/ivas_tcx_core_enc_fx.c | 31 -------------------------- 6 files changed, 96 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index b9aa238c0..fc849f2c7 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -3077,24 +3077,15 @@ void InternalTCXDecoder_fx( void stereo_tcx_core_enc( Encoder_State *st, /* i/o: encoder state structure */ -#ifdef SIMPLIFY_SCALING_OLD_INP - Word16 new_samples_12k8[], /* i : buffer of input signal @12.8 kHz Q_new-1*/ - Word16 new_samples_16k[], /* i : buffer of input signal @16 kHz Q_new-1*/ -#else const Word16 new_samples_12k8[], /* i : buffer of input signal @12.8 kHz */ const Word16 new_samples_16k[], /* i : buffer of input signal @16 kHz */ -#endif const Word16 Aw_fx[], /* i : weighted A(z) unquant. for subframes,Q12*/ Word16 lsp_new_fx[], /* i : LSPs at the end of the frame, Q15 */ Word16 lsp_mid_fx[], /* i : LSPs in the middle of the frame, Q15 */ Word16 pitch_buf_fx[NB_SUBFR16k], /* o : pitch for each subframe, Q6 */ const Word16 last_element_mode, /* i : last element mode, Q0 */ const Word16 vad_hover_flag, /* i : VAD hangover flag, Q0 */ -#ifdef SIMPLIFY_SCALING_OLD_INP - Word16 Q_new_inp /* i : Q factor of input buffer */ -#else Word16 Q_new -#endif ); Word16 transient_analysis_ivas_fx( @@ -6404,9 +6395,6 @@ UWord16 get_indice_st( void stereo_mdct_core_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Qnew-1*/ -#ifdef SIMPLIFY_SCALING_OLD_INP - Word16 Q_new_inp[CPE_CHANNELS], /* i : Q factor of input buffer */ -#endif Word16 old_wsp[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/ Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k] /* o : floating pitch for each subframe Q6*/ ); @@ -6454,9 +6442,6 @@ void stereo_switching_dec( void ivas_mdct_core_whitening_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ Word16 new_samples_fx[CPE_CHANNELS][L_INP], /* i : new samples */ -#ifdef SIMPLIFY_SCALING_OLD_INP - Word16 Q_new_inp[CPE_CHANNELS], /* i : Q factor of input buffer */ -#endif Word16 old_wsp_fx[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP */ Word16 pitch_buf[CPE_CHANNELS][NB_SUBFR16k], /* o : floating pitch for each subframe */ Word32 *mdst_spectrum_long[CPE_CHANNELS], /* o : buffer for MDST spectrum */ diff --git a/lib_com/options.h b/lib_com/options.h index eeffebc4a..ecfaaefe6 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -107,7 +107,6 @@ #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_2349_HARM_FIND_UV /* VA: basop issue 2349: harmonization of find_uv() function */ -//#define SIMPLIFY_SCALING_OLD_INP //#define REMOVE_UNUSED_BUFFER_CORE_ENC #define REMOVE_SCALING_SHB_SPEECH_BE #define SCALING_SWB_SPEECH_32 diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c index 0335cf845..a99a70913 100644 --- a/lib_enc/ivas_core_enc_fx.c +++ b/lib_enc/ivas_core_enc_fx.c @@ -359,10 +359,8 @@ ivas_error ivas_core_enc_fx( TCX_ENC_HANDLE hTcxEnc = st->hTcxEnc; Word16 Q_spec_old, L_spec; -#ifndef SIMPLIFY_SCALING_OLD_INP Scale_sig( old_inp_12k8_fx[n], L_INP_12k8, sub( Q1, Q_new[n] ) ); // Q0 Scale_sig( old_inp_16k_fx[n], L_INP, sub( Q1, Q_new[n] ) ); // Q0 -#endif Scale_sig( st->hTcxEnc->Txnq, L_FRAME32k / 2 + 64, sub( negate( 1 ), st->hTcxEnc->q_Txnq ) ); /* Q(-1) */ st->hTcxEnc->q_Txnq = -Q1; move16(); @@ -370,14 +368,10 @@ ivas_error ivas_core_enc_fx( move16(); /* TCX core encoder */ -#ifdef SIMPLIFY_SCALING_OLD_INP - stereo_tcx_core_enc( st, old_inp_12k8_fx[n] + L_INP_MEM, old_inp_16k_fx[n] + L_INP_MEM, Aw_fx[n], lsp_new_fx[n], lsp_mid_fx[n], pitch_buf_fx[n], last_element_mode, vad_hover_flag[0], Q_new[n] ); -#else stereo_tcx_core_enc( st, old_inp_12k8_fx[n] + L_INP_MEM, old_inp_16k_fx[n] + L_INP_MEM, Aw_fx[n], lsp_new_fx[n], lsp_mid_fx[n], pitch_buf_fx[n], last_element_mode, vad_hover_flag[0], 0 ); Scale_sig( old_inp_12k8_fx[n], L_INP_12k8, sub( Q_new[n], Q1 ) ); // Q_new[n] - 1 Scale_sig( old_inp_16k_fx[n], L_INP, sub( Q_new[n], Q1 ) ); // Q_new[n] - 1 -#endif Scale_sig( st->hTcxEnc->old_out_fx, L_FRAME32k, negate( st->hTcxEnc->Q_old_out ) ); // scaling back to Q0 st->hTcxEnc->Q_old_out = 0; @@ -458,9 +452,7 @@ ivas_error ivas_core_enc_fx( FOR( n = 0; n < n_CoreChannels; n++ ) { st = sts[n]; -#ifndef SIMPLIFY_SCALING_OLD_INP Scale_sig( old_inp_16k_fx[n], L_INP, sub( Q1, Q_new[n] ) ); // Q0 -#endif IF( NE_16( st->element_mode, IVAS_CPE_DFT ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { st->hTcxEnc->exp_buf_speech_ltp = st->exp_buf_speech_enc; @@ -473,22 +465,15 @@ ivas_error ivas_core_enc_fx( Q_spec_old[1] = hCPE->hCoreCoder[1]->hTcxEnc->spectrum_long_e; move16(); -#ifdef SIMPLIFY_SCALING_OLD_INP - ivas_mdct_core_whitening_enc_fx( hCPE, old_inp_16k_fx, Q_new, old_wsp_fx, pitch_buf_fx_new, hMCT->p_mdst_spectrum_long_fx[cpe_id], hMCT->tnsBits[cpe_id], hMCT->p_orig_spectrum_long_fx[cpe_id], - hMCT->tnsSize[cpe_id], hMCT->p_param[cpe_id], hMCT->hBstr, 1, hMCT->nchan_out_woLFE, mdst_spectrum_e, orig_spectrum_e ); -#else ivas_mdct_core_whitening_enc_fx( hCPE, old_inp_16k_fx, old_wsp_fx, pitch_buf_fx_new, hMCT->p_mdst_spectrum_long_fx[cpe_id], hMCT->tnsBits[cpe_id], hMCT->p_orig_spectrum_long_fx[cpe_id], hMCT->tnsSize[cpe_id], hMCT->p_param[cpe_id], hMCT->hBstr, 1, hMCT->nchan_out_woLFE, mdst_spectrum_e, orig_spectrum_e ); -#endif FOR( i = 0; i < CPE_CHANNELS; i++ ) { st = sts[i]; Word16 nSubframes = NB_DIV; move16(); -#ifndef SIMPLIFY_SCALING_OLD_INP Scale_sig( old_inp_16k_fx[i], L_INP, sub( Q_new[i], Q1 ) ); // Q_new[n] - 1 -#endif if ( EQ_16( st->hTcxEnc->tcxMode, TCX_20 ) ) { nSubframes = 1; @@ -553,9 +538,7 @@ ivas_error ivas_core_enc_fx( FOR( i = 0; i < CPE_CHANNELS; i++ ) { st = sts[i]; -#ifndef SIMPLIFY_SCALING_OLD_INP Scale_sig( old_inp_16k_fx[i], L_INP, sub( Q1, Q_new[i] ) ); // Q0 -#endif test(); IF( NE_16( st->element_mode, IVAS_CPE_DFT ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { @@ -581,17 +564,11 @@ ivas_error ivas_core_enc_fx( Q_spec_old[1] = hCPE->hCoreCoder[1]->hTcxEnc->spectrum_long_e; move16(); -#ifdef SIMPLIFY_SCALING_OLD_INP - stereo_mdct_core_enc_fx( hCPE, old_inp_16k_fx, Q_new, old_wsp_fx, pitch_buf_fx ); -#else stereo_mdct_core_enc_fx( hCPE, old_inp_16k_fx, old_wsp_fx, pitch_buf_fx ); -#endif FOR( i = 0; i < CPE_CHANNELS; i++ ) { -#ifndef SIMPLIFY_SCALING_OLD_INP Scale_sig( old_inp_16k_fx[i], L_INP, sub( Q_new[i], Q1 ) ); // Q_new[n] - 1 -#endif st = sts[i]; IF( EQ_16( st->hTcxEnc->tcxMode, TCX_20 ) ) { diff --git a/lib_enc/ivas_mdct_core_enc_fx.c b/lib_enc/ivas_mdct_core_enc_fx.c index 12d820641..2bf2e3273 100644 --- a/lib_enc/ivas_mdct_core_enc_fx.c +++ b/lib_enc/ivas_mdct_core_enc_fx.c @@ -1118,9 +1118,6 @@ void enc_prm_igf_mdct( void ivas_mdct_core_whitening_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ Word16 new_samples_fx[CPE_CHANNELS][L_INP], /* i : new samples Qnew-1*/ -#ifdef SIMPLIFY_SCALING_OLD_INP - Word16 Q_new_inp[CPE_CHANNELS], /* i : Q factor of input buffer */ -#endif Word16 old_wsp_fx[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/ Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k], /* o : floating pitch for each subframe Q6*/ Word32 *mdst_spectrum_long_fx[CPE_CHANNELS], /* o : buffer for MDST spectrum mdst_spectrum_e*/ @@ -1186,13 +1183,6 @@ void ivas_mdct_core_whitening_enc_fx( move16(); move16(); -#ifdef SIMPLIFY_SCALING_OLD_INP - FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - Scale_sig( new_samples_fx[ch], L_INP, sub( Q1, Q_new_inp[ch] ) ); // Q0 - } -#endif - /*--------------------------------------------------------------* * Initialization *---------------------------------------------------------------*/ @@ -2490,14 +2480,6 @@ void ivas_mdct_core_whitening_enc_fx( } } -#ifdef SIMPLIFY_SCALING_OLD_INP - // scaling the input buffer back to Q_new-1 - actually not needed because the buffer is not used in the subsequent processing - FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - Scale_sig( new_samples_fx[ch], L_INP, sub( Q_new_inp[ch], Q1 ) ); // Q0 - } -#endif - pop_wmops(); return; } diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index ce689dcd3..f085dd9c4 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -130,9 +130,6 @@ static void sync_tcx_mode_fx( void stereo_mdct_core_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q_new-1*/ -#ifdef SIMPLIFY_SCALING_OLD_INP - Word16 Q_new_inp[CPE_CHANNELS], /* i : Q factor of input buffer */ -#endif Word16 old_wsp[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/ Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k] /* o : floating pitch for each subframe Q6*/ ) @@ -288,13 +285,8 @@ void stereo_mdct_core_enc_fx( * - TNS *---------------------------------------------------------------*/ -#ifdef SIMPLIFY_SCALING_OLD_INP - ivas_mdct_core_whitening_enc_fx( hCPE, new_samples, Q_new_inp, old_wsp, pitch_buf_fx, p_mdst_spectrum_long_fx, - tnsBits, p_orig_spectrum_long_fx, tnsSize, p_param, hBstr, 0, CPE_CHANNELS, mdst_spectrum_e, orig_spectrum_e ); -#else ivas_mdct_core_whitening_enc_fx( hCPE, new_samples, old_wsp, pitch_buf_fx, p_mdst_spectrum_long_fx, tnsBits, p_orig_spectrum_long_fx, tnsSize, p_param, hBstr, 0, CPE_CHANNELS, mdst_spectrum_e, orig_spectrum_e ); -#endif FOR( i = 0; i < CPE_CHANNELS; i++ ) { diff --git a/lib_enc/ivas_tcx_core_enc_fx.c b/lib_enc/ivas_tcx_core_enc_fx.c index ec0b95515..5dacc2474 100644 --- a/lib_enc/ivas_tcx_core_enc_fx.c +++ b/lib_enc/ivas_tcx_core_enc_fx.c @@ -152,24 +152,15 @@ void stereo_tcx_init_enc_fx( void stereo_tcx_core_enc( Encoder_State *st, /* i/o: encoder state structure */ -#ifdef SIMPLIFY_SCALING_OLD_INP - Word16 new_samples_12k8[], /* i : buffer of input signal @12.8 kHz Q_new-1*/ - Word16 new_samples_16k[], /* i : buffer of input signal @16 kHz Q_new-1*/ -#else const Word16 new_samples_12k8[], /* i : buffer of input signal @12.8 kHz Q_new*/ const Word16 new_samples_16k[], /* i : buffer of input signal @16 kHz Q_new*/ -#endif const Word16 Aw_fx[], /* i : weighted A(z) unquant. for subframes, Q12 */ Word16 lsp_new_fx[], /* i : LSPs at the end of the frame, Q15 */ Word16 lsp_mid_fx[], /* i : LSPs in the middle of the frame, Q15 */ Word16 pitch_buf_fx[NB_SUBFR16k], /* o : pitch for each subframe, Q6 */ const Word16 last_element_mode, /* i : last element mode, Q0 */ const Word16 vad_hover_flag, /* i : VAD hangover flag, Q0 */ -#ifdef SIMPLIFY_SCALING_OLD_INP - Word16 Q_new /* i : Q factor of input buffer */ -#else Word16 Q_new -#endif ) { TCX_ENC_HANDLE hTcxEnc; @@ -308,16 +299,10 @@ void stereo_tcx_core_enc( IF( EQ_16( st->L_frame, L_FRAME ) ) { -#ifdef SIMPLIFY_SCALING_OLD_INP - Scale_sig( new_samples_12k8, L_INP_12k8, sub( Q1, Q_new ) ); // Q0 -#endif p_new_samples = new_samples_12k8; /* Q0 */ } ELSE { -#ifdef SIMPLIFY_SCALING_OLD_INP - Scale_sig( new_samples_16k, L_INP, sub( Q1, Q_new ) ); // Q0 -#endif p_new_samples = new_samples_16k; /* Q0 */ } @@ -386,10 +371,6 @@ void stereo_tcx_core_enc( st->prev_Q_new = 0; st->Q_old = 0; -#ifdef SIMPLIFY_SCALING_OLD_INP - Word16 Q_new_orig = Q_new; - move16(); -#endif Q_new = 0; move16(); @@ -731,18 +712,6 @@ void stereo_tcx_core_enc( move16(); } -#ifdef SIMPLIFY_SCALING_OLD_INP - // scaling the input buffer back to Q_new-1 - actually not needed because the buffer is not used in the subsequent processing - IF( EQ_16( st->L_frame, L_FRAME ) ) - { - Scale_sig( new_samples_12k8, L_INP_12k8, sub( Q_new_orig, Q1 ) ); // Q_new-1 - } - ELSE - { - Scale_sig( new_samples_16k, L_INP, sub( Q_new_orig, Q1 ) ); // Q_new-1 - } -#endif - pop_wmops(); return; } -- GitLab From b951acfeff1ecde07b581578e85549cbba8a3f90 Mon Sep 17 00:00:00 2001 From: vaclav Date: Fri, 23 Jan 2026 13:33:37 +0100 Subject: [PATCH 08/12] remove REMOVE_UNUSED_BUFFER_CORE_ENC --- lib_com/options.h | 1 - lib_enc/ivas_core_enc_fx.c | 7 +------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index ecfaaefe6..201bc7ade 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -107,7 +107,6 @@ #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_2349_HARM_FIND_UV /* VA: basop issue 2349: harmonization of find_uv() function */ -//#define REMOVE_UNUSED_BUFFER_CORE_ENC #define REMOVE_SCALING_SHB_SPEECH_BE #define SCALING_SWB_SPEECH_32 diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c index a99a70913..a75998961 100644 --- a/lib_enc/ivas_core_enc_fx.c +++ b/lib_enc/ivas_core_enc_fx.c @@ -636,9 +636,8 @@ ivas_error ivas_core_enc_fx( * Postprocessing, BWEs and Updates *---------------------------------------------------------------------*/ -#ifndef REMOVE_UNUSED_BUFFER_CORE_ENC Word16 tmp_input_fx[L_FRAME48k], tmp_old_input_fx[L_FRAME48k], q_inp[2]; -#endif + FOR( n = 0; n < n_CoreChannels; n++ ) { st = sts[n]; @@ -653,12 +652,10 @@ ivas_error ivas_core_enc_fx( move16(); } -#ifndef REMOVE_UNUSED_BUFFER_CORE_ENC Copy( st->input_fx - input_frame, tmp_old_input_fx, input_frame ); Copy( st->input_fx, tmp_input_fx, input_frame ); q_inp[0] = st->q_old_inp; q_inp[1] = st->q_inp; -#endif Scale_sig( st->input_fx - input_frame, shl( input_frame, 1 ), sub( -1, st->q_inp ) ); st->q_inp = -1; move16(); @@ -893,14 +890,12 @@ ivas_error ivas_core_enc_fx( } } -#ifndef REMOVE_UNUSED_BUFFER_CORE_ENC Copy( tmp_old_input_fx, st->input_fx - input_frame, input_frame ); Copy( tmp_input_fx, st->input_fx, input_frame ); st->q_old_inp = q_inp[0]; move16(); st->q_inp = q_inp[1]; move16(); -#endif /*---------------------------------------------------------------------* * Common updates -- GitLab From a23b682ce43e837a72a1ad90d8c428a3827e673c Mon Sep 17 00:00:00 2001 From: vaclav Date: Fri, 23 Jan 2026 13:49:53 +0100 Subject: [PATCH 09/12] consolidate switches REMOVE_SCALING_SHB_SPEECH --- lib_com/ivas_prot_fx.h | 13 +++---- lib_com/options.h | 3 +- lib_com/prot_fx.h | 4 +-- lib_enc/ivas_core_enc_fx.c | 58 +++++++++++------------------- lib_enc/ivas_stereo_icbwe_enc_fx.c | 18 ++++------ lib_enc/prot_fx_enc.h | 2 +- lib_enc/swb_bwe_enc_fx.c | 6 ++-- lib_enc/swb_pre_proc_fx.c | 8 ++--- 8 files changed, 43 insertions(+), 69 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index fc849f2c7..c8da9fea1 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -1359,23 +1359,20 @@ void stereo_tcx_init_dec_fx( void stereo_icBWE_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ -#ifdef REMOVE_SCALING_SHB_SPEECH_BE +#ifdef REMOVE_SCALING_SHB_SPEECH const Word16 shb_speech_ref_fx16[], /* i : SHB speech ref channel Q0*/ + Word16 shb_speech_nonref_fx_16[], /* i/o: SHB speech non-ref channel shb_speech_nonref_e*/ #else const Word32 shb_speech_ref_fx[], /* i : SHB speech ref channel */ const Word16 shb_speech_ref_e, /* i : SHB speech ref channel */ -#endif -#ifdef SCALING_SWB_SPEECH_32 - Word16 shb_speech_nonref_fx_16[], /* i/o: SHB speech non-ref channel Q15-shb_speech_nonref_e*/ -#else Word32 shb_speech_nonref_fx[], /* i/o: SHB speech non-ref channel */ #endif Word16 shb_speech_nonref_e, /* i/o: SHB speech non-ref channel */ -#ifdef SCALING_SWB_SPEECH_32 - const Word16 *voice_factors_fx /* i : voicing factors Q15 */ +#ifdef REMOVE_SCALING_SHB_SPEECH + const Word16 *voice_factors_fx /* i : voicing factors Q15 */ #else const Word32 *voice_factors_fx /* i : voicing factors Q31 */ - #endif +#endif ); void initMdctStereoDecData_fx( diff --git a/lib_com/options.h b/lib_com/options.h index 201bc7ade..0024e9b5b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -107,8 +107,7 @@ #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_2349_HARM_FIND_UV /* VA: basop issue 2349: harmonization of find_uv() function */ -#define REMOVE_SCALING_SHB_SPEECH_BE -#define SCALING_SWB_SPEECH_32 +#define REMOVE_SCALING_SHB_SPEECH /* VA: remove unnecessary scaling and 32-bit buffers from ivas_core_enc_fx() */ /* #################### End BE switches ################################## */ diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index b4d5b50da..d538fd111 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -10338,11 +10338,11 @@ void Copy_Scale_sig32( void swb_pre_proc_ivas_fx( Encoder_State *st, /* i/o: encoder state structure */ Word16 *new_swb_speech, /* o : original input signal at 32kHz - Q0 */ -#ifndef SCALING_SWB_SPEECH_32 +#ifndef REMOVE_SCALING_SHB_SPEECH Word32 *new_swb_speech_fx, /* o : original input signal at 32kHz - Q - q_reImBuffer */ #endif Word16 *shb_speech, /* o : SHB target signal (6-14kHz) at 16kHz - Q0*/ -#ifndef REMOVE_SCALING_SHB_SPEECH_BE +#ifndef REMOVE_SCALING_SHB_SPEECH Word16 *Q_shb_spch, #endif Word32 realBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : real buffer Q - q_reImbuffer */ diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c index a75998961..7cd893ec4 100644 --- a/lib_enc/ivas_core_enc_fx.c +++ b/lib_enc/ivas_core_enc_fx.c @@ -87,18 +87,14 @@ ivas_error ivas_core_enc_fx( STEREO_ICBWE_ENC_HANDLE hStereoICBWE; STEREO_TD_ENC_DATA_HANDLE hStereoTD; Word16 voice_factors_fx[CPE_CHANNELS][NB_SUBFR16k]; /* Q15 */ -#ifndef REMOVE_SCALING_SHB_SPEECH_BE +#ifndef REMOVE_SCALING_SHB_SPEECH Word32 shb_speech_fx32[L_FRAME16k]; -#endif -#ifndef SCALING_SWB_SPEECH_32 Word32 *new_swb_speech_fx; #endif Word16 *inp_fx[CPE_CHANNELS]; Word16 *shb_speech_fx; -#ifndef REMOVE_SCALING_SHB_SPEECH_BE +#ifndef REMOVE_SCALING_SHB_SPEECH Word16 Q_shb_spch; -#endif -#ifndef SCALING_SWB_SPEECH_32 Word32 new_swb_speech_buffer_fx[L_FRAME48k + STEREO_DFT_OVL_MAX]; #endif Word16 new_inp_resamp16k_fx[CPE_CHANNELS][L_FRAME16k]; /* new input signal @16kHz, non pre-emphasised, used by the WB TBE/BWE */ @@ -118,7 +114,7 @@ ivas_error ivas_core_enc_fx( Word16 max_num_indices_BWE; Word16 i, shift, Q_min; -#ifndef SCALING_SWB_SPEECH_32 +#ifndef REMOVE_SCALING_SHB_SPEECH set32_fx( new_swb_speech_buffer_fx, 0, L_FRAME48k + STEREO_DFT_OVL_MAX ); #endif FOR( i = 0; i < CPE_CHANNELS; i++ ) @@ -133,7 +129,7 @@ ivas_error ivas_core_enc_fx( error = IVAS_ERR_OK; move32(); -#ifndef REMOVE_SCALING_SHB_SPEECH_BE +#ifndef REMOVE_SCALING_SHB_SPEECH Q_shb_spch = 0; move16(); #endif @@ -359,8 +355,8 @@ ivas_error ivas_core_enc_fx( TCX_ENC_HANDLE hTcxEnc = st->hTcxEnc; Word16 Q_spec_old, L_spec; - Scale_sig( old_inp_12k8_fx[n], L_INP_12k8, sub( Q1, Q_new[n] ) ); // Q0 - Scale_sig( old_inp_16k_fx[n], L_INP, sub( Q1, Q_new[n] ) ); // Q0 + Scale_sig( old_inp_12k8_fx[n], L_INP_12k8, sub( Q1, Q_new[n] ) ); // Q0 + Scale_sig( old_inp_16k_fx[n], L_INP, sub( Q1, Q_new[n] ) ); // Q0 Scale_sig( st->hTcxEnc->Txnq, L_FRAME32k / 2 + 64, sub( negate( 1 ), st->hTcxEnc->q_Txnq ) ); /* Q(-1) */ st->hTcxEnc->q_Txnq = -Q1; move16(); @@ -701,7 +697,7 @@ ivas_error ivas_core_enc_fx( * SWB(FB) BWE encoding *---------------------------------------------------------------------*/ -#ifndef SCALING_SWB_SPEECH_32 +#ifndef REMOVE_SCALING_SHB_SPEECH new_swb_speech_fx = new_swb_speech_buffer_fx + STEREO_DFT_OVL_MAX; #endif new_swb_speech_fx_16 = new_swb_speech_buffer_fx_16 + STEREO_DFT_OVL_MAX; @@ -736,12 +732,8 @@ ivas_error ivas_core_enc_fx( st->cldfbSynTd->Q_cldfb_state = sub( q_re_im_buf[n], 1 ); } -#ifdef SCALING_SWB_SPEECH_32 -#ifdef REMOVE_SCALING_SHB_SPEECH_BE +#ifdef REMOVE_SCALING_SHB_SPEECH swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, shb_speech_fx, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); -#else - swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, shb_speech_fx, &Q_shb_spch, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); -#endif #else swb_pre_proc_ivas_fx( st, new_swb_speech_fx_16, new_swb_speech_fx, shb_speech_fx, &Q_shb_spch, realBuffer_fx[n], imagBuffer_fx[n], q_re_im_buf[n], hCPE ); #endif @@ -756,16 +748,14 @@ ivas_error ivas_core_enc_fx( } } -#ifndef REMOVE_SCALING_SHB_SPEECH_BE +#ifndef REMOVE_SCALING_SHB_SPEECH Word16 Q_shb_spch_16 = Q_shb_spch; move16(); -#endif #ifdef FIX_2344_ALIGN_PREPROC IF( st->tcxonly == 0 || hStereoICBWE != NULL || st->core == ACELP_CORE ) // temp. fix to keep BE until #1504 (FLP) is solved, then it will become: // IF( st->tcxonly == 0 ) #endif { -#ifndef REMOVE_SCALING_SHB_SPEECH_BE shift = add( getScaleFactor16( shb_speech_fx, L_FRAME16k ), Q16 ); Copy_Scale_sig_16_32_no_sat( shb_speech_fx, shb_speech_fx32, L_FRAME16k, shift ); // Q_shb_spch Q_shb_spch = add( Q_shb_spch, shift ); @@ -777,7 +767,9 @@ ivas_error ivas_core_enc_fx( move16(); Scale_sig( st->hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, shift ); // st->Q_old_wtda } +#ifndef REMOVE_SCALING_SHB_SPEECH } +#endif /* SWB TBE encoder */ test(); @@ -790,7 +782,7 @@ ivas_error ivas_core_enc_fx( Word16 Q_fb_exc; Word16 fb_exc_fx[L_FRAME16k]; -#ifdef REMOVE_SCALING_SHB_SPEECH_BE +#ifdef REMOVE_SCALING_SHB_SPEECH swb_tbe_enc_ivas_fx( st, hStereoICBWE, shb_speech_fx, bwe_exc_extended_fx[n], voice_factors_fx[n], fb_exc_fx, &Q_fb_exc, Q_new[n], 0, st->voicing_fx, pitch_buf_fx[n] ); #else swb_tbe_enc_ivas_fx( st, hStereoICBWE, shb_speech_fx, bwe_exc_extended_fx[n], voice_factors_fx[n], fb_exc_fx, &Q_fb_exc, Q_new[n], Q_shb_spch_16, st->voicing_fx, pitch_buf_fx[n] ); @@ -805,11 +797,11 @@ ivas_error ivas_core_enc_fx( } ELSE IF( EQ_16( st->extl, SWB_BWE ) || EQ_16( st->extl, FB_BWE ) ) { -#ifndef REMOVE_SCALING_SHB_SPEECH_BE +#ifndef REMOVE_SCALING_SHB_SPEECH Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, -Q16 ); // Q_shb_spch - 16 #endif /* SWB(FB) BWE encoder */ -#ifdef REMOVE_SCALING_SHB_SPEECH_BE +#ifdef REMOVE_SCALING_SHB_SPEECH swb_bwe_enc_ivas_fx( st, last_element_mode, old_inp_12k8_fx[n], old_inp_16k_fx[n], old_syn_12k8_16k_fx[n], new_swb_speech_fx_16, st->q_inp, shb_speech_fx, sub( Q_new[n], 1 ) ); #else swb_bwe_enc_ivas_fx( st, last_element_mode, old_inp_12k8_fx[n], old_inp_16k_fx[n], old_syn_12k8_16k_fx[n], new_swb_speech_fx_16, st->q_inp, shb_speech_fx, sub( Q_shb_spch, Q16 ), sub( Q_new[n], 1 ) ); @@ -828,7 +820,7 @@ ivas_error ivas_core_enc_fx( IF( st->hTdCngEnc != NULL && st->Opt_DTX_ON && ( GE_16( input_frame, L_FRAME32k ) || EQ_16( st->element_mode, IVAS_CPE_DFT ) ) ) { /* SHB DTX/CNG encoder */ -#ifndef REMOVE_SCALING_SHB_SPEECH_BE +#ifndef REMOVE_SCALING_SHB_SPEECH Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, negate( Q_shb_spch ) ); // Q0 #endif #ifdef HARM_NON_LINEARITY @@ -842,7 +834,7 @@ ivas_error ivas_core_enc_fx( * Inter-channel BWE encoding *-------------------------------------------------------------------*/ -#ifndef SCALING_SWB_SPEECH_32 +#ifndef REMOVE_SCALING_SHB_SPEECH Word16 q_new_swb_speech_buffer = getScaleFactor16( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX ); Scale_sig( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX, q_new_swb_speech_buffer ); // st->q_inp+q_new_swb_speech_buffer q_new_swb_speech_buffer = add( st->q_inp, q_new_swb_speech_buffer ); @@ -851,27 +843,19 @@ ivas_error ivas_core_enc_fx( test(); IF( n == 0 && GE_32( input_Fs, 32000 ) && hStereoICBWE != NULL ) { -#ifndef SCALING_SWB_SPEECH_32 +#ifndef REMOVE_SCALING_SHB_SPEECH Word32 voice_factors_fx32[CPE_CHANNELS][NB_SUBFR16k]; stereo_icBWE_preproc_fx( hCPE, input_frame, new_swb_speech_buffer_fx_16 /*tmp buffer*/, q_new_swb_speech_buffer ); -#else - stereo_icBWE_preproc_fx( hCPE, input_frame, new_swb_speech_buffer_fx_16 /*tmp buffer*/, st->q_inp ); -#endif -#ifndef SCALING_SWB_SPEECH_32 q_new_swb_speech_buffer = add( q_new_swb_speech_buffer, Q16 ); Copy_Scale_sig_16_32_no_sat( new_swb_speech_buffer_fx_16, new_swb_speech_buffer_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer+st->q_inp - 16 - > q_new_swb_speech_buffer+st->q_inp Copy_Scale_sig_16_32_no_sat( voice_factors_fx[0], voice_factors_fx32[0], NB_SUBFR16k, Q16 ); // Q31 -#endif -#ifdef SCALING_SWB_SPEECH_32 -#ifdef REMOVE_SCALING_SHB_SPEECH_BE - stereo_icBWE_enc_fx( hCPE, shb_speech_fx, new_swb_speech_buffer_fx_16, st->q_inp, voice_factors_fx[0] ); -#else - stereo_icBWE_enc_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx_16, st->q_inp, voice_factors_fx[0] ); -#endif -#else stereo_icBWE_enc_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx32[0] ); +#else + stereo_icBWE_preproc_fx( hCPE, input_frame, new_swb_speech_buffer_fx_16 /*tmp buffer*/, st->q_inp ); + + stereo_icBWE_enc_fx( hCPE, shb_speech_fx, new_swb_speech_buffer_fx_16, st->q_inp, voice_factors_fx[0] ); #endif IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) diff --git a/lib_enc/ivas_stereo_icbwe_enc_fx.c b/lib_enc/ivas_stereo_icbwe_enc_fx.c index 86e662b57..0fd189e41 100644 --- a/lib_enc/ivas_stereo_icbwe_enc_fx.c +++ b/lib_enc/ivas_stereo_icbwe_enc_fx.c @@ -619,19 +619,16 @@ static void icbwe_dft_stereo_param_ivas_fx( void stereo_icBWE_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ -#ifdef REMOVE_SCALING_SHB_SPEECH_BE +#ifdef REMOVE_SCALING_SHB_SPEECH const Word16 shb_speech_ref_fx16[], /* i : SHB speech ref channel Q0*/ + Word16 shb_speech_nonref_fx_16[], /* i/o: SHB speech non-ref channel shb_speech_nonref_e*/ #else const Word32 shb_speech_ref_fx[], /* i : SHB speech ref channel shb_speech_ref_e*/ const Word16 shb_speech_ref_e, /* i : SHB speech ref channel */ -#endif -#ifdef SCALING_SWB_SPEECH_32 - Word16 shb_speech_nonref_fx_16[], /* i/o: SHB speech non-ref channel shb_speech_nonref_e*/ -#else Word32 shb_speech_nonref_fx[], /* i/o: SHB speech non-ref channel Q31-shb_speech_nonref_e*/ #endif Word16 shb_speech_nonref_e, /* i/o: SHB speech non-ref channel */ -#ifdef SCALING_SWB_SPEECH_32 +#ifdef REMOVE_SCALING_SHB_SPEECH const Word16 *voice_factors_fx16 /* i : voicing factors Q15 */ #else const Word32 *voice_factors_fx /* i : voicing factors Q31 */ @@ -659,18 +656,15 @@ void stereo_icBWE_enc_fx( Word32 temp1_fx, temp2_fx; Word16 temp1_e, temp2_e, shb_frame_ref_e, shb_frame_nonref_e, gDes_e, tmp, exp; -#ifdef REMOVE_SCALING_SHB_SPEECH_BE +#ifdef REMOVE_SCALING_SHB_SPEECH Word32 shb_speech_ref_fx[L_FRAME16k]; Word16 shb_speech_ref_e; + Word32 shb_speech_nonref_fx[L_FRAME48k + STEREO_DFT_OVL_MAX]; + Word32 voice_factors_fx[NB_SUBFR16k]; shb_speech_ref_e = add( getScaleFactor16( shb_speech_ref_fx16, L_FRAME16k ), Q16 ); Copy_Scale_sig_16_32_no_sat( shb_speech_ref_fx16, shb_speech_ref_fx, L_FRAME16k, shb_speech_ref_e ); shb_speech_ref_e = Q31 - shb_speech_ref_e; -#endif - -#ifdef SCALING_SWB_SPEECH_32 - Word32 shb_speech_nonref_fx[L_FRAME48k + STEREO_DFT_OVL_MAX]; - Word32 voice_factors_fx[NB_SUBFR16k]; shb_speech_nonref_e = Q15 - shb_speech_nonref_e; Copy_Scale_sig_16_32_no_sat( shb_speech_nonref_fx_16, shb_speech_nonref_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer+st->q_inp - 16 - > q_new_swb_speech_buffer+st->q_inp diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index ab07c7e80..b5c66c3db 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -599,7 +599,7 @@ void swb_bwe_enc_ivas_fx( const Word16 *old_syn_12k8_16k_fx, /* i : ACELP core synthesis at 12.8kHz or 16kHz */ const Word16 *new_swb_speech_fx, /* i : original input signal at 32kHz */ const Word16 Q_new_swb_speech, /* i : Q for new_swb_speech_fx */ -#ifdef REMOVE_SCALING_SHB_SPEECH_BE +#ifdef REMOVE_SCALING_SHB_SPEECH Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz Q0 */ const Word16 Q_slb_speech #else diff --git a/lib_enc/swb_bwe_enc_fx.c b/lib_enc/swb_bwe_enc_fx.c index c288857c9..e07f79777 100644 --- a/lib_enc/swb_bwe_enc_fx.c +++ b/lib_enc/swb_bwe_enc_fx.c @@ -271,7 +271,7 @@ void swb_bwe_enc_ivas_fx( const Word16 *old_syn_12k8_16k_fx, /* i : ACELP core synthesis at 12.8kHz or 16kHz */ const Word16 *new_swb_speech_fx, /* i : original input signal at 32kHz */ const Word16 Q_new_swb_speech, /* i : Q for new_swb_speech_fx */ -#ifdef REMOVE_SCALING_SHB_SPEECH_BE +#ifdef REMOVE_SCALING_SHB_SPEECH Word16 *shb_speech_fx_Q0, /* i : SHB target signal (6-14kHz) at 16kHz Q0 */ const Word16 Q_slb_speech #else @@ -311,7 +311,7 @@ void swb_bwe_enc_ivas_fx( move16(); Word16 fb_band_begin; Word16 q_new_input_hp; -#ifdef REMOVE_SCALING_SHB_SPEECH_BE +#ifdef REMOVE_SCALING_SHB_SPEECH Word16 shb_speech_fx[L_FRAME16k]; Word16 Q_shb_speech; #endif @@ -319,7 +319,7 @@ void swb_bwe_enc_ivas_fx( FD_BWE_ENC_HANDLE hBWE_FD = st_fx->hBWE_FD; TD_BWE_ENC_HANDLE hBWE_TD = st_fx->hBWE_TD; -#ifdef REMOVE_SCALING_SHB_SPEECH_BE +#ifdef REMOVE_SCALING_SHB_SPEECH Q_shb_speech = getScaleFactor16( shb_speech_fx_Q0, L_FRAME16k ); Copy_Scale_sig( shb_speech_fx_Q0, shb_speech_fx, L_FRAME16k, Q_shb_speech ); // Q0 -> Q_shb_spch #endif diff --git a/lib_enc/swb_pre_proc_fx.c b/lib_enc/swb_pre_proc_fx.c index 0cccc621c..107d85ccd 100644 --- a/lib_enc/swb_pre_proc_fx.c +++ b/lib_enc/swb_pre_proc_fx.c @@ -774,11 +774,11 @@ void swb_pre_proc_fx( void swb_pre_proc_ivas_fx( Encoder_State *st, /* i/o: encoder state structure */ Word16 *new_swb_speech, /* o : original input signal at 32kHz - st->q_inp */ -#ifndef SCALING_SWB_SPEECH_32 +#ifndef REMOVE_SCALING_SHB_SPEECH Word32 *new_swb_speech_fx, /* o : original input signal at 32kHz - Q - q_reImBuffer */ #endif Word16 *shb_speech, /* o : SHB target signal (6-14kHz) at 16kHz - Q0 */ -#ifndef REMOVE_SCALING_SHB_SPEECH_BE +#ifndef REMOVE_SCALING_SHB_SPEECH Word16 *Q_shb_spch, #endif Word32 realBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i : real buffer Q - q_reImbuffer */ @@ -1066,7 +1066,7 @@ void swb_pre_proc_ivas_fx( ELSE /* IVAS_CPE_DFT */ { Word16 out_start_ind, out_end_ind; -#ifdef SCALING_SWB_SPEECH_32 +#ifdef REMOVE_SCALING_SHB_SPEECH Word32 new_swb_speech_buffer_fx[L_FRAME48k + STEREO_DFT_OVL_MAX]; Word32 *new_swb_speech_fx; set32_fx( new_swb_speech_buffer_fx, 0, L_FRAME48k + STEREO_DFT_OVL_MAX ); @@ -1282,7 +1282,7 @@ void swb_pre_proc_ivas_fx( cldfbSynthesis_ivas_fx( realBufferFlipped, imagBufferFlipped, shb_speech_fx_32, -1, 0, 0, st->cldfbSynTd ); Copy_Scale_sig_32_16( shb_speech_fx_32, shb_speech, L_FRAME16k, negate( sub( q_reImBuffer, 1 ) ) ); // Q0 -#ifndef REMOVE_SCALING_SHB_SPEECH_BE +#ifndef REMOVE_SCALING_SHB_SPEECH *Q_shb_spch = 0; move16(); #endif -- GitLab From 3b9b748ca81c571a1911e82aae93f5d1cf3caea7 Mon Sep 17 00:00:00 2001 From: vaclav Date: Fri, 23 Jan 2026 13:56:38 +0100 Subject: [PATCH 10/12] formatting --- lib_enc/ivas_core_enc_fx.c | 7 +++++-- lib_enc/ivas_mdct_core_enc_fx.c | 20 ++++---------------- lib_enc/ivas_tcx_core_enc_fx.c | 21 ++++++++++----------- 3 files changed, 19 insertions(+), 29 deletions(-) diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c index 7cd893ec4..a8cfdfacf 100644 --- a/lib_enc/ivas_core_enc_fx.c +++ b/lib_enc/ivas_core_enc_fx.c @@ -355,8 +355,9 @@ ivas_error ivas_core_enc_fx( TCX_ENC_HANDLE hTcxEnc = st->hTcxEnc; Word16 Q_spec_old, L_spec; - Scale_sig( old_inp_12k8_fx[n], L_INP_12k8, sub( Q1, Q_new[n] ) ); // Q0 - Scale_sig( old_inp_16k_fx[n], L_INP, sub( Q1, Q_new[n] ) ); // Q0 + Scale_sig( old_inp_12k8_fx[n], L_INP_12k8, sub( Q1, Q_new[n] ) ); // Q0 + Scale_sig( old_inp_16k_fx[n], L_INP, sub( Q1, Q_new[n] ) ); // Q0 + Scale_sig( st->hTcxEnc->Txnq, L_FRAME32k / 2 + 64, sub( negate( 1 ), st->hTcxEnc->q_Txnq ) ); /* Q(-1) */ st->hTcxEnc->q_Txnq = -Q1; move16(); @@ -535,6 +536,7 @@ ivas_error ivas_core_enc_fx( { st = sts[i]; Scale_sig( old_inp_16k_fx[i], L_INP, sub( Q1, Q_new[i] ) ); // Q0 + test(); IF( NE_16( st->element_mode, IVAS_CPE_DFT ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { @@ -652,6 +654,7 @@ ivas_error ivas_core_enc_fx( Copy( st->input_fx, tmp_input_fx, input_frame ); q_inp[0] = st->q_old_inp; q_inp[1] = st->q_inp; + Scale_sig( st->input_fx - input_frame, shl( input_frame, 1 ), sub( -1, st->q_inp ) ); st->q_inp = -1; move16(); diff --git a/lib_enc/ivas_mdct_core_enc_fx.c b/lib_enc/ivas_mdct_core_enc_fx.c index 2bf2e3273..f4889bf5f 100644 --- a/lib_enc/ivas_mdct_core_enc_fx.c +++ b/lib_enc/ivas_mdct_core_enc_fx.c @@ -1116,8 +1116,8 @@ void enc_prm_igf_mdct( *-------------------------------------------------------------------*/ void ivas_mdct_core_whitening_enc_fx( - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - Word16 new_samples_fx[CPE_CHANNELS][L_INP], /* i : new samples Qnew-1*/ + CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ + Word16 new_samples_fx[CPE_CHANNELS][L_INP], /* i : new samples Q0*/ Word16 old_wsp_fx[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/ Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k], /* o : floating pitch for each subframe Q6*/ Word32 *mdst_spectrum_long_fx[CPE_CHANNELS], /* o : buffer for MDST spectrum mdst_spectrum_e*/ @@ -1222,7 +1222,6 @@ void ivas_mdct_core_whitening_enc_fx( windowedSignal_fx[0] = orig_spectrum_long[0]; /* NOTE temporarily available */ windowedSignal_fx[1] = temp_buffer; /* orig_spectrum_long isn't long enough */ - /*--------------------------------------------------------------* * TCX20/TCX10 switching decision *---------------------------------------------------------------*/ @@ -1322,7 +1321,6 @@ void ivas_mdct_core_whitening_enc_fx( move32(); } } - /*--------------------------------------------------------------* * Transform Kernel Switching, Stereo Pre-Processing, and TNS *---------------------------------------------------------------*/ @@ -1524,7 +1522,6 @@ void ivas_mdct_core_whitening_enc_fx( move16(); move16(); } - FOR( n = 0; n < nSubframes; n++ ) { test(); @@ -1711,6 +1708,7 @@ void ivas_mdct_core_whitening_enc_fx( init_tcx_enc_info_fx( sts[ch], &L_subframe, &L_subframeTCX, &tcx_subframe_coded_lines ); + nSubframes = NB_DIV; move16(); shift = 1; @@ -1760,7 +1758,6 @@ void ivas_mdct_core_whitening_enc_fx( } } } - TCX_ENC_HANDLE hTcxEnc = NULL; q_min = 0; move16(); @@ -1813,11 +1810,9 @@ void ivas_mdct_core_whitening_enc_fx( } } TNSAnalysisStereo_fx( sts, mdst_spectrum_fx, 0, tnsSize, tnsBits, param_core, mct_on ); - /*--------------------------------------------------------------* * Envelope Quantization and FDNS *---------------------------------------------------------------*/ - /* Common q for spectrum and mdst */ q_min = 0; move16(); @@ -2067,6 +2062,7 @@ void ivas_mdct_core_whitening_enc_fx( init_tcx_enc_info_fx( st, &L_subframe, &L_subframeTCX, &tcx_subframe_coded_lines ); + IF( NE_16( st->hTcxEnc->tcxMode, TCX_20 ) ) { /* nSubframes = NB_DIV = 2 */ @@ -2095,7 +2091,6 @@ void ivas_mdct_core_whitening_enc_fx( Scale_sig32( st->hTcxEnc->spectrum_fx[n] + L_subframe, sub( L_subframeTCX, L_subframe ), sub( exp_tmp, st->hTcxEnc->spectrum_e[n] ) ); } } - /*--------------------------------------------------------------* * TNS *---------------------------------------------------------------*/ @@ -2318,7 +2313,6 @@ void ivas_mdct_core_whitening_enc_fx( /*--------------------------------------------------------------------------------* * SNS parameters *--------------------------------------------------------------------------------*/ - test(); test(); test(); @@ -2485,12 +2479,6 @@ void ivas_mdct_core_whitening_enc_fx( } -/*--------------------------------------------------------------* - * ivas_mdct_quant_coder() - * - * Spectrum quantization and coding - *---------------------------------------------------------------*/ - void ivas_mdct_quant_coder_fx( CPE_ENC_HANDLE hCPE, /* i/o: Encoder CPE handle */ Word16 tnsBits[CPE_CHANNELS][NB_DIV], /* i : bits needed for TNS parameters */ diff --git a/lib_enc/ivas_tcx_core_enc_fx.c b/lib_enc/ivas_tcx_core_enc_fx.c index 5dacc2474..6bd3aca8c 100644 --- a/lib_enc/ivas_tcx_core_enc_fx.c +++ b/lib_enc/ivas_tcx_core_enc_fx.c @@ -151,17 +151,16 @@ void stereo_tcx_init_enc_fx( *-------------------------------------------------------------------*/ void stereo_tcx_core_enc( - Encoder_State *st, /* i/o: encoder state structure */ - const Word16 new_samples_12k8[], /* i : buffer of input signal @12.8 kHz Q_new*/ - const Word16 new_samples_16k[], /* i : buffer of input signal @16 kHz Q_new*/ + Encoder_State *st, /* i/o: encoder state structure */ + const Word16 new_samples_12k8[], /* i : buffer of input signal @12.8 kHz Q_new*/ + const Word16 new_samples_16k[], /* i : buffer of input signal @16 kHz Q_new*/ const Word16 Aw_fx[], /* i : weighted A(z) unquant. for subframes, Q12 */ Word16 lsp_new_fx[], /* i : LSPs at the end of the frame, Q15 */ Word16 lsp_mid_fx[], /* i : LSPs in the middle of the frame, Q15 */ Word16 pitch_buf_fx[NB_SUBFR16k], /* o : pitch for each subframe, Q6 */ const Word16 last_element_mode, /* i : last element mode, Q0 */ const Word16 vad_hover_flag, /* i : VAD hangover flag, Q0 */ - Word16 Q_new -) + Word16 Q_new ) { TCX_ENC_HANDLE hTcxEnc; Word16 i, n; @@ -174,8 +173,7 @@ void stereo_tcx_core_enc( Word16 last_core_orig; /*Bits*/ - Word16 nbits_start, - total_nbbits, nbits_header; + Word16 nbits_start, total_nbbits, nbits_header; Word16 target_bits[2], bitsAvailable; Word16 nbits_lpc[2]; Word16 tnsSize[2]; /* number of tns parameters put into prm */ @@ -204,12 +202,15 @@ void stereo_tcx_core_enc( /*HM*/ Word16 indexBuffer[2 * ( ( N_MAX / 2 ) + 1 )]; + Word16 s; + CONTEXT_HM_CONFIG hm_cfg[2]; /* bitstream */ BSTR_ENC_HANDLE hBstr = st->hBstr; + push_wmops( "stereo_tcx_core_enc" ); /*Sanity check*/ @@ -299,11 +300,11 @@ void stereo_tcx_core_enc( IF( EQ_16( st->L_frame, L_FRAME ) ) { - p_new_samples = new_samples_12k8; /* Q0 */ + p_new_samples = new_samples_12k8; /* Q_new */ } ELSE { - p_new_samples = new_samples_16k; /* Q0 */ + p_new_samples = new_samples_16k; /* Q_new */ } /*--------------------------------------------------------------* @@ -679,7 +680,6 @@ void stereo_tcx_core_enc( /*--------------------------------------------------------------------------------* * Encode TCX20/10 parameters *--------------------------------------------------------------------------------*/ - writeTCXparam_fx( st, hBstr, hm_cfg, param_core, nbits_header, nbits_start, add( nbits_lpc[0], nbits_lpc[1] ), NULL, NULL, NULL, -1 ); total_nbbits = sub( hBstr->nb_bits_tot, nbits_start ); @@ -704,7 +704,6 @@ void stereo_tcx_core_enc( move16(); } } - Scale_sig( st->synth, st->L_frame, -Q_new ); IF( st->tcxonly == 0 ) { -- GitLab From ed41b0648c2a817011976004c27d6cf6b23b01a5 Mon Sep 17 00:00:00 2001 From: vaclav Date: Fri, 23 Jan 2026 14:14:14 +0100 Subject: [PATCH 11/12] clang-format --- lib_enc/ivas_stereo_mdct_core_enc_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index f085dd9c4..4e4d0d92a 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -128,8 +128,8 @@ static void sync_tcx_mode_fx( *-------------------------------------------------------------------*/ void stereo_mdct_core_enc_fx( - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q_new-1*/ + CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ + Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q_new-1*/ Word16 old_wsp[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/ Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k] /* o : floating pitch for each subframe Q6*/ ) -- GitLab From 5709d4ffc6007935549e0455890766cb131c9dc7 Mon Sep 17 00:00:00 2001 From: vaclav Date: Fri, 23 Jan 2026 14:26:35 +0100 Subject: [PATCH 12/12] revert comment --- lib_enc/ivas_stereo_mdct_core_enc_fx.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index 4e4d0d92a..705635d88 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -126,10 +126,9 @@ static void sync_tcx_mode_fx( * * joint stereo mdct core encoder *-------------------------------------------------------------------*/ - void stereo_mdct_core_enc_fx( CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q_new-1*/ + Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q0*/ Word16 old_wsp[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/ Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k] /* o : floating pitch for each subframe Q6*/ ) -- GitLab