Loading scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c +67 −64 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ #define FILE_HEADER #define PARABIN_FILE_312 #define PARAMBIN_FILE_312 /*------------------------------------------------------------------------------------------* * Constants Loading @@ -57,8 +57,8 @@ #define DEFAULT_INPUT_ROM_FILE "ivas_binaural" #define DEFAULT_INPUT_TD_BIN_FILE "hrfilter_model" #ifdef PARABIN_FILE_312 #define DEFAULT_INPUT_PARABIN_FILE "parabin_binary_rom" #ifdef PARAMBIN_FILE_312 #define DEFAULT_INPUT_PARAMBIN_FILE "parambin_binary_rom" #endif #define DEFAULT_BIN_FILE_EXT ".bin" Loading Loading @@ -164,11 +164,14 @@ void usage_tables_format_converter( void ) "-16 : Select 16 kHz sampling frequency (no multiple values, all frequencies by default).\n" "-32 : Select 32 kHz sampling frequency (no multiple values, all frequencies by default).\n" "-48 : Select 48 kHz sampling frequency (no multiple values, all frequencies by default).\n" ); fprintf( stdout, "-input_td_file_path : Path of binary files for time-domain renderer (with separator, used as flag).\n" ); fprintf( stdout, "-input_td_file_name : Name of input td file (without extension %s, default = '%s').\n", DEFAULT_BIN_FILE_EXT, DEFAULT_INPUT_TD_BIN_FILE ); #ifdef PARABIN_FILE_312 fprintf( stdout, "-input_parabin_file_path : Path of binary files for parabin renderer (with separator, used as flag).\n" ); fprintf( stdout, "-input_parabin_file_name : Name of input parabin file (without extension %s, default = '%s').\n", DEFAULT_BIN_FILE_EXT, DEFAULT_INPUT_PARABIN_FILE ); fprintf( stdout, "-input_td_file_path : Path of binary files for time-domain renderer (WITH separator, used as flag).\n" ); fprintf( stdout, "-input_td_file_name : Name of input td file (WITHOUT extension %s, default = '%s').\n", DEFAULT_BIN_FILE_EXT, DEFAULT_INPUT_TD_BIN_FILE ); #ifdef PARAMBIN_FILE_312 fprintf( stdout, "-input_parambin_file_path : Path of binary files for parambin renderer (WITH separator, used as flag).\n" ); fprintf( stdout, "-input_parambin_file_name : Name of input parambin file (WITHOUT extension %s, default = '%s').\n", DEFAULT_BIN_FILE_EXT, DEFAULT_INPUT_PARAMBIN_FILE ); fprintf( stdout, "\n" ); fprintf( stdout, "For example :\n" "tables_format_converter(.exe) -output_file_path ./ -48 -input_td_file_path ./../../../td_object_renderer/hrtf_data/IVAS_default/ -input_td_file_name hrfilter_model_v003 -input_parambin_file_path ../../param_bin/ -input_parambin_file_name parambin_binary_rom\n"); #endif fprintf( stdout, "\n" ); } Loading @@ -185,10 +188,10 @@ char *input_td_bin_path = NULL; char *input_td_bin_file_name = NULL; char *full_in_td_path = NULL; #ifdef PARABIN_FILE_312 char *input_parabin_path = NULL; char *input_parabin_file_name = NULL; char *full_in_parabin_path = NULL; #ifdef PARAMBIN_FILE_312 char *input_parambin_path = NULL; char *input_parambin_file_name = NULL; char *full_in_parambin_path = NULL; #endif int16_t nb_freq = IVAS_NB_SAMPLERATE; Loading Loading @@ -1229,7 +1232,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) uint32_t data_size_tmp; int16_t i, j; #ifdef PARABIN_FILE_312 #ifdef PARAMBIN_FILE_312 uint8_t file_read_ok; float hrtfShCoeffsReFile[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; Loading @@ -1239,7 +1242,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) float parametricReverberationEneCorrectionsFile[CLDFB_NO_CHANNELS_MAX]; float parametricEarlyPartEneCorrectionFile[CLDFB_NO_CHANNELS_MAX]; FILE *input_parabin_file = NULL; FILE *input_parambin_file = NULL; #endif hrtf_data_size = 0; Loading Loading @@ -1270,17 +1273,17 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) hrtf_data_size += CLDFB_NO_CHANNELS_MAX * sizeof( float ); // parametricReverberationEneCorrections hrtf_data_size += CLDFB_NO_CHANNELS_MAX * sizeof( float ); // parametricEarlyPartEneCorrection #ifdef PARABIN_FILE_312 #ifdef PARAMBIN_FILE_312 file_read_ok = 0; file_read_ok = 0; input_parabin_file = fopen( full_in_parabin_path, "rb" ); if ( input_parabin_file != NULL ) input_parambin_file = fopen( full_in_parambin_path, "rb" ); if ( input_parambin_file != NULL ) { uint16_t hrtf_sh_channels, hrtf_num_bins, cldfb_no_channels_max; fseek( input_parabin_file, 0, SEEK_END ); data_size_tmp = ftell( input_parabin_file ); fseek( input_parabin_file, 0, SEEK_SET ); fseek( input_parambin_file, 0, SEEK_END ); data_size_tmp = ftell( input_parambin_file ); fseek( input_parambin_file, 0, SEEK_SET ); if ( data_size_tmp != hrtf_data_size ) { Loading @@ -1288,8 +1291,8 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) } else { fread( &hrtf_sh_channels, sizeof( uint16_t ), 1, input_parabin_file ); fread( &hrtf_num_bins, sizeof( uint16_t ), 1, input_parabin_file ); fread( &hrtf_sh_channels, sizeof( uint16_t ), 1, input_parambin_file ); fread( &hrtf_num_bins, sizeof( uint16_t ), 1, input_parambin_file ); if ( hrtf_sh_channels != HRTF_SH_CHANNELS ) { fprintf( stderr, "Warning: Inconsistent HRTF_SH_CHANNELS (expected: %d, found: %d).\n\n", HRTF_SH_CHANNELS, hrtf_sh_channels ); Loading @@ -1303,34 +1306,34 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) { for ( size_t hrtf_chnl = 0; hrtf_chnl < HRTF_SH_CHANNELS; hrtf_chnl++ ) { fread( hrtfShCoeffsReFile[bin_chnl][hrtf_chnl], sizeof( float ), HRTF_NUM_BINS, input_parabin_file ); fread( hrtfShCoeffsReFile[bin_chnl][hrtf_chnl], sizeof( float ), HRTF_NUM_BINS, input_parambin_file ); } } for ( size_t bin_chnl = 0; bin_chnl < BINAURAL_CHANNELS; bin_chnl++ ) { for ( size_t hrtf_chnl = 0; hrtf_chnl < HRTF_SH_CHANNELS; hrtf_chnl++ ) { fread( hrtfShCoeffsImFile[bin_chnl][hrtf_chnl], sizeof( float ), HRTF_NUM_BINS, input_parabin_file ); fread( hrtfShCoeffsImFile[bin_chnl][hrtf_chnl], sizeof( float ), HRTF_NUM_BINS, input_parambin_file ); } } /* reverb */ fread( &cldfb_no_channels_max, sizeof( uint16_t ), 1, input_parabin_file ); fread( &cldfb_no_channels_max, sizeof( uint16_t ), 1, input_parambin_file ); if ( cldfb_no_channels_max != CLDFB_NO_CHANNELS_MAX ) { fprintf( stderr, "Warning: Inconsistent CLDFB_NO_CHANNELS_MAX (expected: %d, found: %d).\n\n", CLDFB_NO_CHANNELS_MAX, cldfb_no_channels_max ); } fread( parametricReverberationTimesFile, sizeof( float ), CLDFB_NO_CHANNELS_MAX, input_parabin_file ); fread( parametricReverberationEneCorrectionsFile, sizeof( float ), CLDFB_NO_CHANNELS_MAX, input_parabin_file ); fread( parametricEarlyPartEneCorrectionFile, sizeof( float ), CLDFB_NO_CHANNELS_MAX, input_parabin_file ); fread( parametricReverberationTimesFile, sizeof( float ), CLDFB_NO_CHANNELS_MAX, input_parambin_file ); fread( parametricReverberationEneCorrectionsFile, sizeof( float ), CLDFB_NO_CHANNELS_MAX, input_parambin_file ); fread( parametricEarlyPartEneCorrectionFile, sizeof( float ), CLDFB_NO_CHANNELS_MAX, input_parambin_file ); file_read_ok = 1; } } else { fprintf( stderr, "Opening of parabin file %s failed. Using built-in default values.\n\n", full_in_parabin_path ); fprintf( stderr, "Opening of parambin file %s failed. Using built-in default values.\n\n", full_in_parambin_path ); } #endif Loading Loading @@ -1386,7 +1389,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { #ifdef PARABIN_FILE_312 #ifdef PARAMBIN_FILE_312 if ( file_read_ok ) { memcpy( hrtf_wptr, &hrtfShCoeffsReFile[i][j], data_size_tmp ); Loading @@ -1405,7 +1408,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { #ifdef PARABIN_FILE_312 #ifdef PARAMBIN_FILE_312 if ( file_read_ok ) { memcpy( hrtf_wptr, &hrtfShCoeffsImFile[i][j], data_size_tmp ); Loading @@ -1426,7 +1429,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) hrtf_wptr += sizeof( uint16_t ); data_size_tmp = CLDFB_NO_CHANNELS_MAX * sizeof( float ); #ifdef PARABIN_FILE_312 #ifdef PARAMBIN_FILE_312 if ( file_read_ok ) { memcpy( hrtf_wptr, &( parametricReverberationTimesFile ), data_size_tmp ); // parametricReverberationTimes Loading @@ -1445,7 +1448,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) hrtf_wptr += data_size_tmp; memcpy( hrtf_wptr, &( parametricEarlyPartEneCorrection ), data_size_tmp ); // parametricEarlyPartEneCorrection hrtf_wptr += data_size_tmp; #ifdef PARABIN_FILE_312 #ifdef PARAMBIN_FILE_312 } #endif return hrtf; Loading Loading @@ -2456,31 +2459,31 @@ int rom2bin_init( int argc, char *argv[] ) strcpy( input_td_bin_file_name, argv[i] ); i++; } #ifdef PARABIN_FILE_312 else if ( strcmp( to_upper( argv[i] ), "-INPUT_PARABIN_FILE_PATH" ) == 0 ) #ifdef PARAMBIN_FILE_312 else if ( strcmp( to_upper( argv[i] ), "-INPUT_PARAMBIN_FILE_PATH" ) == 0 ) { i++; if ( strlen( argv[i] ) == 0 ) { fprintf( stderr, "Wrong input parabin file path: %s\n\n", argv[i] ); fprintf( stderr, "Wrong input parambin file path: %s\n\n", argv[i] ); usage_tables_format_converter(); return -1; } input_parabin_path = malloc( strlen( argv[i] ) + 1 ); strcpy( input_parabin_path, argv[i] ); input_parambin_path = malloc( strlen( argv[i] ) + 1 ); strcpy( input_parambin_path, argv[i] ); i++; } else if ( strcmp( to_upper( argv[i] ), "-INPUT_PARABIN_FILE_NAME" ) == 0 ) else if ( strcmp( to_upper( argv[i] ), "-INPUT_PARAMBIN_FILE_NAME" ) == 0 ) { i++; if ( strlen( argv[i] ) == 0 ) { fprintf( stderr, "Wrong input parabin file name: %s\n\n", argv[i] ); fprintf( stderr, "Wrong input parambin file name: %s\n\n", argv[i] ); usage_tables_format_converter(); return -1; } input_parabin_file_name = malloc( strlen( argv[i] ) + 1 ); strcpy( input_parabin_file_name, argv[i] ); input_parambin_file_name = malloc( strlen( argv[i] ) + 1 ); strcpy( input_parambin_file_name, argv[i] ); i++; } #endif Loading Loading @@ -2579,44 +2582,44 @@ int rom2bin_init( int argc, char *argv[] ) return -1; } } #ifdef PARABIN_FILE_312 if ( input_parabin_path == NULL ) #ifdef PARAMBIN_FILE_312 if ( input_parambin_path == NULL ) { input_parabin_path = (char *) malloc( sizeof( char ) * ( strlen( DEFAULT_PATH ) + 1 ) ); if ( input_parabin_path ) input_parambin_path = (char *) malloc( sizeof( char ) * ( strlen( DEFAULT_PATH ) + 1 ) ); if ( input_parambin_path ) { strcpy( input_parabin_path, DEFAULT_PATH ); strcpy( input_parambin_path, DEFAULT_PATH ); } else { fprintf( stderr, "Memory issue for input parabin file path!\n\n" ); fprintf( stderr, "Memory issue for input parambin file path!\n\n" ); rom2bin_terminat(); return -1; } } if ( input_parabin_file_name == NULL ) if ( input_parambin_file_name == NULL ) { input_parabin_file_name = (char *) malloc( sizeof( char ) * ( strlen( DEFAULT_INPUT_PARABIN_FILE ) + 1 ) ); if ( input_parabin_file_name ) input_parambin_file_name = (char *) malloc( sizeof( char ) * ( strlen( DEFAULT_INPUT_PARAMBIN_FILE ) + 1 ) ); if ( input_parambin_file_name ) { strcpy( input_parabin_file_name, DEFAULT_INPUT_PARABIN_FILE ); strcpy( input_parambin_file_name, DEFAULT_INPUT_PARAMBIN_FILE ); } else { fprintf( stderr, "Memory issue for input parabin file name!\n\n" ); fprintf( stderr, "Memory issue for input parambin file name!\n\n" ); rom2bin_terminat(); return -1; } } full_in_parabin_path = (char *) malloc( sizeof( char ) * ( strlen( input_parabin_path ) + strlen( input_parabin_file_name ) + strlen( DEFAULT_BIN_FILE_EXT ) + 2 ) ); if ( full_in_parabin_path == NULL ) full_in_parambin_path = (char *) malloc( sizeof( char ) * ( strlen( input_parambin_path ) + strlen( input_parambin_file_name ) + strlen( DEFAULT_BIN_FILE_EXT ) + 2 ) ); if ( full_in_parambin_path == NULL ) { fprintf( stderr, "Memory issue for full input parabin path!\n\n" ); fprintf( stderr, "Memory issue for full input parambin path!\n\n" ); rom2bin_terminat(); return -1; } sprintf( full_in_parabin_path, "%s/%s%s", input_parabin_path, input_parabin_file_name, DEFAULT_BIN_FILE_EXT ); sprintf( full_in_parambin_path, "%s/%s%s", input_parambin_path, input_parambin_file_name, DEFAULT_BIN_FILE_EXT ); #endif return 0; } Loading Loading @@ -2657,20 +2660,20 @@ void rom2bin_terminat( void ) { free( full_in_td_path ); } #ifdef PARABIN_FILE_312 if ( input_parabin_path != NULL ) #ifdef PARAMBIN_FILE_312 if ( input_parambin_path != NULL ) { free( input_parabin_path ); free( input_parambin_path ); } if ( input_parabin_file_name != NULL ) if ( input_parambin_file_name != NULL ) { free( input_parabin_file_name ); free( input_parambin_file_name ); } if ( full_in_parabin_path != NULL ) if ( full_in_parambin_path != NULL ) { free( full_in_parabin_path ); free( full_in_parambin_path ); } #endif } Loading scripts/binauralRenderer_interface/Table_Format_Converter/tables_format_converter_readme.txt +6 −4 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ The table format converter is used to generate the file containing the binary re filters for renderers (dynamic loading of generated file using –hrtf argument). This tool is able : - to generate binary file for MIXER_CONV, MIXER_CONV_ROOM (tables conversion from ROM); - to aggregate the binary HR filter of OBJECTS_TD (to be done : FASTCONV and PARAMETRIC binaural) - to aggregate the binary HR filter of OBJECTS_TD, PARAM_BIN (to be done : FASTCONV) First, build the converter under scripts/binauralRenderer_interface/Table_Format_Converter/ in VSCode (using CMakeList). Loading @@ -53,8 +53,10 @@ Options : -16 : Select 16 kHz sampling frequency (no multiple values, all frequencies by default). -32 : Select 32 kHz sampling frequency (no multiple values, all frequencies by default). -48 : Select 48 kHz sampling frequency (no multiple values, all frequencies by default). -input_td_file_path : Path of binary files for time-domain renderer (with separator, used as flag). -input_td_file_name : Name of input td file (without extension .bin, default = 'hrfilter_model'). -input_td_file_path : Path of binary files for time-domain renderer (WITH separator, used as flag). -input_td_file_name : Name of input td file (WITHOUT extension .bin, default = 'hrfilter_model'). -input_parambin_file_path : Path of binary files for parambin renderer (WITH separator, used as flag). -input_parambin_file_name : Name of input parambin file (WITHOUT extension .bin, default = 'parambin_binary_rom'). For example : tables_format_converter(.exe) -output_file_path './' -48 -input_td_file_path './../../../td_object_renderer/hrtf_data/IVAS_default/' -input_td_file_name 'hrfilter_model_v003' No newline at end of file tables_format_converter(.exe) -output_file_path ./ -48 -input_td_file_path ./../../../td_object_renderer/hrtf_data/IVAS_default/ -input_td_file_name hrfilter_model_v003 -input_parambin_file_path ../../param_bin/ -input_parambin_file_name parambin_binary_rom scripts/binauralRenderer_interface/param_bin/generate_tables_for_parametric_binauralizer.m +2 −2 Original line number Diff line number Diff line Loading @@ -133,6 +133,6 @@ end %% if writeBinaryOutput write_parametric_binauralizer_binary_data('parabin_binary_rom.bin', SHhrtf, T60, lateEnes, earlyEnes); %save('parabin_binary_rom.mat', 'SHhrtf', 'T60', 'lateEnes', 'earlyEnes'); % debug saving write_parametric_binauralizer_binary_data('parambin_binary_rom.bin', SHhrtf, T60, lateEnes, earlyEnes); %save('parambin_binary_rom.mat', 'SHhrtf', 'T60', 'lateEnes', 'earlyEnes'); % debug saving end scripts/binauralRenderer_interface/param_bin/writeData3L.mdeleted 100644 → 0 +0 −54 Original line number Diff line number Diff line function writeData3L(fid_source, startstring, data) indices=size(data); indent = 4; fprintf(fid_source,startstring); fprintf(fid_source,'=\n{'); for A = 1:indices(1) fprintf(fid_source,'\n'); fprintf(fid_source,repmat(' ',1,indent)); fprintf(fid_source,'{'); for B = 1:indices(2) fprintf(fid_source,'\n'); fprintf(fid_source,repmat(' ',1,indent*2)); fprintf(fid_source,'{'); if( indices(3) > 10 ) fprintf(fid_source,'\n'); fprintf(fid_source,repmat(' ',1,indent*3)); end counter=1; for C = 1:indices(3) fprintf(fid_source,'%+ff',real(data(A,B,C))); if C < indices(3) if mod(counter,10) == 0 fprintf(fid_source,','); else fprintf(fid_source,', '); end end if mod(counter,10) == 0 && counter ~= indices(3) fprintf(fid_source,'\n'); fprintf(fid_source,repmat(' ',1,indent*3)); end counter = counter+1; end if( indices(3) > 10 ) fprintf(fid_source,'\n'); fprintf(fid_source,repmat(' ',1,indent*2)); end fprintf(fid_source,'}'); if B < indices(2) fprintf(fid_source,','); end end fprintf(fid_source,'\n'); fprintf(fid_source,repmat(' ',1,indent)); fprintf(fid_source,'}'); if A < indices(1) fprintf(fid_source,','); end end fprintf(fid_source,'\n};\n\n'); end % function No newline at end of file Loading
scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c +67 −64 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ #define FILE_HEADER #define PARABIN_FILE_312 #define PARAMBIN_FILE_312 /*------------------------------------------------------------------------------------------* * Constants Loading @@ -57,8 +57,8 @@ #define DEFAULT_INPUT_ROM_FILE "ivas_binaural" #define DEFAULT_INPUT_TD_BIN_FILE "hrfilter_model" #ifdef PARABIN_FILE_312 #define DEFAULT_INPUT_PARABIN_FILE "parabin_binary_rom" #ifdef PARAMBIN_FILE_312 #define DEFAULT_INPUT_PARAMBIN_FILE "parambin_binary_rom" #endif #define DEFAULT_BIN_FILE_EXT ".bin" Loading Loading @@ -164,11 +164,14 @@ void usage_tables_format_converter( void ) "-16 : Select 16 kHz sampling frequency (no multiple values, all frequencies by default).\n" "-32 : Select 32 kHz sampling frequency (no multiple values, all frequencies by default).\n" "-48 : Select 48 kHz sampling frequency (no multiple values, all frequencies by default).\n" ); fprintf( stdout, "-input_td_file_path : Path of binary files for time-domain renderer (with separator, used as flag).\n" ); fprintf( stdout, "-input_td_file_name : Name of input td file (without extension %s, default = '%s').\n", DEFAULT_BIN_FILE_EXT, DEFAULT_INPUT_TD_BIN_FILE ); #ifdef PARABIN_FILE_312 fprintf( stdout, "-input_parabin_file_path : Path of binary files for parabin renderer (with separator, used as flag).\n" ); fprintf( stdout, "-input_parabin_file_name : Name of input parabin file (without extension %s, default = '%s').\n", DEFAULT_BIN_FILE_EXT, DEFAULT_INPUT_PARABIN_FILE ); fprintf( stdout, "-input_td_file_path : Path of binary files for time-domain renderer (WITH separator, used as flag).\n" ); fprintf( stdout, "-input_td_file_name : Name of input td file (WITHOUT extension %s, default = '%s').\n", DEFAULT_BIN_FILE_EXT, DEFAULT_INPUT_TD_BIN_FILE ); #ifdef PARAMBIN_FILE_312 fprintf( stdout, "-input_parambin_file_path : Path of binary files for parambin renderer (WITH separator, used as flag).\n" ); fprintf( stdout, "-input_parambin_file_name : Name of input parambin file (WITHOUT extension %s, default = '%s').\n", DEFAULT_BIN_FILE_EXT, DEFAULT_INPUT_PARAMBIN_FILE ); fprintf( stdout, "\n" ); fprintf( stdout, "For example :\n" "tables_format_converter(.exe) -output_file_path ./ -48 -input_td_file_path ./../../../td_object_renderer/hrtf_data/IVAS_default/ -input_td_file_name hrfilter_model_v003 -input_parambin_file_path ../../param_bin/ -input_parambin_file_name parambin_binary_rom\n"); #endif fprintf( stdout, "\n" ); } Loading @@ -185,10 +188,10 @@ char *input_td_bin_path = NULL; char *input_td_bin_file_name = NULL; char *full_in_td_path = NULL; #ifdef PARABIN_FILE_312 char *input_parabin_path = NULL; char *input_parabin_file_name = NULL; char *full_in_parabin_path = NULL; #ifdef PARAMBIN_FILE_312 char *input_parambin_path = NULL; char *input_parambin_file_name = NULL; char *full_in_parambin_path = NULL; #endif int16_t nb_freq = IVAS_NB_SAMPLERATE; Loading Loading @@ -1229,7 +1232,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) uint32_t data_size_tmp; int16_t i, j; #ifdef PARABIN_FILE_312 #ifdef PARAMBIN_FILE_312 uint8_t file_read_ok; float hrtfShCoeffsReFile[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; Loading @@ -1239,7 +1242,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) float parametricReverberationEneCorrectionsFile[CLDFB_NO_CHANNELS_MAX]; float parametricEarlyPartEneCorrectionFile[CLDFB_NO_CHANNELS_MAX]; FILE *input_parabin_file = NULL; FILE *input_parambin_file = NULL; #endif hrtf_data_size = 0; Loading Loading @@ -1270,17 +1273,17 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) hrtf_data_size += CLDFB_NO_CHANNELS_MAX * sizeof( float ); // parametricReverberationEneCorrections hrtf_data_size += CLDFB_NO_CHANNELS_MAX * sizeof( float ); // parametricEarlyPartEneCorrection #ifdef PARABIN_FILE_312 #ifdef PARAMBIN_FILE_312 file_read_ok = 0; file_read_ok = 0; input_parabin_file = fopen( full_in_parabin_path, "rb" ); if ( input_parabin_file != NULL ) input_parambin_file = fopen( full_in_parambin_path, "rb" ); if ( input_parambin_file != NULL ) { uint16_t hrtf_sh_channels, hrtf_num_bins, cldfb_no_channels_max; fseek( input_parabin_file, 0, SEEK_END ); data_size_tmp = ftell( input_parabin_file ); fseek( input_parabin_file, 0, SEEK_SET ); fseek( input_parambin_file, 0, SEEK_END ); data_size_tmp = ftell( input_parambin_file ); fseek( input_parambin_file, 0, SEEK_SET ); if ( data_size_tmp != hrtf_data_size ) { Loading @@ -1288,8 +1291,8 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) } else { fread( &hrtf_sh_channels, sizeof( uint16_t ), 1, input_parabin_file ); fread( &hrtf_num_bins, sizeof( uint16_t ), 1, input_parabin_file ); fread( &hrtf_sh_channels, sizeof( uint16_t ), 1, input_parambin_file ); fread( &hrtf_num_bins, sizeof( uint16_t ), 1, input_parambin_file ); if ( hrtf_sh_channels != HRTF_SH_CHANNELS ) { fprintf( stderr, "Warning: Inconsistent HRTF_SH_CHANNELS (expected: %d, found: %d).\n\n", HRTF_SH_CHANNELS, hrtf_sh_channels ); Loading @@ -1303,34 +1306,34 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) { for ( size_t hrtf_chnl = 0; hrtf_chnl < HRTF_SH_CHANNELS; hrtf_chnl++ ) { fread( hrtfShCoeffsReFile[bin_chnl][hrtf_chnl], sizeof( float ), HRTF_NUM_BINS, input_parabin_file ); fread( hrtfShCoeffsReFile[bin_chnl][hrtf_chnl], sizeof( float ), HRTF_NUM_BINS, input_parambin_file ); } } for ( size_t bin_chnl = 0; bin_chnl < BINAURAL_CHANNELS; bin_chnl++ ) { for ( size_t hrtf_chnl = 0; hrtf_chnl < HRTF_SH_CHANNELS; hrtf_chnl++ ) { fread( hrtfShCoeffsImFile[bin_chnl][hrtf_chnl], sizeof( float ), HRTF_NUM_BINS, input_parabin_file ); fread( hrtfShCoeffsImFile[bin_chnl][hrtf_chnl], sizeof( float ), HRTF_NUM_BINS, input_parambin_file ); } } /* reverb */ fread( &cldfb_no_channels_max, sizeof( uint16_t ), 1, input_parabin_file ); fread( &cldfb_no_channels_max, sizeof( uint16_t ), 1, input_parambin_file ); if ( cldfb_no_channels_max != CLDFB_NO_CHANNELS_MAX ) { fprintf( stderr, "Warning: Inconsistent CLDFB_NO_CHANNELS_MAX (expected: %d, found: %d).\n\n", CLDFB_NO_CHANNELS_MAX, cldfb_no_channels_max ); } fread( parametricReverberationTimesFile, sizeof( float ), CLDFB_NO_CHANNELS_MAX, input_parabin_file ); fread( parametricReverberationEneCorrectionsFile, sizeof( float ), CLDFB_NO_CHANNELS_MAX, input_parabin_file ); fread( parametricEarlyPartEneCorrectionFile, sizeof( float ), CLDFB_NO_CHANNELS_MAX, input_parabin_file ); fread( parametricReverberationTimesFile, sizeof( float ), CLDFB_NO_CHANNELS_MAX, input_parambin_file ); fread( parametricReverberationEneCorrectionsFile, sizeof( float ), CLDFB_NO_CHANNELS_MAX, input_parambin_file ); fread( parametricEarlyPartEneCorrectionFile, sizeof( float ), CLDFB_NO_CHANNELS_MAX, input_parambin_file ); file_read_ok = 1; } } else { fprintf( stderr, "Opening of parabin file %s failed. Using built-in default values.\n\n", full_in_parabin_path ); fprintf( stderr, "Opening of parambin file %s failed. Using built-in default values.\n\n", full_in_parambin_path ); } #endif Loading Loading @@ -1386,7 +1389,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { #ifdef PARABIN_FILE_312 #ifdef PARAMBIN_FILE_312 if ( file_read_ok ) { memcpy( hrtf_wptr, &hrtfShCoeffsReFile[i][j], data_size_tmp ); Loading @@ -1405,7 +1408,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { #ifdef PARABIN_FILE_312 #ifdef PARAMBIN_FILE_312 if ( file_read_ok ) { memcpy( hrtf_wptr, &hrtfShCoeffsImFile[i][j], data_size_tmp ); Loading @@ -1426,7 +1429,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) hrtf_wptr += sizeof( uint16_t ); data_size_tmp = CLDFB_NO_CHANNELS_MAX * sizeof( float ); #ifdef PARABIN_FILE_312 #ifdef PARAMBIN_FILE_312 if ( file_read_ok ) { memcpy( hrtf_wptr, &( parametricReverberationTimesFile ), data_size_tmp ); // parametricReverberationTimes Loading @@ -1445,7 +1448,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) hrtf_wptr += data_size_tmp; memcpy( hrtf_wptr, &( parametricEarlyPartEneCorrection ), data_size_tmp ); // parametricEarlyPartEneCorrection hrtf_wptr += data_size_tmp; #ifdef PARABIN_FILE_312 #ifdef PARAMBIN_FILE_312 } #endif return hrtf; Loading Loading @@ -2456,31 +2459,31 @@ int rom2bin_init( int argc, char *argv[] ) strcpy( input_td_bin_file_name, argv[i] ); i++; } #ifdef PARABIN_FILE_312 else if ( strcmp( to_upper( argv[i] ), "-INPUT_PARABIN_FILE_PATH" ) == 0 ) #ifdef PARAMBIN_FILE_312 else if ( strcmp( to_upper( argv[i] ), "-INPUT_PARAMBIN_FILE_PATH" ) == 0 ) { i++; if ( strlen( argv[i] ) == 0 ) { fprintf( stderr, "Wrong input parabin file path: %s\n\n", argv[i] ); fprintf( stderr, "Wrong input parambin file path: %s\n\n", argv[i] ); usage_tables_format_converter(); return -1; } input_parabin_path = malloc( strlen( argv[i] ) + 1 ); strcpy( input_parabin_path, argv[i] ); input_parambin_path = malloc( strlen( argv[i] ) + 1 ); strcpy( input_parambin_path, argv[i] ); i++; } else if ( strcmp( to_upper( argv[i] ), "-INPUT_PARABIN_FILE_NAME" ) == 0 ) else if ( strcmp( to_upper( argv[i] ), "-INPUT_PARAMBIN_FILE_NAME" ) == 0 ) { i++; if ( strlen( argv[i] ) == 0 ) { fprintf( stderr, "Wrong input parabin file name: %s\n\n", argv[i] ); fprintf( stderr, "Wrong input parambin file name: %s\n\n", argv[i] ); usage_tables_format_converter(); return -1; } input_parabin_file_name = malloc( strlen( argv[i] ) + 1 ); strcpy( input_parabin_file_name, argv[i] ); input_parambin_file_name = malloc( strlen( argv[i] ) + 1 ); strcpy( input_parambin_file_name, argv[i] ); i++; } #endif Loading Loading @@ -2579,44 +2582,44 @@ int rom2bin_init( int argc, char *argv[] ) return -1; } } #ifdef PARABIN_FILE_312 if ( input_parabin_path == NULL ) #ifdef PARAMBIN_FILE_312 if ( input_parambin_path == NULL ) { input_parabin_path = (char *) malloc( sizeof( char ) * ( strlen( DEFAULT_PATH ) + 1 ) ); if ( input_parabin_path ) input_parambin_path = (char *) malloc( sizeof( char ) * ( strlen( DEFAULT_PATH ) + 1 ) ); if ( input_parambin_path ) { strcpy( input_parabin_path, DEFAULT_PATH ); strcpy( input_parambin_path, DEFAULT_PATH ); } else { fprintf( stderr, "Memory issue for input parabin file path!\n\n" ); fprintf( stderr, "Memory issue for input parambin file path!\n\n" ); rom2bin_terminat(); return -1; } } if ( input_parabin_file_name == NULL ) if ( input_parambin_file_name == NULL ) { input_parabin_file_name = (char *) malloc( sizeof( char ) * ( strlen( DEFAULT_INPUT_PARABIN_FILE ) + 1 ) ); if ( input_parabin_file_name ) input_parambin_file_name = (char *) malloc( sizeof( char ) * ( strlen( DEFAULT_INPUT_PARAMBIN_FILE ) + 1 ) ); if ( input_parambin_file_name ) { strcpy( input_parabin_file_name, DEFAULT_INPUT_PARABIN_FILE ); strcpy( input_parambin_file_name, DEFAULT_INPUT_PARAMBIN_FILE ); } else { fprintf( stderr, "Memory issue for input parabin file name!\n\n" ); fprintf( stderr, "Memory issue for input parambin file name!\n\n" ); rom2bin_terminat(); return -1; } } full_in_parabin_path = (char *) malloc( sizeof( char ) * ( strlen( input_parabin_path ) + strlen( input_parabin_file_name ) + strlen( DEFAULT_BIN_FILE_EXT ) + 2 ) ); if ( full_in_parabin_path == NULL ) full_in_parambin_path = (char *) malloc( sizeof( char ) * ( strlen( input_parambin_path ) + strlen( input_parambin_file_name ) + strlen( DEFAULT_BIN_FILE_EXT ) + 2 ) ); if ( full_in_parambin_path == NULL ) { fprintf( stderr, "Memory issue for full input parabin path!\n\n" ); fprintf( stderr, "Memory issue for full input parambin path!\n\n" ); rom2bin_terminat(); return -1; } sprintf( full_in_parabin_path, "%s/%s%s", input_parabin_path, input_parabin_file_name, DEFAULT_BIN_FILE_EXT ); sprintf( full_in_parambin_path, "%s/%s%s", input_parambin_path, input_parambin_file_name, DEFAULT_BIN_FILE_EXT ); #endif return 0; } Loading Loading @@ -2657,20 +2660,20 @@ void rom2bin_terminat( void ) { free( full_in_td_path ); } #ifdef PARABIN_FILE_312 if ( input_parabin_path != NULL ) #ifdef PARAMBIN_FILE_312 if ( input_parambin_path != NULL ) { free( input_parabin_path ); free( input_parambin_path ); } if ( input_parabin_file_name != NULL ) if ( input_parambin_file_name != NULL ) { free( input_parabin_file_name ); free( input_parambin_file_name ); } if ( full_in_parabin_path != NULL ) if ( full_in_parambin_path != NULL ) { free( full_in_parabin_path ); free( full_in_parambin_path ); } #endif } Loading
scripts/binauralRenderer_interface/Table_Format_Converter/tables_format_converter_readme.txt +6 −4 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ The table format converter is used to generate the file containing the binary re filters for renderers (dynamic loading of generated file using –hrtf argument). This tool is able : - to generate binary file for MIXER_CONV, MIXER_CONV_ROOM (tables conversion from ROM); - to aggregate the binary HR filter of OBJECTS_TD (to be done : FASTCONV and PARAMETRIC binaural) - to aggregate the binary HR filter of OBJECTS_TD, PARAM_BIN (to be done : FASTCONV) First, build the converter under scripts/binauralRenderer_interface/Table_Format_Converter/ in VSCode (using CMakeList). Loading @@ -53,8 +53,10 @@ Options : -16 : Select 16 kHz sampling frequency (no multiple values, all frequencies by default). -32 : Select 32 kHz sampling frequency (no multiple values, all frequencies by default). -48 : Select 48 kHz sampling frequency (no multiple values, all frequencies by default). -input_td_file_path : Path of binary files for time-domain renderer (with separator, used as flag). -input_td_file_name : Name of input td file (without extension .bin, default = 'hrfilter_model'). -input_td_file_path : Path of binary files for time-domain renderer (WITH separator, used as flag). -input_td_file_name : Name of input td file (WITHOUT extension .bin, default = 'hrfilter_model'). -input_parambin_file_path : Path of binary files for parambin renderer (WITH separator, used as flag). -input_parambin_file_name : Name of input parambin file (WITHOUT extension .bin, default = 'parambin_binary_rom'). For example : tables_format_converter(.exe) -output_file_path './' -48 -input_td_file_path './../../../td_object_renderer/hrtf_data/IVAS_default/' -input_td_file_name 'hrfilter_model_v003' No newline at end of file tables_format_converter(.exe) -output_file_path ./ -48 -input_td_file_path ./../../../td_object_renderer/hrtf_data/IVAS_default/ -input_td_file_name hrfilter_model_v003 -input_parambin_file_path ../../param_bin/ -input_parambin_file_name parambin_binary_rom
scripts/binauralRenderer_interface/param_bin/generate_tables_for_parametric_binauralizer.m +2 −2 Original line number Diff line number Diff line Loading @@ -133,6 +133,6 @@ end %% if writeBinaryOutput write_parametric_binauralizer_binary_data('parabin_binary_rom.bin', SHhrtf, T60, lateEnes, earlyEnes); %save('parabin_binary_rom.mat', 'SHhrtf', 'T60', 'lateEnes', 'earlyEnes'); % debug saving write_parametric_binauralizer_binary_data('parambin_binary_rom.bin', SHhrtf, T60, lateEnes, earlyEnes); %save('parambin_binary_rom.mat', 'SHhrtf', 'T60', 'lateEnes', 'earlyEnes'); % debug saving end
scripts/binauralRenderer_interface/param_bin/writeData3L.mdeleted 100644 → 0 +0 −54 Original line number Diff line number Diff line function writeData3L(fid_source, startstring, data) indices=size(data); indent = 4; fprintf(fid_source,startstring); fprintf(fid_source,'=\n{'); for A = 1:indices(1) fprintf(fid_source,'\n'); fprintf(fid_source,repmat(' ',1,indent)); fprintf(fid_source,'{'); for B = 1:indices(2) fprintf(fid_source,'\n'); fprintf(fid_source,repmat(' ',1,indent*2)); fprintf(fid_source,'{'); if( indices(3) > 10 ) fprintf(fid_source,'\n'); fprintf(fid_source,repmat(' ',1,indent*3)); end counter=1; for C = 1:indices(3) fprintf(fid_source,'%+ff',real(data(A,B,C))); if C < indices(3) if mod(counter,10) == 0 fprintf(fid_source,','); else fprintf(fid_source,', '); end end if mod(counter,10) == 0 && counter ~= indices(3) fprintf(fid_source,'\n'); fprintf(fid_source,repmat(' ',1,indent*3)); end counter = counter+1; end if( indices(3) > 10 ) fprintf(fid_source,'\n'); fprintf(fid_source,repmat(' ',1,indent*2)); end fprintf(fid_source,'}'); if B < indices(2) fprintf(fid_source,','); end end fprintf(fid_source,'\n'); fprintf(fid_source,repmat(' ',1,indent)); fprintf(fid_source,'}'); if A < indices(1) fprintf(fid_source,','); end end fprintf(fid_source,'\n};\n\n'); end % function No newline at end of file