diff --git a/lib_com/options.h b/lib_com/options.h old mode 100644 new mode 100755 index bd6797caad04a8dfdac10b9f4296ba9abd76cf0b..553d57a7555de1362bc76b4a806ed09fe88c63bb --- a/lib_com/options.h +++ b/lib_com/options.h @@ -154,7 +154,7 @@ #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 */ - +#define FIX_IGF_NOISE_REPETITION /* Issue 182: fix repetition of same noise in IGF */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_dec/dec_tcx.c b/lib_dec/dec_tcx.c old mode 100644 new mode 100755 index 20e4dedbe327dbbb2f9b22a6477c661995d0ae5d..5b74ca0f6f4031481dee33aaa409d6b6eb362fe1 --- a/lib_dec/dec_tcx.c +++ b/lib_dec/dec_tcx.c @@ -1309,8 +1309,25 @@ void decoder_tcx_noisefilling( IGFDecReplicateTCX10State( st->hIGFDec ); } +#ifdef FIX_IGF_NOISE_REPETITION + if ( st->element_mode != EVS_MONO ) + { + if ( bfi ) + { + nf_seed = st->seed_tcx_plc; + } + else if ( nf_seed == 0 ) + { + nf_seed = *st->hIGFDec->igfData.igfInfo.nfSeed; + } + } +#endif + if ( st->igf ) { +#ifdef FIX_IGF_NOISE_REPETITION + *st->hIGFDec->igfData.igfInfo.nfSeed = (int16_t) ( nf_seed * 31821L + 13849L ); +#else if ( bfi && st->element_mode != EVS_MONO ) { *st->hIGFDec->igfData.igfInfo.nfSeed = (int16_t) ( st->seed_tcx_plc * 31821L + 13849L ); @@ -1319,6 +1336,7 @@ void decoder_tcx_noisefilling( { *st->hIGFDec->igfData.igfInfo.nfSeed = (int16_t) ( nf_seed * 31821L + 13849L ); } +#endif } return;