Commit d2976d42 authored by lefort's avatar lefort
Browse files

Merge branch 'orange/contribution-48-enhanced-stereo-downmix' into 'main'

[non-BE] Orange/contribution 48 enhanced stereo downmix

See merge request !700
parents e94f0289 96f4f71b
Loading
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -1784,6 +1784,41 @@ 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
 *----------------------------------------------------------------------------------*/

#define STEREO_DMX_EVS_PHA_LEN_16 48
#define STEREO_DMX_EVS_FAD_LEN_16 160
#define STEREO_DMX_EVS_PHA_LEN_32 96
#define STEREO_DMX_EVS_FAD_LEN_32 320
#define STEREO_DMX_EVS_PHA_LEN_48 96
#define STEREO_DMX_EVS_FAD_LEN_48 480

#define STEREO_DMX_EVS_SUBBAND_SIZE 2
#define STEREO_DMX_EVS_NB_SUBBAND_MAX (L_FRAME48k / (2 * STEREO_DMX_EVS_SUBBAND_SIZE))

#define STEREO_DMX_EVS_PHA_LEN_MAX 96 /* Max of PHA_LEN */
#define STEREO_DMX_EVS_FAD_LEN_MAX 480 /* Max of FAD_LEN */

#define STEREO_DMX_EVS_DATA_LEN_MAX (STEREO_DMX_EVS_PHA_LEN_MAX + L_FRAME48k)

typedef enum
{
    STEREO_DMX_EVS_PHA_IPD,
    STEREO_DMX_EVS_PHA_IPD2,
    STEREO_DMX_EVS_NO_PHA

} STEREO_DMX_EVS_PHA;

typedef enum
{
    STEREO_DMX_EVS_PRC_POC,
    STEREO_DMX_EVS_PRC_PHA,

} STEREO_DMX_EVS_PRC;
#endif

#endif
/* clang-format on */
+2 −0
Original line number Diff line number Diff line
@@ -234,6 +234,8 @@
#define FIX_TODO_NON_DIEGETIC_PAN_NOT_IMPLELENTED_IN_RENDERER /* ..\apps\renderer.c(240):  .... (todo: implementation)",*/
#define REMOVE_OBS_CODE                                 /* FhG: Remove unnecessary assignement after LFE cleanup (Issue #451)*/

#define ENHANCED_STEREO_DMX                             /* Orange : Contribution 48 - Enhanced stereo downmix. */

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

+41 −0
Original line number Diff line number Diff line
@@ -1009,9 +1009,50 @@ 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;
    float isd_rate_s;
    float iccr_s;
    float ipd_ff[STEREO_DMX_EVS_NB_SUBBAND_MAX];
    float Pr[STEREO_DMX_EVS_NB_SUBBAND_MAX];
    float Pi[STEREO_DMX_EVS_NB_SUBBAND_MAX];
    float rfft_ipd_coef[L_FRAME48k / 2 + 1];

    int16_t pha_len;
    int16_t fad_len;

    float win[STEREO_DMX_EVS_PHA_LEN_MAX];
    float fad_g[STEREO_DMX_EVS_FAD_LEN_MAX];
    float *p_prev_taps[CPE_CHANNELS], prev_taps[CPE_CHANNELS][STEREO_DMX_EVS_PHA_LEN_MAX];
    float *p_curr_taps[CPE_CHANNELS], curr_taps[CPE_CHANNELS][STEREO_DMX_EVS_PHA_LEN_MAX];

    float data_mem[CPE_CHANNELS][STEREO_DMX_EVS_PHA_LEN_MAX];

    STEREO_DMX_EVS_PHA curr_pha;
    STEREO_DMX_EVS_PHA prev_pha;
    int16_t pha_hys_cnt;

    int16_t prc_thres;
    STEREO_DMX_EVS_PRC curr_prc;
    STEREO_DMX_EVS_PRC prev_prc;
    int16_t prc_hys_cnt;
    float fad_g_prc[L_FRAME48k];
    int16_t fad_len_prc;

    float trns_aux_energy[CPE_CHANNELS];
    float crst_fctr;

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

+749 −13

File changed.

Preview size limit exceeded, changes collapsed.