Loading lib_com/options.h +2 −1 Original line number Diff line number Diff line Loading @@ -163,7 +163,8 @@ #define NONBE_FIX_856_TCX_LTP_SYNTH_FILTER /* FhG: issue 856: correct filtering length for tcx-ltp synth filtering*/ #define NONBE_FIX_943_RECONFIG_IGF_AFTER_SETTING_BW /* FhG: issue 943: fix crash in BW switchin from WB in MDCT-Stereo core encoder */ #define NONBE_FIX_947_STEREO_DMX_EVS_WODBL /* Orange: Double removed */ #define BE_FIX_567_DOUBLE_STEREO_DMX /* NTT: Fix formal issues */ #define NONBE_FIX_567_DOUBLE_STEREO_DMX /* Orange: Double-precision replaced by single-precision */ #define NONBE_FIX_947_STEREO_DMX_EVS_POC /* Orange: Fix clicks on POC */ #define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ Loading lib_enc/ivas_stereo_dmx_evs.c +18 −9 Original line number Diff line number Diff line Loading @@ -58,7 +58,11 @@ #define STEREO_DMX_EVS_POC_FORGETTING 0.78f #define STEREO_DMX_EVS_TARGET_POC_FORGETTING 0.79f #define STEREO_DMX_EVS_POC_W_FORGETTING 0.875f #ifdef BE_FIX_567_DOUBLE_STEREO_DMX #define STEREO_DMX_EVS_SHIFT_LIMIT STEREO_DFT_ZP_NS_ENC #else #define STEREO_DMX_EVS_SHIFT_LIMIT 5.625f /* ms */ #endif #define STEREO_DMX_EVS_DMX_EGY_FORGETTING 0.25f #define STEREO_DMX_EVS_CORR_FORGETTING 0.78f Loading Loading @@ -525,7 +529,7 @@ static void calc_poc( tPi += IPDi; /* ICCr */ #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX Pn = 1.0f / sqrtf( ( IPDr * IPDr + IPDi * IPDi ) + EPSILON ); #else Pn = (float) inv_sqrt_( ( IPDr * IPDr + IPDi * IPDi ) + EPSILON ); Loading @@ -542,7 +546,7 @@ static void calc_poc( eneL += ( specLr[i] * specLr[i] + specLi[i] * specLi[i] ); eneR += ( specRr[i] * specRr[i] + specRi[i] * specRi[i] ); } #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX Pn = (float) ( 1.0 / sqrtf( ( ( tPr * tPr + tPi * tPi ) + EPSILON ) ) ); #else Pn = (float) inv_sqrt( ( tPr * tPr + tPi * tPi ) + EPSILON ); Loading @@ -555,7 +559,7 @@ static void calc_poc( Pr[n] = ipd_ff[n] * Pr[n] + ( 1.0f - ipd_ff[n] ) * tPr; Pi[n] = ipd_ff[n] * Pi[n] + ( 1.0f - ipd_ff[n] ) * tPi; #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX Pn = (float) ( 1.0 / sqrtf( ( Pr[n] * Pr[n] + Pi[n] * Pi[n] ) + EPSILON ) ); #else Pn = (float) inv_sqrt( ( Pr[n] * Pr[n] + Pi[n] * Pi[n] ) + EPSILON ); Loading @@ -568,7 +572,7 @@ static void calc_poc( { Pr[n] = ipd_ff[n] * Pr[n] + ( 1.0f - ipd_ff[n] ) * tPr; Pi[n] = ipd_ff[n] * Pi[n] + ( 1.0f - ipd_ff[n] ) * tPi; #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX Pn = (float) ( 1.0 / sqrtf( ( Pr[n] * Pr[n] + Pi[n] * Pi[n] ) + EPSILON ) ); #else Pn = (float) inv_sqrt( ( Pr[n] * Pr[n] + Pi[n] * Pi[n] ) + EPSILON ); Loading Loading @@ -599,7 +603,7 @@ static void calc_poc( } #endif #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX ICCr = sqrtf( ( Nr * Nr + Ni * Ni ) / ( eneL * eneR + EPSILON ) ); #else ICCr = (float) sqrt( ( Nr * Nr + Ni * Ni ) / ( eneL * eneR + EPSILON ) ); Loading Loading @@ -788,7 +792,7 @@ static void calc_poc( isd_rate = (float) isd_cnt_l / freq_8k; for ( i = 1; i < nsbd; i++ ) { #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX rfft_pha_buf[i * 2] = sqrtf( ( 1.0f + Pr[i] ) / 2.0f ); rfft_pha_buf[i * 2 + 1] = sqrtf( ( 1.0f - Pr[i] ) / 2.0f ) * sign( Pi[i] ); if ( isd_rate > STEREO_DMX_EVS_ISD_DIST_THRES_IPD ) Loading Loading @@ -898,7 +902,7 @@ static void calc_poc( isd_rate = (float) isd_cnt_l / freq_8k; for ( i = 1; i < nsbd; i++ ) { #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX rfft_pha_buf[i * 2] = sqrtf( ( 1.0f + Pr[i] ) / 2.0f ); rfft_pha_buf[i * 2 + 1] = sqrtf( ( 1.0f - Pr[i] ) / 2.0f ) * sign( Pi[i] ); if ( isd_rate > STEREO_DMX_EVS_ISD_DIST_THRES_IPD ) Loading Loading @@ -972,8 +976,8 @@ static void calc_poc( { energy += hPHA->p_curr_taps[n][i] * hPHA->p_curr_taps[n][i]; } #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL energy = (float) ( 1.0 / sqrtf( energy + EPSILON ) ); #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX energy = inv_sqrt( energy + EPSILON ); #else energy = (float) inv_sqrt( energy + EPSILON ); #endif Loading Loading @@ -2165,7 +2169,12 @@ ivas_error stereo_dmx_evs_init_encoder( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for STEREO_DMX_EVS_POC_DATA\n" ) ); } #ifdef BE_FIX_567_DOUBLE_STEREO_DMX hStereoDmxEVS->hPOC->shift_limit = NS2SA(input_Fs, STEREO_DMX_EVS_SHIFT_LIMIT ); #else hStereoDmxEVS->hPOC->shift_limit = (int16_t) ( STEREO_DMX_EVS_SHIFT_LIMIT * input_Fs / 1000 ); #endif for ( n = 0; n < CPE_CHANNELS; n++ ) { hStereoDmxEVS->hPOC->peakQ[n] = 0.0f; Loading Loading
lib_com/options.h +2 −1 Original line number Diff line number Diff line Loading @@ -163,7 +163,8 @@ #define NONBE_FIX_856_TCX_LTP_SYNTH_FILTER /* FhG: issue 856: correct filtering length for tcx-ltp synth filtering*/ #define NONBE_FIX_943_RECONFIG_IGF_AFTER_SETTING_BW /* FhG: issue 943: fix crash in BW switchin from WB in MDCT-Stereo core encoder */ #define NONBE_FIX_947_STEREO_DMX_EVS_WODBL /* Orange: Double removed */ #define BE_FIX_567_DOUBLE_STEREO_DMX /* NTT: Fix formal issues */ #define NONBE_FIX_567_DOUBLE_STEREO_DMX /* Orange: Double-precision replaced by single-precision */ #define NONBE_FIX_947_STEREO_DMX_EVS_POC /* Orange: Fix clicks on POC */ #define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ Loading
lib_enc/ivas_stereo_dmx_evs.c +18 −9 Original line number Diff line number Diff line Loading @@ -58,7 +58,11 @@ #define STEREO_DMX_EVS_POC_FORGETTING 0.78f #define STEREO_DMX_EVS_TARGET_POC_FORGETTING 0.79f #define STEREO_DMX_EVS_POC_W_FORGETTING 0.875f #ifdef BE_FIX_567_DOUBLE_STEREO_DMX #define STEREO_DMX_EVS_SHIFT_LIMIT STEREO_DFT_ZP_NS_ENC #else #define STEREO_DMX_EVS_SHIFT_LIMIT 5.625f /* ms */ #endif #define STEREO_DMX_EVS_DMX_EGY_FORGETTING 0.25f #define STEREO_DMX_EVS_CORR_FORGETTING 0.78f Loading Loading @@ -525,7 +529,7 @@ static void calc_poc( tPi += IPDi; /* ICCr */ #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX Pn = 1.0f / sqrtf( ( IPDr * IPDr + IPDi * IPDi ) + EPSILON ); #else Pn = (float) inv_sqrt_( ( IPDr * IPDr + IPDi * IPDi ) + EPSILON ); Loading @@ -542,7 +546,7 @@ static void calc_poc( eneL += ( specLr[i] * specLr[i] + specLi[i] * specLi[i] ); eneR += ( specRr[i] * specRr[i] + specRi[i] * specRi[i] ); } #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX Pn = (float) ( 1.0 / sqrtf( ( ( tPr * tPr + tPi * tPi ) + EPSILON ) ) ); #else Pn = (float) inv_sqrt( ( tPr * tPr + tPi * tPi ) + EPSILON ); Loading @@ -555,7 +559,7 @@ static void calc_poc( Pr[n] = ipd_ff[n] * Pr[n] + ( 1.0f - ipd_ff[n] ) * tPr; Pi[n] = ipd_ff[n] * Pi[n] + ( 1.0f - ipd_ff[n] ) * tPi; #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX Pn = (float) ( 1.0 / sqrtf( ( Pr[n] * Pr[n] + Pi[n] * Pi[n] ) + EPSILON ) ); #else Pn = (float) inv_sqrt( ( Pr[n] * Pr[n] + Pi[n] * Pi[n] ) + EPSILON ); Loading @@ -568,7 +572,7 @@ static void calc_poc( { Pr[n] = ipd_ff[n] * Pr[n] + ( 1.0f - ipd_ff[n] ) * tPr; Pi[n] = ipd_ff[n] * Pi[n] + ( 1.0f - ipd_ff[n] ) * tPi; #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX Pn = (float) ( 1.0 / sqrtf( ( Pr[n] * Pr[n] + Pi[n] * Pi[n] ) + EPSILON ) ); #else Pn = (float) inv_sqrt( ( Pr[n] * Pr[n] + Pi[n] * Pi[n] ) + EPSILON ); Loading Loading @@ -599,7 +603,7 @@ static void calc_poc( } #endif #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX ICCr = sqrtf( ( Nr * Nr + Ni * Ni ) / ( eneL * eneR + EPSILON ) ); #else ICCr = (float) sqrt( ( Nr * Nr + Ni * Ni ) / ( eneL * eneR + EPSILON ) ); Loading Loading @@ -788,7 +792,7 @@ static void calc_poc( isd_rate = (float) isd_cnt_l / freq_8k; for ( i = 1; i < nsbd; i++ ) { #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX rfft_pha_buf[i * 2] = sqrtf( ( 1.0f + Pr[i] ) / 2.0f ); rfft_pha_buf[i * 2 + 1] = sqrtf( ( 1.0f - Pr[i] ) / 2.0f ) * sign( Pi[i] ); if ( isd_rate > STEREO_DMX_EVS_ISD_DIST_THRES_IPD ) Loading Loading @@ -898,7 +902,7 @@ static void calc_poc( isd_rate = (float) isd_cnt_l / freq_8k; for ( i = 1; i < nsbd; i++ ) { #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX rfft_pha_buf[i * 2] = sqrtf( ( 1.0f + Pr[i] ) / 2.0f ); rfft_pha_buf[i * 2 + 1] = sqrtf( ( 1.0f - Pr[i] ) / 2.0f ) * sign( Pi[i] ); if ( isd_rate > STEREO_DMX_EVS_ISD_DIST_THRES_IPD ) Loading Loading @@ -972,8 +976,8 @@ static void calc_poc( { energy += hPHA->p_curr_taps[n][i] * hPHA->p_curr_taps[n][i]; } #ifdef NONBE_FIX_947_STEREO_DMX_EVS_WODBL energy = (float) ( 1.0 / sqrtf( energy + EPSILON ) ); #ifdef NONBE_FIX_567_DOUBLE_STEREO_DMX energy = inv_sqrt( energy + EPSILON ); #else energy = (float) inv_sqrt( energy + EPSILON ); #endif Loading Loading @@ -2165,7 +2169,12 @@ ivas_error stereo_dmx_evs_init_encoder( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for STEREO_DMX_EVS_POC_DATA\n" ) ); } #ifdef BE_FIX_567_DOUBLE_STEREO_DMX hStereoDmxEVS->hPOC->shift_limit = NS2SA(input_Fs, STEREO_DMX_EVS_SHIFT_LIMIT ); #else hStereoDmxEVS->hPOC->shift_limit = (int16_t) ( STEREO_DMX_EVS_SHIFT_LIMIT * input_Fs / 1000 ); #endif for ( n = 0; n < CPE_CHANNELS; n++ ) { hStereoDmxEVS->hPOC->peakQ[n] = 0.0f; Loading