diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 86bf5d28d283170e66474c769c24b41813c22869..c8397ad596967dd7c3eea6bf19341ca77da66698 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1415,10 +1415,15 @@ typedef enum #define LFE_CHANNEL 3 #define MIN_LFE_NRG 0.5f +#ifdef ADJUST_MCT_CHANNELS_MAX +#define MCT_MAX_CHANNELS 11 /* == 7.1.4 LS channels without the LFE channel */ +#define MCT_MAX_BLOCKS ( ( MCT_MAX_CHANNELS + 1 ) / CPE_CHANNELS ) /* max. number of channel pairs (MCT_MAX_CHANNELS/2) within MCT*/ +#else #define MCT_MAX_CHANNELS MAX_TRANSPORT_CHANNELS #define MCT_MAX_BLOCKS ( MCT_MAX_CHANNELS / CPE_CHANNELS ) /* max. number of channel pairs (MCT_MAX_CHANNELS/2) within MCT*/ #define MAX_NUM_DATA max( MCT_MAX_CHANNELS, 4 ) +#endif #define NBBITS_MCT_RATIO 4 #define BITRATE_MCT_RATIO_RANGE ( 1 << NBBITS_MCT_RATIO ) /* Range of the coded bitrate distribution ratio */ diff --git a/lib_com/options.h b/lib_com/options.h index 36331addfe70b924abd9421a33316b8fde2eab1b..90f83ea3879f40d377fb7096960fac085d53f324 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -118,7 +118,7 @@ #define NONBE_FIX_1220_OMASA_JBM_EXT_USAN /* Nokia: fix issue 1220 OMASA EXT JBM USAN, also fix similar cases of free to avoid future problems */ #define NONBE_FIX_1376_MDCT_CONCEALMENT /* FhG: fix concealment artifact in MDCT Stereo with DTX, in case transition frame gets lost */ #define NONBE_1377_REND_DIRATT_CONF /* Eri: Issue 1377: Error in directivity attenuation configuration for both IVAS_dec and IVAS_rend */ - +#define ADJUST_MCT_CHANNELS_MAX /* FhG: set correct max mct channels constant*/ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_mct_core_dec_fx.c b/lib_dec/ivas_mct_core_dec_fx.c index 47cb02d1ecfa3da721314e6dd869eeec7ad85c9c..3a2cd3118ae5b7ababf7726087d91f5e0f2626dd 100644 --- a/lib_dec/ivas_mct_core_dec_fx.c +++ b/lib_dec/ivas_mct_core_dec_fx.c @@ -75,9 +75,16 @@ void ivas_mct_side_bits_fx( { FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { - sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; - i = add( i, 1 ); - move16(); +#ifdef ADJUST_MCT_CHANNELS_MAX + IF( LT_16( i, MCT_MAX_CHANNELS ) ) + { +#endif + sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; + i = add( i, 1 ); + move16(); +#ifdef ADJUST_MCT_CHANNELS_MAX + } +#endif } } @@ -218,10 +225,19 @@ void ivas_mct_core_dec( { FOR( ch = 0; ch < CPE_CHANNELS; ( ch++, i++ ) ) { - sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; +#ifdef ADJUST_MCT_CHANNELS_MAX + IF( LT_16( i, MCT_MAX_CHANNELS ) ) + { +#endif + sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; +#ifdef ADJUST_MCT_CHANNELS_MAX + } +#endif } } +#ifndef ADJUST_MCT_CHANNELS_MAX + /*seems like obsolete code*/ i = 0; move16(); FOR( ch = 0; ch < nChannels; ch++ ) @@ -232,7 +248,7 @@ void ivas_mct_core_dec( } i = add( i, 1 ); } - +#endif bfi = sts[0]->bfi; move16(); diff --git a/lib_enc/ivas_mct_core_enc_fx.c b/lib_enc/ivas_mct_core_enc_fx.c index c616bfd30392a9ec5aefce1148c5b23c170dfb14..e42ee56d716ea63ea6e34bd259c3f08430bca1fc 100644 --- a/lib_enc/ivas_mct_core_enc_fx.c +++ b/lib_enc/ivas_mct_core_enc_fx.c @@ -293,6 +293,7 @@ void ivas_mct_core_enc_fx( inv_spectrum_fx[ch][1] = inv_spectrum_long_cpe0_fx[ch] + N_TCX10_MAX; powerSpec_fx[ch] = powerSpec_long_cpe0_fx[ch]; } + FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { q_powSpec[ch] = 0; @@ -332,7 +333,15 @@ void ivas_mct_core_enc_fx( { FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { - sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; +#ifdef ADJUST_MCT_CHANNELS_MAX + IF( LT_16( add( i_mult( cpe_id, CPE_CHANNELS ), ch ), nChannels ) ) + { +#endif + sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; +#ifdef ADJUST_MCT_CHANNELS_MAX + } +#endif + IF( EQ_32( hCPE[cpe_id]->hCoreCoder[ch]->mct_chan_mode, MCT_CHAN_MODE_IGNORE ) ) { i = add( i, 1 );