diff --git a/lib_com/log2.c b/lib_com/log2.c index 42b1f1b3daf82918abff7e2568a1888b02ea57d2..55ea6aa402ebac10554e864c2ed4deb0bec8fff9 100644 --- a/lib_com/log2.c +++ b/lib_com/log2.c @@ -72,6 +72,10 @@ Word16 Log2_norm_lc( /* (o) : Fractional part of Log2. (range: 0<=val i = mac_r( L_x, -32 * 2 - 1, 16384 ); /* Extract b25-b31 minus 32 */ +#ifdef FIX_2284_ADD_ASSERT_LOG + assert( ( i >= 0 ) && ( i < (Word16) ( sizeof( L_table_Log2_norm_lc ) / sizeof( L_table_Log2_norm_lc[0] ) ) ) && ( i < (Word16) ( sizeof( table_diff_Log2_norm_lc ) / sizeof( table_diff_Log2_norm_lc[0] ) ) ) ); +#endif + y = mac_r( L_table_Log2_norm_lc[i], table_diff_Log2_norm_lc[i], a ); /* table[i] << 16 - diff*a*2 */ return y; @@ -80,6 +84,9 @@ Word16 Log2_norm_lc( /* (o) : Fractional part of Log2. (range: 0<=val Word32 log10_fx( Word32 Linput ) /*o : Q23, i: 2Q13*/ { Word16 n1, frac, p1, p2, q1; +#ifdef FIX_2284_ADD_ASSERT_LOG + Word16 idx; +#endif Word32 Ltemp1, Ltemp2; Word32 L_tmp; @@ -94,10 +101,23 @@ Word32 log10_fx( Word32 Linput ) /*o : Q23, i: 2Q13*/ Ltemp2 = L_mult( extract_h( Ltemp1 ), 0x40 ); frac = extract_l( Ltemp2 ); +#ifdef FIX_2284_ADD_ASSERT_LOG + idx = sub( extract_h( Ltemp2 ), 0x20 ); + assert( idx >= 0 && idx < (Word16) ( sizeof( log2_tab ) / sizeof( log2_tab[0] ) ) ); + p1 = log2_tab[idx]; + move16(); + + idx = sub( extract_h( Ltemp2 ), 0x1F ); + assert( idx >= 0 && idx < (Word16) ( sizeof( log2_tab ) / sizeof( log2_tab[0] ) ) ); + p2 = log2_tab[idx]; + move16(); + +#else p1 = log2_tab[sub( extract_h( Ltemp2 ), 0x20 )]; move16(); p2 = log2_tab[sub( extract_h( Ltemp2 ), 0x1F )]; move16(); +#endif Ltemp2 = L_mult( n1, 0x200 ); n1 = extract_l( Ltemp2 ); diff --git a/lib_com/options.h b/lib_com/options.h index d61b63fcf043335f7c1a328ecbef20bd775041c6..6077b56c658c586d6bd4ee194b0fd4a56d83821d 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -89,6 +89,7 @@ #define FIX_2252_SCALING_SAVE_HB_SYNTH /* VA: issue 2252: fix use-of-uninit-value in save_hb_synth_fx[] scaling in FOA decoding with bitstream that starts with an SID */ #define FIX_2248_EVS_ASSERT /* VA: Include _sat in an EVS related part of the code */ #define FIX_2254_IMPROV_COMPLEXITY_BE /* VA: BE small complexity reduction */ +#define FIX_2284_ADD_ASSERT_LOG /* FhG: add asserts to Log2_norm_lc() and log10_fx() */ #define FIX_2286_GCC_WARNING_Idx2Freq_Tbl /* FhG: Fix compiler warning for OOB access of Idx2Freq_Tbl[] */ #define FIX_CLANG18_MSAN_IN_DEC_INIT_BY_MOVING_COMMON_INITS_TOGETHER /* FhG: fix CLANG18 MSAN error in decoder init */ #define FIX_1481_CLANG18_MSAN_INIT_LAST_ELEM_BRATE /* FhG: initialize last_element_brate to avoid CLANG18 MSAN complaint */