From 9f78bff539df1b704188ba887ce23583d42cb1a6 Mon Sep 17 00:00:00 2001 From: Stefan Doehla Date: Mon, 5 Dec 2022 23:19:25 +0000 Subject: [PATCH 1/4] Band aid for Issue #150 - should correspond to legacy behavior using globals --- lib_com/hq2_bit_alloc.c | 17 ++++++++++++++++- lib_com/options.h | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib_com/hq2_bit_alloc.c b/lib_com/hq2_bit_alloc.c index b46f54480e..bfc11a5cd8 100644 --- a/lib_com/hq2_bit_alloc.c +++ b/lib_com/hq2_bit_alloc.c @@ -375,6 +375,13 @@ void hq2_bit_alloc_har( Word32 L_y[BANDS_MAX]; +#ifdef FIX_150 +#ifdef BASOP_NOGLOB + Flag Overflow; + Overflow = 0; +#endif +#endif + grp_rngmax_fx[0] = 0; grp_rngmax_fx[1] = 0; @@ -639,8 +646,16 @@ void hq2_bit_alloc_har( L_temp = Mpy_32_16( L_Ravg_sub[GRP_SB - 1], sub( GRP_SB, 1 ) ); /* Qbe+0+1 */ L_temp = Mpy_32_16( L_temp, Inv_norm_sum_fx ); /* Qbe+1+QIpb+1 */ +#ifdef FIX_150 +#ifdef BASOP_NOGLOB + lf_hf_ge_r_fx = round_fx_o( L_shl_o( L_temp, sub( 15 + 16, sub( add( SWB_BWE_LR_Qbe, QIns ), 30 ) ), &Overflow ), &Overflow ); + Overflow = 0; /* reset BASOP Overflow */ +#else + lf_hf_ge_r_fx = round_fx( L_shl( L_temp, sub( 15 + 16, sub( add( SWB_BWE_LR_Qbe, QIns ), 30 ) ) ) ); +#endif +#else lf_hf_ge_r_fx = round_fx( L_shl( L_temp, sub( 15 + 16, sub( add( SWB_BWE_LR_Qbe, QIns ), 30 ) ) ) ); - +#endif exp_normn = norm_s( norm_sum_fx ); exp_normn = sub( exp_normn, 1 ); exp_normd = norm_s( harmonic_band_fx ); diff --git a/lib_com/options.h b/lib_com/options.h index b5063ecf39..37940bd272 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -175,7 +175,7 @@ #define FIX_GET_DELAY_RETURN /* Issue 223: change return data type in function get_delay() */ #define NTT_REDUC_COMP_POC /* NTT Contribution 10: Complexity reduction of phase spectrum in stereo downmix*/ #define FIX_ISM_DECODER_PRINTOUT /* Issue 229: fix ISM decoder printout */ - +#define FIX_150 /* Issue 150: Crash in EVS mono, HQ_HARMONIC mode, related to BASOP_NOGLOB */ #define FIX_ITD_CNG /* Eri: Fix for CNG ITD */ -- GitLab From c8ccda269ae69e756379e2aa78717bfd451b0a8a Mon Sep 17 00:00:00 2001 From: Stefan Doehla Date: Wed, 7 Dec 2022 10:19:15 +0000 Subject: [PATCH 2/4] [formatting] to please CI --- lib_com/hq2_bit_alloc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib_com/hq2_bit_alloc.c b/lib_com/hq2_bit_alloc.c index bfc11a5cd8..270c130617 100644 --- a/lib_com/hq2_bit_alloc.c +++ b/lib_com/hq2_bit_alloc.c @@ -651,11 +651,12 @@ void hq2_bit_alloc_har( lf_hf_ge_r_fx = round_fx_o( L_shl_o( L_temp, sub( 15 + 16, sub( add( SWB_BWE_LR_Qbe, QIns ), 30 ) ), &Overflow ), &Overflow ); Overflow = 0; /* reset BASOP Overflow */ #else - lf_hf_ge_r_fx = round_fx( L_shl( L_temp, sub( 15 + 16, sub( add( SWB_BWE_LR_Qbe, QIns ), 30 ) ) ) ); + lf_hf_ge_r_fx = round_fx( L_shl( L_temp, sub( 15 + 16, sub( add( SWB_BWE_LR_Qbe, QIns ), 30 ) ) ) ); #endif #else lf_hf_ge_r_fx = round_fx( L_shl( L_temp, sub( 15 + 16, sub( add( SWB_BWE_LR_Qbe, QIns ), 30 ) ) ) ); #endif + exp_normn = norm_s( norm_sum_fx ); exp_normn = sub( exp_normn, 1 ); exp_normd = norm_s( harmonic_band_fx ); -- GitLab From c4dc29c900625da3837b0c9149f3509872631d54 Mon Sep 17 00:00:00 2001 From: Stefan Doehla Date: Thu, 8 Dec 2022 11:51:43 +0100 Subject: [PATCH 3/4] [fix] another BADOP_NOGLOB Overflow triggered by #239 --- lib_enc/swb_bwe_enc.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib_enc/swb_bwe_enc.c b/lib_enc/swb_bwe_enc.c index 54e786d761..1acfb8dd7f 100644 --- a/lib_enc/swb_bwe_enc.c +++ b/lib_enc/swb_bwe_enc.c @@ -1795,6 +1795,11 @@ void hq_generic_hf_encoding( { Word16 tmp, frac, exp; Word32 L_tmp; +#ifdef BASOP_NOGLOB + Flag Overflow; + + Overflow = 0; +#endif tmp = add( (int16_t) ( hq_generic_fenv[n_band] * 256 ), (int16_t) ( Mean_env[n_band] * 256 ) ); /*Q8 */ L_tmp = L_mult( tmp, 21771 ); /* 0.166096 in Q17 -> Q26 */ @@ -1805,7 +1810,11 @@ void hq_generic_hf_encoding( /* output of Pow2() will be: */ /* 16384 < Pow2() <= 32767 */ exp = sub( exp, 13 ); - tmp = shl( tmp, add( exp, 1 ) ); /*Q1 */ +#ifdef BASOP_NOGLOB + tmp = shl_o( tmp, add( exp, 1 ), &Overflow ); /*Q1 */ +#else + tmp = shl( tmp, add( exp, 1 ) ); /*Q1 */ +#endif hq_generic_fenv[n_band] = (float) tmp * 0.5f; /*Q1 */ } -- GitLab From 91cf7f90fd751f9adc691bf7aa0de60c4ac81c2a Mon Sep 17 00:00:00 2001 From: Stefan Doehla Date: Mon, 12 Dec 2022 10:03:14 +0100 Subject: [PATCH 4/4] add FIX_150 macro around changes --- lib_enc/swb_bwe_enc.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib_enc/swb_bwe_enc.c b/lib_enc/swb_bwe_enc.c index 1acfb8dd7f..01c586fcbc 100644 --- a/lib_enc/swb_bwe_enc.c +++ b/lib_enc/swb_bwe_enc.c @@ -1795,10 +1795,12 @@ void hq_generic_hf_encoding( { Word16 tmp, frac, exp; Word32 L_tmp; +#ifdef FIX_150 #ifdef BASOP_NOGLOB Flag Overflow; Overflow = 0; +#endif #endif tmp = add( (int16_t) ( hq_generic_fenv[n_band] * 256 ), (int16_t) ( Mean_env[n_band] * 256 ) ); /*Q8 */ @@ -1810,8 +1812,12 @@ void hq_generic_hf_encoding( /* output of Pow2() will be: */ /* 16384 < Pow2() <= 32767 */ exp = sub( exp, 13 ); +#ifdef FIX_150 #ifdef BASOP_NOGLOB tmp = shl_o( tmp, add( exp, 1 ), &Overflow ); /*Q1 */ +#else + tmp = shl( tmp, add( exp, 1 ) ); /*Q1 */ +#endif #else tmp = shl( tmp, add( exp, 1 ) ); /*Q1 */ #endif -- GitLab