Commit ff5b6f37 authored by fotopoulou's avatar fotopoulou
Browse files

Merge branch 'dft_stereo_improvement_for_very_large_itds' into 'main'

[non-BE] Improvement for DFT Stereo for cases with large ITDs under HYBRID_ITD_MAX

See merge request !632
parents cc3db8fc 6bb8ff81
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1559,6 +1559,10 @@ int16_t read_BS_adapt_GR_sg(
void stereo_dft_hybrid_ITD_flag(
    STEREO_DFT_CONFIG_DATA_HANDLE hConfig,                      /* o  : DFT stereo configuration                */
    const int32_t input_Fs                                      /* i  : CPE element sampling rate               */
#ifdef HYBRID_ITD_MAX
    ,
    const int16_t hybrid_itd_max                                /* i  : flag for hybrid ITD for very large ITDs */
#endif
);

void stereo_dft_enc_compute_itd(
+3 −0
Original line number Diff line number Diff line
@@ -218,6 +218,9 @@

#define FIX_DIRAC_LS_SYNTHESIS_CONFIG_479               /* FhG: fix for issue 479, broken LS output with DirAC at high BRs */

#define HYBRID_ITD_MAX                                 /* FhG: Improvement for DFT-stereo for cases with large ITDs */


/* ################## End DEVELOPMENT switches ######################### */
/* clang-format on */

+6 −1
Original line number Diff line number Diff line
@@ -333,7 +333,12 @@ ivas_error ivas_cpe_enc(

    if ( hCPE->element_mode == IVAS_CPE_DFT )
    {
        stereo_dft_hybrid_ITD_flag( hCPE->hStereoDft->hConfig, input_Fs );
        stereo_dft_hybrid_ITD_flag( hCPE->hStereoDft->hConfig, input_Fs
#ifdef HYBRID_ITD_MAX
                                    ,
                                    hCPE->hStereoDft->hItd->hybrid_itd_max
#endif
        );

        /* Time Domain ITD compensation using extrapolation */
#ifdef DEBUG_MODE_DFT
+4 −0
Original line number Diff line number Diff line
@@ -81,6 +81,10 @@ typedef struct stereo_itd_data_struct
    int16_t prev_itd1;
    int16_t prev_itd2;

#ifdef HYBRID_ITD_MAX
    /*flag for hybrid ITD for very large ITDs*/
    int16_t hybrid_itd_max;
#endif
} ITD_DATA, *ITD_DATA_HANDLE;

typedef struct dft_ana_struct
+11 −1
Original line number Diff line number Diff line
@@ -294,9 +294,16 @@ ivas_error stereo_dft_enc_create(
    hStereoDft_loc->hConfig->force_mono_transmission = 0;

    stereo_dft_config( hStereoDft_loc->hConfig, IVAS_24k4, &tmpS, &tmpS );
    stereo_dft_hybrid_ITD_flag( hStereoDft_loc->hConfig, input_Fs );

    stereo_dft_enc_open( hStereoDft_loc, input_Fs, max_bwidth );

    stereo_dft_hybrid_ITD_flag( hStereoDft_loc->hConfig, input_Fs
#ifdef HYBRID_ITD_MAX
                                ,
                                hStereoDft_loc->hItd->hybrid_itd_max
#endif
    );

    *hStereoDft = hStereoDft_loc;

    return IVAS_ERR_OK;
@@ -560,6 +567,9 @@ void stereo_enc_itd_init(
    hItd->prev_itd1 = 0;
    hItd->prev_itd2 = 0;

#ifdef HYBRID_ITD_MAX
    hItd->hybrid_itd_max = 0;
#endif
    return;
}

Loading