Loading lib_util/hrtf_file_reader.c +129 −2 Original line number Diff line number Diff line Loading @@ -195,7 +195,12 @@ static ivas_error check_hrtf_binary_header( } /* Check the output format of the decoder */ #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS if ( ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_FOA ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_UNDEFINED ) ) #else if ( ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_HOA ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_UNDEFINED ) ) #endif { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Header of HRTF binary file not compliant (input audio configuration)" ); } Loading Loading @@ -1103,7 +1108,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } } } if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #else else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #endif { /* HRIR_HOA3 */ ( *hHRTF )->FASTCONV_HOA3_latency_s = *( (float *) ( hrtf_data_rptr ) ); Loading Loading @@ -1154,8 +1163,112 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } } } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) { /* HRIR_HOA2 */ ( *hHRTF )->FASTCONV_HOA2_latency_s = *( (float *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( float ); if ( HRTF_SH_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_SH_CHANNELS)" ); } hrtf_data_rptr += sizeof( uint16_t ); if ( BINAURAL_NTAPS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_NTAPS)" ); } hrtf_data_rptr += sizeof( uint16_t ); for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->leftHRIRReal_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->leftHRIRImag_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->rightHRIRReal_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->rightHRIRImag_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } } else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) { /* HRIR_HOA2 */ ( *hHRTF )->FASTCONV_FOA_latency_s = *( (float *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( float ); if ( HRTF_SH_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_SH_CHANNELS)" ); } hrtf_data_rptr += sizeof( uint16_t ); if ( BINAURAL_NTAPS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_NTAPS)" ); } hrtf_data_rptr += sizeof( uint16_t ); for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->leftHRIRReal_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->leftHRIRImag_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->rightHRIRReal_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->rightHRIRImag_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } } #endif /* BRIR */ if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) else if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) { ( *hHRTF )->FASTCONV_BRIR_latency_s = *( (float *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( float ); Loading Loading @@ -1513,10 +1626,24 @@ ivas_error create_SetOfHRTF_from_binary( { hHRTF = &( ( *hSetOfHRTF ).hHRTF_hrir_combined ); } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #else else if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #endif { hHRTF = &( ( *hSetOfHRTF ).hHRTF_hrir_hoa3 ); } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) { hHRTF = &( ( *hSetOfHRTF ).hHRTF_hrir_hoa2 ); } else if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) { hHRTF = &( ( *hSetOfHRTF ).hHRTF_hrir_foa ); } #endif } else if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) { Loading scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c +259 −2 Original line number Diff line number Diff line Loading @@ -58,7 +58,11 @@ #define DEFAULT_BIN_FILE_EXT ".bin" #define IVAS_NB_RENDERER_TYPE 7 #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS #define IVAS_NB_AUDIO_CONFIG 4 #else #define IVAS_NB_AUDIO_CONFIG 2 #endif #define IVAS_NB_SAMPLERATE 3 const RENDERER_TYPE rend_types[IVAS_NB_RENDERER_TYPE] = { Loading @@ -72,8 +76,15 @@ const RENDERER_TYPE rend_types[IVAS_NB_RENDERER_TYPE] = { }; const BINAURAL_INPUT_AUDIO_CONFIG input_cfgs[IVAS_NB_AUDIO_CONFIG] = { BINAURAL_INPUT_AUDIO_CONFIG_COMBINED, #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS BINAURAL_INPUT_AUDIO_CONFIG_HOA3, BINAURAL_INPUT_AUDIO_CONFIG_HOA2, BINAURAL_INPUT_AUDIO_CONFIG_FOA #else BINAURAL_INPUT_AUDIO_CONFIG_HOA #endif }; const int32_t sample_rates[IVAS_NB_SAMPLERATE] = { 48000, 32000, 16000 }; /* Hz */ /* 8000 Hz not supported by mdft */ #ifdef FILE_HEADER Loading Loading @@ -820,7 +831,11 @@ char *create_hrtf_fastconv( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG cldfb_nchan_max = CLDFB_NO_CHANNELS_MAX; } } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #else else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #endif { if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { Loading @@ -832,6 +847,32 @@ char *create_hrtf_fastconv( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG hrtf_channels = HRTF_SH_CHANNELS; num_taps = BINAURAL_NTAPS; } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) { if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { /* No HOA2 BRIRs */ return NULL; } latency_s = FASTCONV_HOA2_latency_s; hrtf_channels = 9; num_taps = BINAURAL_NTAPS; } else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) { if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { /* No HOA2 BRIRs */ return NULL; } latency_s = FASTCONV_FOA_latency_s; hrtf_channels = 4; num_taps = BINAURAL_NTAPS; } #endif else { fprintf( stderr, "Unsupported renderer type in create_hrtf_fastconv()\n\n" ); Loading Loading @@ -943,7 +984,11 @@ char *create_hrtf_fastconv( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG } } // HRIR_HOA3 #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #else else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #endif { memcpy( hrtf_wptr, &( latency_s ), sizeof( float ) ); // latency_s => float hrtf_wptr += sizeof( float ); Loading Loading @@ -988,6 +1033,99 @@ char *create_hrtf_fastconv( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG } } } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) { memcpy( hrtf_wptr, &( latency_s ), sizeof( float ) ); // latency_s => float hrtf_wptr += sizeof( float ); memcpy( hrtf_wptr, &( hrtf_channels ), sizeof( uint16_t ) ); // hrtf_channels => uint16_t hrtf_wptr += sizeof( uint16_t ); memcpy( hrtf_wptr, &( num_taps ), sizeof( uint16_t ) ); // num_taps => uint16_t hrtf_wptr += sizeof( uint16_t ); data_size_tmp = num_taps * sizeof( float ); for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &leftHRIRReal_HOA2[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &leftHRIRImag_HOA2[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &rightHRIRReal_HOA2[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &rightHRIRImag_HOA2[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } } // FOA else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) { memcpy( hrtf_wptr, &( latency_s ), sizeof( float ) ); // latency_s => float hrtf_wptr += sizeof( float ); memcpy( hrtf_wptr, &( hrtf_channels ), sizeof( uint16_t ) ); // hrtf_channels => uint16_t hrtf_wptr += sizeof( uint16_t ); memcpy( hrtf_wptr, &( num_taps ), sizeof( uint16_t ) ); // num_taps => uint16_t hrtf_wptr += sizeof( uint16_t ); data_size_tmp = num_taps * sizeof( float ); for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &leftHRIRReal_FOA[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &leftHRIRImag_FOA[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &rightHRIRReal_FOA[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &rightHRIRImag_FOA[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } } #endif // BRIR else if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) { Loading Loading @@ -1251,7 +1389,11 @@ int16_t get_crend_hrtf_tables( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CON hrtf_table_dims_out.max_num_iterations_diffuse = 0; hrtf_table_dims_out.max_total_num_fsamp_per_iteration_diff = 0;*/ } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #else else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #endif { if ( frequency == 48000 ) { Loading @@ -1269,6 +1411,7 @@ int16_t get_crend_hrtf_tables( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CON hrtf_table_dims_out.max_num_iterations = CRendBin_HOA3_HRIR_max_num_iterations_48kHz; result = 0; } else if ( frequency == 32000 ) Loading Loading @@ -1315,6 +1458,115 @@ int16_t get_crend_hrtf_tables( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CON hrtf_table_dims_out.max_num_iterations_diffuse = 0; hrtf_table_dims_out.max_total_num_fsamp_per_iteration_diff = 0;*/ } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) { if ( frequency == 48000 ) { hrtf_table_ptrs_out.latency_s = &CRendBin_HOA2_HRIR_latency_s; hrtf_table_ptrs_out.num_iterations = (uint16_t *) ( &CRendBin_HOA2_HRIR_num_iterations_48kHz ); hrtf_table_ptrs_out.pIndex_frequency_max = (uint16_t *) ( &CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz ); hrtf_table_ptrs_out.num_iterations_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz ); hrtf_table_ptrs_out.pIndex_frequency_max_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz ); hrtf_table_ptrs_out.index_frequency_max_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz ); hrtf_table_ptrs_out.inv_diffuse_weight = (float *) ( &CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz ); hrtf_table_ptrs_out.coeff_re = (float *) ( &CRendBin_HOA2_HRIR_coeff_re_48kHz ); hrtf_table_ptrs_out.coeff_im = (float *) ( &CRendBin_HOA2_HRIR_coeff_im_48kHz ); hrtf_table_ptrs_out.coeff_diffuse_re = (float *) ( &CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz ); hrtf_table_ptrs_out.coeff_diffuse_im = (float *) ( &CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz ); hrtf_table_dims_out.max_num_iterations = CRendBin_HOA2_HRIR_max_num_iterations_48kHz; result = 0; } else if ( frequency == 32000 ) { hrtf_table_ptrs_out.latency_s = &CRendBin_HOA2_HRIR_latency_s; hrtf_table_ptrs_out.num_iterations = (uint16_t *) ( &CRendBin_HOA2_HRIR_num_iterations_32kHz ); hrtf_table_ptrs_out.pIndex_frequency_max = (uint16_t *) ( &CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz ); hrtf_table_ptrs_out.num_iterations_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz ); hrtf_table_ptrs_out.pIndex_frequency_max_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz ); hrtf_table_ptrs_out.index_frequency_max_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz ); hrtf_table_ptrs_out.inv_diffuse_weight = (float *) ( &CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz ); hrtf_table_ptrs_out.coeff_re = (float *) ( &CRendBin_HOA2_HRIR_coeff_re_32kHz ); hrtf_table_ptrs_out.coeff_im = (float *) ( &CRendBin_HOA2_HRIR_coeff_im_32kHz ); hrtf_table_ptrs_out.coeff_diffuse_re = (float *) ( &CRendBin_HOA2_HRIR_coeff_diffuse_re_32kHz ); hrtf_table_ptrs_out.coeff_diffuse_im = (float *) ( &CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz ); hrtf_table_dims_out.max_num_iterations = CRendBin_HOA2_HRIR_max_num_iterations_32kHz; result = 0; } else if ( frequency == 16000 ) { hrtf_table_ptrs_out.latency_s = &CRendBin_HOA2_HRIR_latency_s; hrtf_table_ptrs_out.num_iterations = (uint16_t *) ( &CRendBin_HOA2_HRIR_num_iterations_16kHz ); hrtf_table_ptrs_out.pIndex_frequency_max = (uint16_t *) ( &CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz ); hrtf_table_ptrs_out.num_iterations_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz ); hrtf_table_ptrs_out.pIndex_frequency_max_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz ); hrtf_table_ptrs_out.index_frequency_max_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz ); hrtf_table_ptrs_out.inv_diffuse_weight = (float *) ( &CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz ); hrtf_table_ptrs_out.coeff_re = (float *) ( &CRendBin_HOA2_HRIR_coeff_re_16kHz ); hrtf_table_ptrs_out.coeff_im = (float *) ( &CRendBin_HOA2_HRIR_coeff_im_16kHz ); hrtf_table_ptrs_out.coeff_diffuse_re = (float *) ( &CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz ); hrtf_table_ptrs_out.coeff_diffuse_im = (float *) ( &CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz ); hrtf_table_dims_out.max_num_iterations = CRendBin_HOA2_HRIR_max_num_iterations_16kHz; result = 0; } } else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) { if ( frequency == 48000 ) { hrtf_table_ptrs_out.latency_s = &CRendBin_FOA_HRIR_latency_s; hrtf_table_ptrs_out.num_iterations = (uint16_t *) ( &CRendBin_FOA_HRIR_num_iterations_48kHz ); hrtf_table_ptrs_out.pIndex_frequency_max = (uint16_t *) ( &CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz ); hrtf_table_ptrs_out.num_iterations_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz ); hrtf_table_ptrs_out.pIndex_frequency_max_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz ); hrtf_table_ptrs_out.index_frequency_max_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz ); hrtf_table_ptrs_out.inv_diffuse_weight = (float *) ( &CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz ); hrtf_table_ptrs_out.coeff_re = (float *) ( &CRendBin_FOA_HRIR_coeff_re_48kHz ); hrtf_table_ptrs_out.coeff_im = (float *) ( &CRendBin_FOA_HRIR_coeff_im_48kHz ); hrtf_table_ptrs_out.coeff_diffuse_re = (float *) ( &CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz ); hrtf_table_ptrs_out.coeff_diffuse_im = (float *) ( &CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz ); hrtf_table_dims_out.max_num_iterations = CRendBin_FOA_HRIR_max_num_iterations_48kHz; result = 0; } else if ( frequency == 32000 ) { hrtf_table_ptrs_out.latency_s = &CRendBin_FOA_HRIR_latency_s; hrtf_table_ptrs_out.num_iterations = (uint16_t *) ( &CRendBin_FOA_HRIR_num_iterations_32kHz ); hrtf_table_ptrs_out.pIndex_frequency_max = (uint16_t *) ( &CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz ); hrtf_table_ptrs_out.num_iterations_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz ); hrtf_table_ptrs_out.pIndex_frequency_max_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz ); hrtf_table_ptrs_out.index_frequency_max_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz ); hrtf_table_ptrs_out.inv_diffuse_weight = (float *) ( &CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz ); hrtf_table_ptrs_out.coeff_re = (float *) ( &CRendBin_FOA_HRIR_coeff_re_32kHz ); hrtf_table_ptrs_out.coeff_im = (float *) ( &CRendBin_FOA_HRIR_coeff_im_32kHz ); hrtf_table_ptrs_out.coeff_diffuse_re = (float *) ( &CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz ); hrtf_table_ptrs_out.coeff_diffuse_im = (float *) ( &CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz ); hrtf_table_dims_out.max_num_iterations = CRendBin_FOA_HRIR_max_num_iterations_32kHz; } else if ( frequency == 16000 ) { hrtf_table_ptrs_out.latency_s = &CRendBin_FOA_HRIR_latency_s; hrtf_table_ptrs_out.num_iterations = (uint16_t *) ( &CRendBin_FOA_HRIR_num_iterations_16kHz ); hrtf_table_ptrs_out.pIndex_frequency_max = (uint16_t *) ( &CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz ); hrtf_table_ptrs_out.num_iterations_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz ); hrtf_table_ptrs_out.pIndex_frequency_max_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz ); hrtf_table_ptrs_out.index_frequency_max_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz ); hrtf_table_ptrs_out.inv_diffuse_weight = (float *) ( &CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz ); hrtf_table_ptrs_out.coeff_re = (float *) ( &CRendBin_FOA_HRIR_coeff_re_16kHz ); hrtf_table_ptrs_out.coeff_im = (float *) ( &CRendBin_FOA_HRIR_coeff_im_16kHz ); hrtf_table_ptrs_out.coeff_diffuse_re = (float *) ( &CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz ); hrtf_table_ptrs_out.coeff_diffuse_im = (float *) ( &CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz ); hrtf_table_dims_out.max_num_iterations = CRendBin_FOA_HRIR_max_num_iterations_16kHz; result = 0; } } #endif } else if ( rend_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) { Loading Loading @@ -1382,7 +1634,11 @@ int16_t get_crend_hrtf_tables( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CON hrtf_table_dims_out.max_num_iterations_diffuse = 0; hrtf_table_dims_out.max_total_num_fsamp_per_iteration_diff = 0;*/ } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) || ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) || ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) ) #else else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #endif { result = 0; } Loading Loading @@ -1458,6 +1714,7 @@ int16_t get_crend_hrtf_tables( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CON } } // Copy the results if ( ( result == 0 ) && ( hrtf_table_ptrs != NULL ) ) { Loading Loading
lib_util/hrtf_file_reader.c +129 −2 Original line number Diff line number Diff line Loading @@ -195,7 +195,12 @@ static ivas_error check_hrtf_binary_header( } /* Check the output format of the decoder */ #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS if ( ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_FOA ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_UNDEFINED ) ) #else if ( ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_HOA ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_UNDEFINED ) ) #endif { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Header of HRTF binary file not compliant (input audio configuration)" ); } Loading Loading @@ -1103,7 +1108,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } } } if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #else else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #endif { /* HRIR_HOA3 */ ( *hHRTF )->FASTCONV_HOA3_latency_s = *( (float *) ( hrtf_data_rptr ) ); Loading Loading @@ -1154,8 +1163,112 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } } } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) { /* HRIR_HOA2 */ ( *hHRTF )->FASTCONV_HOA2_latency_s = *( (float *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( float ); if ( HRTF_SH_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_SH_CHANNELS)" ); } hrtf_data_rptr += sizeof( uint16_t ); if ( BINAURAL_NTAPS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_NTAPS)" ); } hrtf_data_rptr += sizeof( uint16_t ); for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->leftHRIRReal_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->leftHRIRImag_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->rightHRIRReal_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->rightHRIRImag_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } } else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) { /* HRIR_HOA2 */ ( *hHRTF )->FASTCONV_FOA_latency_s = *( (float *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( float ); if ( HRTF_SH_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_SH_CHANNELS)" ); } hrtf_data_rptr += sizeof( uint16_t ); if ( BINAURAL_NTAPS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_NTAPS)" ); } hrtf_data_rptr += sizeof( uint16_t ); for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->leftHRIRReal_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->leftHRIRImag_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->rightHRIRReal_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { memcpy( ( *hHRTF )->rightHRIRImag_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); } } } #endif /* BRIR */ if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) else if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) { ( *hHRTF )->FASTCONV_BRIR_latency_s = *( (float *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( float ); Loading Loading @@ -1513,10 +1626,24 @@ ivas_error create_SetOfHRTF_from_binary( { hHRTF = &( ( *hSetOfHRTF ).hHRTF_hrir_combined ); } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #else else if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #endif { hHRTF = &( ( *hSetOfHRTF ).hHRTF_hrir_hoa3 ); } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) { hHRTF = &( ( *hSetOfHRTF ).hHRTF_hrir_hoa2 ); } else if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) { hHRTF = &( ( *hSetOfHRTF ).hHRTF_hrir_foa ); } #endif } else if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) { Loading
scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c +259 −2 Original line number Diff line number Diff line Loading @@ -58,7 +58,11 @@ #define DEFAULT_BIN_FILE_EXT ".bin" #define IVAS_NB_RENDERER_TYPE 7 #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS #define IVAS_NB_AUDIO_CONFIG 4 #else #define IVAS_NB_AUDIO_CONFIG 2 #endif #define IVAS_NB_SAMPLERATE 3 const RENDERER_TYPE rend_types[IVAS_NB_RENDERER_TYPE] = { Loading @@ -72,8 +76,15 @@ const RENDERER_TYPE rend_types[IVAS_NB_RENDERER_TYPE] = { }; const BINAURAL_INPUT_AUDIO_CONFIG input_cfgs[IVAS_NB_AUDIO_CONFIG] = { BINAURAL_INPUT_AUDIO_CONFIG_COMBINED, #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS BINAURAL_INPUT_AUDIO_CONFIG_HOA3, BINAURAL_INPUT_AUDIO_CONFIG_HOA2, BINAURAL_INPUT_AUDIO_CONFIG_FOA #else BINAURAL_INPUT_AUDIO_CONFIG_HOA #endif }; const int32_t sample_rates[IVAS_NB_SAMPLERATE] = { 48000, 32000, 16000 }; /* Hz */ /* 8000 Hz not supported by mdft */ #ifdef FILE_HEADER Loading Loading @@ -820,7 +831,11 @@ char *create_hrtf_fastconv( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG cldfb_nchan_max = CLDFB_NO_CHANNELS_MAX; } } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #else else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #endif { if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { Loading @@ -832,6 +847,32 @@ char *create_hrtf_fastconv( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG hrtf_channels = HRTF_SH_CHANNELS; num_taps = BINAURAL_NTAPS; } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) { if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { /* No HOA2 BRIRs */ return NULL; } latency_s = FASTCONV_HOA2_latency_s; hrtf_channels = 9; num_taps = BINAURAL_NTAPS; } else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) { if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { /* No HOA2 BRIRs */ return NULL; } latency_s = FASTCONV_FOA_latency_s; hrtf_channels = 4; num_taps = BINAURAL_NTAPS; } #endif else { fprintf( stderr, "Unsupported renderer type in create_hrtf_fastconv()\n\n" ); Loading Loading @@ -943,7 +984,11 @@ char *create_hrtf_fastconv( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG } } // HRIR_HOA3 #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #else else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #endif { memcpy( hrtf_wptr, &( latency_s ), sizeof( float ) ); // latency_s => float hrtf_wptr += sizeof( float ); Loading Loading @@ -988,6 +1033,99 @@ char *create_hrtf_fastconv( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG } } } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) { memcpy( hrtf_wptr, &( latency_s ), sizeof( float ) ); // latency_s => float hrtf_wptr += sizeof( float ); memcpy( hrtf_wptr, &( hrtf_channels ), sizeof( uint16_t ) ); // hrtf_channels => uint16_t hrtf_wptr += sizeof( uint16_t ); memcpy( hrtf_wptr, &( num_taps ), sizeof( uint16_t ) ); // num_taps => uint16_t hrtf_wptr += sizeof( uint16_t ); data_size_tmp = num_taps * sizeof( float ); for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &leftHRIRReal_HOA2[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &leftHRIRImag_HOA2[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &rightHRIRReal_HOA2[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &rightHRIRImag_HOA2[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } } // FOA else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) { memcpy( hrtf_wptr, &( latency_s ), sizeof( float ) ); // latency_s => float hrtf_wptr += sizeof( float ); memcpy( hrtf_wptr, &( hrtf_channels ), sizeof( uint16_t ) ); // hrtf_channels => uint16_t hrtf_wptr += sizeof( uint16_t ); memcpy( hrtf_wptr, &( num_taps ), sizeof( uint16_t ) ); // num_taps => uint16_t hrtf_wptr += sizeof( uint16_t ); data_size_tmp = num_taps * sizeof( float ); for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &leftHRIRReal_FOA[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &leftHRIRImag_FOA[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &rightHRIRReal_FOA[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { for ( j = 0; j < hrtf_channels; j++ ) { memcpy( hrtf_wptr, &rightHRIRImag_FOA[i][j], data_size_tmp ); hrtf_wptr += data_size_tmp; } } } #endif // BRIR else if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) { Loading Loading @@ -1251,7 +1389,11 @@ int16_t get_crend_hrtf_tables( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CON hrtf_table_dims_out.max_num_iterations_diffuse = 0; hrtf_table_dims_out.max_total_num_fsamp_per_iteration_diff = 0;*/ } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #else else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #endif { if ( frequency == 48000 ) { Loading @@ -1269,6 +1411,7 @@ int16_t get_crend_hrtf_tables( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CON hrtf_table_dims_out.max_num_iterations = CRendBin_HOA3_HRIR_max_num_iterations_48kHz; result = 0; } else if ( frequency == 32000 ) Loading Loading @@ -1315,6 +1458,115 @@ int16_t get_crend_hrtf_tables( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CON hrtf_table_dims_out.max_num_iterations_diffuse = 0; hrtf_table_dims_out.max_total_num_fsamp_per_iteration_diff = 0;*/ } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) { if ( frequency == 48000 ) { hrtf_table_ptrs_out.latency_s = &CRendBin_HOA2_HRIR_latency_s; hrtf_table_ptrs_out.num_iterations = (uint16_t *) ( &CRendBin_HOA2_HRIR_num_iterations_48kHz ); hrtf_table_ptrs_out.pIndex_frequency_max = (uint16_t *) ( &CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz ); hrtf_table_ptrs_out.num_iterations_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz ); hrtf_table_ptrs_out.pIndex_frequency_max_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz ); hrtf_table_ptrs_out.index_frequency_max_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz ); hrtf_table_ptrs_out.inv_diffuse_weight = (float *) ( &CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz ); hrtf_table_ptrs_out.coeff_re = (float *) ( &CRendBin_HOA2_HRIR_coeff_re_48kHz ); hrtf_table_ptrs_out.coeff_im = (float *) ( &CRendBin_HOA2_HRIR_coeff_im_48kHz ); hrtf_table_ptrs_out.coeff_diffuse_re = (float *) ( &CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz ); hrtf_table_ptrs_out.coeff_diffuse_im = (float *) ( &CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz ); hrtf_table_dims_out.max_num_iterations = CRendBin_HOA2_HRIR_max_num_iterations_48kHz; result = 0; } else if ( frequency == 32000 ) { hrtf_table_ptrs_out.latency_s = &CRendBin_HOA2_HRIR_latency_s; hrtf_table_ptrs_out.num_iterations = (uint16_t *) ( &CRendBin_HOA2_HRIR_num_iterations_32kHz ); hrtf_table_ptrs_out.pIndex_frequency_max = (uint16_t *) ( &CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz ); hrtf_table_ptrs_out.num_iterations_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz ); hrtf_table_ptrs_out.pIndex_frequency_max_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz ); hrtf_table_ptrs_out.index_frequency_max_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz ); hrtf_table_ptrs_out.inv_diffuse_weight = (float *) ( &CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz ); hrtf_table_ptrs_out.coeff_re = (float *) ( &CRendBin_HOA2_HRIR_coeff_re_32kHz ); hrtf_table_ptrs_out.coeff_im = (float *) ( &CRendBin_HOA2_HRIR_coeff_im_32kHz ); hrtf_table_ptrs_out.coeff_diffuse_re = (float *) ( &CRendBin_HOA2_HRIR_coeff_diffuse_re_32kHz ); hrtf_table_ptrs_out.coeff_diffuse_im = (float *) ( &CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz ); hrtf_table_dims_out.max_num_iterations = CRendBin_HOA2_HRIR_max_num_iterations_32kHz; result = 0; } else if ( frequency == 16000 ) { hrtf_table_ptrs_out.latency_s = &CRendBin_HOA2_HRIR_latency_s; hrtf_table_ptrs_out.num_iterations = (uint16_t *) ( &CRendBin_HOA2_HRIR_num_iterations_16kHz ); hrtf_table_ptrs_out.pIndex_frequency_max = (uint16_t *) ( &CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz ); hrtf_table_ptrs_out.num_iterations_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz ); hrtf_table_ptrs_out.pIndex_frequency_max_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz ); hrtf_table_ptrs_out.index_frequency_max_diffuse = (uint16_t *) ( &CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz ); hrtf_table_ptrs_out.inv_diffuse_weight = (float *) ( &CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz ); hrtf_table_ptrs_out.coeff_re = (float *) ( &CRendBin_HOA2_HRIR_coeff_re_16kHz ); hrtf_table_ptrs_out.coeff_im = (float *) ( &CRendBin_HOA2_HRIR_coeff_im_16kHz ); hrtf_table_ptrs_out.coeff_diffuse_re = (float *) ( &CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz ); hrtf_table_ptrs_out.coeff_diffuse_im = (float *) ( &CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz ); hrtf_table_dims_out.max_num_iterations = CRendBin_HOA2_HRIR_max_num_iterations_16kHz; result = 0; } } else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) { if ( frequency == 48000 ) { hrtf_table_ptrs_out.latency_s = &CRendBin_FOA_HRIR_latency_s; hrtf_table_ptrs_out.num_iterations = (uint16_t *) ( &CRendBin_FOA_HRIR_num_iterations_48kHz ); hrtf_table_ptrs_out.pIndex_frequency_max = (uint16_t *) ( &CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz ); hrtf_table_ptrs_out.num_iterations_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz ); hrtf_table_ptrs_out.pIndex_frequency_max_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz ); hrtf_table_ptrs_out.index_frequency_max_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz ); hrtf_table_ptrs_out.inv_diffuse_weight = (float *) ( &CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz ); hrtf_table_ptrs_out.coeff_re = (float *) ( &CRendBin_FOA_HRIR_coeff_re_48kHz ); hrtf_table_ptrs_out.coeff_im = (float *) ( &CRendBin_FOA_HRIR_coeff_im_48kHz ); hrtf_table_ptrs_out.coeff_diffuse_re = (float *) ( &CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz ); hrtf_table_ptrs_out.coeff_diffuse_im = (float *) ( &CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz ); hrtf_table_dims_out.max_num_iterations = CRendBin_FOA_HRIR_max_num_iterations_48kHz; result = 0; } else if ( frequency == 32000 ) { hrtf_table_ptrs_out.latency_s = &CRendBin_FOA_HRIR_latency_s; hrtf_table_ptrs_out.num_iterations = (uint16_t *) ( &CRendBin_FOA_HRIR_num_iterations_32kHz ); hrtf_table_ptrs_out.pIndex_frequency_max = (uint16_t *) ( &CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz ); hrtf_table_ptrs_out.num_iterations_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz ); hrtf_table_ptrs_out.pIndex_frequency_max_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz ); hrtf_table_ptrs_out.index_frequency_max_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz ); hrtf_table_ptrs_out.inv_diffuse_weight = (float *) ( &CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz ); hrtf_table_ptrs_out.coeff_re = (float *) ( &CRendBin_FOA_HRIR_coeff_re_32kHz ); hrtf_table_ptrs_out.coeff_im = (float *) ( &CRendBin_FOA_HRIR_coeff_im_32kHz ); hrtf_table_ptrs_out.coeff_diffuse_re = (float *) ( &CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz ); hrtf_table_ptrs_out.coeff_diffuse_im = (float *) ( &CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz ); hrtf_table_dims_out.max_num_iterations = CRendBin_FOA_HRIR_max_num_iterations_32kHz; } else if ( frequency == 16000 ) { hrtf_table_ptrs_out.latency_s = &CRendBin_FOA_HRIR_latency_s; hrtf_table_ptrs_out.num_iterations = (uint16_t *) ( &CRendBin_FOA_HRIR_num_iterations_16kHz ); hrtf_table_ptrs_out.pIndex_frequency_max = (uint16_t *) ( &CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz ); hrtf_table_ptrs_out.num_iterations_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz ); hrtf_table_ptrs_out.pIndex_frequency_max_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz ); hrtf_table_ptrs_out.index_frequency_max_diffuse = (uint16_t *) ( &CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz ); hrtf_table_ptrs_out.inv_diffuse_weight = (float *) ( &CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz ); hrtf_table_ptrs_out.coeff_re = (float *) ( &CRendBin_FOA_HRIR_coeff_re_16kHz ); hrtf_table_ptrs_out.coeff_im = (float *) ( &CRendBin_FOA_HRIR_coeff_im_16kHz ); hrtf_table_ptrs_out.coeff_diffuse_re = (float *) ( &CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz ); hrtf_table_ptrs_out.coeff_diffuse_im = (float *) ( &CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz ); hrtf_table_dims_out.max_num_iterations = CRendBin_FOA_HRIR_max_num_iterations_16kHz; result = 0; } } #endif } else if ( rend_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) { Loading Loading @@ -1382,7 +1634,11 @@ int16_t get_crend_hrtf_tables( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CON hrtf_table_dims_out.max_num_iterations_diffuse = 0; hrtf_table_dims_out.max_total_num_fsamp_per_iteration_diff = 0;*/ } #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS else if ( ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) || ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) || ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) ) #else else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA ) #endif { result = 0; } Loading Loading @@ -1458,6 +1714,7 @@ int16_t get_crend_hrtf_tables( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CON } } // Copy the results if ( ( result == 0 ) && ( hrtf_table_ptrs != NULL ) ) { Loading