From f404d857adc8f4ac419154e05ec25a3b75f91074 Mon Sep 17 00:00:00 2001 From: Jan Brouwer Date: Wed, 19 Apr 2023 17:32:17 +0200 Subject: [PATCH 1/6] Combined the use of text-based render configuration files and binary reverb configuration files --- apps/decoder.c | 9 ++- apps/renderer.c | 9 ++- lib_util/render_config_reader.c | 80 +++++++++++++------ lib_util/render_config_reader.h | 13 ++- scripts/config/self_test.prm | 16 ++-- .../rend_config_hospital_patientroom.cfg | 36 +-------- scripts/testv/rend_config_recreation.cfg | 36 +-------- scripts/testv/rend_config_renderer.cfg | 36 +-------- tests/renderer/test_renderer.py | 1 + 9 files changed, 85 insertions(+), 151 deletions(-) diff --git a/apps/decoder.c b/apps/decoder.c index 3357eda4b8..f947498556 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -505,11 +505,7 @@ int main( goto cleanup; } -#ifdef CONTROL_METADATA_REVERB - if ( RenderConfigReader_read( renderConfigReader ) != 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; @@ -521,6 +517,11 @@ int main( fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", ACOUSTIC_ENVIRONMENT_ID ); goto cleanup; } + if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Invalid reverberation configuration parameters\n\n" ); + goto cleanup; + } #ifdef COMMAND_LINE_OPTION_LATE_REVERB if ( arg.outputFormat == IVAS_DEC_OUTPUT_BINAURAL_REVERB ) diff --git a/apps/renderer.c b/apps/renderer.c index 486f51b6a8..1c2f21e71f 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -742,11 +742,7 @@ int main( exit( -1 ); } -#ifdef CONTROL_METADATA_REVERB - if ( RenderConfigReader_read( renderConfigReader ) != 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 ); @@ -758,6 +754,11 @@ int main( fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", ACOUSTIC_ENVIRONMENT_ID ); exit( -1 ); } + if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Invalid reverberation configuration parameters\n\n" ); + exit( -1 ); + } #ifdef COMMAND_LINE_OPTION_LATE_REVERB if ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_REVERB ) { diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index c6e68eae25..82ffb230a1 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -35,10 +35,9 @@ #include "prot.h" #ifdef CONTROL_METADATA_REVERB #include -#else +#endif #include #include "cmdl_tools.h" -#endif /*------------------------------------------------------------------------------------------* * PreProc Macros @@ -46,7 +45,9 @@ #ifndef CONTROL_METADATA_REVERB #define MAX_LINE_LENGTH ( 1024 ) -#define MAX_ITEM_LENGTH ( 64 ) +#endif +#define MAX_ITEM_LENGTH ( 64 ) +#ifndef CONTROL_METADATA_REVERB #define N_REVERB_VECTORS ( 3 ) #endif @@ -702,6 +703,7 @@ static int16_t read_bool( return true; } +#endif /*-----------------------------------------------------------------------------------------* * Function read_vector() @@ -823,7 +825,7 @@ static int32_t errorHandler( * Verifies if the configuration parameters lie within acceptable limits *------------------------------------------------------------------------------------------*/ -static ivas_error RenderConfigReader_checkValues( +ivas_error RenderConfigReader_checkValues( IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ ) { @@ -908,7 +910,6 @@ static ivas_error RenderConfigReader_checkValues( return IVAS_ERR_OK; } -#endif /*------------------------------------------------------------------------------------------* * RenderConfigReader_open() @@ -933,17 +934,7 @@ ivas_error RenderConfigReader_open( return IVAS_ERR_FAILED_FILE_OPEN; } -#ifdef CONTROL_METADATA_REVERB - pConfigFile = fopen( pConfigPath, "rb" ); -#else - /* use corresponding .cfg file */ - length = strlen( pConfigPath ); - if ( length >= 4 && strcmp( &pConfigPath[length - 4], ".dat" ) == 0 ) - { - strcpy( &pConfigPath[length - 4], ".cfg" ); - } pConfigFile = fopen( pConfigPath, "r" ); -#endif if ( !pConfigFile ) { @@ -959,14 +950,15 @@ ivas_error RenderConfigReader_open( /*------------------------------------------------------------------------------------------* - * RenderConfigReader_read() + * RenderConfigReader_readReverb() * - * Reads the configuration from a file + * Reads the binary reverb configuration from a file *------------------------------------------------------------------------------------------*/ #ifdef CONTROL_METADATA_REVERB -ivas_error RenderConfigReader_read( - RenderConfigReader *pRenderConfigReader /* i/o : RenderConfigReader handle */ +static ivas_error RenderConfigReader_readReverb( + const char *pReverbConfigPath, /* i : Reverb configuration file path */ + RenderConfigReader *pRenderConfigReader /* i/o : RenderConfigReader handle */ ) { uint32_t file_size; @@ -977,11 +969,20 @@ ivas_error RenderConfigReader_read( uint32_t gridLen; uint32_t subGridLen; const float *pGrid; + FILE *pReverbConfigFile; + + /* Open the configuration file */ + pReverbConfigFile = fopen( pReverbConfigPath, "rb" ); + + if ( !pReverbConfigFile ) + { + return IVAS_ERR_FAILED_FILE_OPEN; + } /* Read the bitstream */ - fseek( pRenderConfigReader->pConfigFile, 0, SEEK_END ); - file_size = ftell( pRenderConfigReader->pConfigFile ); - rewind( pRenderConfigReader->pConfigFile ); + fseek( pReverbConfigFile, 0, SEEK_END ); + file_size = ftell( pReverbConfigFile ); + rewind( pReverbConfigFile ); pRenderConfigReader->pBitstream = (uint8_t *) malloc( file_size * sizeof( uint8_t ) ); if ( pRenderConfigReader->pBitstream == NULL ) @@ -989,7 +990,7 @@ ivas_error RenderConfigReader_read( return IVAS_ERR_FAILED_ALLOC; } - fread( pRenderConfigReader->pBitstream, sizeof( uint8_t ), file_size, pRenderConfigReader->pConfigFile ); + fread( pRenderConfigReader->pBitstream, sizeof( uint8_t ), file_size, pReverbConfigFile ); pRenderConfigReader->length = file_size; /****************************/ @@ -1250,7 +1251,8 @@ ivas_error RenderConfigReader_read( return IVAS_ERR_OK; } -#else +#endif + ivas_error RenderConfigReader_read( RenderConfigReader *pRenderConfigReader, /* i/o : RenderConfigReader handle */ IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ @@ -1266,7 +1268,11 @@ ivas_error RenderConfigReader_read( char chapter[MAX_ITEM_LENGTH + 1]; char *pValue; int16_t nBandsInput; +#ifdef CONTROL_METADATA_REVERB + ivas_error error; +#else int16_t nVectorsMissing; +#endif fseek( pRenderConfigReader->pConfigFile, 0, SEEK_END ); file_size = ftell( pRenderConfigReader->pConfigFile ); @@ -1275,7 +1281,9 @@ ivas_error RenderConfigReader_read( pParams = (char *) calloc( file_size + 1, sizeof( char ) ); pTemp = (char *) calloc( file_size + 1, sizeof( char ) ); nBandsInput = hRenderConfig->room_acoustics.nBands; +#ifndef CONTROL_METADATA_REVERB nVectorsMissing = N_REVERB_VECTORS; +#endif /* read file line by line */ while ( fgets( pConfig_str, file_size, pRenderConfigReader->pConfigFile ) != NULL ) @@ -1308,6 +1316,7 @@ ivas_error RenderConfigReader_read( to_upper( chapter ); /* interpret params */ +#ifndef CONTROL_METADATA_REVERB if ( strcmp( chapter, "ROOMACOUSTICS" ) == 0 ) { params_idx = 0; @@ -1397,6 +1406,13 @@ ivas_error RenderConfigReader_read( } #ifdef DEBUGGING else if ( strcmp( chapter, "GENERAL" ) == 0 && strlen( pParams ) != 0 ) +#endif +#else +#ifdef DEBUGGING + if ( strcmp( chapter, "GENERAL" ) == 0 && strlen( pParams ) != 0 ) +#endif +#endif +#ifdef DEBUGGING { params_idx = 0; pValue = (char *) calloc( strlen( pParams ), sizeof( char ) ); @@ -1426,6 +1442,15 @@ ivas_error RenderConfigReader_read( errorHandler( item, ERROR_VALUE_INVALID ); } } + if ( strcmp( item, "REVERBFILE" ) == 0 ) + { + // TODO: need to preserve file name case for non Windows OSes + if ( ( error = RenderConfigReader_readReverb(pValue, pRenderConfigReader) ) != IVAS_ERR_OK) + { + printf( "RenderConfigReader_readReverb(%s) returned %d\n", pValue, error ); + errorHandler( item, error ); + } + } #ifdef DEBUGGING else { @@ -1462,9 +1487,12 @@ ivas_error RenderConfigReader_read( fprintf( stderr, "Errors occurred\n" ); return IVAS_ERR_FAILED_FILE_PARSE; } - return RenderConfigReader_checkValues( hRenderConfig ); -} +#ifdef CONTROL_METADATA_REVERB + return IVAS_ERR_OK; +#else + RenderConfigReader_checkValues( hRenderConfig ); #endif +} #ifdef CONTROL_METADATA_REVERB /*------------------------------------------------------------------------------------------* diff --git a/lib_util/render_config_reader.h b/lib_util/render_config_reader.h index 53894f7043..d0d37d6fc3 100644 --- a/lib_util/render_config_reader.h +++ b/lib_util/render_config_reader.h @@ -51,25 +51,24 @@ ivas_error RenderConfigReader_open( RenderConfigReader **ppRenderConfigReader /* o : RenderConfigReader handle */ ); -/* Reads a configuration */ #ifdef CONTROL_METADATA_REVERB -ivas_error RenderConfigReader_read( - RenderConfigReader *pRenderConfigReader /* i : RenderConfigReader handle */ -); - /* Get an acoustic environment */ ivas_error RenderConfigReader_getAcousticEnvironment( RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ uint16_t id, /* i : Acoustic environment ID */ IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pAcEnv /* o : Target acoustic environment pointer */ ); +/* Verifies configuration parameters */ +ivas_error RenderConfigReader_checkValues( + IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ +); +#endif -#else +/* Reads a configuration */ ivas_error RenderConfigReader_read( RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ ); -#endif /* Closes the renderer configuration reader and deallocates memory */ void RenderConfigReader_close( diff --git a/scripts/config/self_test.prm b/scripts/config/self_test.prm index b56bcff2d8..8da3550e00 100644 --- a/scripts/config/self_test.prm +++ b/scripts/config/self_test.prm @@ -909,35 +909,35 @@ // Multi-channel 5_1 at 512 kbps, 48kHz in, 48kHz out, BINAURAL_REVERB out Config renderer ../IVAS_cod -mc 5_1 512000 48 testv/stv51MC48c.wav bit -../IVAS_dec -render_config testv/rend_config_renderer.dat BINAURAL_REVERB 48 bit testv/stv51MC48c.wav_MC51_512000_48-48_MC_Config_renderer.tst +../IVAS_dec -render_config testv/rend_config_renderer.cfg BINAURAL_REVERB 48 bit testv/stv51MC48c.wav_MC51_512000_48-48_MC_Config_renderer.tst // Multi-channel 5_1 at 512 kbps, 48kHz in, 32kHz out, BINAURAL_REVERB out Config renderer ../IVAS_cod -mc 5_1 512000 48 testv/stv51MC48c.wav bit -../IVAS_dec -render_config testv/rend_config_renderer.dat BINAURAL_REVERB 32 bit testv/stv51MC48c.wav_MC51_512000_48-32_MC_Config_renderer.tst +../IVAS_dec -render_config testv/rend_config_renderer.cfg BINAURAL_REVERB 32 bit testv/stv51MC48c.wav_MC51_512000_48-32_MC_Config_renderer.tst // Multi-channel 5_1 at 512 kbps, 48kHz in, 16kHz out, BINAURAL_REVERB out Config renderer ../IVAS_cod -mc 5_1 512000 48 testv/stv51MC48c.wav bit -../IVAS_dec -render_config testv/rend_config_renderer.dat BINAURAL_REVERB 16 bit testv/stv51MC48c.wav_MC51_512000_48-16_MC_Config_renderer.tst +../IVAS_dec -render_config testv/rend_config_renderer.cfg BINAURAL_REVERB 16 bit testv/stv51MC48c.wav_MC51_512000_48-16_MC_Config_renderer.tst // Multi-channel 5_1 at 512 kbps, 48kHz in, 48kHz out, BINAURAL_REVERB out Config hospital_patientroom ../IVAS_cod -mc 5_1 512000 48 testv/stv51MC48c.wav bit -../IVAS_dec -render_config testv/rend_config_hospital_patientroom.dat BINAURAL_REVERB 48 bit testv/stv51MC48c.wav_MC51_512000_48-48_MC_Config_hospital_patientroom.tst +../IVAS_dec -render_config testv/rend_config_hospital_patientroom.cfg BINAURAL_REVERB 48 bit testv/stv51MC48c.wav_MC51_512000_48-48_MC_Config_hospital_patientroom.tst // Multi-channel 5_1 at 512 kbps, 48kHz in, 48kHz out, BINAURAL_REVERB out Config recreation ../IVAS_cod -mc 5_1 512000 48 testv/stv51MC48c.wav bit -../IVAS_dec -render_config testv/rend_config_recreation.dat BINAURAL_REVERB 48 bit testv/stv51MC48c.wav_MC51_512000_48-48_MC_Config_recreation.tst +../IVAS_dec -render_config testv/rend_config_recreation.cfg BINAURAL_REVERB 48 bit testv/stv51MC48c.wav_MC51_512000_48-48_MC_Config_recreation.tst // Multi-channel 5_1_2 at 512 kbps, 48kHz in, 48kHz out, BINAURAL_REVERB out Config renderer ../IVAS_cod -mc 5_1_2 512000 48 testv/stv512MC48c.wav bit -../IVAS_dec -render_config testv/rend_config_renderer.dat BINAURAL_REVERB 48 bit testv/stv512MC48c.wav_MC512_512000_48-48_MC_Config_renderer.tst +../IVAS_dec -render_config testv/rend_config_renderer.cfg BINAURAL_REVERB 48 bit testv/stv512MC48c.wav_MC512_512000_48-48_MC_Config_renderer.tst // Multi-channel 5_1_4 at 512 kbps, 48kHz in, 48kHz out, BINAURAL_REVERB out Config renderer ../IVAS_cod -mc 5_1_4 512000 48 testv/stv514MC48c.wav bit -../IVAS_dec -render_config testv/rend_config_renderer.dat BINAURAL_REVERB 48 bit testv/stv514MC48c.wav_MC514_512000_48-48_MC_Config_renderer.tst +../IVAS_dec -render_config testv/rend_config_renderer.cfg BINAURAL_REVERB 48 bit testv/stv514MC48c.wav_MC514_512000_48-48_MC_Config_renderer.tst // Multi-channel 7_1_4 at 512 kbps, 48kHz in, 48kHz out, BINAURAL_REVERB out Config renderer ../IVAS_cod -mc 7_1_4 512000 48 testv/stv714MC48c.wav bit -../IVAS_dec -render_config testv/rend_config_renderer.dat BINAURAL_REVERB 48 bit testv/stv714MC48c.wav_MC714_512000_48-48_MC_Config_renderer.tst +../IVAS_dec -render_config testv/rend_config_renderer.cfg BINAURAL_REVERB 48 bit testv/stv714MC48c.wav_MC714_512000_48-48_MC_Config_renderer.tst // Multi-channel 5_1 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, 7_1_4 out ../IVAS_cod -mc 5_1 ../scripts/switchPaths/sw_mctech_5fr.bin 48 testv/stv51MC48c.wav bit diff --git a/scripts/testv/rend_config_hospital_patientroom.cfg b/scripts/testv/rend_config_hospital_patientroom.cfg index 0ce43444ed..c00b642947 100644 --- a/scripts/testv/rend_config_hospital_patientroom.cfg +++ b/scripts/testv/rend_config_hospital_patientroom.cfg @@ -1,34 +1,2 @@ -[roomAcoustics] -reverb = true; -brir = false; -nBands = 31; - -fc = [20.0, 25.0, 31.5, 40.0, - 50.0, 63.0, 80.0, 100.0, - 125.0, 160.0, 200.0, 250.0, - 315.0, 400.0, 500.0, 630.0, - 800.0, 1000.0, 1250.0, 1600.0, - 2000.0, 2500.0, 3150.0, 4000.0, - 5000.0, 6300.0, 8000.0, 10000.0, - 12500.0, 16000.0, 20000.0]; - -rt60 = [0.81275, 0.61888, 0.45111, 0.34672, - 0.46683, 0.53987, 0.61874, 0.70291, - 0.66657, 0.73037, 0.75090, 0.72470, - 0.75486, 0.75857, 0.76844, 0.74999, - 0.77622, 0.78227, 0.77441, 0.74688, - 0.73521, 0.73782, 0.71928, 0.71708, - 0.71465, 0.60592, 0.52031, 0.51768, - 0.52102, 0.37956, 0.30786]; - -dsr = [0.00019952621, 0.00019952621, 7.9432844e-05, 5.0118702e-05, - 7.943284e-06 , 6.3095763e-06, 6.3095763e-06, 7.943284e-06 , - 1e-05 , 1e-05 , 7.943284e-06 , 1e-05 , - 1e-05 , 1e-05 , 7.943284e-06 , 1e-05 , - 1e-05 , 7.943284e-06 , 7.943284e-06 , 6.3095763e-06, - 6.3095763e-06, 6.3095763e-06, 6.3095763e-06, 6.3095763e-06, - 6.3095763e-06, 3.1622776e-06, 3.1622776e-06, 3.1622776e-06, - 6.3095763e-07, 3.1622776e-07, 3.1622776e-07]; - -acousticPreDelay = 0.016; -inputPreDelay = 0.08163; \ No newline at end of file +[general] +reverbFile = scripts/testv/rend_config_hospital_patientroom.dat; diff --git a/scripts/testv/rend_config_recreation.cfg b/scripts/testv/rend_config_recreation.cfg index cc822d630c..cd5929919e 100644 --- a/scripts/testv/rend_config_recreation.cfg +++ b/scripts/testv/rend_config_recreation.cfg @@ -1,34 +1,2 @@ -[roomAcoustics] -reverb = true; -brir = false; -nBands = 31; - -fc = [20.0, 25.0, 31.5, 40.0, - 50.0, 63.0, 80.0, 100.0, - 125.0, 160.0, 200.0, 250.0, - 315.0, 400.0, 500.0, 630.0, - 800.0, 1000.0, 1250.0, 1600.0, - 2000.0, 2500.0, 3150.0, 4000.0, - 5000.0, 6300.0, 8000.0, 10000.0, - 12500.0, 16000.0, 20000.0]; - -rt60 = [4.51916, 4.89553, 4.83276, 5.00198, - 5.34468, 5.76026, 6.36818, 6.95503, - 7.27557, 7.62559, 8.08892, 8.16002, - 8.13900, 8.17919, 8.16280, 8.46226, - 9.61806, 9.93048, 9.81353, 8.59340, - 8.38885, 8.36823, 6.51845, 3.76089, - 3.75374, 3.57451, 1.28724, 1.22174, - 1.22448, 1.71631, 2.14343]; - -dsr = [1e-06 , 7.943284e-07 , 1e-06 , 1e-06 , - 1.5848925e-06, 1.9952631e-06, 3.1622776e-06, 3.9810707e-06, - 6.3095763e-06, 7.943284e-06 , 1e-05 , 7.943284e-06 , - 7.943284e-06 , 7.943284e-06 , 7.943284e-06 , 7.943284e-06 , - 5.01187e-06 , 5.01187e-06 , 3.9810707e-06, 3.1622776e-06, - 3.1622776e-06, 2.511887e-06 , 7.943284e-07 , 6.3095763e-07, - 6.3095763e-07, 5.01187e-08 , 1.2589251e-08, 1.2589251e-08, - 1.2589265e-09, 1.2589266e-11, 3.981075e-12]; - -acousticPreDelay = 0.016; -inputPreDelay = 0.43031; +[general] +reverbFile = scripts/testv/rend_config_recreation.dat; diff --git a/scripts/testv/rend_config_renderer.cfg b/scripts/testv/rend_config_renderer.cfg index 442edf2506..86e2f181f4 100644 --- a/scripts/testv/rend_config_renderer.cfg +++ b/scripts/testv/rend_config_renderer.cfg @@ -1,34 +1,2 @@ -[roomAcoustics] -reverb = true; # Reverb switch, in case BRIR is undefined or false, reverb flag is inherited from the room flag -brir = false; -nBands = 31; - -fc = [20.0, 25.0, 31.5, 40.0, - 50.0, 63.0, 80.0, 100.0, - 125.0, 160.0, 200.0, 250.0, - 315.0, 400.0, 500.0, 630.0, - 800.0, 1000.0, 1250.0, 1600.0, - 2000.0, 2500.0, 3150.0, 4000.0, - 5000.0, 6300.0, 8000.0, 10000.0, - 12500.0, 16000.0, 20000.0]; - -rt60 = [1.3622, 1.4486, 1.3168, 1.5787, - 1.4766, 1.3954, 1.2889, 1.3462, - 1.0759, 1.0401, 1.0970, 1.0850, - 1.0910, 1.0404, 1.0499, 1.0699, - 1.1028, 1.1714, 1.1027, 1.0666, - 1.0550, 1.0553, 1.0521, 1.0569, - 1.0421, 0.97822, 0.80487, 0.75944, - 0.71945, 0.61682, 0.60031]; - -dsr = [1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, - 1.2589251e-08, 1.9952632e-08, 2.511887e-08 , 3.9810708e-08, - 1e-07 , 1.9952633e-07, 3.981071e-07 , 6.3095763e-07, - 7.943284e-07 , 6.3095763e-07, 5.01187e-07 , 5.01187e-07 , - 6.3095763e-07, 6.3095763e-07, 7.943284e-07 , 6.3095763e-07, - 5.01187e-07 , 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, - 5.01187e-07 , 2.511887e-07 , 1.2589251e-07, 1e-07 , - 6.309576e-08 , 3.1622776e-08, 2.511887e-08]; - -acousticPreDelay = 0.016; -inputPreDelay = 0.1; \ No newline at end of file +[general] +reverbFile = scripts/testv/rend_config_renderer.dat; \ No newline at end of file diff --git a/tests/renderer/test_renderer.py b/tests/renderer/test_renderer.py index 00ea239714..df8f67efcd 100644 --- a/tests/renderer/test_renderer.py +++ b/tests/renderer/test_renderer.py @@ -58,6 +58,7 @@ def test_ambisonics_binaural_headrotation(test_info, in_fmt, out_fmt, trj_file): # Test compares rendering with render config file containing just reverb defaults against rendering without config file. # These should be binary equivalent. +@pytest.mark.skip("disable until .cfg parsing is enabled again") @pytest.mark.parametrize("config_file", CONFIG_FILES_TO_TEST) @pytest.mark.parametrize("out_fmt", OUTPUT_FORMATS_BINAURAL) @pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM) -- GitLab From 4ca9d699225f79593671fd8bf64f9f4492724da5 Mon Sep 17 00:00:00 2001 From: Jan Brouwer Date: Thu, 20 Apr 2023 17:39:04 +0200 Subject: [PATCH 2/6] Preserve binary reverb file path text case --- lib_util/render_config_reader.c | 41 +++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index 82ffb230a1..2a12e5f552 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -825,7 +825,11 @@ static int32_t errorHandler( * Verifies if the configuration parameters lie within acceptable limits *------------------------------------------------------------------------------------------*/ +#ifdef CONTROL_METADATA_REVERB ivas_error RenderConfigReader_checkValues( +#else +static ivas_error RenderConfigReader_checkValues( +#endif IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ ) { @@ -1404,22 +1408,35 @@ ivas_error RenderConfigReader_read( fprintf( stderr, "Reverb config: number of bands changed but configuration vectors missing\n" ); } } -#ifdef DEBUGGING else if ( strcmp( chapter, "GENERAL" ) == 0 && strlen( pParams ) != 0 ) -#endif #else -#ifdef DEBUGGING if ( strcmp( chapter, "GENERAL" ) == 0 && strlen( pParams ) != 0 ) #endif -#endif -#ifdef DEBUGGING { params_idx = 0; pValue = (char *) calloc( strlen( pParams ), sizeof( char ) ); while ( sscanf( pParams + params_idx, "%64[^=]=%[^;];", item, pValue ) == 2 ) { +#ifndef CONTROL_METADATA_REVERB params_idx += ( int32_t )( strlen( item ) + strlen( pValue ) + 2 ); +#endif +#ifdef DEBUGGING fprintf( stderr, " PARAM: %s -> %s\n", item, pValue ); +#endif +#ifdef CONTROL_METADATA_REVERB + if ( strcmp( item, "REVERBFILE" ) == 0 ) + { + /* get correct case file path */ + sscanf( pTemp + params_idx, "%*[^=] = %[^;];", pValue ); + if ( ( error = RenderConfigReader_readReverb(pValue, pRenderConfigReader) ) != IVAS_ERR_OK) + { + printf( "RenderConfigReader_readReverb(%s) returned %d\n", pValue, error ); + errorHandler( item, error ); + } + } + else +#endif +#ifdef DEBUGGING if ( strcmp( item, "RENDERER" ) == 0 ) { if ( strcmp( pValue, "CREND" ) == 0 ) @@ -1442,25 +1459,19 @@ ivas_error RenderConfigReader_read( errorHandler( item, ERROR_VALUE_INVALID ); } } - if ( strcmp( item, "REVERBFILE" ) == 0 ) - { - // TODO: need to preserve file name case for non Windows OSes - if ( ( error = RenderConfigReader_readReverb(pValue, pRenderConfigReader) ) != IVAS_ERR_OK) - { - printf( "RenderConfigReader_readReverb(%s) returned %d\n", pValue, error ); - errorHandler( item, error ); - } - } #ifdef DEBUGGING else { fprintf( stderr, "Unsupported configuration property %s\n", item ); } +#endif +#endif +#ifdef CONTROL_METADATA_REVERB + params_idx += (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); #endif } free( pValue ); } -#endif else { fprintf( stderr, "Unknown chapter: %s\n", chapter ); -- GitLab From 2c8286b9473230e9f283fe73a2ef7804fe2183cb Mon Sep 17 00:00:00 2001 From: Jan Brouwer Date: Mon, 24 Apr 2023 15:04:30 +0200 Subject: [PATCH 3/6] Make reverb configuration file path relative to render configuration file path --- apps/decoder.c | 2 +- apps/renderer.c | 2 +- lib_util/render_config_reader.c | 29 +++++++++++++++---- lib_util/render_config_reader.h | 1 + scripts/testv/config_directivity.cfg | 2 +- .../rend_config_hospital_patientroom.cfg | 2 +- scripts/testv/rend_config_recreation.cfg | 2 +- scripts/testv/rend_config_renderer.cfg | 2 +- 8 files changed, 31 insertions(+), 11 deletions(-) diff --git a/apps/decoder.c b/apps/decoder.c index d24158a47a..f7da07e3fc 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -505,7 +505,7 @@ int main( goto cleanup; } - if ( RenderConfigReader_read( renderConfigReader, &renderConfig ) != IVAS_ERR_OK ) + if ( RenderConfigReader_read( renderConfigReader, arg.renderConfigFilename, &renderConfig ) != IVAS_ERR_OK ) { fprintf( stderr, "Failed to read renderer configuration from file %s\n\n", arg.renderConfigFilename ); goto cleanup; diff --git a/apps/renderer.c b/apps/renderer.c index 46714ecbda..29cfd52993 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -731,7 +731,7 @@ int main( exit( -1 ); } - if ( RenderConfigReader_read( renderConfigReader, &renderConfig ) != IVAS_ERR_OK ) + if ( RenderConfigReader_read( renderConfigReader, args.renderConfigFilePath, &renderConfig ) != IVAS_ERR_OK ) { fprintf( stderr, "Failed to read renderer configuration from file %s\n", args.renderConfigFilePath ); exit( -1 ); diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index 2a12e5f552..813916ad2e 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -1259,6 +1259,7 @@ static ivas_error RenderConfigReader_readReverb( ivas_error RenderConfigReader_read( RenderConfigReader *pRenderConfigReader, /* i/o : RenderConfigReader handle */ + const char *pRenderConfigPath, /* i : Renderer configuration file path */ IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ ) { @@ -1274,6 +1275,8 @@ ivas_error RenderConfigReader_read( int16_t nBandsInput; #ifdef CONTROL_METADATA_REVERB ivas_error error; + int32_t params_length; + int32_t length; #else int16_t nVectorsMissing; #endif @@ -1417,7 +1420,9 @@ ivas_error RenderConfigReader_read( pValue = (char *) calloc( strlen( pParams ), sizeof( char ) ); while ( sscanf( pParams + params_idx, "%64[^=]=%[^;];", item, pValue ) == 2 ) { -#ifndef CONTROL_METADATA_REVERB +#ifdef CONTROL_METADATA_REVERB + params_length = (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); +#else params_idx += ( int32_t )( strlen( item ) + strlen( pValue ) + 2 ); #endif #ifdef DEBUGGING @@ -1426,13 +1431,27 @@ ivas_error RenderConfigReader_read( #ifdef CONTROL_METADATA_REVERB if ( strcmp( item, "REVERBFILE" ) == 0 ) { - /* get correct case file path */ + /* get correct case reverb configuration file path */ sscanf( pTemp + params_idx, "%*[^=] = %[^;];", pValue ); - if ( ( error = RenderConfigReader_readReverb(pValue, pRenderConfigReader) ) != IVAS_ERR_OK) + + /* make reverb configuration file path relative to render configuration file path */ + for ( length = (int32_t) strlen( pRenderConfigPath ) - 1; length >= 0; length-- ) + { + if ( pRenderConfigPath[length] == '\\' || pRenderConfigPath[length] == '/' ) + { + length++; + break; + } + } + char *pCombinedName = calloc( length + (int32_t) strlen( pValue ) + 1, sizeof( char ) ); + strncpy( pCombinedName, pRenderConfigPath, length ); + strcpy( pCombinedName + length, pValue ); + + if ( ( error = RenderConfigReader_readReverb( pCombinedName, pRenderConfigReader ) ) != IVAS_ERR_OK ) { - printf( "RenderConfigReader_readReverb(%s) returned %d\n", pValue, error ); errorHandler( item, error ); } + free( pCombinedName ); } else #endif @@ -1467,7 +1486,7 @@ ivas_error RenderConfigReader_read( #endif #endif #ifdef CONTROL_METADATA_REVERB - params_idx += (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); + params_idx += params_length; #endif } free( pValue ); diff --git a/lib_util/render_config_reader.h b/lib_util/render_config_reader.h index d0d37d6fc3..e108f0297d 100644 --- a/lib_util/render_config_reader.h +++ b/lib_util/render_config_reader.h @@ -67,6 +67,7 @@ ivas_error RenderConfigReader_checkValues( /* Reads a configuration */ ivas_error RenderConfigReader_read( RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ + const char *pRenderConfigPath, /* i : Renderer configuration file path */ IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ ); diff --git a/scripts/testv/config_directivity.cfg b/scripts/testv/config_directivity.cfg index 94807d688c..77f392ca7c 100644 --- a/scripts/testv/config_directivity.cfg +++ b/scripts/testv/config_directivity.cfg @@ -1,3 +1,3 @@ [general] directivity = [0.0, 360.0, 0.2512]; - +reverbFile = rend_config_renderer.dat; diff --git a/scripts/testv/rend_config_hospital_patientroom.cfg b/scripts/testv/rend_config_hospital_patientroom.cfg index c00b642947..75bfdf910f 100644 --- a/scripts/testv/rend_config_hospital_patientroom.cfg +++ b/scripts/testv/rend_config_hospital_patientroom.cfg @@ -1,2 +1,2 @@ [general] -reverbFile = scripts/testv/rend_config_hospital_patientroom.dat; +reverbFile = rend_config_hospital_patientroom.dat; diff --git a/scripts/testv/rend_config_recreation.cfg b/scripts/testv/rend_config_recreation.cfg index cd5929919e..d91064856c 100644 --- a/scripts/testv/rend_config_recreation.cfg +++ b/scripts/testv/rend_config_recreation.cfg @@ -1,2 +1,2 @@ [general] -reverbFile = scripts/testv/rend_config_recreation.dat; +reverbFile = rend_config_recreation.dat; diff --git a/scripts/testv/rend_config_renderer.cfg b/scripts/testv/rend_config_renderer.cfg index 86e2f181f4..cbada86bec 100644 --- a/scripts/testv/rend_config_renderer.cfg +++ b/scripts/testv/rend_config_renderer.cfg @@ -1,2 +1,2 @@ [general] -reverbFile = scripts/testv/rend_config_renderer.dat; \ No newline at end of file +reverbFile = rend_config_renderer.dat; \ No newline at end of file -- GitLab From ee0cb4895bc1712f029a540ed01bfab2778dbadf Mon Sep 17 00:00:00 2001 From: Jan Brouwer Date: Tue, 25 Apr 2023 17:42:41 +0200 Subject: [PATCH 4/6] reverb configuration no longer required in render configuration file; test_ambisonics_binaural_headrotation_defaultrenderconfig() removed (defaults can not be achieved bit-exact via reverb configuration; does not change code coverage) --- apps/decoder.c | 13 ++++++++----- apps/renderer.c | 13 ++++++++----- scripts/testv/config_directivity.cfg | 1 - scripts/testv/just_reverb.cfg | 2 -- tests/renderer/constants.py | 4 ---- tests/renderer/test_renderer.py | 20 -------------------- 6 files changed, 16 insertions(+), 37 deletions(-) delete mode 100644 scripts/testv/just_reverb.cfg diff --git a/apps/decoder.c b/apps/decoder.c index f7da07e3fc..6843c26eff 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -512,14 +512,17 @@ int main( } #ifdef CONTROL_METADATA_REVERB - if ( RenderConfigReader_getAcousticEnvironment( renderConfigReader, ACOUSTIC_ENVIRONMENT_ID, &renderConfig.room_acoustics ) != IVAS_ERR_OK ) + if ( ( error = RenderConfigReader_getAcousticEnvironment( renderConfigReader, ACOUSTIC_ENVIRONMENT_ID, &renderConfig.room_acoustics ) ) == IVAS_ERR_OK ) { - fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", ACOUSTIC_ENVIRONMENT_ID ); - goto cleanup; + if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Invalid reverberation configuration parameters\n\n" ); + goto cleanup; + } } - if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK ) + else if ( error != IVAS_ERR_ACOUSTIC_ENVIRONMENT_MISSING ) { - fprintf( stderr, "Invalid reverberation configuration parameters\n\n" ); + fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", ACOUSTIC_ENVIRONMENT_ID ); goto cleanup; } diff --git a/apps/renderer.c b/apps/renderer.c index 29cfd52993..72a8c05600 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -738,14 +738,17 @@ int main( } #ifdef CONTROL_METADATA_REVERB - if ( RenderConfigReader_getAcousticEnvironment( renderConfigReader, ACOUSTIC_ENVIRONMENT_ID, &renderConfig.room_acoustics ) != IVAS_ERR_OK ) + if ( ( error = RenderConfigReader_getAcousticEnvironment( renderConfigReader, ACOUSTIC_ENVIRONMENT_ID, &renderConfig.room_acoustics ) ) == IVAS_ERR_OK ) { - fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", ACOUSTIC_ENVIRONMENT_ID ); - exit( -1 ); + if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Invalid reverberation configuration parameters\n\n" ); + exit( -1 ); + } } - if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK ) + else if ( error != IVAS_ERR_ACOUSTIC_ENVIRONMENT_MISSING ) { - fprintf( stderr, "Invalid reverberation configuration parameters\n\n" ); + fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", ACOUSTIC_ENVIRONMENT_ID ); exit( -1 ); } #ifdef COMMAND_LINE_OPTION_LATE_REVERB diff --git a/scripts/testv/config_directivity.cfg b/scripts/testv/config_directivity.cfg index 77f392ca7c..f958df1d31 100644 --- a/scripts/testv/config_directivity.cfg +++ b/scripts/testv/config_directivity.cfg @@ -1,3 +1,2 @@ [general] directivity = [0.0, 360.0, 0.2512]; -reverbFile = rend_config_renderer.dat; diff --git a/scripts/testv/just_reverb.cfg b/scripts/testv/just_reverb.cfg deleted file mode 100644 index 28acb76dc6..0000000000 --- a/scripts/testv/just_reverb.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[roomAcoustics] -reverb = true; # Reverb switch, in case BRIR is undefined or false, reverb flag is inherited from the room flag diff --git a/tests/renderer/constants.py b/tests/renderer/constants.py index e29696adec..3625a9307e 100644 --- a/tests/renderer/constants.py +++ b/tests/renderer/constants.py @@ -193,10 +193,6 @@ HR_TRAJECTORIES_TO_TEST = [ "rotate_yaw_pitch_roll1", ] -CONFIG_FILES_TO_TEST = [ - "just_reverb" -] - """ Per-testcase xfail SNR thresholds (dB) """ pass_snr = dict() # not relevant for tests anymore, should be deprecated soon _pass_snr = { diff --git a/tests/renderer/test_renderer.py b/tests/renderer/test_renderer.py index df8f67efcd..b4ecf611da 100644 --- a/tests/renderer/test_renderer.py +++ b/tests/renderer/test_renderer.py @@ -55,26 +55,6 @@ def test_ambisonics_binaural_headrotation(test_info, in_fmt, out_fmt, trj_file): trj_file=HR_TRAJECTORY_DIR.joinpath(f"{trj_file}.csv"), ) - -# Test compares rendering with render config file containing just reverb defaults against rendering without config file. -# These should be binary equivalent. -@pytest.mark.skip("disable until .cfg parsing is enabled again") -@pytest.mark.parametrize("config_file", CONFIG_FILES_TO_TEST) -@pytest.mark.parametrize("out_fmt", OUTPUT_FORMATS_BINAURAL) -@pytest.mark.parametrize("in_fmt", INPUT_FORMATS_ISM) -def test_ambisonics_binaural_headrotation_defaultrenderconfig(test_info, in_fmt, out_fmt, config_file): - compare_renderer_args( - test_info, - in_fmt, - out_fmt, - ref_kwargs={ - "name_extension": "defaultrenderconfig" - }, - cut_kwargs={ - "config_file": TESTV_DIR.joinpath(f"{config_file}.cfg") - } - ) - # Test compares rendering with just a trajectory file against rendering with a trajectory file + a zero ref rotation. # These should be binary equivalent. @pytest.mark.parametrize("trj_file", HR_TRAJECTORIES_TO_TEST) -- GitLab From f795b400f4964757d4601673f0c2db7753c95d8a Mon Sep 17 00:00:00 2001 From: Jan Brouwer Date: Mon, 1 May 2023 14:49:42 +0200 Subject: [PATCH 5/6] RenderConfigReader_checkValues() return value was was erroneously discarded in RenderConfigReader_read() --- apps/decoder.c | 4 ++++ apps/renderer.c | 4 ++++ lib_util/render_config_reader.c | 11 +++++------ lib_util/render_config_reader.h | 6 ++++-- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/apps/decoder.c b/apps/decoder.c index 6843c26eff..96e3e1b153 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -505,7 +505,11 @@ 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; diff --git a/apps/renderer.c b/apps/renderer.c index 72a8c05600..6b439bb991 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -731,7 +731,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 ); diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index 813916ad2e..7ab86bab5f 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -928,9 +928,6 @@ ivas_error RenderConfigReader_open( { RenderConfigReader *pSelf; FILE *pConfigFile; -#ifndef CONTROL_METADATA_REVERB - int length; -#endif /* Open the configuration file */ if ( strlen( pConfigPath ) < 1 ) @@ -1259,8 +1256,10 @@ static ivas_error RenderConfigReader_readReverb( ivas_error RenderConfigReader_read( RenderConfigReader *pRenderConfigReader, /* i/o : RenderConfigReader handle */ - const char *pRenderConfigPath, /* i : Renderer configuration file path */ - IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ +#ifdef CONTROL_METADATA_REVERB + const char *pRenderConfigPath, /* i : Renderer configuration file path */ +#endif + IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ ) { int32_t file_size; @@ -1520,7 +1519,7 @@ ivas_error RenderConfigReader_read( #ifdef CONTROL_METADATA_REVERB return IVAS_ERR_OK; #else - RenderConfigReader_checkValues( hRenderConfig ); + return RenderConfigReader_checkValues( hRenderConfig ); #endif } diff --git a/lib_util/render_config_reader.h b/lib_util/render_config_reader.h index e108f0297d..70b4cf42d7 100644 --- a/lib_util/render_config_reader.h +++ b/lib_util/render_config_reader.h @@ -67,8 +67,10 @@ ivas_error RenderConfigReader_checkValues( /* Reads a configuration */ ivas_error RenderConfigReader_read( RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ - const char *pRenderConfigPath, /* i : Renderer configuration file path */ - IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ +#ifdef CONTROL_METADATA_REVERB + const char *pRenderConfigPath, /* i : Renderer configuration file path */ +#endif + IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ ); /* Closes the renderer configuration reader and deallocates memory */ -- GitLab From a0678acad21784d3bdf1604e7db607912e336cd2 Mon Sep 17 00:00:00 2001 From: Jan Brouwer Date: Tue, 2 May 2023 15:10:45 +0200 Subject: [PATCH 6/6] solved some compiler and clang-format warnings --- lib_util/render_config_reader.c | 29 ++++++++++++++++------------- lib_util/render_config_reader.h | 11 +++++++---- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index 7ab86bab5f..32a2cfb0c6 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -44,7 +44,7 @@ *------------------------------------------------------------------------------------------*/ #ifndef CONTROL_METADATA_REVERB -#define MAX_LINE_LENGTH ( 1024 ) +#define MAX_LINE_LENGTH ( 1024 ) #endif #define MAX_ITEM_LENGTH ( 64 ) #ifndef CONTROL_METADATA_REVERB @@ -477,10 +477,10 @@ static ivas_error read_code_word( } /* First read minLen bits, then add one bit per iteration to find the correct value */ - for (n = 0; n < size; n++) + for ( n = 0; n < size; n++ ) { - minLen = min(minLen, pLengths[n]); - maxLen = max(maxLen, pLengths[n]); + minLen = min( minLen, pLengths[n] ); + maxLen = max( maxLen, pLengths[n] ); } for ( len = minLen; len <= maxLen; len++ ) { @@ -1255,11 +1255,14 @@ static ivas_error RenderConfigReader_readReverb( #endif ivas_error RenderConfigReader_read( - RenderConfigReader *pRenderConfigReader, /* i/o : RenderConfigReader handle */ #ifdef CONTROL_METADATA_REVERB - const char *pRenderConfigPath, /* i : Renderer configuration file path */ + RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ + const char *pRenderConfigPath, /* i : Renderer configuration file path */ + IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ +#else + RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ + IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ #endif - IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ ) { int32_t file_size; @@ -1271,12 +1274,12 @@ ivas_error RenderConfigReader_read( char item[MAX_ITEM_LENGTH + 1]; char chapter[MAX_ITEM_LENGTH + 1]; char *pValue; - int16_t nBandsInput; #ifdef CONTROL_METADATA_REVERB ivas_error error; int32_t params_length; int32_t length; #else + int16_t nBandsInput; int16_t nVectorsMissing; #endif @@ -1286,8 +1289,8 @@ ivas_error RenderConfigReader_read( pConfig_str = (char *) calloc( file_size + 1, sizeof( char ) ); pParams = (char *) calloc( file_size + 1, sizeof( char ) ); pTemp = (char *) calloc( file_size + 1, sizeof( char ) ); - nBandsInput = hRenderConfig->room_acoustics.nBands; #ifndef CONTROL_METADATA_REVERB + nBandsInput = hRenderConfig->room_acoustics.nBands; nVectorsMissing = N_REVERB_VECTORS; #endif @@ -1330,7 +1333,7 @@ ivas_error RenderConfigReader_read( while ( sscanf( pParams + params_idx, "%64[^=]=%[^;];", item, pValue ) == 2 ) { hRenderConfig->room_acoustics.override = TRUE; - params_idx += ( int32_t )( strlen( item ) + strlen( pValue ) + 2 ); + params_idx += (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); #ifdef DEBUGGING fprintf( stderr, " PARAM: %s -> %s\n", item, pValue ); #endif @@ -1422,7 +1425,7 @@ ivas_error RenderConfigReader_read( #ifdef CONTROL_METADATA_REVERB params_length = (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); #else - params_idx += ( int32_t )( strlen( item ) + strlen( pValue ) + 2 ); + params_idx += (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); #endif #ifdef DEBUGGING fprintf( stderr, " PARAM: %s -> %s\n", item, pValue ); @@ -1448,14 +1451,14 @@ ivas_error RenderConfigReader_read( if ( ( error = RenderConfigReader_readReverb( pCombinedName, pRenderConfigReader ) ) != IVAS_ERR_OK ) { - errorHandler( item, error ); + errorHandler( item, ERROR_VALUE_INVALID ); } free( pCombinedName ); } else #endif #ifdef DEBUGGING - if ( strcmp( item, "RENDERER" ) == 0 ) + if ( strcmp( item, "RENDERER" ) == 0 ) { if ( strcmp( pValue, "CREND" ) == 0 ) { diff --git a/lib_util/render_config_reader.h b/lib_util/render_config_reader.h index 70b4cf42d7..4facb5b9cd 100644 --- a/lib_util/render_config_reader.h +++ b/lib_util/render_config_reader.h @@ -60,17 +60,20 @@ ivas_error RenderConfigReader_getAcousticEnvironment( ); /* Verifies configuration parameters */ ivas_error RenderConfigReader_checkValues( - IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ + IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ ); #endif /* Reads a configuration */ ivas_error RenderConfigReader_read( - RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ #ifdef CONTROL_METADATA_REVERB - const char *pRenderConfigPath, /* i : Renderer configuration file path */ + RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ + const char *pRenderConfigPath, /* i : Renderer configuration file path */ + IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ +#else + RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ + IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ #endif - IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ ); /* Closes the renderer configuration reader and deallocates memory */ -- GitLab