Loading Workspace_msvc/lib_rend.vcxproj +2 −0 Original line number Diff line number Diff line Loading @@ -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" /> Loading @@ -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> Loading lib_com/common_api_types.h +10 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,9 @@ #define RENDERER_HEAD_POSITIONS_PER_FRAME 4 #ifdef EARLY_REFLECTIONS #define QC_ABS_COEFF 6 #endif /*----------------------------------------------------------------------------------* * Common API structures Loading Loading @@ -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 Loading lib_com/ivas_cnst.h +42 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading Loading @@ -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 Loading Loading @@ -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 *----------------------------------------------------------------------------------*/ Loading lib_com/ivas_error.h +3 −0 Original line number Diff line number Diff line Loading @@ -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 Loading lib_com/ivas_fb_mixer.c +38 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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 } } Loading Loading @@ -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 Loading
Workspace_msvc/lib_rend.vcxproj +2 −0 Original line number Diff line number Diff line Loading @@ -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" /> Loading @@ -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> Loading
lib_com/common_api_types.h +10 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,9 @@ #define RENDERER_HEAD_POSITIONS_PER_FRAME 4 #ifdef EARLY_REFLECTIONS #define QC_ABS_COEFF 6 #endif /*----------------------------------------------------------------------------------* * Common API structures Loading Loading @@ -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 Loading
lib_com/ivas_cnst.h +42 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading Loading @@ -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 Loading Loading @@ -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 *----------------------------------------------------------------------------------*/ Loading
lib_com/ivas_error.h +3 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
lib_com/ivas_fb_mixer.c +38 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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 } } Loading Loading @@ -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