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 apps/decoder.c +78 −4 Original line number Diff line number Diff line Loading @@ -168,6 +168,13 @@ typedef struct #endif #endif #ifdef CONTROL_METADATA_REVERB uint16_t acousticEnvironmentId; #ifdef CONTROL_METADATA_DIRECTIVITY uint16_t directivityPatternId[IVAS_MAX_NUM_OBJECTS]; #endif #endif } DecArguments; Loading Loading @@ -464,7 +471,11 @@ int main( goto cleanup; } #endif if ( RenderConfigReader_read( renderConfigReader, &renderConfigSplit ) != IVAS_ERR_OK ) if ( RenderConfigReader_read( renderConfigReader, #ifdef CONTROL_METADATA_REVERB arg.renderConfigFilename, #endif &renderConfigSplit ) != IVAS_ERR_OK ) { fprintf( stderr, "Failed to read renderer configuration from file %s\n\n", arg.renderConfigFilename ); goto cleanup; Loading Loading @@ -700,12 +711,42 @@ int main( goto cleanup; } #ifdef CONTROL_METADATA_REVERB if ( RenderConfigReader_read( renderConfigReader, arg.renderConfigFilename, &renderConfig ) != IVAS_ERR_OK ) #else if ( RenderConfigReader_read( renderConfigReader, &renderConfig ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "Failed to read renderer configuration from file %s\n\n", arg.renderConfigFilename ); goto cleanup; } #ifdef CONTROL_METADATA_DIRECTIVITY if ( ( error = RenderConfigReader_getDirectivity( renderConfigReader, arg.directivityPatternId, renderConfig.directivity ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Failed to get directivity for objects: %d %d %d %d\n\n", arg.directivityPatternId[0], arg.directivityPatternId[1], arg.directivityPatternId[2], arg.directivityPatternId[3] ); goto cleanup; } #endif #ifdef CONTROL_METADATA_REVERB if ( arg.outputFormat == IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) { if ( ( error = RenderConfigReader_getAcousticEnvironment( renderConfigReader, arg.acousticEnvironmentId, &renderConfig.room_acoustics ) ) == IVAS_ERR_OK ) { if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK ) { fprintf( stderr, "Invalid reverberation configuration parameters\n\n" ); goto cleanup; } } else if ( error != IVAS_ERR_ACOUSTIC_ENVIRONMENT_MISSING ) { fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", arg.acousticEnvironmentId ); goto cleanup; } renderConfig.room_acoustics.override = true; } #endif if ( ( error = IVAS_DEC_FeedRenderConfig( hIvasDec, renderConfig ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_FeedRenderConfig failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); Loading Loading @@ -1071,7 +1112,15 @@ static bool parseCmdlIVAS_dec( #endif #endif #ifdef CONTROL_METADATA_REVERB arg->acousticEnvironmentId = 0; #ifdef CONTROL_METADATA_DIRECTIVITY for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; ++i ) { arg->directivityPatternId[i] = 0; } #endif #endif /*-----------------------------------------------------------------* * Initialization *-----------------------------------------------------------------*/ Loading Loading @@ -1442,8 +1491,27 @@ static bool parseCmdlIVAS_dec( fprintf( stdout, "Complexity levels 1 and 2 will be defined after characterisation - default to level 3 (full functionality).\n" ); } } #ifdef CONTROL_METADATA_REVERB else if ( strcmp( argv_to_upper, "-AEID" ) == 0 ) { ++i; arg->acousticEnvironmentId = (int16_t) atoi( argv[i++] ); } #ifdef CONTROL_METADATA_DIRECTIVITY else if ( strcmp( argv_to_upper, "-DPID" ) == 0 ) { ++i; int16_t tmp; tmp = 0; while ( is_number( argv[i + tmp] ) && tmp < IVAS_MAX_NUM_OBJECTS ) { arg->directivityPatternId[tmp] = (int16_t) atoi( argv[i + tmp] ); ++tmp; } i += tmp; } #endif #endif /*-----------------------------------------------------------------* * Option not recognized *-----------------------------------------------------------------*/ Loading Loading @@ -1628,6 +1696,12 @@ static void usage_dec( void ) fprintf( stdout, " Currently, all values default to level 3 (full functionality).\n" ); #endif fprintf( stdout, "-exof File : External orientation file for external orientation trajectory\n" ); #ifdef CONTROL_METADATA_DIRECTIVITY fprintf( stdout, "-dpid ID : Directivity pattern ID(s) (space-separated list of up to 4 numbers can be specified) for binaural output configuration\n" ); #endif #ifdef CONTROL_METADATA_REVERB fprintf( stdout, "-aeid ID : Acoustic environment ID (number >= 0) for BINAURAL_ROOM_REVERB output configuration\n" ); #endif #ifdef DEBUG_MODE_INFO #ifdef DEBUG_MODE_INFO_TWEAK fprintf( stdout, "-info <folder> : specify subfolder name for debug output\n" ); Loading apps/renderer.c +72 −0 Original line number Diff line number Diff line Loading @@ -181,6 +181,12 @@ typedef struct #ifdef FIX_488_SYNC_DELAY float syncMdDelay; #endif #ifdef CONTROL_METADATA_DIRECTIVITY uint16_t directivityPatternId[RENDERER_MAX_ISM_INPUTS]; #endif #ifdef CONTROL_METADATA_REVERB uint16_t acousticEnvironmentId; #endif } CmdlnArgs; typedef enum Loading Loading @@ -215,6 +221,12 @@ typedef enum #ifdef FIX_488_SYNC_DELAY CmdLnOptionId_syncMdDelay, #endif #ifdef CONTROL_METADATA_DIRECTIVITY CmdLnOptionId_directivityPatternId, #endif #ifdef CONTROL_METADATA_REVERB CmdLnOptionId_acousticEnvironmentId #endif } CmdLnOptionId; static const CmdLnParser_Option cliOptions[] = { Loading Loading @@ -370,6 +382,22 @@ static const CmdLnParser_Option cliOptions[] = { .description = "Metadata Synchronization Delay in ms, Default is 0. Quantized by 5ms subframes for TDRenderer (13ms -> 10ms -> 2subframes)", }, #endif #ifdef CONTROL_METADATA_DIRECTIVITY { .id = CmdLnOptionId_directivityPatternId, .match = "ism_directivity_pattern_id", .matchShort = "dpid", .description = "Directivity pattern ID(s) (space-separated list of up to 4 numbers can be specified) for binaural output configuration", }, #endif #ifdef CONTROL_METADATA_REVERB { .id = CmdLnOptionId_acousticEnvironmentId, .match = "acoustic_environment_id", .matchShort = "aeid", .description = "Acoustic environment ID (number >= 0) for BINAURAL_ROOM_REVERB output configuration", }, #endif }; Loading Loading @@ -1094,7 +1122,11 @@ int main( exit( -1 ); } #ifdef CONTROL_METADATA_REVERB if ( RenderConfigReader_read( renderConfigReader, args.renderConfigFilePath, &renderConfig ) != IVAS_ERR_OK ) #else if ( RenderConfigReader_read( renderConfigReader, &renderConfig ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "Failed to read renderer configuration from file %s\n", args.renderConfigFilePath ); exit( -1 ); Loading @@ -1102,6 +1134,21 @@ int main( if ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { #ifdef CONTROL_METADATA_REVERB if ( ( error = RenderConfigReader_getAcousticEnvironment( renderConfigReader, args.acousticEnvironmentId, &renderConfig.room_acoustics ) ) == IVAS_ERR_OK ) { if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK ) { fprintf( stderr, "Invalid room acoustics configuration parameters\n\n" ); exit( -1 ); } } else { fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", args.acousticEnvironmentId ); exit( -1 ); } #endif renderConfig.room_acoustics.override = TRUE; } Loading Loading @@ -2711,6 +2758,17 @@ static CmdlnArgs defaultArgs( #ifdef FIX_488_SYNC_DELAY args.syncMdDelay = 0; #endif #ifdef CONTROL_METADATA_DIRECTIVITY for ( int32_t i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) { args.directivityPatternId[i] = 0; } #endif #ifdef CONTROL_METADATA_REVERB args.acousticEnvironmentId = 0; #endif return args; } Loading Loading @@ -2854,6 +2912,20 @@ static void parseOption( case CmdLnOptionId_framing5ms: assert( numOptionValues == 0 ); args->framing_5ms = true; #endif #ifdef CONTROL_METADATA_DIRECTIVITY case CmdLnOptionId_directivityPatternId: assert( numOptionValues <= RENDERER_MAX_ISM_INPUTS ); for ( int16_t i = 0; i < numOptionValues; ++i ) { args->directivityPatternId[i] = (int16_t) strtol( optionValues[i], NULL, 10 ); } break; #endif #ifdef CONTROL_METADATA_REVERB case CmdLnOptionId_acousticEnvironmentId: assert( numOptionValues == 1 ); args->acousticEnvironmentId = (int16_t) strtol( optionValues[0], NULL, 10 ); break; #endif #ifdef FIX_488_SYNC_DELAY Loading lib_com/common_api_types.h +14 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,9 @@ #define RENDERER_HEAD_POSITIONS_PER_FRAME 4 #endif #ifdef EARLY_REFLECTIONS #define QC_ABS_COEFF 6 #endif /*----------------------------------------------------------------------------------* * Common API structures Loading Loading @@ -189,6 +192,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 Loading @@ -223,7 +233,11 @@ typedef struct _IVAS_RENDER_CONFIG #ifdef SPLIT_REND_WITH_HEAD_ROT IVAS_SPLIT_REND_CONFIG_DATA split_rend_config; #endif #ifdef CONTROL_METADATA_DIRECTIVITY float directivity[IVAS_MAX_NUM_OBJECTS * 3]; #else float directivity[3]; #endif } IVAS_RENDER_CONFIG_DATA, *IVAS_RENDER_CONFIG_HANDLE; typedef struct _IVAS_LS_CUSTOM_LAYOUT Loading lib_com/ivas_cnst.h +42 −0 Original line number Diff line number Diff line Loading @@ -1028,6 +1028,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 @@ -1066,6 +1073,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 @@ -1901,6 +1913,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 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
apps/decoder.c +78 −4 Original line number Diff line number Diff line Loading @@ -168,6 +168,13 @@ typedef struct #endif #endif #ifdef CONTROL_METADATA_REVERB uint16_t acousticEnvironmentId; #ifdef CONTROL_METADATA_DIRECTIVITY uint16_t directivityPatternId[IVAS_MAX_NUM_OBJECTS]; #endif #endif } DecArguments; Loading Loading @@ -464,7 +471,11 @@ int main( goto cleanup; } #endif if ( RenderConfigReader_read( renderConfigReader, &renderConfigSplit ) != IVAS_ERR_OK ) if ( RenderConfigReader_read( renderConfigReader, #ifdef CONTROL_METADATA_REVERB arg.renderConfigFilename, #endif &renderConfigSplit ) != IVAS_ERR_OK ) { fprintf( stderr, "Failed to read renderer configuration from file %s\n\n", arg.renderConfigFilename ); goto cleanup; Loading Loading @@ -700,12 +711,42 @@ int main( goto cleanup; } #ifdef CONTROL_METADATA_REVERB if ( RenderConfigReader_read( renderConfigReader, arg.renderConfigFilename, &renderConfig ) != IVAS_ERR_OK ) #else if ( RenderConfigReader_read( renderConfigReader, &renderConfig ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "Failed to read renderer configuration from file %s\n\n", arg.renderConfigFilename ); goto cleanup; } #ifdef CONTROL_METADATA_DIRECTIVITY if ( ( error = RenderConfigReader_getDirectivity( renderConfigReader, arg.directivityPatternId, renderConfig.directivity ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Failed to get directivity for objects: %d %d %d %d\n\n", arg.directivityPatternId[0], arg.directivityPatternId[1], arg.directivityPatternId[2], arg.directivityPatternId[3] ); goto cleanup; } #endif #ifdef CONTROL_METADATA_REVERB if ( arg.outputFormat == IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) { if ( ( error = RenderConfigReader_getAcousticEnvironment( renderConfigReader, arg.acousticEnvironmentId, &renderConfig.room_acoustics ) ) == IVAS_ERR_OK ) { if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK ) { fprintf( stderr, "Invalid reverberation configuration parameters\n\n" ); goto cleanup; } } else if ( error != IVAS_ERR_ACOUSTIC_ENVIRONMENT_MISSING ) { fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", arg.acousticEnvironmentId ); goto cleanup; } renderConfig.room_acoustics.override = true; } #endif if ( ( error = IVAS_DEC_FeedRenderConfig( hIvasDec, renderConfig ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_FeedRenderConfig failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); Loading Loading @@ -1071,7 +1112,15 @@ static bool parseCmdlIVAS_dec( #endif #endif #ifdef CONTROL_METADATA_REVERB arg->acousticEnvironmentId = 0; #ifdef CONTROL_METADATA_DIRECTIVITY for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; ++i ) { arg->directivityPatternId[i] = 0; } #endif #endif /*-----------------------------------------------------------------* * Initialization *-----------------------------------------------------------------*/ Loading Loading @@ -1442,8 +1491,27 @@ static bool parseCmdlIVAS_dec( fprintf( stdout, "Complexity levels 1 and 2 will be defined after characterisation - default to level 3 (full functionality).\n" ); } } #ifdef CONTROL_METADATA_REVERB else if ( strcmp( argv_to_upper, "-AEID" ) == 0 ) { ++i; arg->acousticEnvironmentId = (int16_t) atoi( argv[i++] ); } #ifdef CONTROL_METADATA_DIRECTIVITY else if ( strcmp( argv_to_upper, "-DPID" ) == 0 ) { ++i; int16_t tmp; tmp = 0; while ( is_number( argv[i + tmp] ) && tmp < IVAS_MAX_NUM_OBJECTS ) { arg->directivityPatternId[tmp] = (int16_t) atoi( argv[i + tmp] ); ++tmp; } i += tmp; } #endif #endif /*-----------------------------------------------------------------* * Option not recognized *-----------------------------------------------------------------*/ Loading Loading @@ -1628,6 +1696,12 @@ static void usage_dec( void ) fprintf( stdout, " Currently, all values default to level 3 (full functionality).\n" ); #endif fprintf( stdout, "-exof File : External orientation file for external orientation trajectory\n" ); #ifdef CONTROL_METADATA_DIRECTIVITY fprintf( stdout, "-dpid ID : Directivity pattern ID(s) (space-separated list of up to 4 numbers can be specified) for binaural output configuration\n" ); #endif #ifdef CONTROL_METADATA_REVERB fprintf( stdout, "-aeid ID : Acoustic environment ID (number >= 0) for BINAURAL_ROOM_REVERB output configuration\n" ); #endif #ifdef DEBUG_MODE_INFO #ifdef DEBUG_MODE_INFO_TWEAK fprintf( stdout, "-info <folder> : specify subfolder name for debug output\n" ); Loading
apps/renderer.c +72 −0 Original line number Diff line number Diff line Loading @@ -181,6 +181,12 @@ typedef struct #ifdef FIX_488_SYNC_DELAY float syncMdDelay; #endif #ifdef CONTROL_METADATA_DIRECTIVITY uint16_t directivityPatternId[RENDERER_MAX_ISM_INPUTS]; #endif #ifdef CONTROL_METADATA_REVERB uint16_t acousticEnvironmentId; #endif } CmdlnArgs; typedef enum Loading Loading @@ -215,6 +221,12 @@ typedef enum #ifdef FIX_488_SYNC_DELAY CmdLnOptionId_syncMdDelay, #endif #ifdef CONTROL_METADATA_DIRECTIVITY CmdLnOptionId_directivityPatternId, #endif #ifdef CONTROL_METADATA_REVERB CmdLnOptionId_acousticEnvironmentId #endif } CmdLnOptionId; static const CmdLnParser_Option cliOptions[] = { Loading Loading @@ -370,6 +382,22 @@ static const CmdLnParser_Option cliOptions[] = { .description = "Metadata Synchronization Delay in ms, Default is 0. Quantized by 5ms subframes for TDRenderer (13ms -> 10ms -> 2subframes)", }, #endif #ifdef CONTROL_METADATA_DIRECTIVITY { .id = CmdLnOptionId_directivityPatternId, .match = "ism_directivity_pattern_id", .matchShort = "dpid", .description = "Directivity pattern ID(s) (space-separated list of up to 4 numbers can be specified) for binaural output configuration", }, #endif #ifdef CONTROL_METADATA_REVERB { .id = CmdLnOptionId_acousticEnvironmentId, .match = "acoustic_environment_id", .matchShort = "aeid", .description = "Acoustic environment ID (number >= 0) for BINAURAL_ROOM_REVERB output configuration", }, #endif }; Loading Loading @@ -1094,7 +1122,11 @@ int main( exit( -1 ); } #ifdef CONTROL_METADATA_REVERB if ( RenderConfigReader_read( renderConfigReader, args.renderConfigFilePath, &renderConfig ) != IVAS_ERR_OK ) #else if ( RenderConfigReader_read( renderConfigReader, &renderConfig ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "Failed to read renderer configuration from file %s\n", args.renderConfigFilePath ); exit( -1 ); Loading @@ -1102,6 +1134,21 @@ int main( if ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { #ifdef CONTROL_METADATA_REVERB if ( ( error = RenderConfigReader_getAcousticEnvironment( renderConfigReader, args.acousticEnvironmentId, &renderConfig.room_acoustics ) ) == IVAS_ERR_OK ) { if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK ) { fprintf( stderr, "Invalid room acoustics configuration parameters\n\n" ); exit( -1 ); } } else { fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", args.acousticEnvironmentId ); exit( -1 ); } #endif renderConfig.room_acoustics.override = TRUE; } Loading Loading @@ -2711,6 +2758,17 @@ static CmdlnArgs defaultArgs( #ifdef FIX_488_SYNC_DELAY args.syncMdDelay = 0; #endif #ifdef CONTROL_METADATA_DIRECTIVITY for ( int32_t i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) { args.directivityPatternId[i] = 0; } #endif #ifdef CONTROL_METADATA_REVERB args.acousticEnvironmentId = 0; #endif return args; } Loading Loading @@ -2854,6 +2912,20 @@ static void parseOption( case CmdLnOptionId_framing5ms: assert( numOptionValues == 0 ); args->framing_5ms = true; #endif #ifdef CONTROL_METADATA_DIRECTIVITY case CmdLnOptionId_directivityPatternId: assert( numOptionValues <= RENDERER_MAX_ISM_INPUTS ); for ( int16_t i = 0; i < numOptionValues; ++i ) { args->directivityPatternId[i] = (int16_t) strtol( optionValues[i], NULL, 10 ); } break; #endif #ifdef CONTROL_METADATA_REVERB case CmdLnOptionId_acousticEnvironmentId: assert( numOptionValues == 1 ); args->acousticEnvironmentId = (int16_t) strtol( optionValues[0], NULL, 10 ); break; #endif #ifdef FIX_488_SYNC_DELAY Loading
lib_com/common_api_types.h +14 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,9 @@ #define RENDERER_HEAD_POSITIONS_PER_FRAME 4 #endif #ifdef EARLY_REFLECTIONS #define QC_ABS_COEFF 6 #endif /*----------------------------------------------------------------------------------* * Common API structures Loading Loading @@ -189,6 +192,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 Loading @@ -223,7 +233,11 @@ typedef struct _IVAS_RENDER_CONFIG #ifdef SPLIT_REND_WITH_HEAD_ROT IVAS_SPLIT_REND_CONFIG_DATA split_rend_config; #endif #ifdef CONTROL_METADATA_DIRECTIVITY float directivity[IVAS_MAX_NUM_OBJECTS * 3]; #else float directivity[3]; #endif } IVAS_RENDER_CONFIG_DATA, *IVAS_RENDER_CONFIG_HANDLE; typedef struct _IVAS_LS_CUSTOM_LAYOUT Loading
lib_com/ivas_cnst.h +42 −0 Original line number Diff line number Diff line Loading @@ -1028,6 +1028,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 @@ -1066,6 +1073,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 @@ -1901,6 +1913,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