Loading lib_com/ivas_cnst.h +0 −2 Original line number Diff line number Diff line Loading @@ -1745,7 +1745,6 @@ typedef enum #define IVAS_LIMITER_THRESHOLD 32729 /* -0.01 dBFS */ #define IVAS_LIMITER_ATTACK_SECONDS 0.005f #ifdef ENHANCED_STEREO_DMX /*----------------------------------------------------------------------------------* * Stereo downmix EVS constants *----------------------------------------------------------------------------------*/ Loading Loading @@ -1779,7 +1778,6 @@ typedef enum STEREO_DMX_EVS_PRC_PHA, } STEREO_DMX_EVS_PRC; #endif #endif /* clang-format on */ Loading lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -152,7 +152,6 @@ #endif #define ENHANCED_STEREO_DMX /* Orange : Contribution 48 - Enhanced stereo downmix. */ #define BINAURAL_AUDIO_CMDLINE /* issue 491: Implement Commandline-Option for Binaural Audio */ #define FIX_570_TCX_LPC_WRITE /* FhG: fix issue 570: LPC bitstream writer in TCX */ Loading lib_enc/ivas_stat_enc.h +0 −4 Original line number Diff line number Diff line Loading @@ -998,7 +998,6 @@ typedef struct stereo_dmx_evs_phase_only_correlation_structure } STEREO_DMX_EVS_POC_DATA, *STEREO_DMX_EVS_POC_HANDLE; #ifdef ENHANCED_STEREO_DMX typedef struct stereo_dmx_evs_correlation_filter_structure { int16_t init_frmCntr; Loading Loading @@ -1035,13 +1034,10 @@ typedef struct stereo_dmx_evs_correlation_filter_structure } STEREO_DMX_EVS_PHA_DATA, *STEREO_DMX_EVS_PHA_HANDLE; #endif typedef struct stereo_dmx_evs_enc_data_structure { STEREO_DMX_EVS_POC_HANDLE hPOC; #ifdef ENHANCED_STEREO_DMX STEREO_DMX_EVS_PHA_HANDLE hPHA; #endif float itd; Loading lib_enc/ivas_stereo_dmx_evs.c +0 −51 Original line number Diff line number Diff line Loading @@ -65,7 +65,6 @@ #define Q_BAND 0.25f #ifdef ENHANCED_STEREO_DMX #define STEREO_DMX_EVS_ISD_FORGETTING 0.95f #define STEREO_DMX_EVS_ISD_THRES_H 1.69f Loading Loading @@ -99,20 +98,14 @@ #define STEREO_DMX_EVS_TRNS_EGY_FORGETTING 0.75f #endif /*-----------------------------------------------------------------------* * Local function prototypes *-----------------------------------------------------------------------*/ static void estimate_itd_wnd_fft( const float *input, float *specr, float *speci, const float *rfft_coef, const float *wnd, const int16_t input_frame ); #ifdef ENHANCED_STEREO_DMX static void calc_poc( STEREO_DMX_EVS_POC_HANDLE hPOC, STEREO_DMX_EVS_PHA_HANDLE hPHA, const float wnd[], const float rfft_coef[], const float specLr[], const float specLi[], const float specRr[], const float specRi[], const int16_t input_frame ); static ivas_error estimate_itd( float *corr, STEREO_DMX_EVS_POC_HANDLE hPOC, STEREO_DMX_EVS_PHA_HANDLE hPHA, const float srcL[], const float srcR[], float itd[], const int16_t input_frame ); #else static void calc_poc( STEREO_DMX_EVS_POC_HANDLE hPOC, const float wnd[], const float rfft_coef[], const float specLr[], const float specLi[], const float specRr[], const float specRi[], const int16_t input_frame ); static ivas_error estimate_itd( float *corr, STEREO_DMX_EVS_POC_HANDLE hPOC, const float srcL[], const float srcR[], float itd[], const int16_t input_frame ); #endif static void weighted_ave( const float src1[], const float src2[], float dst[], const float gain, const float old_gain, const int16_t input_frame, const float wnd[] ); static void adapt_gain( const float src[], float dst[], const float gain, const float old_gain, const int16_t input_frame, const float wnd[] ); static void create_M_signal( const float srcL[], const float srcR[], float dmx[], const float w_curr, const int16_t input_frame, const float wnd[], float *w_prev, float *dmx_energy, float *src_energy ); Loading Loading @@ -182,9 +175,7 @@ void estimate_itd_wnd_fft( static void calc_poc( STEREO_DMX_EVS_POC_HANDLE hPOC, /* i/o: phase only correlation structure */ #ifdef ENHANCED_STEREO_DMX STEREO_DMX_EVS_PHA_HANDLE hPHA, /* i/o : correlation filter structure */ #endif const float wnd[], /* i : window coef */ const float rfft_coef[], /* i : RFFT coef */ const float specLr[], /* i : Lch real-part spectra */ Loading @@ -211,13 +202,11 @@ static void calc_poc( int16_t cos_step, cos_max; float eps_cos, eps_sin, EPS; #ifdef ENHANCED_STEREO_DMX int16_t isd_cnt_h, isd_cnt_l, ild_cnt, n, freq_8k, freq_ipd_max, nsbd, input_frame_pha; float Nr, Ni, Dr, Di, tPr, tPi, Pn, energy, isd_rate; float eneL, eneR, IPDr, IPDi, tIPDr, tIPDi, ICCr; float *Pr, *Pi, *ipd_ff, *p_curr_taps; float rfft_pha_buf[L_FRAME48k], tEr[STEREO_DMX_EVS_NB_SUBBAND_MAX], tEl[STEREO_DMX_EVS_NB_SUBBAND_MAX]; #endif /* Initialization */ iN = 1.0f / (float) input_frame; Loading @@ -226,12 +215,10 @@ static void calc_poc( n0 = input_frame / 2; itdLR = hPOC->itdLR; #ifdef ENHANCED_STEREO_DMX Pr = hPHA->Pr; Pi = hPHA->Pi; nsbd = n0 / STEREO_DMX_EVS_SUBBAND_SIZE; input_frame_pha = input_frame / STEREO_DMX_EVS_SUBBAND_SIZE; #endif igamma = STEREO_DMX_EVS_POC_GAMMA * iN; gamma = 1.0f - igamma; Loading Loading @@ -394,7 +381,6 @@ static void calc_poc( } specPOr[n0] = sign( specLr[n0] * specRr[n0] ) * wnd[i * step + bias] * gamma; #ifdef ENHANCED_STEREO_DMX hPHA->init_frmCntr--; if ( hPHA->init_frmCntr < 0 ) Loading Loading @@ -678,7 +664,6 @@ static void calc_poc( } } #endif rfft_buf[0] = specPOr[0]; rfft_buf[1] = specPOr[n0]; Loading Loading @@ -892,9 +877,7 @@ static float find_poc_peak( static ivas_error estimate_itd( float *corr, /* o : correlation */ STEREO_DMX_EVS_POC_HANDLE hPOC, /* i/o: phase only correlation structure */ #ifdef ENHANCED_STEREO_DMX STEREO_DMX_EVS_PHA_HANDLE hPHA, /* i/o : correlation filter structure */ #endif const float srcL[], /* i : Lch input signal */ const float srcR[], /* i : Rch input signal */ float itd[], /* o : estimated itd */ Loading Loading @@ -943,11 +926,7 @@ static ivas_error estimate_itd( estimate_itd_wnd_fft( srcL, specLr, specLi, rfft_coef, hPOC->wnd, input_frame ); estimate_itd_wnd_fft( srcR, specRr, specRi, rfft_coef, hPOC->wnd, input_frame ); #ifdef ENHANCED_STEREO_DMX calc_poc( hPOC, hPHA, hPOC->wnd, rfft_coef, specLr, specLi, specRr, specRi, input_frame ); #else calc_poc( hPOC, hPOC->wnd, rfft_coef, specLr, specLi, specRr, specRi, input_frame ); #endif *corr = find_poc_peak( hPOC, itd, input_frame, STEREO_DMX_EVS_POC_W_FORGETTING ); return error; Loading Loading @@ -1149,7 +1128,6 @@ void stereo_dmx_evs_enc( float dmx_weight, corr; float data_f[CPE_CHANNELS][L_FRAME48k]; #ifdef ENHANCED_STEREO_DMX int16_t k, m, pha_len, fad_len; float mem_prev[STEREO_DMX_EVS_FAD_LEN_MAX], data_mem[STEREO_DMX_EVS_DATA_LEN_MAX]; float *p_data_mem, *p_prev_taps, *p_curr_taps, *fad_g, *p_data; Loading @@ -1157,9 +1135,6 @@ void stereo_dmx_evs_enc( STEREO_DMX_EVS_PRC curr_prc; int16_t input_subframe, is_transient; float *p_sub_frame, subframe_energy[STEREO_DMX_EVS_NB_SBFRM]; #else float dmx_data[L_FRAME48k]; #endif int16_t input_frame; Loading @@ -1183,7 +1158,6 @@ void stereo_dmx_evs_enc( set_f( data_f[1] + n_samples, 0.0f, input_frame - n_samples ); } #ifdef ENHANCED_STEREO_DMX input_subframe = n_samples / STEREO_DMX_EVS_NB_SBFRM; is_transient = 0; Loading Loading @@ -1390,25 +1364,6 @@ void stereo_dmx_evs_enc( mvr2s( p_dmx_data, data, n_samples ); #else estimate_itd( &corr, hStereoDmxEVS->hPOC, data_f[0], data_f[1], &hStereoDmxEVS->itd, input_frame ); if ( hStereoDmxEVS->itd ) { dmx_weight = ( ( hStereoDmxEVS->itd > 0 ) ? ( -1 ) : 1 ) * 0.5f * corr + 0.5f; } else { dmx_weight = 0.5f; } create_M_signal( data_f[0], data_f[1], dmx_data, dmx_weight, input_frame, hStereoDmxEVS->s_wnd, hStereoDmxEVS->dmx_weight, hStereoDmxEVS->pre_dmx_energy, hStereoDmxEVS->aux_dmx_energy ); mvr2s( dmx_data, data, n_samples ); #endif return; } Loading @@ -1428,11 +1383,9 @@ ivas_error stereo_dmx_evs_init_encoder( STEREO_DMX_EVS_ENC_HANDLE hStereoDmxEVS; int16_t n, input_frame; #ifdef ENHANCED_STEREO_DMX int16_t m, len, pha_len, fad_len, fad_len2, trans_len, itrh, rfft_ipd_coef_step, n0, input_frame_pha; float *win, *fad_g, fad_r, tmp_r, a_min, a_max, a_step, *ipd_ff; const float *p_ipd_w; #endif input_frame = (int16_t) ( input_Fs / FRAMES_PER_SEC ); Loading Loading @@ -1523,7 +1476,6 @@ ivas_error stereo_dmx_evs_init_encoder( hStereoDmxEVS->hPOC->confidence = 0.0f; #ifdef ENHANCED_STEREO_DMX hStereoDmxEVS->hPHA = NULL; if ( ( hStereoDmxEVS->hPHA = (STEREO_DMX_EVS_PHA_HANDLE) malloc( sizeof( STEREO_DMX_EVS_PHA_DATA ) ) ) == NULL ) Loading Loading @@ -1671,7 +1623,6 @@ ivas_error stereo_dmx_evs_init_encoder( hStereoDmxEVS->hPHA->trns_aux_energy[n] = 0.0f; } #endif *hStereoDmxEVS_out = hStereoDmxEVS; Loading Loading @@ -1700,13 +1651,11 @@ void stereo_dmx_evs_close_encoder( ( *hStereoDmxEVS )->hPOC = NULL; } #ifdef ENHANCED_STEREO_DMX if ( ( *hStereoDmxEVS )->hPHA != NULL ) { free( ( *hStereoDmxEVS )->hPHA ); ( *hStereoDmxEVS )->hPHA = NULL; } #endif free( ( *hStereoDmxEVS ) ); ( *hStereoDmxEVS ) = NULL; Loading Loading
lib_com/ivas_cnst.h +0 −2 Original line number Diff line number Diff line Loading @@ -1745,7 +1745,6 @@ typedef enum #define IVAS_LIMITER_THRESHOLD 32729 /* -0.01 dBFS */ #define IVAS_LIMITER_ATTACK_SECONDS 0.005f #ifdef ENHANCED_STEREO_DMX /*----------------------------------------------------------------------------------* * Stereo downmix EVS constants *----------------------------------------------------------------------------------*/ Loading Loading @@ -1779,7 +1778,6 @@ typedef enum STEREO_DMX_EVS_PRC_PHA, } STEREO_DMX_EVS_PRC; #endif #endif /* clang-format on */ Loading
lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -152,7 +152,6 @@ #endif #define ENHANCED_STEREO_DMX /* Orange : Contribution 48 - Enhanced stereo downmix. */ #define BINAURAL_AUDIO_CMDLINE /* issue 491: Implement Commandline-Option for Binaural Audio */ #define FIX_570_TCX_LPC_WRITE /* FhG: fix issue 570: LPC bitstream writer in TCX */ Loading
lib_enc/ivas_stat_enc.h +0 −4 Original line number Diff line number Diff line Loading @@ -998,7 +998,6 @@ typedef struct stereo_dmx_evs_phase_only_correlation_structure } STEREO_DMX_EVS_POC_DATA, *STEREO_DMX_EVS_POC_HANDLE; #ifdef ENHANCED_STEREO_DMX typedef struct stereo_dmx_evs_correlation_filter_structure { int16_t init_frmCntr; Loading Loading @@ -1035,13 +1034,10 @@ typedef struct stereo_dmx_evs_correlation_filter_structure } STEREO_DMX_EVS_PHA_DATA, *STEREO_DMX_EVS_PHA_HANDLE; #endif typedef struct stereo_dmx_evs_enc_data_structure { STEREO_DMX_EVS_POC_HANDLE hPOC; #ifdef ENHANCED_STEREO_DMX STEREO_DMX_EVS_PHA_HANDLE hPHA; #endif float itd; Loading
lib_enc/ivas_stereo_dmx_evs.c +0 −51 Original line number Diff line number Diff line Loading @@ -65,7 +65,6 @@ #define Q_BAND 0.25f #ifdef ENHANCED_STEREO_DMX #define STEREO_DMX_EVS_ISD_FORGETTING 0.95f #define STEREO_DMX_EVS_ISD_THRES_H 1.69f Loading Loading @@ -99,20 +98,14 @@ #define STEREO_DMX_EVS_TRNS_EGY_FORGETTING 0.75f #endif /*-----------------------------------------------------------------------* * Local function prototypes *-----------------------------------------------------------------------*/ static void estimate_itd_wnd_fft( const float *input, float *specr, float *speci, const float *rfft_coef, const float *wnd, const int16_t input_frame ); #ifdef ENHANCED_STEREO_DMX static void calc_poc( STEREO_DMX_EVS_POC_HANDLE hPOC, STEREO_DMX_EVS_PHA_HANDLE hPHA, const float wnd[], const float rfft_coef[], const float specLr[], const float specLi[], const float specRr[], const float specRi[], const int16_t input_frame ); static ivas_error estimate_itd( float *corr, STEREO_DMX_EVS_POC_HANDLE hPOC, STEREO_DMX_EVS_PHA_HANDLE hPHA, const float srcL[], const float srcR[], float itd[], const int16_t input_frame ); #else static void calc_poc( STEREO_DMX_EVS_POC_HANDLE hPOC, const float wnd[], const float rfft_coef[], const float specLr[], const float specLi[], const float specRr[], const float specRi[], const int16_t input_frame ); static ivas_error estimate_itd( float *corr, STEREO_DMX_EVS_POC_HANDLE hPOC, const float srcL[], const float srcR[], float itd[], const int16_t input_frame ); #endif static void weighted_ave( const float src1[], const float src2[], float dst[], const float gain, const float old_gain, const int16_t input_frame, const float wnd[] ); static void adapt_gain( const float src[], float dst[], const float gain, const float old_gain, const int16_t input_frame, const float wnd[] ); static void create_M_signal( const float srcL[], const float srcR[], float dmx[], const float w_curr, const int16_t input_frame, const float wnd[], float *w_prev, float *dmx_energy, float *src_energy ); Loading Loading @@ -182,9 +175,7 @@ void estimate_itd_wnd_fft( static void calc_poc( STEREO_DMX_EVS_POC_HANDLE hPOC, /* i/o: phase only correlation structure */ #ifdef ENHANCED_STEREO_DMX STEREO_DMX_EVS_PHA_HANDLE hPHA, /* i/o : correlation filter structure */ #endif const float wnd[], /* i : window coef */ const float rfft_coef[], /* i : RFFT coef */ const float specLr[], /* i : Lch real-part spectra */ Loading @@ -211,13 +202,11 @@ static void calc_poc( int16_t cos_step, cos_max; float eps_cos, eps_sin, EPS; #ifdef ENHANCED_STEREO_DMX int16_t isd_cnt_h, isd_cnt_l, ild_cnt, n, freq_8k, freq_ipd_max, nsbd, input_frame_pha; float Nr, Ni, Dr, Di, tPr, tPi, Pn, energy, isd_rate; float eneL, eneR, IPDr, IPDi, tIPDr, tIPDi, ICCr; float *Pr, *Pi, *ipd_ff, *p_curr_taps; float rfft_pha_buf[L_FRAME48k], tEr[STEREO_DMX_EVS_NB_SUBBAND_MAX], tEl[STEREO_DMX_EVS_NB_SUBBAND_MAX]; #endif /* Initialization */ iN = 1.0f / (float) input_frame; Loading @@ -226,12 +215,10 @@ static void calc_poc( n0 = input_frame / 2; itdLR = hPOC->itdLR; #ifdef ENHANCED_STEREO_DMX Pr = hPHA->Pr; Pi = hPHA->Pi; nsbd = n0 / STEREO_DMX_EVS_SUBBAND_SIZE; input_frame_pha = input_frame / STEREO_DMX_EVS_SUBBAND_SIZE; #endif igamma = STEREO_DMX_EVS_POC_GAMMA * iN; gamma = 1.0f - igamma; Loading Loading @@ -394,7 +381,6 @@ static void calc_poc( } specPOr[n0] = sign( specLr[n0] * specRr[n0] ) * wnd[i * step + bias] * gamma; #ifdef ENHANCED_STEREO_DMX hPHA->init_frmCntr--; if ( hPHA->init_frmCntr < 0 ) Loading Loading @@ -678,7 +664,6 @@ static void calc_poc( } } #endif rfft_buf[0] = specPOr[0]; rfft_buf[1] = specPOr[n0]; Loading Loading @@ -892,9 +877,7 @@ static float find_poc_peak( static ivas_error estimate_itd( float *corr, /* o : correlation */ STEREO_DMX_EVS_POC_HANDLE hPOC, /* i/o: phase only correlation structure */ #ifdef ENHANCED_STEREO_DMX STEREO_DMX_EVS_PHA_HANDLE hPHA, /* i/o : correlation filter structure */ #endif const float srcL[], /* i : Lch input signal */ const float srcR[], /* i : Rch input signal */ float itd[], /* o : estimated itd */ Loading Loading @@ -943,11 +926,7 @@ static ivas_error estimate_itd( estimate_itd_wnd_fft( srcL, specLr, specLi, rfft_coef, hPOC->wnd, input_frame ); estimate_itd_wnd_fft( srcR, specRr, specRi, rfft_coef, hPOC->wnd, input_frame ); #ifdef ENHANCED_STEREO_DMX calc_poc( hPOC, hPHA, hPOC->wnd, rfft_coef, specLr, specLi, specRr, specRi, input_frame ); #else calc_poc( hPOC, hPOC->wnd, rfft_coef, specLr, specLi, specRr, specRi, input_frame ); #endif *corr = find_poc_peak( hPOC, itd, input_frame, STEREO_DMX_EVS_POC_W_FORGETTING ); return error; Loading Loading @@ -1149,7 +1128,6 @@ void stereo_dmx_evs_enc( float dmx_weight, corr; float data_f[CPE_CHANNELS][L_FRAME48k]; #ifdef ENHANCED_STEREO_DMX int16_t k, m, pha_len, fad_len; float mem_prev[STEREO_DMX_EVS_FAD_LEN_MAX], data_mem[STEREO_DMX_EVS_DATA_LEN_MAX]; float *p_data_mem, *p_prev_taps, *p_curr_taps, *fad_g, *p_data; Loading @@ -1157,9 +1135,6 @@ void stereo_dmx_evs_enc( STEREO_DMX_EVS_PRC curr_prc; int16_t input_subframe, is_transient; float *p_sub_frame, subframe_energy[STEREO_DMX_EVS_NB_SBFRM]; #else float dmx_data[L_FRAME48k]; #endif int16_t input_frame; Loading @@ -1183,7 +1158,6 @@ void stereo_dmx_evs_enc( set_f( data_f[1] + n_samples, 0.0f, input_frame - n_samples ); } #ifdef ENHANCED_STEREO_DMX input_subframe = n_samples / STEREO_DMX_EVS_NB_SBFRM; is_transient = 0; Loading Loading @@ -1390,25 +1364,6 @@ void stereo_dmx_evs_enc( mvr2s( p_dmx_data, data, n_samples ); #else estimate_itd( &corr, hStereoDmxEVS->hPOC, data_f[0], data_f[1], &hStereoDmxEVS->itd, input_frame ); if ( hStereoDmxEVS->itd ) { dmx_weight = ( ( hStereoDmxEVS->itd > 0 ) ? ( -1 ) : 1 ) * 0.5f * corr + 0.5f; } else { dmx_weight = 0.5f; } create_M_signal( data_f[0], data_f[1], dmx_data, dmx_weight, input_frame, hStereoDmxEVS->s_wnd, hStereoDmxEVS->dmx_weight, hStereoDmxEVS->pre_dmx_energy, hStereoDmxEVS->aux_dmx_energy ); mvr2s( dmx_data, data, n_samples ); #endif return; } Loading @@ -1428,11 +1383,9 @@ ivas_error stereo_dmx_evs_init_encoder( STEREO_DMX_EVS_ENC_HANDLE hStereoDmxEVS; int16_t n, input_frame; #ifdef ENHANCED_STEREO_DMX int16_t m, len, pha_len, fad_len, fad_len2, trans_len, itrh, rfft_ipd_coef_step, n0, input_frame_pha; float *win, *fad_g, fad_r, tmp_r, a_min, a_max, a_step, *ipd_ff; const float *p_ipd_w; #endif input_frame = (int16_t) ( input_Fs / FRAMES_PER_SEC ); Loading Loading @@ -1523,7 +1476,6 @@ ivas_error stereo_dmx_evs_init_encoder( hStereoDmxEVS->hPOC->confidence = 0.0f; #ifdef ENHANCED_STEREO_DMX hStereoDmxEVS->hPHA = NULL; if ( ( hStereoDmxEVS->hPHA = (STEREO_DMX_EVS_PHA_HANDLE) malloc( sizeof( STEREO_DMX_EVS_PHA_DATA ) ) ) == NULL ) Loading Loading @@ -1671,7 +1623,6 @@ ivas_error stereo_dmx_evs_init_encoder( hStereoDmxEVS->hPHA->trns_aux_energy[n] = 0.0f; } #endif *hStereoDmxEVS_out = hStereoDmxEVS; Loading Loading @@ -1700,13 +1651,11 @@ void stereo_dmx_evs_close_encoder( ( *hStereoDmxEVS )->hPOC = NULL; } #ifdef ENHANCED_STEREO_DMX if ( ( *hStereoDmxEVS )->hPHA != NULL ) { free( ( *hStereoDmxEVS )->hPHA ); ( *hStereoDmxEVS )->hPHA = NULL; } #endif free( ( *hStereoDmxEVS ) ); ( *hStereoDmxEVS ) = NULL; Loading