From 69be8947322527672e8e695178e4d358f4ab893d Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Sun, 18 Aug 2024 16:29:55 +0200 Subject: [PATCH] JBM Cross-Corr (iusse 834): use operator with overflow handling, to deal with allowed overflows --- lib_com/options.h | 1 + lib_dec/jbm_pcmdsp_similarityestimation.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index a3e716f40..5b8957c81 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -165,6 +165,7 @@ #define FIX_846_TILT_BWE /* VA : Proposed fix to 846, to solve saturation */ #define FIX_843_LOW_RATE_BWE /* VA : Proposed fix to 843 to solve mid band noise */ #define FIX851_RANGE_DEC_PRECISION /* VA : 851 Proposed fix to keep precision during UL_div*/ +#define FX_834_OVFL_JBM_CROSSCORR /* FhG: Proposed fix to 834, allow overflows in calculation */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_dec/jbm_pcmdsp_similarityestimation.c b/lib_dec/jbm_pcmdsp_similarityestimation.c index ad858dc8f..435a5bb4b 100644 --- a/lib_dec/jbm_pcmdsp_similarityestimation.c +++ b/lib_dec/jbm_pcmdsp_similarityestimation.c @@ -233,13 +233,21 @@ Word16 normalized_cross_correlation_self_fx( const Word16 *signal, IF( sqrtXY != 0 ) { +#ifdef FX_834_OVFL_JBM_CROSSCORR + Flag Overflow = 0; + move16(); +#endif normCC = 0; move16(); cc = BASOP_Util_Divide3216_Scale( sumXY, sqrtXY, &normCC ); normCC = add( normCC, 16 ); /* scale to Q15 with saturation */ BASOP_SATURATE_WARNING_OFF +#ifdef FX_834_OVFL_JBM_CROSSCORR + cc = shl_ro( cc, add( normXY, normCC ), &Overflow ); +#else cc = shl_r( cc, add( normXY, normCC ) ); +#endif BASOP_SATURATE_WARNING_ON *energy = L_shr_r( L_deposit_l( sqrtXY ), normXY ); } -- GitLab