From 82250202524d0df83f3b685014d390773b3fac31 Mon Sep 17 00:00:00 2001 From: kiene Date: Wed, 27 Mar 2024 11:31:48 +0100 Subject: [PATCH] fix usan error in waveforma adjustment - compute sign differently --- lib_com/options.h | 1 + lib_dec/waveadjust_fec_dec.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index baac651607..a1e1f82028 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -164,6 +164,7 @@ /* any switch which is non-be wrt selection floating point code */ /* all switches in this category should start with "NONBE_" */ +#define NON_BE_FIX_EVS_USAN_ERR_IN_WAVEADJUST /* FhG: address issue 1037 */ /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/waveadjust_fec_dec.c b/lib_dec/waveadjust_fec_dec.c index cc5223cfbc..d5cf31cef8 100644 --- a/lib_dec/waveadjust_fec_dec.c +++ b/lib_dec/waveadjust_fec_dec.c @@ -742,7 +742,13 @@ void concealment_decode( /* sign randomization */ for ( i = 0; i < hPlcInfo->L_frameTCX; i++ ) { +#ifdef NON_BE_FIX_EVS_USAN_ERR_IN_WAVEADJUST + int16_t rnd; + rnd = own_random( seed ); + sign = ( rnd >= 0 ) - ( rnd < 0 ); +#else sign = ( ( own_random( seed ) >> 15 ) << 1 ) + 1; +#endif invkoef[i] *= sign; } } -- GitLab