From 0a1cdef5b3acc0c1047461bae9dd5bc7740bc480 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Thu, 18 Sep 2025 16:59:19 +0200 Subject: [PATCH] port flp mr 1630 - adjust mct max. channels --- lib_com/ivas_cnst.h | 5 +++++ lib_com/options.h | 2 ++ lib_dec/ivas_mct_core_dec.c | 26 +++++++++++++++++++++----- lib_enc/ivas_mct_core_enc.c | 10 +++++++++- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index d2c4a1768..dae0ac388 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1292,10 +1292,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 7d8fc7a79..1c0cfffb7 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -170,6 +170,8 @@ #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 FIX_ISSUE_2008_MISSING_CODE_FROM_PORTING /* FhG: Issue 2008: Code deleted while porting float-main MR !1504 (BASOP issue 1565)*/ +#define ADJUST_MCT_CHANNELS_MAX /* FhG: set correct max mct channels constant*/ + /* #################### End BASOP porting switches ############################ */ /* clang-format on */ diff --git a/lib_dec/ivas_mct_core_dec.c b/lib_dec/ivas_mct_core_dec.c index 47d519a1b..c51329b87 100644 --- a/lib_dec/ivas_mct_core_dec.c +++ b/lib_dec/ivas_mct_core_dec.c @@ -77,8 +77,15 @@ void ivas_mct_side_bits( { for ( ch = 0; ch < CPE_CHANNELS; ch++ ) { - sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; - i++; +#ifdef ADJUST_MCT_CHANNELS_MAX + if ( i < MCT_MAX_CHANNELS ) + { +#endif + sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; + i++; +#ifdef ADJUST_MCT_CHANNELS_MAX + } +#endif } } @@ -194,11 +201,20 @@ void ivas_mct_core_dec( { for ( ch = 0; ch < CPE_CHANNELS; ch++ ) { - sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; - i++; +#ifdef ADJUST_MCT_CHANNELS_MAX + if ( i < MCT_MAX_CHANNELS ) + { +#endif + sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; + i++; +#ifdef ADJUST_MCT_CHANNELS_MAX + } +#endif } } +#ifndef ADJUST_MCT_CHANNELS_MAX + /*seems like obsolete code*/ for ( ch = 0, i = 0; ch < nChannels; ch++ ) { if ( sts[ch]->mct_chan_mode == MCT_CHAN_MODE_IGNORE ) @@ -207,7 +223,7 @@ void ivas_mct_core_dec( } i++; } - +#endif bfi = sts[0]->bfi; for ( ch = 0; ch < nChannels; ch++ ) diff --git a/lib_enc/ivas_mct_core_enc.c b/lib_enc/ivas_mct_core_enc.c index fa8c4d8b3..49036ed4a 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -265,7 +265,15 @@ void ivas_mct_core_enc( { for ( ch = 0; ch < CPE_CHANNELS; ch++ ) { - sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; +#ifdef ADJUST_MCT_CHANNELS_MAX + if ( cpe_id * CPE_CHANNELS + ch < nChannels ) + { +#endif + sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; +#ifdef ADJUST_MCT_CHANNELS_MAX + } +#endif + if ( hCPE[cpe_id]->hCoreCoder[ch]->mct_chan_mode == MCT_CHAN_MODE_IGNORE ) { i++; -- GitLab