From 4fc681566ec254913badd85613091bca1830a1ef Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Mon, 26 Jun 2023 22:11:22 +0200 Subject: [PATCH 1/2] potential fix for overflow on ramp_up_flag --- lib_com/options.h | 2 +- lib_enc/stat_enc.h | 4 ++++ lib_enc/transient_detection.c | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index e4d3a06b58..5705744830 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -160,7 +160,7 @@ #define FIX_575_LOW_OVERLAP_PLC_RECOVERY /* FhG: Issue 575 fix for PLC and transistion to TCX5*/ #define ISM_FB_16k4 /* VA: Issue: 579: change BW from SWB to FB in NxISM conditions to match the EVS codec */ #define FIX_580_PARAMMC_ENER_BURSTS /* FhG: issue 580: energy bursts due to ILD holding when energy relations change too much */ - +#define FIX_583_CLANG_TRANS_DET /* FhG: Issue 583: clang left shift on ramp_up_flag in transient detector */ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index 4a47761f9c..2e7924f371 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -124,7 +124,11 @@ typedef struct float firState1; float firState2; +#ifdef FIX_583_CLANG_TRANS_DET + uint16_t ramp_up_flag; /* bit map flags to indicate a ramp up in beginning of TCX frame */ +#else int16_t ramp_up_flag; /* bit map flags to indicate a ramp up in beginning of TCX frame */ +#endif } SubblockEnergies; diff --git a/lib_enc/transient_detection.c b/lib_enc/transient_detection.c index 1f8b36819f..112a4d274f 100644 --- a/lib_enc/transient_detection.c +++ b/lib_enc/transient_detection.c @@ -241,7 +241,11 @@ void RunTransientDetection( UpdateDelayBuffer( filteredInput, length, &hTranDet->delayBuffer ); /* compute ramp up flag */ +#ifdef FIX_583_CLANG_TRANS_DET + pSubblockEnergies->ramp_up_flag = ((pSubblockEnergies->ramp_up_flag << 1) & 0x0003); +#else pSubblockEnergies->ramp_up_flag = pSubblockEnergies->ramp_up_flag << 1; +#endif e0 = dotp( filteredInput + length / 2, filteredInput + length / 2, pSubblockEnergies->pDelayBuffer->nSubblockSize / 2 ) + 0.5f * MIN_BLOCK_ENERGY; e1 = pSubblockEnergies->subblockNrg[pSubblockEnergies->nDelay + 4] - e0; if ( e1 > e0 ) -- GitLab From 7047e4555aed5bf0ce27fec7fc4f285e903f78a9 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Mon, 26 Jun 2023 22:24:54 +0200 Subject: [PATCH 2/2] formatting --- lib_enc/transient_detection.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/transient_detection.c b/lib_enc/transient_detection.c index 112a4d274f..3b345b7333 100644 --- a/lib_enc/transient_detection.c +++ b/lib_enc/transient_detection.c @@ -242,7 +242,7 @@ void RunTransientDetection( /* compute ramp up flag */ #ifdef FIX_583_CLANG_TRANS_DET - pSubblockEnergies->ramp_up_flag = ((pSubblockEnergies->ramp_up_flag << 1) & 0x0003); + pSubblockEnergies->ramp_up_flag = ( ( pSubblockEnergies->ramp_up_flag << 1 ) & 0x0003 ); #else pSubblockEnergies->ramp_up_flag = pSubblockEnergies->ramp_up_flag << 1; #endif -- GitLab