Commit 08558c6b authored by multrus's avatar multrus
Browse files

[cleanup] accept ENHANCED_STEREO_DMX

parent 9d74986d
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -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
 *----------------------------------------------------------------------------------*/
@@ -1779,7 +1778,6 @@ typedef enum
    STEREO_DMX_EVS_PRC_PHA,

} STEREO_DMX_EVS_PRC;
#endif

#endif
/* clang-format on */
+0 −1
Original line number Diff line number Diff line
@@ -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 */
+0 −4
Original line number Diff line number Diff line
@@ -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;
@@ -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;

+0 −51
Original line number Diff line number Diff line
@@ -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
@@ -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 );
@@ -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            */
@@ -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;
@@ -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;
@@ -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 )
@@ -678,7 +664,6 @@ static void calc_poc(
        }
    }

#endif

    rfft_buf[0] = specPOr[0];
    rfft_buf[1] = specPOr[n0];
@@ -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                    */
@@ -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;
@@ -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;
@@ -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;

@@ -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;
@@ -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;
}
@@ -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 );

@@ -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 )
@@ -1671,7 +1623,6 @@ ivas_error stereo_dmx_evs_init_encoder(
        hStereoDmxEVS->hPHA->trns_aux_energy[n] = 0.0f;
    }

#endif

    *hStereoDmxEVS_out = hStereoDmxEVS;

@@ -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;