diff --git a/lib_com/options.h b/lib_com/options.h index dd17c85522333eae08ef721a43d78484d4510843..a28b3eaca95b7264a12d66a044a5eefae6a61261 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -213,6 +213,8 @@ #define NONBE_FIX_979_OSBA_STEREO_5MS /* FhG : issue #979 : 5ms and 20ms output different for OSBA and stereo */ +#define FIX_983_DISC_ISM_DIGEST_NUM_OBJS /* FhG: issue #983: the discrete ISM digest function uses the wrong number of objects */ + /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_ism_param_dec.c b/lib_dec/ivas_ism_param_dec.c index 74ab2ba8a0dee2c9dd95d4ea754f4e54b5fc3ec4..955c7c9e9180367f4fbafbecae451c5fe5f418b8 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,12 @@ 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 );