diff --git a/lib_com/options.h b/lib_com/options.h index 4b71f20a255112e0799fb84159bc5bf6933f81d9..bd6797caad04a8dfdac10b9f4296ba9abd76cf0b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -153,6 +153,7 @@ #define SBA_BR_SWITCHING /* Issue 114: Changes for sba bit rate switching*/ #define FIX_AGC_WINFUNC_MEMORY /* Issue 62: lower agc_com.winFunc memory consumption */ #define REMOVE_SID_HARM_LEFTOVERS /* Issue 192: remove leftovers from the SID bitrate harmonization */ +#define FIX_MCT_UNINIT_MEM /* Issue 166: Reading of uninitialized memory in TCX range coder */ diff --git a/lib_enc/ivas_mdct_core_enc.c b/lib_enc/ivas_mdct_core_enc.c index f516af23102d6deb8f3a83b026b13f3d0e7018ae..aaf76ceb35269595cf420c735b6d61130e4094ef 100644 --- a/lib_enc/ivas_mdct_core_enc.c +++ b/lib_enc/ivas_mdct_core_enc.c @@ -881,7 +881,11 @@ void ivas_mdct_core_whitening_enc( { chE_tot = sum_f( chE, NB_DIV ); +#ifdef FIX_MCT_UNINIT_MEM + if ( chE_tot < SILENT_CHANNEL_THRES && nSubframes == 1 ) +#else if ( chE_tot < SILENT_CHANNEL_THRES ) +#endif { st->mct_chan_mode = MCT_CHAN_MODE_IGNORE; st->bits_frame_channel = 0; @@ -1055,7 +1059,11 @@ void ivas_mdct_core_whitening_enc( { st->side_bits_frame_channel = 0; /*dummy initialization to prevent range coder crashing in case all channels are silent and bits are distributed to channel 0 */ +#ifdef FIX_MCT_UNINIT_MEM + *p_param[ch] = 1 + NOISE_FILL_RANGES + LTPSIZE + tnsSize[ch][0] + NPRM_CTX_HM; +#else *p_param[ch] = 9; +#endif continue; }