Loading scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c +46 −38 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ #include "ivas_stat_dec.h" #include "hrtf_file_reader.h" #include "ivas_rom_rend.h" #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT #include <math.h> #endif Loading @@ -60,7 +60,7 @@ #define DEFAULT_BIN_FILE_EXT ".bin" #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT #define DEFAULT_BIN_FILE_FX_FLAG 0x1000 #endif Loading @@ -73,7 +73,7 @@ const HRTF_READER_RENDERER_TYPE rend_types[IVAS_NB_RENDERER_TYPE] = { HRTF_READER_RENDERER_BINAURAL_FASTCONV, HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM, HRTF_READER_RENDERER_BINAURAL_PARAMETRIC, #ifndef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifndef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM, #endif HRTF_READER_RENDERER_BINAURAL_MIXER_CONV, Loading Loading @@ -148,7 +148,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD int16_t get_crend_hrtf_tables( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG input_cfg, int32_t frequency, crend_hrtf_tables_pointers *hrtf_table_ptrs /*OUT*/, crend_hrtf_tables_dimensions *hrtf_table_dims /*OUT*/ ); int32_t compute_crend_hrtf_data_size( crend_hrtf_tables_pointers *hrtf_table_ptrs, crend_hrtf_tables_dimensions *hrtf_table_dims ); #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int32_t compute_crend_hrtf_data_size_fx( crend_hrtf_tables_pointers *hrtf_table_ptrs, crend_hrtf_tables_dimensions *hrtf_table_dims ); #endif /*---------------------------------------------------------------------* Loading Loading @@ -625,7 +625,7 @@ char *create_hrtf_crend( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD { int32_t mixerconv_hrtf_header_size, mixerconv_hrtf_data_size; char *mixerconv_hrtf = NULL, *mixerconv_hrtf_wptr; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int16_t is_fx = 0; #endif Loading Loading @@ -655,7 +655,7 @@ char *create_hrtf_crend( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD { configuration_name = "HOA3_HRIR"; } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( strstr( input_mixerconv_bin_hrir_file_name, "_fx" ) ) { input_mixerconv_bin_hrir_file_name[strlen( input_mixerconv_bin_hrir_file_name ) - 3] = '\0'; Loading Loading @@ -704,7 +704,7 @@ char *create_hrtf_crend( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD { return NULL; } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( strstr( input_mixerconv_bin_brir_file_name, "_fx" ) ) { input_mixerconv_bin_brir_file_name[strlen( input_mixerconv_bin_brir_file_name ) - 3] = '\0'; Loading Loading @@ -768,7 +768,7 @@ char *create_hrtf_crend( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD // Get the HRTF header // Renderer type #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( is_fx == 1 ) { *( (int32_t *) ( mixerconv_hrtf_wptr ) ) = rend_type + DEFAULT_BIN_FILE_FX_FLAG; Loading Loading @@ -827,7 +827,7 @@ char *create_hrtf_tdrend( int32_t frequency, int32_t *hrtf_size ) FILE *input_td_bin_file = NULL; int32_t td_hrtf_header_size, td_hrtf_data_size; char *td_hrtf = NULL, *td_hrtf_wptr, *full_in_td_path = NULL; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int16_t is_fx = 0; #endif Loading @@ -851,7 +851,7 @@ char *create_hrtf_tdrend( int32_t frequency, int32_t *hrtf_size ) #endif input_td_bin_file = fopen( full_in_td_path, "rb" ); #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( strstr( input_td_bin_file_name, "_fx" ) ) { is_fx = 1; Loading Loading @@ -891,7 +891,7 @@ char *create_hrtf_tdrend( int32_t frequency, int32_t *hrtf_size ) // Get the HRTF header // Renderer type #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( is_fx == 1 ) { *( (int32_t *) ( td_hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_OBJECTS_TD + DEFAULT_BIN_FILE_FX_FLAG; Loading Loading @@ -957,12 +957,12 @@ char *create_reverb( int32_t frequency, int32_t *hrtf_size ) FILE *input_reverb_file = NULL; int32_t reverb_header_size, reverb_data_size; char *reverb = NULL, *reverb_wptr, *full_in_reverb_path = NULL; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int16_t is_fx = 0; #endif *hrtf_size = 0; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( strstr( input_reverb_file_name, "_fx" ) ) { input_reverb_file_name[strlen( input_reverb_file_name ) - 3] = '\0'; Loading Loading @@ -1042,7 +1042,7 @@ char *create_reverb( int32_t frequency, int32_t *hrtf_size ) // Get the HRTF header // Renderer type #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( is_fx == 1 ) { *( (int32_t *) ( reverb_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_REVERB_ALL + DEFAULT_BIN_FILE_FX_FLAG; Loading Loading @@ -1110,7 +1110,7 @@ char *create_hrtf_fastconv( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_ int32_t hrtf_total_file_size = 0, hrtf_data_size = 0; int16_t nbHrft = 0, ind; ivas_hrtfs_header_t hrtf_header; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int16_t is_fx = 0; #endif Loading Loading @@ -1165,7 +1165,7 @@ char *create_hrtf_fastconv( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_ // Get the HRTF raw data #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( strstr( input_fastconv_bin_file_name, "_fx" ) ) { is_fx = 1; Loading Loading @@ -1303,7 +1303,7 @@ char *create_hrtf_fastconv( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_ // Get the HRTF header // Renderer type #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( is_fx == 1 ) { *( (int32_t *) ( fastconv_hrtf_wptr ) ) = rend_type + DEFAULT_BIN_FILE_FX_FLAG; Loading Loading @@ -1362,13 +1362,13 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) char *hrtf = NULL, *hrtf_wptr, *full_in_param_bin_path = NULL; uint32_t hrtf_data_size; #ifndef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifndef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int16_t i, j; uint32_t data_size_tmp; #endif FILE *input_param_bin_file = NULL; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int16_t is_fx = 0; if ( strstr( input_param_bin_file_name, "_fx" ) ) { Loading Loading @@ -1400,7 +1400,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) hrtf_data_size = 0; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT input_param_bin_file = fopen( full_in_param_bin_path, "rb" ); Loading @@ -1425,7 +1425,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) memset( hrtf, 0x00, *hrtf_size ); hrtf_wptr = hrtf; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( is_fx == 1 ) { *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC + DEFAULT_BIN_FILE_FX_FLAG; Loading Loading @@ -1586,7 +1586,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) hrtf_wptr = hrtf; // Renderer type - we use only parametric room type here to cover both cases #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC; #else *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM; Loading Loading @@ -2088,7 +2088,7 @@ int16_t get_crend_hrtf_tables( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INP return result; } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT /*---------------------------------------------------------------------* * compute_crend_hrtf_data_size_fx() * Loading Loading @@ -2125,7 +2125,7 @@ int32_t compute_crend_hrtf_data_size_fx( crend_hrtf_tables_pointers *hrtf_table_ hrtf_data_size += sizeof( uint16_t ); // index_frequency_max_diffuse hrtf_data_size += sizeof( Word16 ); // inv_diffuse_weight factor Q hrtf_data_size += hrtf_table_dims->max_num_ir * BINAURAL_CHANNELS * sizeof( Word16 ); // inv_diffuse_weight #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration #else hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration Loading @@ -2139,12 +2139,16 @@ int32_t compute_crend_hrtf_data_size_fx( crend_hrtf_tables_pointers *hrtf_table_ { for ( iIter = 0; iIter < hrtf_table_ptrs->num_iterations[iIR * BINAURAL_CHANNELS + iChan]; iIter++ ) { #ifdef TEST_FULL_16 hrtf_data_size += 2 * hrtf_table_ptrs->pIndex_frequency_max[iIndex++] * sizeof( Word16 ); // 2* : re & im #else hrtf_data_size += 2 * hrtf_table_ptrs->pIndex_frequency_max[iIndex++] * sizeof( Word32 ); // 2* : re & im #endif } } } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration_diff #else hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration_diff Loading @@ -2156,7 +2160,11 @@ int32_t compute_crend_hrtf_data_size_fx( crend_hrtf_tables_pointers *hrtf_table_ { for ( iIter = 0; iIter < hrtf_table_ptrs->num_iterations_diffuse[iChan]; iIter++ ) { #ifdef TEST_FULL_16 hrtf_data_size += 2 * hrtf_table_ptrs->pIndex_frequency_max_diffuse[iIndex++] * sizeof( Word16 ); // 2* : re & im #else hrtf_data_size += 2 * hrtf_table_ptrs->pIndex_frequency_max_diffuse[iIndex++] * sizeof( Word32 ); // 2* : re & im #endif } } } Loading Loading @@ -2198,7 +2206,7 @@ int32_t compute_crend_hrtf_data_size( crend_hrtf_tables_pointers *hrtf_table_ptr hrtf_data_size += sizeof( uint16_t ); // index_frequency_max_diffuse hrtf_data_size += hrtf_table_dims->max_num_ir * BINAURAL_CHANNELS * sizeof( float ); // inv_diffuse_weight #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration #else hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration Loading @@ -2215,7 +2223,7 @@ int32_t compute_crend_hrtf_data_size( crend_hrtf_tables_pointers *hrtf_table_ptr } } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration_diff #else hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration_diff Loading Loading @@ -2366,7 +2374,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD if ( rend_type == HRTF_READER_RENDERER_BINAURAL_OBJECTS_TD || rend_type == HRTF_READER_RENDERER_BINAURAL_REVERB_ALL || rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV || rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM || #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT rend_type == HRTF_READER_RENDERER_BINAURAL_PARAMETRIC ) #else rend_type == HRTF_READER_RENDERER_BINAURAL_PARAMETRIC || rend_type == HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM ) Loading Loading @@ -2394,7 +2402,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD return -1; } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( rend_type & DEFAULT_BIN_FILE_FX_FLAG ) hrtf_data_size = compute_crend_hrtf_data_size_fx( &tabs_ptrs, &tabs_dims ); else Loading @@ -2413,7 +2421,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD hrtf_data_in_rptr = hrtf_data_in; // latency_s #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( ( *( tabs_ptrs.latency_s ) - ( *( (Word32 *) ( hrtf_data_in_rptr ) ) ) * powf( 2.f, -31.f ) ) > 1e-9f ) #else if ( ( *( tabs_ptrs.latency_s ) - *( (float *) ( hrtf_data_in_rptr ) ) ) > 1e-9f ) Loading @@ -2422,7 +2430,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD fprintf( stderr, "check_hrtf_data of binary file failed: bad latency_s!\n\n" ); return -1; } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT hrtf_data_in_rptr += sizeof( Word32 ); #else hrtf_data_in_rptr += sizeof( float ); Loading Loading @@ -2511,7 +2519,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD hrtf_data_in_rptr += sizeof( uint16_t ); // inv_diffuse_weight #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT ctrl_size = tabs_dims.max_num_ir * BINAURAL_CHANNELS * sizeof( Word16 ); #else ctrl_size = tabs_dims.max_num_ir * BINAURAL_CHANNELS * sizeof( float ); Loading @@ -2532,7 +2540,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD hrtf_data_in_rptr += ctrl_size; // max_total_num_fsamp_per_iteration #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( tabs_dims.max_total_num_fsamp_per_iteration != *( (uint32_t *) ( hrtf_data_in_rptr ) ) ) { fprintf( stderr, "check_hrtf_data of binary file failed: bad max_total_num_fsamp_per_iteration!\n\n" ); Loading @@ -2556,7 +2564,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD coeff_rptr = tabs_ptrs.coeff_re + ( iIR * BINAURAL_CHANNELS + iChan ) * tabs_dims.max_total_num_fsamp_per_iteration; for ( iIter = 0; iIter < tabs_ptrs.num_iterations[iIR * BINAURAL_CHANNELS + iChan]; iIter++ ) { #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT ctrl_size = tabs_ptrs.pIndex_frequency_max[iIndex] * sizeof( Word32 ); #else ctrl_size = tabs_ptrs.pIndex_frequency_max[iIndex] * sizeof( float ); Loading Loading @@ -2589,7 +2597,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD coeff_rptr = tabs_ptrs.coeff_im + ( iIR * BINAURAL_CHANNELS + iChan ) * tabs_dims.max_total_num_fsamp_per_iteration; for ( iIter = 0; iIter < tabs_ptrs.num_iterations[iIR * BINAURAL_CHANNELS + iChan]; iIter++ ) { #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT ctrl_size = tabs_ptrs.pIndex_frequency_max[iIndex] * sizeof( Word32 ); #else ctrl_size = tabs_ptrs.pIndex_frequency_max[iIndex] * sizeof( float ); Loading @@ -2614,7 +2622,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD } // max_total_num_fsamp_per_iteration_diff #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( tabs_dims.max_total_num_fsamp_per_iteration_diff != *( (uint32_t *) ( hrtf_data_in_rptr ) ) ) { fprintf( stderr, "check_hrtf_data of binary file failed: bad max_total_num_fsamp_per_iteration_diff!\n\n" ); Loading @@ -2638,7 +2646,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD coeff_rptr = tabs_ptrs.coeff_diffuse_re + iChan * tabs_dims.max_total_num_fsamp_per_iteration_diff; for ( iIter = 0; iIter < tabs_ptrs.num_iterations_diffuse[iChan]; iIter++ ) { #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT ctrl_size = tabs_ptrs.pIndex_frequency_max_diffuse[iIndex] * sizeof( Word32 ); #else ctrl_size = tabs_ptrs.pIndex_frequency_max_diffuse[iIndex] * sizeof( float ); Loading Loading @@ -2667,7 +2675,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD coeff_rptr = tabs_ptrs.coeff_diffuse_im + iChan * tabs_dims.max_total_num_fsamp_per_iteration_diff; for ( iIter = 0; iIter < tabs_ptrs.num_iterations_diffuse[iChan]; iIter++ ) { #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT ctrl_size = tabs_ptrs.pIndex_frequency_max_diffuse[iIndex] * sizeof( Word32 ); #else ctrl_size = tabs_ptrs.pIndex_frequency_max_diffuse[iIndex] * sizeof( float ); Loading Loading
scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c +46 −38 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ #include "ivas_stat_dec.h" #include "hrtf_file_reader.h" #include "ivas_rom_rend.h" #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT #include <math.h> #endif Loading @@ -60,7 +60,7 @@ #define DEFAULT_BIN_FILE_EXT ".bin" #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT #define DEFAULT_BIN_FILE_FX_FLAG 0x1000 #endif Loading @@ -73,7 +73,7 @@ const HRTF_READER_RENDERER_TYPE rend_types[IVAS_NB_RENDERER_TYPE] = { HRTF_READER_RENDERER_BINAURAL_FASTCONV, HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM, HRTF_READER_RENDERER_BINAURAL_PARAMETRIC, #ifndef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifndef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM, #endif HRTF_READER_RENDERER_BINAURAL_MIXER_CONV, Loading Loading @@ -148,7 +148,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD int16_t get_crend_hrtf_tables( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG input_cfg, int32_t frequency, crend_hrtf_tables_pointers *hrtf_table_ptrs /*OUT*/, crend_hrtf_tables_dimensions *hrtf_table_dims /*OUT*/ ); int32_t compute_crend_hrtf_data_size( crend_hrtf_tables_pointers *hrtf_table_ptrs, crend_hrtf_tables_dimensions *hrtf_table_dims ); #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int32_t compute_crend_hrtf_data_size_fx( crend_hrtf_tables_pointers *hrtf_table_ptrs, crend_hrtf_tables_dimensions *hrtf_table_dims ); #endif /*---------------------------------------------------------------------* Loading Loading @@ -625,7 +625,7 @@ char *create_hrtf_crend( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD { int32_t mixerconv_hrtf_header_size, mixerconv_hrtf_data_size; char *mixerconv_hrtf = NULL, *mixerconv_hrtf_wptr; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int16_t is_fx = 0; #endif Loading Loading @@ -655,7 +655,7 @@ char *create_hrtf_crend( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD { configuration_name = "HOA3_HRIR"; } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( strstr( input_mixerconv_bin_hrir_file_name, "_fx" ) ) { input_mixerconv_bin_hrir_file_name[strlen( input_mixerconv_bin_hrir_file_name ) - 3] = '\0'; Loading Loading @@ -704,7 +704,7 @@ char *create_hrtf_crend( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD { return NULL; } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( strstr( input_mixerconv_bin_brir_file_name, "_fx" ) ) { input_mixerconv_bin_brir_file_name[strlen( input_mixerconv_bin_brir_file_name ) - 3] = '\0'; Loading Loading @@ -768,7 +768,7 @@ char *create_hrtf_crend( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD // Get the HRTF header // Renderer type #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( is_fx == 1 ) { *( (int32_t *) ( mixerconv_hrtf_wptr ) ) = rend_type + DEFAULT_BIN_FILE_FX_FLAG; Loading Loading @@ -827,7 +827,7 @@ char *create_hrtf_tdrend( int32_t frequency, int32_t *hrtf_size ) FILE *input_td_bin_file = NULL; int32_t td_hrtf_header_size, td_hrtf_data_size; char *td_hrtf = NULL, *td_hrtf_wptr, *full_in_td_path = NULL; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int16_t is_fx = 0; #endif Loading @@ -851,7 +851,7 @@ char *create_hrtf_tdrend( int32_t frequency, int32_t *hrtf_size ) #endif input_td_bin_file = fopen( full_in_td_path, "rb" ); #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( strstr( input_td_bin_file_name, "_fx" ) ) { is_fx = 1; Loading Loading @@ -891,7 +891,7 @@ char *create_hrtf_tdrend( int32_t frequency, int32_t *hrtf_size ) // Get the HRTF header // Renderer type #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( is_fx == 1 ) { *( (int32_t *) ( td_hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_OBJECTS_TD + DEFAULT_BIN_FILE_FX_FLAG; Loading Loading @@ -957,12 +957,12 @@ char *create_reverb( int32_t frequency, int32_t *hrtf_size ) FILE *input_reverb_file = NULL; int32_t reverb_header_size, reverb_data_size; char *reverb = NULL, *reverb_wptr, *full_in_reverb_path = NULL; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int16_t is_fx = 0; #endif *hrtf_size = 0; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( strstr( input_reverb_file_name, "_fx" ) ) { input_reverb_file_name[strlen( input_reverb_file_name ) - 3] = '\0'; Loading Loading @@ -1042,7 +1042,7 @@ char *create_reverb( int32_t frequency, int32_t *hrtf_size ) // Get the HRTF header // Renderer type #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( is_fx == 1 ) { *( (int32_t *) ( reverb_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_REVERB_ALL + DEFAULT_BIN_FILE_FX_FLAG; Loading Loading @@ -1110,7 +1110,7 @@ char *create_hrtf_fastconv( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_ int32_t hrtf_total_file_size = 0, hrtf_data_size = 0; int16_t nbHrft = 0, ind; ivas_hrtfs_header_t hrtf_header; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int16_t is_fx = 0; #endif Loading Loading @@ -1165,7 +1165,7 @@ char *create_hrtf_fastconv( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_ // Get the HRTF raw data #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( strstr( input_fastconv_bin_file_name, "_fx" ) ) { is_fx = 1; Loading Loading @@ -1303,7 +1303,7 @@ char *create_hrtf_fastconv( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_ // Get the HRTF header // Renderer type #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( is_fx == 1 ) { *( (int32_t *) ( fastconv_hrtf_wptr ) ) = rend_type + DEFAULT_BIN_FILE_FX_FLAG; Loading Loading @@ -1362,13 +1362,13 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) char *hrtf = NULL, *hrtf_wptr, *full_in_param_bin_path = NULL; uint32_t hrtf_data_size; #ifndef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifndef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int16_t i, j; uint32_t data_size_tmp; #endif FILE *input_param_bin_file = NULL; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT int16_t is_fx = 0; if ( strstr( input_param_bin_file_name, "_fx" ) ) { Loading Loading @@ -1400,7 +1400,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) hrtf_data_size = 0; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT input_param_bin_file = fopen( full_in_param_bin_path, "rb" ); Loading @@ -1425,7 +1425,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) memset( hrtf, 0x00, *hrtf_size ); hrtf_wptr = hrtf; #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( is_fx == 1 ) { *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC + DEFAULT_BIN_FILE_FX_FLAG; Loading Loading @@ -1586,7 +1586,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size ) hrtf_wptr = hrtf; // Renderer type - we use only parametric room type here to cover both cases #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC; #else *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM; Loading Loading @@ -2088,7 +2088,7 @@ int16_t get_crend_hrtf_tables( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INP return result; } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT /*---------------------------------------------------------------------* * compute_crend_hrtf_data_size_fx() * Loading Loading @@ -2125,7 +2125,7 @@ int32_t compute_crend_hrtf_data_size_fx( crend_hrtf_tables_pointers *hrtf_table_ hrtf_data_size += sizeof( uint16_t ); // index_frequency_max_diffuse hrtf_data_size += sizeof( Word16 ); // inv_diffuse_weight factor Q hrtf_data_size += hrtf_table_dims->max_num_ir * BINAURAL_CHANNELS * sizeof( Word16 ); // inv_diffuse_weight #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration #else hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration Loading @@ -2139,12 +2139,16 @@ int32_t compute_crend_hrtf_data_size_fx( crend_hrtf_tables_pointers *hrtf_table_ { for ( iIter = 0; iIter < hrtf_table_ptrs->num_iterations[iIR * BINAURAL_CHANNELS + iChan]; iIter++ ) { #ifdef TEST_FULL_16 hrtf_data_size += 2 * hrtf_table_ptrs->pIndex_frequency_max[iIndex++] * sizeof( Word16 ); // 2* : re & im #else hrtf_data_size += 2 * hrtf_table_ptrs->pIndex_frequency_max[iIndex++] * sizeof( Word32 ); // 2* : re & im #endif } } } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration_diff #else hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration_diff Loading @@ -2156,7 +2160,11 @@ int32_t compute_crend_hrtf_data_size_fx( crend_hrtf_tables_pointers *hrtf_table_ { for ( iIter = 0; iIter < hrtf_table_ptrs->num_iterations_diffuse[iChan]; iIter++ ) { #ifdef TEST_FULL_16 hrtf_data_size += 2 * hrtf_table_ptrs->pIndex_frequency_max_diffuse[iIndex++] * sizeof( Word16 ); // 2* : re & im #else hrtf_data_size += 2 * hrtf_table_ptrs->pIndex_frequency_max_diffuse[iIndex++] * sizeof( Word32 ); // 2* : re & im #endif } } } Loading Loading @@ -2198,7 +2206,7 @@ int32_t compute_crend_hrtf_data_size( crend_hrtf_tables_pointers *hrtf_table_ptr hrtf_data_size += sizeof( uint16_t ); // index_frequency_max_diffuse hrtf_data_size += hrtf_table_dims->max_num_ir * BINAURAL_CHANNELS * sizeof( float ); // inv_diffuse_weight #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration #else hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration Loading @@ -2215,7 +2223,7 @@ int32_t compute_crend_hrtf_data_size( crend_hrtf_tables_pointers *hrtf_table_ptr } } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration_diff #else hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration_diff Loading Loading @@ -2366,7 +2374,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD if ( rend_type == HRTF_READER_RENDERER_BINAURAL_OBJECTS_TD || rend_type == HRTF_READER_RENDERER_BINAURAL_REVERB_ALL || rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV || rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM || #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT rend_type == HRTF_READER_RENDERER_BINAURAL_PARAMETRIC ) #else rend_type == HRTF_READER_RENDERER_BINAURAL_PARAMETRIC || rend_type == HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM ) Loading Loading @@ -2394,7 +2402,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD return -1; } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( rend_type & DEFAULT_BIN_FILE_FX_FLAG ) hrtf_data_size = compute_crend_hrtf_data_size_fx( &tabs_ptrs, &tabs_dims ); else Loading @@ -2413,7 +2421,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD hrtf_data_in_rptr = hrtf_data_in; // latency_s #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( ( *( tabs_ptrs.latency_s ) - ( *( (Word32 *) ( hrtf_data_in_rptr ) ) ) * powf( 2.f, -31.f ) ) > 1e-9f ) #else if ( ( *( tabs_ptrs.latency_s ) - *( (float *) ( hrtf_data_in_rptr ) ) ) > 1e-9f ) Loading @@ -2422,7 +2430,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD fprintf( stderr, "check_hrtf_data of binary file failed: bad latency_s!\n\n" ); return -1; } #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT hrtf_data_in_rptr += sizeof( Word32 ); #else hrtf_data_in_rptr += sizeof( float ); Loading Loading @@ -2511,7 +2519,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD hrtf_data_in_rptr += sizeof( uint16_t ); // inv_diffuse_weight #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT ctrl_size = tabs_dims.max_num_ir * BINAURAL_CHANNELS * sizeof( Word16 ); #else ctrl_size = tabs_dims.max_num_ir * BINAURAL_CHANNELS * sizeof( float ); Loading @@ -2532,7 +2540,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD hrtf_data_in_rptr += ctrl_size; // max_total_num_fsamp_per_iteration #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( tabs_dims.max_total_num_fsamp_per_iteration != *( (uint32_t *) ( hrtf_data_in_rptr ) ) ) { fprintf( stderr, "check_hrtf_data of binary file failed: bad max_total_num_fsamp_per_iteration!\n\n" ); Loading @@ -2556,7 +2564,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD coeff_rptr = tabs_ptrs.coeff_re + ( iIR * BINAURAL_CHANNELS + iChan ) * tabs_dims.max_total_num_fsamp_per_iteration; for ( iIter = 0; iIter < tabs_ptrs.num_iterations[iIR * BINAURAL_CHANNELS + iChan]; iIter++ ) { #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT ctrl_size = tabs_ptrs.pIndex_frequency_max[iIndex] * sizeof( Word32 ); #else ctrl_size = tabs_ptrs.pIndex_frequency_max[iIndex] * sizeof( float ); Loading Loading @@ -2589,7 +2597,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD coeff_rptr = tabs_ptrs.coeff_im + ( iIR * BINAURAL_CHANNELS + iChan ) * tabs_dims.max_total_num_fsamp_per_iteration; for ( iIter = 0; iIter < tabs_ptrs.num_iterations[iIR * BINAURAL_CHANNELS + iChan]; iIter++ ) { #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT ctrl_size = tabs_ptrs.pIndex_frequency_max[iIndex] * sizeof( Word32 ); #else ctrl_size = tabs_ptrs.pIndex_frequency_max[iIndex] * sizeof( float ); Loading @@ -2614,7 +2622,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD } // max_total_num_fsamp_per_iteration_diff #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT if ( tabs_dims.max_total_num_fsamp_per_iteration_diff != *( (uint32_t *) ( hrtf_data_in_rptr ) ) ) { fprintf( stderr, "check_hrtf_data of binary file failed: bad max_total_num_fsamp_per_iteration_diff!\n\n" ); Loading @@ -2638,7 +2646,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD coeff_rptr = tabs_ptrs.coeff_diffuse_re + iChan * tabs_dims.max_total_num_fsamp_per_iteration_diff; for ( iIter = 0; iIter < tabs_ptrs.num_iterations_diffuse[iChan]; iIter++ ) { #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT ctrl_size = tabs_ptrs.pIndex_frequency_max_diffuse[iIndex] * sizeof( Word32 ); #else ctrl_size = tabs_ptrs.pIndex_frequency_max_diffuse[iIndex] * sizeof( float ); Loading Loading @@ -2667,7 +2675,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD coeff_rptr = tabs_ptrs.coeff_diffuse_im + iChan * tabs_dims.max_total_num_fsamp_per_iteration_diff; for ( iIter = 0; iIter < tabs_ptrs.num_iterations_diffuse[iChan]; iIter++ ) { #ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT #ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT ctrl_size = tabs_ptrs.pIndex_frequency_max_diffuse[iIndex] * sizeof( Word32 ); #else ctrl_size = tabs_ptrs.pIndex_frequency_max_diffuse[iIndex] * sizeof( float ); Loading