diff --git a/lib_com/fd_cng_com_fx.c b/lib_com/fd_cng_com_fx.c index 1a85899d30a2d907a195fc137833e71bed7a4e10..45dd66f45f58eaa6891ad64006d1012c3b47da9e 100644 --- a/lib_com/fd_cng_com_fx.c +++ b/lib_com/fd_cng_com_fx.c @@ -58,7 +58,13 @@ ivas_error createFdCngCom_fx( * *-------------------------------------------------------------------*/ -void ivas_initFdCngCom_fx( HANDLE_FD_CNG_COM hFdCngCom, Word16 scale ) +#ifdef FIX_2245_INIT_FD_CNG_EVS +void initFdCngCom( +#else +void ivas_initFdCngCom_fx( +#endif + HANDLE_FD_CNG_COM hFdCngCom, + Word16 scale ) { /* Calculate CLDFB scaling factor */ /* shl(i_mult2(scale, scale), 3) does not fit in 16 bit */ @@ -172,7 +178,7 @@ void ivas_initFdCngCom_fx( HANDLE_FD_CNG_COM hFdCngCom, Word16 scale ) return; } - +#ifndef FIX_2245_INIT_FD_CNG_EVS void initFdCngCom( HANDLE_FD_CNG_COM hFdCngCom, Word16 scale ) { /* Calculate CLDFB scaling factor */ @@ -277,7 +283,7 @@ void initFdCngCom( HANDLE_FD_CNG_COM hFdCngCom, Word16 scale ) return; } - +#endif /*------------------------------------------------------------------- * deleteFdCngCom() * diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 3c7f54074230f62520bbf762357f19ca5516f3fc..7cee85a2cdabd2b9e525042a840c95f5949fe719 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -1990,6 +1990,7 @@ ivas_error stereo_memory_dec_fx( const Word16 nchan_transport /* i : number of transport channels */ ); +#ifndef FIX_2245_INIT_FD_CNG_EVS void initFdCngDec_ivas_fx( DEC_CORE_HANDLE st, /* i/o: decoder state structure */ Word16 scale @@ -1998,7 +1999,7 @@ void initFdCngDec_ivas_fx( void ivas_initFdCngCom_fx( HANDLE_FD_CNG_COM hFdCngCom, Word16 scale ); - +#endif Word16 set_ACELP_flag_IVAS( const Word16 element_mode, /* i : element mode */ const Word32 element_brate, /* i : element bitrate */ diff --git a/lib_com/options.h b/lib_com/options.h index dd41dd1bc5640eee34a64af179ca26c52b4e3fd8..e9b94dbadab05e6867f7e01f0d4f17b0d0f7d937 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -86,6 +86,7 @@ #define NONBE_1122_KEEP_EVS_MODE_UNCHANGED /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR. */ #define FIX_1435_MOVE_STEREO_PANNING /* VA: issue 1435: do the EVS stereo panning in the renderer */ #define FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND /* OR : Fix issue basop 2201 hrtf_file_reader crend differs between basop ivas-main and ivas-float-update */ +#define FIX_2245_INIT_FD_CNG_EVS /* Dolby/VA: Issue 2245: initialize FD CNG with EVS-type of init function */ /* #################### End BE switches ################################## */ diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index d970dfee48f9f6bd4ba4d031d45654d534a75c78..9d6c4c756ed6d6a4a783efabaac8a5f68f1d5880 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -79,16 +79,27 @@ ivas_error createFdCngDec_fx( HANDLE_FD_CNG_DEC *hFdCngDec ) return error; } +#ifdef FIX_2245_INIT_FD_CNG_EVS +void initFdCngDec_fx( + DEC_CORE_HANDLE st, /* i/o: decoder state structure */ + const Word16 scale /* i : Q factor */ +) +#else void initFdCngDec_ivas_fx( DEC_CORE_HANDLE st, /* i/o: decoder state structure */ Word16 scale /*Q15*/ ) +#endif { /* Initialize common */ HANDLE_FD_CNG_DEC hFdCngDec; hFdCngDec = st->hFdCngDec; +#ifdef FIX_2245_INIT_FD_CNG_EVS + initFdCngCom( hFdCngDec->hFdCngCom, scale ); +#else ivas_initFdCngCom_fx( hFdCngDec->hFdCngCom, scale ); +#endif set16_fx( hFdCngDec->olapBufferAna, 0, FFTLEN ); hFdCngDec->hFdCngCom->olapBufferAna = hFdCngDec->olapBufferAna; set16_fx( hFdCngDec->olapBufferSynth2, 0, FFTLEN ); @@ -123,6 +134,9 @@ void initFdCngDec_ivas_fx( set16_fx( hFdCngDec->msPsd, 0, NPART_SHAPING ); set32_fx( hFdCngDec->msPsd_fx, 0, NPART_SHAPING ); +#ifdef FIX_2245_INIT_FD_CNG_EVS + set16_fx( hFdCngDec->msNoiseFloor, 0, NPART_SHAPING ); +#endif set32_fx( hFdCngDec->msNoiseFloor_32fx, 0, NPART_SHAPING ); set32_fx( hFdCngDec->msNoiseEst, 0, NPART_SHAPING ); @@ -148,6 +162,9 @@ void initFdCngDec_ivas_fx( move16(); set16_fx( hFdCngDec->msLogPeriodog, 0, NPART_SHAPING ); +#ifdef FIX_2245_INIT_FD_CNG_EVS + set16_fx( hFdCngDec->msLogNoiseEst, 0, NPART_SHAPING ); +#endif set32_fx( hFdCngDec->msLogNoiseEst_32fx, 0, NPART_SHAPING ); set16_fx( hFdCngDec->psize_shaping, 0, NPART_SHAPING ); @@ -194,9 +211,11 @@ void initFdCngDec_ivas_fx( move16(); Copy( st->lsp_old_fx, st->lspCNG_fx, M ); /*Q15*/ hFdCngDec->hFdCngCom->sid_frame_counter = 0; + return; } +#ifndef FIX_2245_INIT_FD_CNG_EVS void initFdCngDec_fx( DEC_CORE_HANDLE st, /* i/o: decoder state structure */ const Word16 scale /*Q15*/ ) @@ -285,6 +304,7 @@ void initFdCngDec_fx( return; } +#endif /* configureFdCngDec_fx diff --git a/lib_dec/init_dec_fx.c b/lib_dec/init_dec_fx.c index ec2c0ce0bf2a289c6f395fd43c5d54feeff6ce7d..e46991dc8d405a7c9ed7ccfe11ade80c46a05d6b 100644 --- a/lib_dec/init_dec_fx.c +++ b/lib_dec/init_dec_fx.c @@ -928,7 +928,11 @@ ivas_error init_decoder_fx( } /* Init FD-CNG */ +#ifdef FIX_2245_INIT_FD_CNG_EVS + initFdCngDec_fx( st_fx, st_fx->cldfbSyn->scale ); +#else initFdCngDec_ivas_fx( st_fx, st_fx->cldfbSyn->scale ); +#endif } ELSE { diff --git a/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c b/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c index 1a639a3d7d4e79b5324f22361a7b1c97b31a5409..1f7710376f78c519f9fda298b69b13e60a95c5c1 100644 --- a/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c +++ b/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c @@ -571,7 +571,11 @@ ivas_error initMdctStereoDtxData_fx( } /* Init FD-CNG */ +#ifdef FIX_2245_INIT_FD_CNG_EVS + initFdCngDec_fx( st, st->cldfbSyn->scale ); +#else initFdCngDec_ivas_fx( st, st->cldfbSyn->scale ); +#endif } IF( st->first_CNG == 0 ) diff --git a/lib_dec/ivas_stereo_switching_dec_fx.c b/lib_dec/ivas_stereo_switching_dec_fx.c index 237b5f9d5fac4fbf400b6cf7ef51d5d1fc58d5d7..5ac255026fb768ad1463a451330d0dd6ecb74749 100644 --- a/lib_dec/ivas_stereo_switching_dec_fx.c +++ b/lib_dec/ivas_stereo_switching_dec_fx.c @@ -652,7 +652,11 @@ ivas_error stereo_memory_dec_fx( return error; } +#ifdef FIX_2245_INIT_FD_CNG_EVS + initFdCngDec_fx( st, st->cldfbSyn->scale ); +#else initFdCngDec_ivas_fx( st, st->cldfbSyn->scale ); +#endif configureFdCngDec_ivas_fx( st->hFdCngDec, st->bwidth, st->total_brate, st->L_frame, st->last_L_frame, st->element_mode ); } @@ -759,7 +763,11 @@ ivas_error stereo_memory_dec_fx( } /* Init FD-CNG */ +#ifdef FIX_2245_INIT_FD_CNG_EVS + initFdCngDec_fx( st, st->cldfbSyn->scale ); +#else initFdCngDec_ivas_fx( st, st->cldfbSyn->scale ); +#endif if ( EQ_16( hCPE->last_element_mode, IVAS_CPE_DFT ) ) { @@ -1079,7 +1087,12 @@ ivas_error stereo_memory_dec_fx( { return error; } + +#ifdef FIX_2245_INIT_FD_CNG_EVS + initFdCngDec_fx( hCPE->hCoreCoder[i], hCPE->hCoreCoder[i]->cldfbSyn->scale ); +#else initFdCngDec_ivas_fx( hCPE->hCoreCoder[i], hCPE->hCoreCoder[i]->cldfbSyn->scale ); +#endif } } }