From fd0cc99c84873f1c7159b0ed0721d06b7b2db839 Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Fri, 23 May 2025 14:35:26 -0400 Subject: [PATCH 1/7] possible fix to #1328 --- lib_com/options.h | 2 +- lib_dec/acelp_core_dec.c | 6 ++++++ lib_enc/acelp_core_enc.c | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index f7ce57b4bd..92d8e6685e 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -172,7 +172,7 @@ #define NONBE_1244_FIX_SWB_BWE_MEMORY /* VA: issue 1244: fix to SWB BWE memory in case of switching from FB coding - pending a review by Huawei */ #define NONBE_1122_KEEP_EVS_MODE_UNCHANGED /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR. */ - +#define NONBE_1328_FIX_NON_LINEARITY /* VA: Fix possible issue when computing bwe_exc_extended and previous frame were almost 0 */ /* ##################### End NON-BE switches ########################### */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_dec/acelp_core_dec.c b/lib_dec/acelp_core_dec.c index 46a3ec3014..13702e3d67 100644 --- a/lib_dec/acelp_core_dec.c +++ b/lib_dec/acelp_core_dec.c @@ -1424,6 +1424,12 @@ ivas_error acelp_core_dec( if ( !st->ppp_mode_dec && ( st->idchan == 0 || st->element_mode != IVAS_CPE_TD || ( st->idchan == 1 && st->element_mode == IVAS_CPE_TD && st->tdm_LRTD_flag ) ) ) { +#ifdef NONBE_1328_FIX_NON_LINEARITY + if ( st->hBWE_TD->bwe_non_lin_prev_scale > 0.1f && st->element_mode > EVS_MONO && ( st->coder_type <= UNVOICED ) ) + { + st->hBWE_TD->bwe_non_lin_prev_scale = 0.025f; + } +#endif non_linearity( bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame ); } diff --git a/lib_enc/acelp_core_enc.c b/lib_enc/acelp_core_enc.c index cf43042ce0..198d720f64 100644 --- a/lib_enc/acelp_core_enc.c +++ b/lib_enc/acelp_core_enc.c @@ -701,6 +701,12 @@ ivas_error acelp_core_enc( if ( !st->Opt_SC_VBR && ( st->idchan == 0 || st->element_mode != IVAS_CPE_TD || ( st->idchan == 1 && st->element_mode == IVAS_CPE_TD && st->tdm_LRTD_flag ) ) ) { +#ifdef NONBE_1328_FIX_NON_LINEARITY + if ( st->hBWE_TD->bwe_non_lin_prev_scale > 0.1f && st->element_mode > EVS_MONO && ( st->coder_type <= UNVOICED ) ) + { + st->hBWE_TD->bwe_non_lin_prev_scale = 0.025f; + } +#endif /* Apply a non linearity to the SHB excitation */ non_linearity( bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame ); } -- GitLab From 4599af5b16105ff44f5d332c9134c6cfc3d62369 Mon Sep 17 00:00:00 2001 From: malenov Date: Tue, 10 Jun 2025 14:36:45 +0200 Subject: [PATCH 2/7] alternative fix to prevent excessive re-scaling of BWE excitation signal --- lib_com/swb_tbe_com.c | 5 ++++- lib_dec/acelp_core_dec.c | 6 ------ lib_enc/acelp_core_enc.c | 6 ------ 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/lib_com/swb_tbe_com.c b/lib_com/swb_tbe_com.c index a8d88c2b0f..096fc02250 100644 --- a/lib_com/swb_tbe_com.c +++ b/lib_com/swb_tbe_com.c @@ -1410,8 +1410,11 @@ void non_linearity( scale = 0.67f; } - +#ifdef NONBE_1328_FIX_NON_LINEARITY + if ( *prev_scale <= 0.0 || *prev_scale > 256.0f * scale ) +#else if ( *prev_scale <= 0.0 || *prev_scale > 1024.0f * scale ) +#endif { scale_step = 1.0; *prev_scale = scale; diff --git a/lib_dec/acelp_core_dec.c b/lib_dec/acelp_core_dec.c index 13702e3d67..46a3ec3014 100644 --- a/lib_dec/acelp_core_dec.c +++ b/lib_dec/acelp_core_dec.c @@ -1424,12 +1424,6 @@ ivas_error acelp_core_dec( if ( !st->ppp_mode_dec && ( st->idchan == 0 || st->element_mode != IVAS_CPE_TD || ( st->idchan == 1 && st->element_mode == IVAS_CPE_TD && st->tdm_LRTD_flag ) ) ) { -#ifdef NONBE_1328_FIX_NON_LINEARITY - if ( st->hBWE_TD->bwe_non_lin_prev_scale > 0.1f && st->element_mode > EVS_MONO && ( st->coder_type <= UNVOICED ) ) - { - st->hBWE_TD->bwe_non_lin_prev_scale = 0.025f; - } -#endif non_linearity( bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame ); } diff --git a/lib_enc/acelp_core_enc.c b/lib_enc/acelp_core_enc.c index 198d720f64..cf43042ce0 100644 --- a/lib_enc/acelp_core_enc.c +++ b/lib_enc/acelp_core_enc.c @@ -701,12 +701,6 @@ ivas_error acelp_core_enc( if ( !st->Opt_SC_VBR && ( st->idchan == 0 || st->element_mode != IVAS_CPE_TD || ( st->idchan == 1 && st->element_mode == IVAS_CPE_TD && st->tdm_LRTD_flag ) ) ) { -#ifdef NONBE_1328_FIX_NON_LINEARITY - if ( st->hBWE_TD->bwe_non_lin_prev_scale > 0.1f && st->element_mode > EVS_MONO && ( st->coder_type <= UNVOICED ) ) - { - st->hBWE_TD->bwe_non_lin_prev_scale = 0.025f; - } -#endif /* Apply a non linearity to the SHB excitation */ non_linearity( bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame ); } -- GitLab From f9e867d30086be890949e7f5b8caea8cac57b242 Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Wed, 30 Jul 2025 11:44:12 -0400 Subject: [PATCH 3/7] Adapting the solution depening of max position --- lib_com/swb_tbe_com.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib_com/swb_tbe_com.c b/lib_com/swb_tbe_com.c index 096fc02250..159fc21a17 100644 --- a/lib_com/swb_tbe_com.c +++ b/lib_com/swb_tbe_com.c @@ -1365,7 +1365,9 @@ void non_linearity( int16_t en_abs = 0; float v_fac = 0, ths; int16_t nframes; - +#ifdef NONBE_1328_FIX_NON_LINEARITY + float sc_factor; +#endif if ( L_frame == L_FRAME16k ) { nframes = 5; @@ -1411,7 +1413,10 @@ void non_linearity( } #ifdef NONBE_1328_FIX_NON_LINEARITY - if ( *prev_scale <= 0.0 || *prev_scale > 256.0f * scale ) + sc_factor = (float) ( 1 << ( 13 - norm_s( j + 1 ) ) ); /* Adapt the scaling factor allowed depending of max position */ + sc_factor = max( sc_factor, 2.0f ); + + if ( *prev_scale <= 0.0 || *prev_scale > sc_factor * scale ) #else if ( *prev_scale <= 0.0 || *prev_scale > 1024.0f * scale ) #endif @@ -1471,8 +1476,14 @@ void non_linearity( scale = 0.67f; } +#ifdef NONBE_1328_FIX_NON_LINEARITY + sc_factor = (float) ( 1 << ( 12 - norm_s( j - length / 2 + 1 ) ) ); /* allowed intra frame jump is smaller */ + sc_factor = max( sc_factor, 2.0f ); + if ( *prev_scale <= 0.0 || *prev_scale > sc_factor * scale ) +#else if ( *prev_scale <= 0.0 || *prev_scale > 1024.0f * scale ) +#endif { scale_step = 1.0; *prev_scale = scale; -- GitLab From 3dffc062fdb879f295ab63affd9d36f93c2219dd Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Wed, 30 Jul 2025 12:26:56 -0400 Subject: [PATCH 4/7] fix possible undefined behaviour --- lib_com/swb_tbe_com.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/swb_tbe_com.c b/lib_com/swb_tbe_com.c index 159fc21a17..111fc5ec7e 100644 --- a/lib_com/swb_tbe_com.c +++ b/lib_com/swb_tbe_com.c @@ -1413,7 +1413,7 @@ void non_linearity( } #ifdef NONBE_1328_FIX_NON_LINEARITY - sc_factor = (float) ( 1 << ( 13 - norm_s( j + 1 ) ) ); /* Adapt the scaling factor allowed depending of max position */ + sc_factor = (float) ( 1 << max( 13 - norm_s( j + 1 ), 0 ) ); /* Adapt the scaling factor allowed depending of max position */ sc_factor = max( sc_factor, 2.0f ); if ( *prev_scale <= 0.0 || *prev_scale > sc_factor * scale ) @@ -1477,7 +1477,7 @@ void non_linearity( } #ifdef NONBE_1328_FIX_NON_LINEARITY - sc_factor = (float) ( 1 << ( 12 - norm_s( j - length / 2 + 1 ) ) ); /* allowed intra frame jump is smaller */ + sc_factor = (float) ( 1 << max( 12 - norm_s( j - length / 2 + 1 ), 0 ) ); /* allowed intra frame jump is smaller */ sc_factor = max( sc_factor, 2.0f ); if ( *prev_scale <= 0.0 || *prev_scale > sc_factor * scale ) -- GitLab From 211eb37b75a1662272fe3ff7f8a4257723bc7268 Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Tue, 19 Aug 2025 15:05:52 -0400 Subject: [PATCH 5/7] adding a condition to differentiate EVS and IVAS --- lib_com/swb_tbe_com.c | 22 ++++++++++++++++------ lib_dec/acelp_core_dec.c | 6 +++++- lib_dec/dec_acelp_tcx_main.c | 7 ++++++- lib_enc/acelp_core_enc.c | 6 +++++- lib_enc/enc_acelp_tcx_main.c | 6 +++++- 5 files changed, 37 insertions(+), 10 deletions(-) diff --git a/lib_com/swb_tbe_com.c b/lib_com/swb_tbe_com.c index 111fc5ec7e..e8f83d3473 100644 --- a/lib_com/swb_tbe_com.c +++ b/lib_com/swb_tbe_com.c @@ -1353,6 +1353,10 @@ void non_linearity( const int16_t coder_type, /* i : Coder Type */ const float *voice_factors, /* i : Voice Factors */ const int16_t L_frame /* i : ACELP frame length */ +#ifdef NONBE_1328_FIX_NON_LINEARITY + , + const int16_t element_mode /* i : element_mode to differentiate EVS and IVAS */ +#endif ) { int16_t i, j; @@ -1413,9 +1417,12 @@ void non_linearity( } #ifdef NONBE_1328_FIX_NON_LINEARITY - sc_factor = (float) ( 1 << max( 13 - norm_s( j + 1 ), 0 ) ); /* Adapt the scaling factor allowed depending of max position */ - sc_factor = max( sc_factor, 2.0f ); - + sc_factor = 1024.0f; + if ( element_mode > EVS_MONO ) + { + sc_factor = (float) ( 1 << max( 13 - norm_s( j + 1 ), 0 ) ); /* Adapt the scaling factor allowed depending of max position */ + sc_factor = max( sc_factor, 2.0f ); + } if ( *prev_scale <= 0.0 || *prev_scale > sc_factor * scale ) #else if ( *prev_scale <= 0.0 || *prev_scale > 1024.0f * scale ) @@ -1477,9 +1484,12 @@ void non_linearity( } #ifdef NONBE_1328_FIX_NON_LINEARITY - sc_factor = (float) ( 1 << max( 12 - norm_s( j - length / 2 + 1 ), 0 ) ); /* allowed intra frame jump is smaller */ - sc_factor = max( sc_factor, 2.0f ); - + sc_factor = 1024.0f; + if ( element_mode > EVS_MONO ) + { + sc_factor = (float) ( 1 << max( 12 - norm_s( j - length / 2 + 1 ), 0 ) ); /* allowed intra frame jump is smaller */ + sc_factor = max( sc_factor, 2.0f ); + } if ( *prev_scale <= 0.0 || *prev_scale > sc_factor * scale ) #else if ( *prev_scale <= 0.0 || *prev_scale > 1024.0f * scale ) diff --git a/lib_dec/acelp_core_dec.c b/lib_dec/acelp_core_dec.c index 8e3a5cff68..4cfa06115b 100644 --- a/lib_dec/acelp_core_dec.c +++ b/lib_dec/acelp_core_dec.c @@ -1414,7 +1414,11 @@ ivas_error acelp_core_dec( if ( !st->ppp_mode_dec && ( st->idchan == 0 || st->element_mode != IVAS_CPE_TD || ( st->idchan == 1 && st->element_mode == IVAS_CPE_TD && st->tdm_LRTD_flag ) ) ) { - non_linearity( bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame ); + non_linearity( bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame +#ifdef NONBE_1328_FIX_NON_LINEARITY + , st->element_mode +#endif + ); } if ( st->core_brate == FRAME_NO_DATA || st->core_brate == SID_2k40 ) diff --git a/lib_dec/dec_acelp_tcx_main.c b/lib_dec/dec_acelp_tcx_main.c index 4689bdb795..6baf128c00 100644 --- a/lib_dec/dec_acelp_tcx_main.c +++ b/lib_dec/dec_acelp_tcx_main.c @@ -425,7 +425,12 @@ void dec_acelp_tcx_frame( if ( st->core == ACELP_CORE && st->igf && st->con_tcx == 0 ) { - non_linearity( ptr_bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame ); + non_linearity( ptr_bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame +#ifdef NONBE_1328_FIX_NON_LINEARITY + , + st->element_mode +#endif + ); /* update the old BWE exe memory */ mvr2r( &old_bwe_exc[L_FRAME32k], st->hBWE_TD->old_bwe_exc, PIT16k_MAX * 2 ); diff --git a/lib_enc/acelp_core_enc.c b/lib_enc/acelp_core_enc.c index 535a52430e..7814bea8f3 100644 --- a/lib_enc/acelp_core_enc.c +++ b/lib_enc/acelp_core_enc.c @@ -695,7 +695,11 @@ ivas_error acelp_core_enc( if ( !st->Opt_SC_VBR && ( st->idchan == 0 || st->element_mode != IVAS_CPE_TD || ( st->idchan == 1 && st->element_mode == IVAS_CPE_TD && st->tdm_LRTD_flag ) ) ) { /* Apply a non linearity to the SHB excitation */ - non_linearity( bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame ); + non_linearity( bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame +#ifdef NONBE_1328_FIX_NON_LINEARITY + , st->element_mode +#endif + ); } if ( st->core_brate == SID_2k40 || st->core_brate == FRAME_NO_DATA ) diff --git a/lib_enc/enc_acelp_tcx_main.c b/lib_enc/enc_acelp_tcx_main.c index 6ede9b9bf1..fdff974ab8 100644 --- a/lib_enc/enc_acelp_tcx_main.c +++ b/lib_enc/enc_acelp_tcx_main.c @@ -99,7 +99,11 @@ void enc_acelp_tcx_main( /* Apply non linearity to the SHB excitation */ if ( st->core == ACELP_CORE && st->igf ) { - non_linearity( ptr_bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame ); + non_linearity( ptr_bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame +#ifdef NONBE_1328_FIX_NON_LINEARITY + , st->element_mode +#endif + ); /* update the old_BWE_exc memory */ mvr2r( &old_bwe_exc[L_FRAME32k], st->hBWE_TD->old_bwe_exc, PIT16k_MAX * 2 ); -- GitLab From 08ceba5a26616066a241b935346897df30925dc1 Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Tue, 19 Aug 2025 15:06:17 -0400 Subject: [PATCH 6/7] adding a condition to differentiate EVS and IVAS --- lib_com/prot.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib_com/prot.h b/lib_com/prot.h index c1dd64527d..d6c80cd733 100644 --- a/lib_com/prot.h +++ b/lib_com/prot.h @@ -2653,6 +2653,10 @@ void non_linearity( const int16_t coder_type, /* i : Coder Type */ const float *voice_factors, /* i : Voice Factors */ const int16_t L_frame /* i : ACELP frame length */ +#ifdef NONBE_1328_FIX_NON_LINEARITY + , + const int16_t element_mode /* i : element_mode to differentiate EVS and IVAS */ +#endif ); void interp_code_5over2( -- GitLab From ec9968e65358f70f12a9616f48b267b2f46f38f4 Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Tue, 19 Aug 2025 15:09:38 -0400 Subject: [PATCH 7/7] fix clang --- lib_com/prot.h | 4 ++-- lib_com/swb_tbe_com.c | 2 +- lib_dec/acelp_core_dec.c | 5 +++-- lib_dec/dec_acelp_tcx_main.c | 2 +- lib_enc/acelp_core_enc.c | 3 ++- lib_enc/enc_acelp_tcx_main.c | 3 ++- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib_com/prot.h b/lib_com/prot.h index d6c80cd733..efb77f0a3f 100644 --- a/lib_com/prot.h +++ b/lib_com/prot.h @@ -2655,8 +2655,8 @@ void non_linearity( const int16_t L_frame /* i : ACELP frame length */ #ifdef NONBE_1328_FIX_NON_LINEARITY , - const int16_t element_mode /* i : element_mode to differentiate EVS and IVAS */ -#endif + const int16_t element_mode /* i : element_mode to differentiate EVS and IVAS */ +#endif ); void interp_code_5over2( diff --git a/lib_com/swb_tbe_com.c b/lib_com/swb_tbe_com.c index e8f83d3473..ed06e57636 100644 --- a/lib_com/swb_tbe_com.c +++ b/lib_com/swb_tbe_com.c @@ -1355,7 +1355,7 @@ void non_linearity( const int16_t L_frame /* i : ACELP frame length */ #ifdef NONBE_1328_FIX_NON_LINEARITY , - const int16_t element_mode /* i : element_mode to differentiate EVS and IVAS */ + const int16_t element_mode /* i : element_mode to differentiate EVS and IVAS */ #endif ) { diff --git a/lib_dec/acelp_core_dec.c b/lib_dec/acelp_core_dec.c index 4cfa06115b..d488d4479e 100644 --- a/lib_dec/acelp_core_dec.c +++ b/lib_dec/acelp_core_dec.c @@ -1414,9 +1414,10 @@ ivas_error acelp_core_dec( if ( !st->ppp_mode_dec && ( st->idchan == 0 || st->element_mode != IVAS_CPE_TD || ( st->idchan == 1 && st->element_mode == IVAS_CPE_TD && st->tdm_LRTD_flag ) ) ) { - non_linearity( bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame + non_linearity( bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame #ifdef NONBE_1328_FIX_NON_LINEARITY - , st->element_mode + , + st->element_mode #endif ); } diff --git a/lib_dec/dec_acelp_tcx_main.c b/lib_dec/dec_acelp_tcx_main.c index 6baf128c00..a591157e44 100644 --- a/lib_dec/dec_acelp_tcx_main.c +++ b/lib_dec/dec_acelp_tcx_main.c @@ -430,7 +430,7 @@ void dec_acelp_tcx_frame( , st->element_mode #endif - ); + ); /* update the old BWE exe memory */ mvr2r( &old_bwe_exc[L_FRAME32k], st->hBWE_TD->old_bwe_exc, PIT16k_MAX * 2 ); diff --git a/lib_enc/acelp_core_enc.c b/lib_enc/acelp_core_enc.c index 7814bea8f3..33bef3e67a 100644 --- a/lib_enc/acelp_core_enc.c +++ b/lib_enc/acelp_core_enc.c @@ -697,7 +697,8 @@ ivas_error acelp_core_enc( /* Apply a non linearity to the SHB excitation */ non_linearity( bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame #ifdef NONBE_1328_FIX_NON_LINEARITY - , st->element_mode + , + st->element_mode #endif ); } diff --git a/lib_enc/enc_acelp_tcx_main.c b/lib_enc/enc_acelp_tcx_main.c index fdff974ab8..8851d9be5e 100644 --- a/lib_enc/enc_acelp_tcx_main.c +++ b/lib_enc/enc_acelp_tcx_main.c @@ -101,7 +101,8 @@ void enc_acelp_tcx_main( { non_linearity( ptr_bwe_exc, bwe_exc_extended, st->hBWE_TD->old_bwe_exc_extended, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale, st->coder_type, voice_factors, st->L_frame #ifdef NONBE_1328_FIX_NON_LINEARITY - , st->element_mode + , + st->element_mode #endif ); -- GitLab