diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c old mode 100644 new mode 100755 index 04fdb8fe0bb9ba6f01616a22bae4e95362ad2708..dcd1b71684cdef22049e8a112685bb52dab24e4f --- a/lib_com/bitstream.c +++ b/lib_com/bitstream.c @@ -772,7 +772,11 @@ int16_t get_ivas_max_num_indices_metadata( /* o } else if ( ivas_total_brate <= IVAS_256k ) { +#ifdef FIX_483b + return 1050; +#else return 1000; +#endif } else if ( ivas_total_brate <= IVAS_384k ) { diff --git a/lib_com/options.h b/lib_com/options.h index 72332841b3a6f77bc673e4a942678f17ec0b407b..dccc11cf17282a074448861f9cd38c1a667720da 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -218,6 +218,9 @@ #define FIX_481_UNUSED_VARIABLES /* Nokia: Fix issue #481: Unused debug variables */ +#define FIX_483 /* FhG: fix issue 483, division by zero in nois_est */ +#define FIX_483b /* FhG: fix issue 483, uninitialized values in ivas_mct_core_enc */ + /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ diff --git a/lib_com/rom_com.c b/lib_com/rom_com.c old mode 100644 new mode 100755 diff --git a/lib_enc/ivas_mct_core_enc.c b/lib_enc/ivas_mct_core_enc.c old mode 100644 new mode 100755 index 3bd05fca9273da133393856ddd848a8829dd34a9..48a7abc42f48ce40c9d1804b2551036cd98474a0 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -264,6 +264,11 @@ void ivas_mct_core_enc( sp_aud_decision0[i] = hCPE[cpe_id]->hCoreCoder[0]->sp_aud_decision0; +#ifdef FIX_483b + sts[i]->hTcxEnc->tns_ms_flag[0] = 0; + sts[i]->hTcxEnc->tns_ms_flag[1] = 0; +#endif + i++; } } @@ -339,7 +344,11 @@ void ivas_mct_core_enc( for ( n = 0; n < nSubframes; n++ ) { +#ifdef FIX_483b + if ( sts[ch]->hTcxEnc->tns_ms_flag[n] ) +#else if ( !sts[ch]->hTcxEnc->fUseTns[n] /*!sts[0]->fUseTns[n] && !sts[1]->fUseTns[n]*/ ) +#endif { /* power spectrum: MDCT^2 + MDST^2 */ for ( i = 0; i < L_subframeTCX; i++ ) diff --git a/lib_enc/ivas_stereo_mdct_stereo_enc.c b/lib_enc/ivas_stereo_mdct_stereo_enc.c old mode 100644 new mode 100755 index 4ef24de8a191368165a8406f556121d047f5be93..138c9436d6664a3c16dce55a5761fcd866156e0e --- a/lib_enc/ivas_stereo_mdct_stereo_enc.c +++ b/lib_enc/ivas_stereo_mdct_stereo_enc.c @@ -430,6 +430,10 @@ void stereo_coder_tcx( if ( !sts[0]->hTcxEnc->fUseTns[k] && !sts[1]->hTcxEnc->fUseTns[k] ) { +#ifdef FIX_483b + sts[0]->hTcxEnc->tns_ms_flag[k] = 1; + sts[1]->hTcxEnc->tns_ms_flag[k] = 1; +#endif ms_inv_mask_processing( hStereoMdct, sts, ms_mask, k, mdst_spectrum[0][k], mdst_spectrum[1][k], inv_mdst_spectrum[0][k], inv_mdst_spectrum[1][k], -1 ); ms_processing( hStereoMdct, sts, ms_mask, k, mdst_spectrum[0][k], mdst_spectrum[1][k], sfbConf->sfbCnt ); } diff --git a/lib_enc/nois_est.c b/lib_enc/nois_est.c index 50dab410281d7ae6e98b803c6a792242b37f9981..bf506cd9db8d412e8f22fcc5d9d10d2bc4f691c0 100644 --- a/lib_enc/nois_est.c +++ b/lib_enc/nois_est.c @@ -378,6 +378,20 @@ void noise_est( { if ( st->hSpMusClas != NULL ) { +#ifdef FIX_483 + float E; + + E = mean( lf_E, 8 ); + if ( E < 1.0f ) + { + st->hSpMusClas->ener_RAT = 0.f; + } + else + { + st->hSpMusClas->ener_RAT = 10.0f * (float) log10( E ); + st->hSpMusClas->ener_RAT /= ( Etot + 0.01f ); + } +#else st->hSpMusClas->ener_RAT = 10.0f * (float) log10( mean( lf_E, 8 ) ); st->hSpMusClas->ener_RAT /= ( Etot + 0.01f ); @@ -385,6 +399,7 @@ void noise_est( { st->hSpMusClas->ener_RAT = 0.0f; } +#endif if ( st->hSpMusClas->ener_RAT > 1.0 ) { diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h old mode 100644 new mode 100755 index 77c0ea3d34eb98386bb3a23a3128044af9cc7859..1a5c893dbd9816aa0c903d9bf64c86a0656ac730 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -1121,6 +1121,10 @@ typedef struct tcx_enc_structure float *acelp_zir; float tcx_target_bits_fac; +#ifdef FIX_483b + int16_t tns_ms_flag[2]; +#endif + } TCX_ENC_DATA, *TCX_ENC_HANDLE; /*----------------------------------------------------------------------------------* *