From 8672f295f05a469afefc9da73c2ed574227dec02 Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Thu, 16 May 2024 12:32:36 +0200 Subject: [PATCH 1/9] [fix] for issue 1097 out of bound buffers when switching from SID frame --- lib_com/ivas_prot.h | 4 ++++ lib_com/options.h | 1 + lib_enc/ivas_mct_core_enc.c | 29 +++++++++++++++++++++++++++++ lib_enc/ivas_mct_enc_mct.c | 4 ++++ 4 files changed, 38 insertions(+) diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index c2bf977774..c1904453f3 100755 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -3059,7 +3059,11 @@ void mctStereoIGF_enc( MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */ Encoder_State **sts, /* i/o: encoder state structure */ float *orig_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i : MDCT spectrum for ITF */ +#ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC + float *powerSpec[MCT_MAX_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate */ +#else float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate */ +#endif float *powerSpecMsInv[MCT_MAX_CHANNELS][NB_DIV], /* i : same as above but for inverse spect. */ float *inv_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i : inverse spectrum */ const int16_t sp_aud_decision0[MCT_MAX_CHANNELS] /* i : speech audio decision */ diff --git a/lib_com/options.h b/lib_com/options.h index 2440c09406..078c940d2b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -183,6 +183,7 @@ #define NONBE_FIX_1087_OOB_SBA_DTX_RS /* VA: issue 1087: Extend the length of the buffer for MCT decoding to avoid out-of-bound writing in SBA SID bitrate switching decoding */ #define NONBE_FIX_1074_NOBJ_SIGNAL_OMASA_LBR /* Nok: issue 1074 fixing number of objects signaling in OMASA low rate */ +#define NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC /* FhG: fix out-of-bound errors when switching from SID frame to active frame*/ /* ##################### End NON-BE switches ########################### */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_enc/ivas_mct_core_enc.c b/lib_enc/ivas_mct_core_enc.c index cf2f3d8afd..25bf46eeb6 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -197,8 +197,15 @@ void ivas_mct_core_enc( int16_t i, cpe_id, n, nAvailBits; int16_t nCPE; float *orig_spectrum[MCT_MAX_CHANNELS][2]; /* Pointers to MDCT output for a short block (L/R) */ +#ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC + float powerSpec_long[MCT_MAX_CHANNELS][L_FRAME48k]; +#else float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k]; +#endif float powerSpecMsInv_long[MCT_MAX_CHANNELS][L_FRAME48k]; /* MS inv power spectrum, also inverse MDST spectrum */ +#ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC + float *powerSpec[MCT_MAX_CHANNELS]; +#endif float *powerSpecMsInv[MCT_MAX_CHANNELS][2]; float *inv_mdst_spectrum[MCT_MAX_CHANNELS][2]; float *inv_spectrum[MCT_MAX_CHANNELS][2]; @@ -244,6 +251,9 @@ void ivas_mct_core_enc( inv_mdst_spectrum[ch][1] = powerSpecMsInv[ch][1] = powerSpecMsInv_long[ch] + N_TCX10_MAX; inv_spectrum[ch][0] = inv_spectrum_long[ch]; inv_spectrum[ch][1] = inv_spectrum_long[ch] + N_TCX10_MAX; +#ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC + powerSpec[ch] = powerSpec_long[ch]; +#endif } for ( cpe_id = 0, i = 0; cpe_id < nCPE; cpe_id++ ) @@ -271,6 +281,25 @@ void ivas_mct_core_enc( } } +#ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC + /* for bitrate switching with DTX on, larger buffers are needed to compute the power spectrum*/ + if ( sts[0]->last_core == ACELP_CORE ) + { + float powerSpecMsInv_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; + float inv_spectrum_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; + float powerSpec_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; + + for ( ch = 0; ch < CPE_CHANNELS; ch++ ) + { + inv_mdst_spectrum[ch][0] = powerSpecMsInv[ch][0] = powerSpecMsInv_long_cpe0[ch]; + inv_mdst_spectrum[ch][1] = powerSpecMsInv[ch][1] = powerSpecMsInv_long_cpe0[ch] + N_TCX10_MAX; + inv_spectrum[ch][0] = inv_spectrum_long_cpe0[ch]; + inv_spectrum[ch][1] = inv_spectrum_long_cpe0[ch] + N_TCX10_MAX; + powerSpec[ch] = powerSpec_long_cpe0[ch]; + } + } +#endif + hBstr = sts[0]->hBstr; for ( ch = 0; ch < (int16_t) ( hMCT->nchan_out_woLFE * 0.5 ); ch++ ) diff --git a/lib_enc/ivas_mct_enc_mct.c b/lib_enc/ivas_mct_enc_mct.c index 4e00969847..a9aa4f6258 100755 --- a/lib_enc/ivas_mct_enc_mct.c +++ b/lib_enc/ivas_mct_enc_mct.c @@ -817,7 +817,11 @@ void mctStereoIGF_enc( MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */ Encoder_State **sts, /* i/o: encoder state structure */ float *orig_spectrum[MCT_MAX_CHANNELS][2], /* i : MDCT spectrum for ITF */ +#ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC + float *powerSpec[MCT_MAX_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate*/ +#else float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate*/ +#endif float *powerSpecMsInv[MCT_MAX_CHANNELS][NB_DIV], /* i : same as above but for inverse spect.*/ float *inv_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i : inverse spectrum */ const int16_t sp_aud_decision0[MCT_MAX_CHANNELS] /* i : speech audio decision */ -- GitLab From 3f7fe8ade722f83a0a421645d5828b71cc2ac7d6 Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Thu, 16 May 2024 13:11:02 +0200 Subject: [PATCH 2/9] clang format --- lib_enc/ivas_mct_core_enc.c | 2 +- lib_enc/ivas_mct_enc_mct.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) mode change 100755 => 100644 lib_enc/ivas_mct_enc_mct.c diff --git a/lib_enc/ivas_mct_core_enc.c b/lib_enc/ivas_mct_core_enc.c index 25bf46eeb6..6cfee83677 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -197,7 +197,7 @@ void ivas_mct_core_enc( int16_t i, cpe_id, n, nAvailBits; int16_t nCPE; float *orig_spectrum[MCT_MAX_CHANNELS][2]; /* Pointers to MDCT output for a short block (L/R) */ -#ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC +#ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC float powerSpec_long[MCT_MAX_CHANNELS][L_FRAME48k]; #else float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k]; diff --git a/lib_enc/ivas_mct_enc_mct.c b/lib_enc/ivas_mct_enc_mct.c old mode 100755 new mode 100644 index a9aa4f6258..e8c98e9a72 --- a/lib_enc/ivas_mct_enc_mct.c +++ b/lib_enc/ivas_mct_enc_mct.c @@ -814,13 +814,13 @@ void write_mct_bitstream( *--------------------------------------------------------------------*/ void mctStereoIGF_enc( - MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */ - Encoder_State **sts, /* i/o: encoder state structure */ - float *orig_spectrum[MCT_MAX_CHANNELS][2], /* i : MDCT spectrum for ITF */ + MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */ + Encoder_State **sts, /* i/o: encoder state structure */ + float *orig_spectrum[MCT_MAX_CHANNELS][2], /* i : MDCT spectrum for ITF */ #ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC - float *powerSpec[MCT_MAX_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate*/ + float *powerSpec[MCT_MAX_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate*/ #else - float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate*/ + float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate*/ #endif float *powerSpecMsInv[MCT_MAX_CHANNELS][NB_DIV], /* i : same as above but for inverse spect.*/ float *inv_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i : inverse spectrum */ -- GitLab From c8fd5a42ca7e68102572559894d10626956d8a68 Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Thu, 16 May 2024 14:25:19 +0200 Subject: [PATCH 3/9] optimized fix for worst-case memory --- lib_enc/ivas_mct_core_enc.c | 40 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/lib_enc/ivas_mct_core_enc.c b/lib_enc/ivas_mct_core_enc.c index 6cfee83677..d0fea55c9c 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -198,7 +198,11 @@ void ivas_mct_core_enc( int16_t nCPE; float *orig_spectrum[MCT_MAX_CHANNELS][2]; /* Pointers to MDCT output for a short block (L/R) */ #ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC - float powerSpec_long[MCT_MAX_CHANNELS][L_FRAME48k]; + float powerSpecMsInv_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; + float inv_spectrum_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; + float powerSpec_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; + float powerSpec_long[MCT_MAX_CHANNELS-CPE_CHANNELS][L_FRAME48k]; + float inv_spectrum_long[MCT_MAX_CHANNELS-CPE_CHANNELS][L_FRAME48k]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */ #else float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k]; #endif @@ -210,7 +214,9 @@ void ivas_mct_core_enc( float *inv_mdst_spectrum[MCT_MAX_CHANNELS][2]; float *inv_spectrum[MCT_MAX_CHANNELS][2]; float *mdst_spectrum[MCT_MAX_CHANNELS][2]; +#ifndef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC float inv_spectrum_long[MCT_MAX_CHANNELS][L_FRAME48k]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */ +#endif int16_t total_side_bits; int16_t chBitRatios[MCT_MAX_CHANNELS]; Encoder_State *sts[MCT_MAX_CHANNELS]; @@ -245,7 +251,20 @@ void ivas_mct_core_enc( nCPE++; } +#ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC + for ( ch = 0; ch < CPE_CHANNELS; ch++ ) + { + inv_mdst_spectrum[ch][0] = powerSpecMsInv[ch][0] = powerSpecMsInv_long_cpe0[ch]; + inv_mdst_spectrum[ch][1] = powerSpecMsInv[ch][1] = powerSpecMsInv_long_cpe0[ch] + N_TCX10_MAX; + inv_spectrum[ch][0] = inv_spectrum_long_cpe0[ch]; + inv_spectrum[ch][1] = inv_spectrum_long_cpe0[ch] + N_TCX10_MAX; + powerSpec[ch] = powerSpec_long_cpe0[ch]; + } + + for ( ch = CPE_CHANNELS; ch < nChannels; ch++ ) +#else for ( ch = 0; ch < nChannels; ch++ ) +#endif { inv_mdst_spectrum[ch][0] = powerSpecMsInv[ch][0] = powerSpecMsInv_long[ch]; inv_mdst_spectrum[ch][1] = powerSpecMsInv[ch][1] = powerSpecMsInv_long[ch] + N_TCX10_MAX; @@ -281,25 +300,6 @@ void ivas_mct_core_enc( } } -#ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC - /* for bitrate switching with DTX on, larger buffers are needed to compute the power spectrum*/ - if ( sts[0]->last_core == ACELP_CORE ) - { - float powerSpecMsInv_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; - float inv_spectrum_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; - float powerSpec_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; - - for ( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - inv_mdst_spectrum[ch][0] = powerSpecMsInv[ch][0] = powerSpecMsInv_long_cpe0[ch]; - inv_mdst_spectrum[ch][1] = powerSpecMsInv[ch][1] = powerSpecMsInv_long_cpe0[ch] + N_TCX10_MAX; - inv_spectrum[ch][0] = inv_spectrum_long_cpe0[ch]; - inv_spectrum[ch][1] = inv_spectrum_long_cpe0[ch] + N_TCX10_MAX; - powerSpec[ch] = powerSpec_long_cpe0[ch]; - } - } -#endif - hBstr = sts[0]->hBstr; for ( ch = 0; ch < (int16_t) ( hMCT->nchan_out_woLFE * 0.5 ); ch++ ) -- GitLab From 41aaee75ab7797a9cbdea8b7c0610d99bc66380b Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Thu, 16 May 2024 14:35:53 +0200 Subject: [PATCH 4/9] fix one more buffer and clan format --- lib_enc/ivas_mct_core_enc.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib_enc/ivas_mct_core_enc.c b/lib_enc/ivas_mct_core_enc.c index d0fea55c9c..d48d2487e9 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -201,12 +201,13 @@ void ivas_mct_core_enc( float powerSpecMsInv_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; float inv_spectrum_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; float powerSpec_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; - float powerSpec_long[MCT_MAX_CHANNELS-CPE_CHANNELS][L_FRAME48k]; - float inv_spectrum_long[MCT_MAX_CHANNELS-CPE_CHANNELS][L_FRAME48k]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */ + float powerSpec_long[MCT_MAX_CHANNELS - CPE_CHANNELS][L_FRAME48k]; + float inv_spectrum_long[MCT_MAX_CHANNELS - CPE_CHANNELS][L_FRAME48k]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */ + float powerSpecMsInv_long[MCT_MAX_CHANNELS - CPE_CHANNELSDEBU][L_FRAME48k]; /* MS inv power spectrum, also inverse MDST spectrum */ #else float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k]; -#endif float powerSpecMsInv_long[MCT_MAX_CHANNELS][L_FRAME48k]; /* MS inv power spectrum, also inverse MDST spectrum */ +#endif #ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC float *powerSpec[MCT_MAX_CHANNELS]; #endif @@ -260,8 +261,8 @@ void ivas_mct_core_enc( inv_spectrum[ch][1] = inv_spectrum_long_cpe0[ch] + N_TCX10_MAX; powerSpec[ch] = powerSpec_long_cpe0[ch]; } - - for ( ch = CPE_CHANNELS; ch < nChannels; ch++ ) + + for ( ch = CPE_CHANNELS; ch < nChannels; ch++ ) #else for ( ch = 0; ch < nChannels; ch++ ) #endif -- GitLab From 024191f8ffe23f6800ba14ec5baf6516dc0d5ca7 Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Thu, 16 May 2024 14:39:46 +0200 Subject: [PATCH 5/9] clang format --- 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 d48d2487e9..8a34d0f423 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -202,7 +202,7 @@ void ivas_mct_core_enc( float inv_spectrum_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; float powerSpec_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; float powerSpec_long[MCT_MAX_CHANNELS - CPE_CHANNELS][L_FRAME48k]; - float inv_spectrum_long[MCT_MAX_CHANNELS - CPE_CHANNELS][L_FRAME48k]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */ + float inv_spectrum_long[MCT_MAX_CHANNELS - CPE_CHANNELS][L_FRAME48k]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */ float powerSpecMsInv_long[MCT_MAX_CHANNELS - CPE_CHANNELSDEBU][L_FRAME48k]; /* MS inv power spectrum, also inverse MDST spectrum */ #else float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k]; -- GitLab From 5ea06452574ca9e8213df669bf3c7c7df7914d1b Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Thu, 16 May 2024 14:57:38 +0200 Subject: [PATCH 6/9] fix build error --- 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 8a34d0f423..c151c545fd 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -203,7 +203,7 @@ void ivas_mct_core_enc( float powerSpec_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; float powerSpec_long[MCT_MAX_CHANNELS - CPE_CHANNELS][L_FRAME48k]; float inv_spectrum_long[MCT_MAX_CHANNELS - CPE_CHANNELS][L_FRAME48k]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */ - float powerSpecMsInv_long[MCT_MAX_CHANNELS - CPE_CHANNELSDEBU][L_FRAME48k]; /* MS inv power spectrum, also inverse MDST spectrum */ + float powerSpecMsInv_long[MCT_MAX_CHANNELS - CPE_CHANNELS][L_FRAME48k]; /* MS inv power spectrum, also inverse MDST spectrum */ #else float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k]; float powerSpecMsInv_long[MCT_MAX_CHANNELS][L_FRAME48k]; /* MS inv power spectrum, also inverse MDST spectrum */ -- GitLab From 6459f5fb2520698ad43e176cca0d99ef2bc356fb Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Thu, 16 May 2024 16:05:30 +0200 Subject: [PATCH 7/9] clang format --- 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 c151c545fd..47bc1c450f 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -202,7 +202,7 @@ void ivas_mct_core_enc( float inv_spectrum_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; float powerSpec_long_cpe0[CPE_CHANNELS][L_FRAME_PLUS]; float powerSpec_long[MCT_MAX_CHANNELS - CPE_CHANNELS][L_FRAME48k]; - float inv_spectrum_long[MCT_MAX_CHANNELS - CPE_CHANNELS][L_FRAME48k]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */ + float inv_spectrum_long[MCT_MAX_CHANNELS - CPE_CHANNELS][L_FRAME48k]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */ float powerSpecMsInv_long[MCT_MAX_CHANNELS - CPE_CHANNELS][L_FRAME48k]; /* MS inv power spectrum, also inverse MDST spectrum */ #else float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k]; -- GitLab From 2ad89313129f2e347995defe3b6c6e072d228045 Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Fri, 7 Jun 2024 12:27:37 +0200 Subject: [PATCH 8/9] fix pointer assignemt --- lib_enc/ivas_mct_core_enc.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib_enc/ivas_mct_core_enc.c b/lib_enc/ivas_mct_core_enc.c index 47bc1c450f..07971a7e4b 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -267,12 +267,12 @@ void ivas_mct_core_enc( for ( ch = 0; ch < nChannels; ch++ ) #endif { - inv_mdst_spectrum[ch][0] = powerSpecMsInv[ch][0] = powerSpecMsInv_long[ch]; - inv_mdst_spectrum[ch][1] = powerSpecMsInv[ch][1] = powerSpecMsInv_long[ch] + N_TCX10_MAX; - inv_spectrum[ch][0] = inv_spectrum_long[ch]; - inv_spectrum[ch][1] = inv_spectrum_long[ch] + N_TCX10_MAX; + inv_mdst_spectrum[ch][0] = powerSpecMsInv[ch][0] = powerSpecMsInv_long[ch - CPE_CHANNELS]; + inv_mdst_spectrum[ch][1] = powerSpecMsInv[ch][1] = powerSpecMsInv_long[ch - CPE_CHANNELS] + N_TCX10_MAX; + inv_spectrum[ch][0] = inv_spectrum_long[ch - CPE_CHANNELS]; + inv_spectrum[ch][1] = inv_spectrum_long[ch - CPE_CHANNELS] + N_TCX10_MAX; #ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC - powerSpec[ch] = powerSpec_long[ch]; + powerSpec[ch] = powerSpec_long[ch - CPE_CHANNELS]; #endif } -- GitLab From 0f06dce08fcc84759cab8fe1e97e5056255c2978 Mon Sep 17 00:00:00 2001 From: Eleni Fotopoulou Date: Fri, 7 Jun 2024 12:32:10 +0200 Subject: [PATCH 9/9] add comment --- lib_enc/ivas_mct_core_enc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib_enc/ivas_mct_core_enc.c b/lib_enc/ivas_mct_core_enc.c index 07971a7e4b..0cd304696a 100644 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -253,6 +253,7 @@ void ivas_mct_core_enc( } #ifdef NONBE_FIX_1097_SBA_DTX_BRATE_SWITCHING_ENC + /* point first CPE channels to longer buffers where switching from ACELP to TCX may occur in SBA with DTX (total memory saving)*/ for ( ch = 0; ch < CPE_CHANNELS; ch++ ) { inv_mdst_spectrum[ch][0] = powerSpecMsInv[ch][0] = powerSpecMsInv_long_cpe0[ch]; -- GitLab