From 38ac0fd9251a3d30e742bc2e4f14e90505fd2e07 Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Mon, 10 Jun 2024 17:40:21 +0200 Subject: [PATCH 1/6] change mct max channels to 11 --- lib_com/ivas_cnst.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 8b01d70b56..bba2346a58 100755 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1290,8 +1290,8 @@ typedef enum #define LFE_CHANNEL 3 #define MIN_LFE_NRG 0.5f -#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 MCT_MAX_CHANNELS 11 +#define MCT_MAX_BLOCKS ( ( MCT_MAX_CHANNELS + 1 ) / CPE_CHANNELS ) /* max. number of channel pairs (MCT_MAX_CHANNELS/2) within MCT*/ #define MAX_NUM_DATA max( MCT_MAX_CHANNELS, 4 ) -- GitLab From f08d6fa15c5c94aa42decf9f0d1519df0029fc8e Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Mon, 10 Jun 2024 17:47:08 +0200 Subject: [PATCH 2/6] wrap change under define --- lib_com/ivas_cnst.h | 6 +++++- lib_com/options.h | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index bba2346a58..45b4d40fab 100755 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1290,9 +1290,13 @@ typedef enum #define LFE_CHANNEL 3 #define MIN_LFE_NRG 0.5f +#ifdef ADJUST_MCT_CHANNELS_MAX #define MCT_MAX_CHANNELS 11 #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 12 +#define MCT_MAX_BLOCKS ( MCT_MAX_CHANNELS / CPE_CHANNELS ) /* max. number of channel pairs (MCT_MAX_CHANNELS/2) within MCT*/ +#endif #define MAX_NUM_DATA max( MCT_MAX_CHANNELS, 4 ) #define NBBITS_MCT_RATIO 4 diff --git a/lib_com/options.h b/lib_com/options.h index 02e3196e52..9e951a4b12 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -161,7 +161,7 @@ #define FIX_1099_JBM_MD_HANDLE_ALLOC /* VA: issue 1099: Limit the allocation of `hJbmMetadata` handle to MASA and OMASA only */ - +#define ADJUST_MCT_CHANNELS_MAX /* FhG: set correct max mct channels constant*/ /* #################### End BE switches ################################## */ -- GitLab From 2b5cfe7365b4aa48c592cec78fa5d6847e06aa3c Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Wed, 12 Jun 2024 12:48:18 +0200 Subject: [PATCH 3/6] fix buffer overflows --- lib_dec/ivas_mct_core_dec.c | 25 +++++++++++++++++++++---- lib_enc/ivas_mct_core_enc.c | 2 +- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/lib_dec/ivas_mct_core_dec.c b/lib_dec/ivas_mct_core_dec.c index b7c4c95288..44a11d3416 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,6 +223,7 @@ void ivas_mct_core_dec( } i++; } +#endif bfi = sts[0]->bfi; diff --git a/lib_enc/ivas_mct_core_enc.c b/lib_enc/ivas_mct_core_enc.c index cf2f3d8afd..b212ebad4b 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -250,13 +250,13 @@ void ivas_mct_core_enc( { for ( ch = 0; ch < CPE_CHANNELS; ch++ ) { - sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; if ( hCPE[cpe_id]->hCoreCoder[ch]->mct_chan_mode == MCT_CHAN_MODE_IGNORE ) { i++; continue; } + sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; mdst_spectrum[i][0] = hMCT->p_mdst_spectrum_long[cpe_id][ch]; mdst_spectrum[i][1] = hMCT->p_mdst_spectrum_long[cpe_id][ch] + N_TCX10_MAX; orig_spectrum[i][0] = hMCT->p_orig_spectrum_long[cpe_id][ch]; -- GitLab From 32e0eaea54c661e63aa3864ceadda48cd1f9d5a0 Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Mon, 24 Jun 2024 15:38:39 +0200 Subject: [PATCH 4/6] revert previous commit and replace with proper fix --- lib_enc/ivas_mct_core_enc.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib_enc/ivas_mct_core_enc.c b/lib_enc/ivas_mct_core_enc.c index b26ac180a8..3a5130bccd 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -281,13 +281,20 @@ void ivas_mct_core_enc( { for ( ch = 0; ch < CPE_CHANNELS; ch++ ) { +#ifdef ADJUST_MCT_CHANNELS_MAX + if ( cpe_id * 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++; continue; } - sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; mdst_spectrum[i][0] = hMCT->p_mdst_spectrum_long[cpe_id][ch]; mdst_spectrum[i][1] = hMCT->p_mdst_spectrum_long[cpe_id][ch] + N_TCX10_MAX; orig_spectrum[i][0] = hMCT->p_orig_spectrum_long[cpe_id][ch]; -- GitLab From f41ca76f5b290930524987f586deb0c5d9e0b868 Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Mon, 24 Jun 2024 18:14:33 +0200 Subject: [PATCH 5/6] correct if condition --- lib_enc/ivas_mct_core_enc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/ivas_mct_core_enc.c b/lib_enc/ivas_mct_core_enc.c index 3a5130bccd..9d87f3a32e 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -282,7 +282,7 @@ void ivas_mct_core_enc( for ( ch = 0; ch < CPE_CHANNELS; ch++ ) { #ifdef ADJUST_MCT_CHANNELS_MAX - if ( cpe_id * ch < nChannels ) + if ( cpe_id * CPE_CHANNELS + ch < nChannels ) { #endif sts[i] = hCPE[cpe_id]->hCoreCoder[ch]; -- GitLab From 16f9905e943f94aeed9ebe7279ba3559f76d3c74 Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 24 Jun 2024 18:53:56 +0200 Subject: [PATCH 6/6] remove unused MAX_NUM_DATA + formatting + add comment --- lib_com/ivas_cnst.h | 4 ++-- lib_dec/ivas_mct_core_dec.c | 2 +- lib_enc/ivas_mct_core_enc.c | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 36efc82adf..d2ae6f9bdd 100755 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1293,13 +1293,13 @@ typedef enum #define MIN_LFE_NRG 0.5f #ifdef ADJUST_MCT_CHANNELS_MAX -#define MCT_MAX_CHANNELS 11 +#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 12 #define MCT_MAX_BLOCKS ( MCT_MAX_CHANNELS / CPE_CHANNELS ) /* max. number of channel pairs (MCT_MAX_CHANNELS/2) within MCT*/ -#endif #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_dec/ivas_mct_core_dec.c b/lib_dec/ivas_mct_core_dec.c index 44a11d3416..909d08058e 100644 --- a/lib_dec/ivas_mct_core_dec.c +++ b/lib_dec/ivas_mct_core_dec.c @@ -223,8 +223,8 @@ void ivas_mct_core_dec( } i++; } -#endif +#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 9d87f3a32e..54e9028e70 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -289,6 +289,7 @@ void ivas_mct_core_enc( #ifdef ADJUST_MCT_CHANNELS_MAX } #endif + if ( hCPE[cpe_id]->hCoreCoder[ch]->mct_chan_mode == MCT_CHAN_MODE_IGNORE ) { i++; -- GitLab