Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,7 @@ #define FIX_1372_ISAR_POST_REND #endif #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ #define FIX_963_USAN_ERROR /* Eri: Issue 963: USAN error in Stereo CNG, division by zero */ #define NONBE_FIX_952_MC_PARAMUPMIX_5MS /* Dlb : issue 952 : Differences between 5ms and 20ms rendering for ParamUpmix*/ #define NONBE_FIX_935_EARLY_REFLECTIONS_WRONG_ORDER /* Qualcomm: issue 953: fix order or ER channels in LC mode*/ #define FIX_955_FASTCONV_REND_IN_ISM /* VA: put FastConv rendering call under DEBUGGING */ Loading lib_enc/ivas_stereo_dft_enc_itd_fx.c +30 −2 Original line number Diff line number Diff line Loading @@ -1662,11 +1662,24 @@ void stereo_dft_enc_compute_itd_fx( move16(); } // cng_xcorr_filt = max( min( CORR_FILT, 10.0f * CORR_FILT / ( hStereoDft->expectedNumUpdates + hStereoDft->currentNumUpdates ) ), sfm_L ); #ifdef FIX_963_USAN_ERROR IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) == 0 ) { cng_xcorr_filt = CORR_FILT_Q31; move32(); cng_xcorr_filt = L_max( cng_xcorr_filt, sfm_L ); // Q31 } ELSE { cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 } #else cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 #endif hStereoDft->currentNumUpdates = add( hStereoDft->currentNumUpdates, 1 ); move16(); FOR( i = 1; i < NFFT / 4; i++ ) Loading Loading @@ -1722,6 +1735,20 @@ void stereo_dft_enc_compute_itd_fx( { /* expectedNumUpdates updated after call to dtx() in SID frames */ // cng_xcorr_filt = max( min( CORR_FILT, 10.0f * CORR_FILT / ( hStereoDft->expectedNumUpdates + hStereoDft->currentNumUpdates ) ), sfm_L ); #ifdef FIX_963_USAN_ERROR IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) == 0 ) { cng_xcorr_filt = CORR_FILT_Q31; move32(); cng_xcorr_filt = L_max( cng_xcorr_filt, sfm_L ); // Q31 } ELSE { cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 } #else IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) != 0 ) { cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); Loading @@ -1734,6 +1761,7 @@ void stereo_dft_enc_compute_itd_fx( move32(); cng_xcorr_filt = L_max( cng_xcorr_filt, sfm_L ); // Q31 } #endif hStereoDft->currentNumUpdates = add( hStereoDft->currentNumUpdates, 1 ); move16(); hStereoDft->sfm_fx = cng_xcorr_filt; Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,7 @@ #define FIX_1372_ISAR_POST_REND #endif #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ #define FIX_963_USAN_ERROR /* Eri: Issue 963: USAN error in Stereo CNG, division by zero */ #define NONBE_FIX_952_MC_PARAMUPMIX_5MS /* Dlb : issue 952 : Differences between 5ms and 20ms rendering for ParamUpmix*/ #define NONBE_FIX_935_EARLY_REFLECTIONS_WRONG_ORDER /* Qualcomm: issue 953: fix order or ER channels in LC mode*/ #define FIX_955_FASTCONV_REND_IN_ISM /* VA: put FastConv rendering call under DEBUGGING */ Loading
lib_enc/ivas_stereo_dft_enc_itd_fx.c +30 −2 Original line number Diff line number Diff line Loading @@ -1662,11 +1662,24 @@ void stereo_dft_enc_compute_itd_fx( move16(); } // cng_xcorr_filt = max( min( CORR_FILT, 10.0f * CORR_FILT / ( hStereoDft->expectedNumUpdates + hStereoDft->currentNumUpdates ) ), sfm_L ); #ifdef FIX_963_USAN_ERROR IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) == 0 ) { cng_xcorr_filt = CORR_FILT_Q31; move32(); cng_xcorr_filt = L_max( cng_xcorr_filt, sfm_L ); // Q31 } ELSE { cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 } #else cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 #endif hStereoDft->currentNumUpdates = add( hStereoDft->currentNumUpdates, 1 ); move16(); FOR( i = 1; i < NFFT / 4; i++ ) Loading Loading @@ -1722,6 +1735,20 @@ void stereo_dft_enc_compute_itd_fx( { /* expectedNumUpdates updated after call to dtx() in SID frames */ // cng_xcorr_filt = max( min( CORR_FILT, 10.0f * CORR_FILT / ( hStereoDft->expectedNumUpdates + hStereoDft->currentNumUpdates ) ), sfm_L ); #ifdef FIX_963_USAN_ERROR IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) == 0 ) { cng_xcorr_filt = CORR_FILT_Q31; move32(); cng_xcorr_filt = L_max( cng_xcorr_filt, sfm_L ); // Q31 } ELSE { cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 } #else IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) != 0 ) { cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); Loading @@ -1734,6 +1761,7 @@ void stereo_dft_enc_compute_itd_fx( move32(); cng_xcorr_filt = L_max( cng_xcorr_filt, sfm_L ); // Q31 } #endif hStereoDft->currentNumUpdates = add( hStereoDft->currentNumUpdates, 1 ); move16(); hStereoDft->sfm_fx = cng_xcorr_filt; Loading