diff --git a/lib_com/options.h b/lib_com/options.h index e1eaa1221cbe14dc4b53da795604ae4b0351fe8a..e28f39446973f98872bb0121828fb97ba5953e5d 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -153,6 +153,7 @@ #define FIX_963_USAN_ERROR /* Eri: Issue 963: USAN error in Stereo CNG, division by zero */ #define FIX_971_LOG2_IDX_GAIN_0 /* VA: prevent -Inf due to log2(ratio==0) */ +#define FIX_983_DISC_ISM_DIGEST_NUM_OBJS /* FhG: issue #983: the discrete ISM digest function uses the wrong number of objects */ /* #################### End BE switches ################################## */ diff --git a/lib_dec/ivas_ism_param_dec.c b/lib_dec/ivas_ism_param_dec.c index da12741551cfbaf5e0a9f1547b6e71b1a49bc627..b458e2c7135d5260fc4dd245fb3824d393158751 100644 --- a/lib_dec/ivas_ism_param_dec.c +++ b/lib_dec/ivas_ism_param_dec.c @@ -996,7 +996,11 @@ void ivas_ism_dec_digest_tc( st_ivas->renderer_type == RENDERER_OSBA_STEREO || ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM && st_ivas->hDecoderConfig->Opt_Headrotation == 0 ) ) { +#ifdef FIX_983_DISC_ISM_DIGEST_NUM_OBJS + int16_t i; +#else int16_t i, num_objects; +#endif int16_t azimuth, elevation; /* we have a full frame interpolator, adapt it */ @@ -1029,8 +1033,13 @@ void ivas_ism_dec_digest_tc( } /* also get the gains here */ +#ifdef FIX_983_DISC_ISM_DIGEST_NUM_OBJS + for ( i = 0; i < st_ivas->nchan_ism; i++ ) +#else num_objects = st_ivas->nchan_transport; + for ( i = 0; i < num_objects; i++ ) +#endif { mvr2r( st_ivas->hIsmRendererData->gains[i], st_ivas->hIsmRendererData->prev_gains[i], MAX_OUTPUT_CHANNELS );