diff --git a/lib_com/options.h b/lib_com/options.h old mode 100755 new mode 100644 index e7490425610e17c651563ac7503812b6a5152dd3..b04268f7ced758ba683b284281e983f3e9982dc7 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -38,7 +38,7 @@ #define OPTIONS_H /* clang-format off */ -/* ################### Start compiler switches ######################## */ + /* ################### Start compiler switches ######################## */ #define SUPPORT_JBM_TRACEFILE /* support for JBM tracefile, which is needed for 3GPP objective/subjective testing, but not relevant for real-world implementations */ @@ -168,6 +168,7 @@ #define FIX_506 /* FhG: Compiler warnings */ #define FIX_511_OPTIMIZE_PARAMBIN_GAIN_FETCH /* Nokia: Issue 511, significant optimization of parametric binauralizer gain fetching. */ #define FIX_531_BWS_ISM_BFI /* VA: issue 531: fix MemorySanitizer: use-of-uninitialized-value in ISM2 rate switching with frame errors */ +#define FIX_395_CNG_BW /* Eri: Issue 395 - CNG bandwidth issue for unified stereo */ #define EXTERNAL_ORIENTATIONS /* Nokia: Contribution 41: (external) orientation information handling */ diff --git a/lib_enc/ivas_cpe_enc.c b/lib_enc/ivas_cpe_enc.c index 50be3467973a99aa9f7815bacc401c556035e181..900a9965731478cc3baca05347f37e3b2f986007 100644 --- a/lib_enc/ivas_cpe_enc.c +++ b/lib_enc/ivas_cpe_enc.c @@ -574,8 +574,9 @@ ivas_error ivas_cpe_enc( #ifdef DEBUG_MODE_DFT hCPE->hStereoDft->res_cod_bits = 0; #endif - +#ifndef FIX_395_CNG_BW stereo_dft_enc_update( hCPE->hStereoDft, min( SWB, sts[0]->max_bwidth ) ); +#endif } else { diff --git a/lib_enc/ivas_stereo_dft_enc.c b/lib_enc/ivas_stereo_dft_enc.c index e043fb485724260fd253daf9dc64706b4ca43e7e..f628373ab72824568c307a0e8121d522d31fd235 100644 --- a/lib_enc/ivas_stereo_dft_enc.c +++ b/lib_enc/ivas_stereo_dft_enc.c @@ -624,6 +624,7 @@ void stereo_dft_enc_update( /* update band limits in case of rate switching assuming max_bwidth as BWD output not yet know here */ NFFT_inner = STEREO_DFT_N_MAX_ENC * inner_frame_tbl[max_bwidth] / L_FRAME48k; + hStereoDft->nbands = stereo_dft_band_config( hStereoDft->band_limits, hStereoDft->hConfig->band_res, NFFT_inner, ENC ); hStereoDft->nbands_dmx = stereo_dft_band_config( hStereoDft->band_limits_dmx, 1, NFFT_inner, ENC ); @@ -2161,6 +2162,23 @@ void stereo_dft_enc_write_BS( k_offset = STEREO_DFT_OFFSET; nbands_full = hStereoDft->nbands; + +#ifdef FIX_395_CNG_BW + if ( core_brate == FRAME_NO_DATA || core_brate == SID_2k40 ) + { + NFFT_inner = min( STEREO_DFT_N_32k_ENC, STEREO_DFT_N_MAX_ENC * inner_frame_tbl[hCPE->hCoreCoder[0]->bwidth] / L_FRAME48k ); + hStereoDft->band_res[k_offset] = hStereoDft->hConfig->band_res; + hStereoDft->res_pred_mode[k_offset] = 0; + hStereoDft->res_cod_mode[k_offset] = 0; + } + else + { + NFFT_inner = STEREO_DFT_N_MAX_ENC * inner_frame_tbl[hCPE->hCoreCoder[0]->bwidth] / L_FRAME48k; + } + + /* set number of bands according to bandwidth after BWD */ + hStereoDft->nbands = stereo_dft_band_config( hStereoDft->band_limits, hStereoDft->band_res[k_offset], NFFT_inner, ENC ); +#else NFFT_inner = STEREO_DFT_N_MAX_ENC * inner_frame_tbl[hCPE->hCoreCoder[0]->bwidth] / L_FRAME48k; if ( !( core_brate == SID_2k40 || core_brate == FRAME_NO_DATA ) ) @@ -2168,6 +2186,7 @@ void stereo_dft_enc_write_BS( /* set number of bands according to bandwidth after BWD */ hStereoDft->nbands = stereo_dft_band_config( hStereoDft->band_limits, hStereoDft->band_res[k_offset], NFFT_inner, ENC ); } +#endif if ( core_brate == FRAME_NO_DATA ) {