From 23349265788f7082917cb751aaacf377205135fd Mon Sep 17 00:00:00 2001 From: Stefan Bayer Date: Fri, 25 Nov 2022 10:53:51 +0100 Subject: [PATCH] #220: fix sanitizer problem in ParamMC/svd caused by NaN coming from negative energies in Cproto, under define FIX_I220_PARAMMC_CPROTO --- lib_com/options.h | 1 + lib_dec/ivas_mc_param_dec.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 21fe824853..1d98c0d8a0 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -167,6 +167,7 @@ #ifdef FIX_185_REDUCE_MD_BITS #define CLEANUP_185_NO_AGC_EXCEPTION /* Issue 185: Cleanup AGC EXCEPTION code */ #endif +#define FIX_I220_PARAMMC_CPROTO /* Issue 220: sanitizer error in the svd due to NaNs coming from negative energies in Cproto */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_dec/ivas_mc_param_dec.c b/lib_dec/ivas_mc_param_dec.c index 29e2ce4002..d4a4fa5168 100644 --- a/lib_dec/ivas_mc_param_dec.c +++ b/lib_dec/ivas_mc_param_dec.c @@ -1564,6 +1564,16 @@ static void ivas_param_mc_get_mixing_matrices( matrix_product( mat_mult_buffer1, nY_intern, nX, 0, hParamMC->proto_matrix_int, nY_intern, nX, 1, Cproto ); +#ifdef FIX_I220_PARAMMC_CPROTO + for ( ch_idx1 = 0; ch_idx1 < nY_intern; ch_idx1++ ) + { + if ( Cproto[ch_idx1 + ch_idx1 * nY_intern] < 0.0f ) + { + Cproto[ch_idx1 + ch_idx1 * nY_intern] = 0.0f; + } + } +#endif + ivas_param_mc_dequantize_cov( hParamMC, hParamMC->icld_q + param_band_idx * hParamMC->hMetadataPMC->ild_mapping_conf->ild_map_size_lfe, hParamMC->icc_q + param_band_idx * hParamMC->hMetadataPMC->icc_mapping_conf->icc_map_size_lfe, -- GitLab