Commit d434c288 authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

Merge branch 'main' into new-osba-paseline_pc

parents d3159334 15e51883
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -239,6 +239,7 @@
    <ClCompile Include="..\lib_rend\ivas_omasa_ana.c" />
    <ClCompile Include="..\lib_rend\ivas_orient_trk.c" />
    <ClCompile Include="..\lib_rend\ivas_output_init.c" />
	<ClCompile Include="..\lib_rend\ivas_reflections.c" />
    <ClCompile Include="..\lib_rend\ivas_render_config.c" />
    <ClCompile Include="..\lib_rend\ivas_reverb.c" />
    <ClCompile Include="..\lib_rend\ivas_reverb_delay_line.c" />
@@ -251,6 +252,7 @@
    <ClCompile Include="..\lib_rend\ivas_rom_binaural_crend_head.c" />
    <ClCompile Include="..\lib_rend\ivas_rotation.c" />
    <ClCompile Include="..\lib_rend\ivas_rom_rend.c" />
	<ClCompile Include="..\lib_rend\ivas_shoebox.c" />
    <ClCompile Include="..\lib_rend\lib_rend.c" />
  </ItemGroup>
  <ItemGroup>
+10 −0
Original line number Diff line number Diff line
@@ -52,6 +52,9 @@

#define RENDERER_HEAD_POSITIONS_PER_FRAME 4

#ifdef EARLY_REFLECTIONS
#define QC_ABS_COEFF 6
#endif

/*----------------------------------------------------------------------------------*
 * Common API structures
@@ -184,6 +187,13 @@ typedef struct _IVAS_ROOM_ACOUSTICS_CONFIG
    float pAcoustic_dsr[IVAS_CLDFB_NO_CHANNELS_MAX];  /*  - The room's Diffuse to Source Ratio per center frequency */
    float acousticPreDelay;                           /* Time elapsed between input signal and late reverberation start, float, range [0.001..10] */
    float inputPreDelay;                              /* Offset in seconds from where DSR is computed in the RIR (0 = at source), float, range [0.001..10] */
#ifdef EARLY_REFLECTIONS
    int16_t use_er;               /* ER activation flag */
    int32_t lowComplexity;        /* Low complexity ER flag */
    IVAS_VECTOR3 dimensions;      /* Room dimensions [m] */
    float AbsCoeff[QC_ABS_COEFF]; /* Absorption coeffs */
    IVAS_VECTOR3 ListenerOrigin;  /* Listener origin */
#endif
} IVAS_ROOM_ACOUSTICS_CONFIG_DATA;

#ifdef SPLIT_REND_WITH_HEAD_ROT
+42 −0
Original line number Diff line number Diff line
@@ -1032,6 +1032,13 @@ typedef enum
#define DIRAC_SLOT_NS                           1250000L                    /* time duration of a time slot, 1.25ms (==DELAY_RENERER_NS/MAX_PARAM_SPATIAL_SUBFRAMES) */
#define DIRAC_SLOT_ENC_NS                       5000000L

#define DIRAC_MONO_THRESH_SILENCE				3e4f
#define DIRAC_MONO_NORM_FACTOR					1e13f
#define DIRAC_MONO_ONE_ON_NORM_FACTOR			(1.f / 1e13f)
#define DIRAC_MONO_MAX_THRESH					1e6f
#define DIRAC_MONO_MIN_THRESH					1e2f
#define DIRAC_MONO_FRAME_THRESH					15 /* 30ms */

typedef enum
{
    DIRAC_OPEN,                                 /* initialize to default value              */
@@ -1070,6 +1077,11 @@ typedef enum
#define IVAS_ACTIVEW_DM_F_SCALE_VLBR            0.25f
#define IVAS_SPAR_FOA_DFLT_FREQ_PER_CHAN        24000

#ifdef FIX_SBA_VANISHING_RESIDUAL
#define IVAS_SPAR_DYN_ACTIVEW_THRESH           (0.0039f)
#define IVAS_SPAR_SIDE_CH_DYN_ACTIVEW_THRESH   (32.0f)
#endif

#define MAX_QUANT_STRATS                        3
#define MAX_CODING_STRATS                       3
#define IVAS_NUM_PROB_MODELS                    4
@@ -1908,6 +1920,36 @@ typedef enum
#define IVAS_LIMITER_THRESHOLD                  32729           /* -0.01 dBFS */
#define IVAS_LIMITER_ATTACK_SECONDS             0.005f


#ifdef EARLY_REFLECTIONS
/*----------------------------------------------------------------------------------*
 * Early Reflection constants
 *----------------------------------------------------------------------------------*/
#define ER_ABS_COEFF                            6
#define ER_MAX_SOURCES                          25
#define ER_REF_ORDER                            1
#define ER_NUM_REF                              6

#define ER_AIR_COEFF                            (0.00137f)
#define ER_SOUND_SPEED                          (343.0f)
#define ER_MIN_WALL_DIST                        (0.1f)
#define ER_EUCLIDEAN_SCALE                      (1.29246971E-26f)

#define ER_DEFAULT_ROOM_L                       (3.0f)
#define ER_DEFAULT_ROOM_W                       (4.0f)
#define ER_DEFAULT_ROOM_H                       (5.0f)
#define ER_RADIUS                               (1.0f)
#define ER_LIST_ORIGIN_X                        (0.0f)
#define ER_LIST_ORIGIN_Y                        (0.0f)
#define ER_LIST_HEIGHT                          (1.6f)

#define ER_MIN_ROOM_DIMENSION                   (1.0f)
#define ER_MAX_ROOM_DIMENSION                   (999.0f)
#define ER_MIN_ABS_COEFF                        (0.0f)
#define ER_MAX_ABS_COEFF                        (1.0f)

#endif

/*----------------------------------------------------------------------------------*
 * Stereo downmix EVS constants
 *----------------------------------------------------------------------------------*/
+3 −0
Original line number Diff line number Diff line
@@ -138,6 +138,9 @@ typedef enum
#ifdef CONTROL_METADATA_REVERB
    IVAS_ERR_INVALID_RENDER_CONFIG,
    IVAS_ERR_ACOUSTIC_ENVIRONMENT_MISSING,
#ifdef EARLY_REFLECTIONS
    IVAS_ERR_INVALID_ER_PARAM,
#endif
#ifdef CONTROL_METADATA_DIRECTIVITY
    IVAS_ERR_DIRECTIVITY_PATTERN_ID_MISSING,
#endif
+38 −9
Original line number Diff line number Diff line
@@ -590,14 +590,22 @@ void ivas_fb_mixer_get_windowed_fr(
 *
 * FB Mixer cross fading
 *-----------------------------------------------------------------------------------------*/

static void ivas_fb_mixer_cross_fading(
#ifndef FIX_SBA_VANISHING_RESIDUAL
static
#endif
    void
    ivas_fb_mixer_cross_fading(
        IVAS_FB_MIXER_HANDLE hFbMixer,
        float **ppOut_pcm,
        float *pMdft_out_old,
        float *pMdft_out_new,
        const int16_t ch,
    const int16_t frame_len )
        const int16_t frame_len
#ifdef FIX_SBA_VANISHING_RESIDUAL
        ,
        const int16_t cf_offset
#endif
    )
{
    int16_t k, fade_start_offset, fade_end_offset;

@@ -608,17 +616,29 @@ static void ivas_fb_mixer_cross_fading(

        for ( k = 0; k < fade_start_offset; k++ )
        {
#ifdef FIX_SBA_VANISHING_RESIDUAL
            ppOut_pcm[ch][k] = pMdft_out_old[k + cf_offset];
#else
            ppOut_pcm[ch][k] = pMdft_out_old[k + frame_len];
#endif
        }

        for ( k = fade_start_offset; k < fade_end_offset; k++ )
        {
#ifdef FIX_SBA_VANISHING_RESIDUAL
            ppOut_pcm[ch][k] = pMdft_out_new[k + cf_offset] * hFbMixer->pFilterbank_cross_fade[k - fade_start_offset] + pMdft_out_old[k + cf_offset] * ( 1.0f - hFbMixer->pFilterbank_cross_fade[k - fade_start_offset] );
#else
            ppOut_pcm[ch][k] = pMdft_out_new[k + frame_len] * hFbMixer->pFilterbank_cross_fade[k - fade_start_offset] + pMdft_out_old[k + frame_len] * ( 1.0f - hFbMixer->pFilterbank_cross_fade[k - fade_start_offset] );
#endif
        }

        for ( k = fade_end_offset; k < frame_len; k++ )
        {
#ifdef FIX_SBA_VANISHING_RESIDUAL
            ppOut_pcm[ch][k] = pMdft_out_new[k + cf_offset];
#else
            ppOut_pcm[ch][k] = pMdft_out_new[k + frame_len];
#endif
        }
    }
    else
@@ -627,7 +647,11 @@ static void ivas_fb_mixer_cross_fading(

        for ( k = 0; k < frame_len; k++ )
        {
#ifdef FIX_SBA_VANISHING_RESIDUAL
            ppOut_pcm[ch][k] = pMdft_out_new[k + cf_offset];
#else
            ppOut_pcm[ch][k] = pMdft_out_new[k + frame_len];
#endif
        }
    }

@@ -717,7 +741,12 @@ void ivas_fb_mixer_process(
            ivas_imdft( pOut_fr_re, pOut_fr_im, pMdft_out[hist], frame_len );
        }

        ivas_fb_mixer_cross_fading( hFbMixer, ppOut_pcm, pMdft_out[0], pMdft_out[1], ch, frame_len );
        ivas_fb_mixer_cross_fading( hFbMixer, ppOut_pcm, pMdft_out[0], pMdft_out[1], ch, frame_len
#ifdef FIX_SBA_VANISHING_RESIDUAL
                                    ,
                                    frame_len
#endif
        );
    }

    return;
Loading