Commit e2f53203 authored by Jouni Paulus's avatar Jouni Paulus
Browse files

remove the extra copy of writeData3L.m. harmonize the use of naming "parambin". update readme

parent 6fcc3f82
Loading
Loading
Loading
Loading
Loading
+67 −64
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@


#define FILE_HEADER
#define PARABIN_FILE_312
#define PARAMBIN_FILE_312

/*------------------------------------------------------------------------------------------*
 * Constants
@@ -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"

@@ -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" );
}
@@ -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;
@@ -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];
@@ -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;

@@ -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 )
        {
@@ -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 );
@@ -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

@@ -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 );
@@ -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 );
@@ -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
@@ -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;
@@ -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
@@ -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;
}
@@ -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
}
+6 −4
Original line number Diff line number Diff line
@@ -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).

@@ -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
+2 −2
Original line number Diff line number Diff line
@@ -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
+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