Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ #define FIX_1099_JBM_MD_HANDLE_ALLOC /* VA: issue 1099: Limit the allocation of `hJbmMetadata` handle to MASA and OMASA only */ #define FIX_1111_TDM_LSP_BUFFER /* VA: issue 1111: remove unused buffer `tdm_lspQ_PCh[]' */ #define FIX_1123_FASTCONV_16BIT_ROM /* FhG: issue 1123: update FastConv ROM tables and scripts to generate 16 bit tables instead of float */ #define FIX_1101_CLEANING_JBM_CALL /* VA: issue 1101: remove obsolete call of ivas_jbm_dec_tc_buffer_open() */ /* #################### End BE switches ################################## */ Loading lib_dec/ivas_binRenderer_internal.c +69 −0 Original line number Diff line number Diff line Loading @@ -695,7 +695,11 @@ static ivas_error ivas_binaural_hrtf_open( const RENDERER_TYPE renderer_type /* i : renderer type */ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM int16_t i, j, k; #else int16_t i, j; #endif ivas_error error; if ( hHrtfFastConv != NULL && *hHrtfFastConv != NULL ) Loading Loading @@ -736,7 +740,11 @@ static ivas_error ivas_binaural_hrtf_open( HrtfFastConv->FASTCONV_BRIR_latency_s = FASTCONV_BRIR_latency_s; } #ifdef FIX_1123_FASTCONV_16BIT_ROM HrtfFastConv->allocate_init_flag = 0; /* TODO: consider getting rid of this flag entirely? */ #else HrtfFastConv->allocate_init_flag = 1; #endif if ( ( error = ivas_allocate_binaural_hrtf( HrtfFastConv, input_config, BINAURAL_INPUT_AUDIO_CONFIG_INVALID, renderer_type, HrtfFastConv->allocate_init_flag ) ) != IVAS_ERR_OK ) { Loading @@ -748,55 +756,116 @@ static ivas_error ivas_binaural_hrtf_open( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < BINAURAL_NTAPS; k++ ) { HrtfFastConv->leftHRIRReal[i][j][k] = (float) leftHRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); HrtfFastConv->leftHRIRImag[i][j][k] = (float) leftHRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); HrtfFastConv->rightHRIRReal[i][j][k] = (float) rightHRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); HrtfFastConv->rightHRIRImag[i][j][k] = (float) rightHRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); } #else HrtfFastConv->leftHRIRReal[i][j] = leftHRIRReal[i][j]; HrtfFastConv->leftHRIRImag[i][j] = leftHRIRImag[i][j]; HrtfFastConv->rightHRIRReal[i][j] = rightHRIRReal[i][j]; HrtfFastConv->rightHRIRImag[i][j] = rightHRIRImag[i][j]; #endif } } else if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < BINAURAL_NTAPS_MAX; k++ ) { HrtfFastConv->leftBRIRReal[i][j][k] = (float) leftBRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); HrtfFastConv->leftBRIRImag[i][j][k] = (float) leftBRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); HrtfFastConv->rightBRIRReal[i][j][k] = (float) rightBRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); HrtfFastConv->rightBRIRImag[i][j][k] = (float) rightBRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); } #else HrtfFastConv->leftBRIRReal[i][j] = leftBRIRReal[i][j]; HrtfFastConv->leftBRIRImag[i][j] = leftBRIRImag[i][j]; HrtfFastConv->rightBRIRReal[i][j] = rightBRIRReal[i][j]; HrtfFastConv->rightBRIRImag[i][j] = rightBRIRImag[i][j]; #endif } } if ( input_config == IVAS_AUDIO_CONFIG_HOA3 ) { for ( j = 0; j < HOA3_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < BINAURAL_NTAPS; k++ ) { HrtfFastConv->leftHRIRReal_HOA3[i][j][k] = (float) leftHRIRReal_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->leftHRIRImag_HOA3[i][j][k] = (float) leftHRIRImag_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->rightHRIRReal_HOA3[i][j][k] = (float) rightHRIRReal_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->rightHRIRImag_HOA3[i][j][k] = (float) rightHRIRImag_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); } #else HrtfFastConv->leftHRIRReal_HOA3[i][j] = leftHRIRReal_HOA3[i][j]; HrtfFastConv->leftHRIRImag_HOA3[i][j] = leftHRIRImag_HOA3[i][j]; HrtfFastConv->rightHRIRReal_HOA3[i][j] = rightHRIRReal_HOA3[i][j]; HrtfFastConv->rightHRIRImag_HOA3[i][j] = rightHRIRImag_HOA3[i][j]; #endif } } if ( input_config == IVAS_AUDIO_CONFIG_HOA2 ) { for ( j = 0; j < HOA2_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < BINAURAL_NTAPS; k++ ) { HrtfFastConv->leftHRIRReal_HOA2[i][j][k] = (float) leftHRIRReal_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->leftHRIRImag_HOA2[i][j][k] = (float) leftHRIRImag_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->rightHRIRReal_HOA2[i][j][k] = (float) rightHRIRReal_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->rightHRIRImag_HOA2[i][j][k] = (float) rightHRIRImag_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); } #else HrtfFastConv->leftHRIRReal_HOA2[i][j] = leftHRIRReal_HOA2[i][j]; HrtfFastConv->leftHRIRImag_HOA2[i][j] = leftHRIRImag_HOA2[i][j]; HrtfFastConv->rightHRIRReal_HOA2[i][j] = rightHRIRReal_HOA2[i][j]; HrtfFastConv->rightHRIRImag_HOA2[i][j] = rightHRIRImag_HOA2[i][j]; #endif } } if ( input_config == IVAS_AUDIO_CONFIG_FOA ) { for ( j = 0; j < FOA_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < BINAURAL_NTAPS; k++ ) { HrtfFastConv->leftHRIRReal_FOA[i][j][k] = (float) leftHRIRReal_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->leftHRIRImag_FOA[i][j][k] = (float) leftHRIRImag_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->rightHRIRReal_FOA[i][j][k] = (float) rightHRIRReal_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->rightHRIRImag_FOA[i][j][k] = (float) rightHRIRImag_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); } #else HrtfFastConv->leftHRIRReal_FOA[i][j] = leftHRIRReal_FOA[i][j]; HrtfFastConv->leftHRIRImag_FOA[i][j] = leftHRIRImag_FOA[i][j]; HrtfFastConv->rightHRIRReal_FOA[i][j] = rightHRIRReal_FOA[i][j]; HrtfFastConv->rightHRIRImag_FOA[i][j] = rightHRIRImag_FOA[i][j]; #endif } } } #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { HrtfFastConv->fastconvReverberationTimes[i] = (float) fastconvReverberationTimes[i] * powf( 2.f, -1.f * (float) fastconvReverberationTimes_factorQ ); } for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { HrtfFastConv->fastconvReverberationEneCorrections[i] = (float) fastconvReverberationEneCorrections[i] * powf( 2.f, -1.f * (float) fastconvReverberationEneCorrections_factorQ ); } #else mvr2r( fastconvReverberationTimes, HrtfFastConv->fastconvReverberationTimes, CLDFB_NO_CHANNELS_MAX ); mvr2r( fastconvReverberationEneCorrections, HrtfFastConv->fastconvReverberationEneCorrections, CLDFB_NO_CHANNELS_MAX ); #endif *hHrtfFastConv = HrtfFastConv; } Loading lib_util/hrtf_file_reader.c +265 −7 File changed.Preview size limit exceeded, changes collapsed. Show changes scripts/binauralRenderer_interface/CMakeLists.txt +2 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.5) project(generate_crend_ivas_tables) # set(CMAKE_OSX_ARCHITECTURES "x86_64") set(CMAKE_BUILD_TYPE "Debug") set(IVAS_TRUNK_PATH "${PROJECT_SOURCE_DIR}/../..") set(IVAS_TRUNK_UTIL_PATH ${IVAS_TRUNK_PATH}/lib_util) string(REPLACE "/binauralRenderer_interface" "" IVAS_TRUNK_SCRIPTS_PATH ${PROJECT_SOURCE_DIR}) Loading scripts/binauralRenderer_interface/fastconv/generate_BRIR_CLDFB_FASTCONV.m +7 −5 Original line number Diff line number Diff line Loading @@ -51,10 +51,10 @@ if isfolder("../matlab_hrir_generation_scripts") addpath("../matlab_hrir_generation_scripts"); end sofaData = hrtf_library_loader(); sofaData.readSOFA(char(sofa_file)); sofaData.readSOFA(char(sofa_file),'Combined'); ls_struct = get_ls_layout_config('Combined'); IR = permute(sofaData.Data.IR(:,:,:), [3 2 1]); IR = permute(sofaData.Data.IR(:,:,:), [3 2 1]) * sofaData.Gain ; % match required loudspeaker positions brirAziRad = sofaData.PosSpherical(1, :).'; Loading Loading @@ -142,7 +142,9 @@ end % Step 3: Compute EDC (Energy Decay Curve) in_struct.num_bands = size(IR_cldfb,1); in_struct.timeSlots = size(IR_cldfb,2); assert(in_struct.timeSlots > in_struct.max_index) if in_struct.max_index > in_struct.timeSlots in_struct.max_index = in_struct.timeSlots; end in_struct.num_channels = size(IR_cldfb,4); EDC = get_EDC(IR_cldfb,in_struct); Loading Loading @@ -276,12 +278,12 @@ index = find(EDC==0,1,'last'); i0 = index; i5 = i0+1; while EDC(i5) > (EDC(i0)-5) while (i5 <= length(EDC) && EDC(i5) > (EDC(i0)-5)) i5 = i5+1; end i35 = i5+1; while ((EDC(i35) > (EDC(i0) -35)) && (i35 < end_idx)) while (i35 <= length(i35) && (EDC(i35) > (EDC(i0) -35)) && (i35 < end_idx)) i35 = i35 + 1; end Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ #define FIX_1099_JBM_MD_HANDLE_ALLOC /* VA: issue 1099: Limit the allocation of `hJbmMetadata` handle to MASA and OMASA only */ #define FIX_1111_TDM_LSP_BUFFER /* VA: issue 1111: remove unused buffer `tdm_lspQ_PCh[]' */ #define FIX_1123_FASTCONV_16BIT_ROM /* FhG: issue 1123: update FastConv ROM tables and scripts to generate 16 bit tables instead of float */ #define FIX_1101_CLEANING_JBM_CALL /* VA: issue 1101: remove obsolete call of ivas_jbm_dec_tc_buffer_open() */ /* #################### End BE switches ################################## */ Loading
lib_dec/ivas_binRenderer_internal.c +69 −0 Original line number Diff line number Diff line Loading @@ -695,7 +695,11 @@ static ivas_error ivas_binaural_hrtf_open( const RENDERER_TYPE renderer_type /* i : renderer type */ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM int16_t i, j, k; #else int16_t i, j; #endif ivas_error error; if ( hHrtfFastConv != NULL && *hHrtfFastConv != NULL ) Loading Loading @@ -736,7 +740,11 @@ static ivas_error ivas_binaural_hrtf_open( HrtfFastConv->FASTCONV_BRIR_latency_s = FASTCONV_BRIR_latency_s; } #ifdef FIX_1123_FASTCONV_16BIT_ROM HrtfFastConv->allocate_init_flag = 0; /* TODO: consider getting rid of this flag entirely? */ #else HrtfFastConv->allocate_init_flag = 1; #endif if ( ( error = ivas_allocate_binaural_hrtf( HrtfFastConv, input_config, BINAURAL_INPUT_AUDIO_CONFIG_INVALID, renderer_type, HrtfFastConv->allocate_init_flag ) ) != IVAS_ERR_OK ) { Loading @@ -748,55 +756,116 @@ static ivas_error ivas_binaural_hrtf_open( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < BINAURAL_NTAPS; k++ ) { HrtfFastConv->leftHRIRReal[i][j][k] = (float) leftHRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); HrtfFastConv->leftHRIRImag[i][j][k] = (float) leftHRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); HrtfFastConv->rightHRIRReal[i][j][k] = (float) rightHRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); HrtfFastConv->rightHRIRImag[i][j][k] = (float) rightHRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); } #else HrtfFastConv->leftHRIRReal[i][j] = leftHRIRReal[i][j]; HrtfFastConv->leftHRIRImag[i][j] = leftHRIRImag[i][j]; HrtfFastConv->rightHRIRReal[i][j] = rightHRIRReal[i][j]; HrtfFastConv->rightHRIRImag[i][j] = rightHRIRImag[i][j]; #endif } } else if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < BINAURAL_NTAPS_MAX; k++ ) { HrtfFastConv->leftBRIRReal[i][j][k] = (float) leftBRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); HrtfFastConv->leftBRIRImag[i][j][k] = (float) leftBRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); HrtfFastConv->rightBRIRReal[i][j][k] = (float) rightBRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); HrtfFastConv->rightBRIRImag[i][j][k] = (float) rightBRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); } #else HrtfFastConv->leftBRIRReal[i][j] = leftBRIRReal[i][j]; HrtfFastConv->leftBRIRImag[i][j] = leftBRIRImag[i][j]; HrtfFastConv->rightBRIRReal[i][j] = rightBRIRReal[i][j]; HrtfFastConv->rightBRIRImag[i][j] = rightBRIRImag[i][j]; #endif } } if ( input_config == IVAS_AUDIO_CONFIG_HOA3 ) { for ( j = 0; j < HOA3_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < BINAURAL_NTAPS; k++ ) { HrtfFastConv->leftHRIRReal_HOA3[i][j][k] = (float) leftHRIRReal_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->leftHRIRImag_HOA3[i][j][k] = (float) leftHRIRImag_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->rightHRIRReal_HOA3[i][j][k] = (float) rightHRIRReal_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->rightHRIRImag_HOA3[i][j][k] = (float) rightHRIRImag_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); } #else HrtfFastConv->leftHRIRReal_HOA3[i][j] = leftHRIRReal_HOA3[i][j]; HrtfFastConv->leftHRIRImag_HOA3[i][j] = leftHRIRImag_HOA3[i][j]; HrtfFastConv->rightHRIRReal_HOA3[i][j] = rightHRIRReal_HOA3[i][j]; HrtfFastConv->rightHRIRImag_HOA3[i][j] = rightHRIRImag_HOA3[i][j]; #endif } } if ( input_config == IVAS_AUDIO_CONFIG_HOA2 ) { for ( j = 0; j < HOA2_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < BINAURAL_NTAPS; k++ ) { HrtfFastConv->leftHRIRReal_HOA2[i][j][k] = (float) leftHRIRReal_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->leftHRIRImag_HOA2[i][j][k] = (float) leftHRIRImag_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->rightHRIRReal_HOA2[i][j][k] = (float) rightHRIRReal_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->rightHRIRImag_HOA2[i][j][k] = (float) rightHRIRImag_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); } #else HrtfFastConv->leftHRIRReal_HOA2[i][j] = leftHRIRReal_HOA2[i][j]; HrtfFastConv->leftHRIRImag_HOA2[i][j] = leftHRIRImag_HOA2[i][j]; HrtfFastConv->rightHRIRReal_HOA2[i][j] = rightHRIRReal_HOA2[i][j]; HrtfFastConv->rightHRIRImag_HOA2[i][j] = rightHRIRImag_HOA2[i][j]; #endif } } if ( input_config == IVAS_AUDIO_CONFIG_FOA ) { for ( j = 0; j < FOA_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < BINAURAL_NTAPS; k++ ) { HrtfFastConv->leftHRIRReal_FOA[i][j][k] = (float) leftHRIRReal_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->leftHRIRImag_FOA[i][j][k] = (float) leftHRIRImag_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->rightHRIRReal_FOA[i][j][k] = (float) rightHRIRReal_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->rightHRIRImag_FOA[i][j][k] = (float) rightHRIRImag_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); } #else HrtfFastConv->leftHRIRReal_FOA[i][j] = leftHRIRReal_FOA[i][j]; HrtfFastConv->leftHRIRImag_FOA[i][j] = leftHRIRImag_FOA[i][j]; HrtfFastConv->rightHRIRReal_FOA[i][j] = rightHRIRReal_FOA[i][j]; HrtfFastConv->rightHRIRImag_FOA[i][j] = rightHRIRImag_FOA[i][j]; #endif } } } #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { HrtfFastConv->fastconvReverberationTimes[i] = (float) fastconvReverberationTimes[i] * powf( 2.f, -1.f * (float) fastconvReverberationTimes_factorQ ); } for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { HrtfFastConv->fastconvReverberationEneCorrections[i] = (float) fastconvReverberationEneCorrections[i] * powf( 2.f, -1.f * (float) fastconvReverberationEneCorrections_factorQ ); } #else mvr2r( fastconvReverberationTimes, HrtfFastConv->fastconvReverberationTimes, CLDFB_NO_CHANNELS_MAX ); mvr2r( fastconvReverberationEneCorrections, HrtfFastConv->fastconvReverberationEneCorrections, CLDFB_NO_CHANNELS_MAX ); #endif *hHrtfFastConv = HrtfFastConv; } Loading
lib_util/hrtf_file_reader.c +265 −7 File changed.Preview size limit exceeded, changes collapsed. Show changes
scripts/binauralRenderer_interface/CMakeLists.txt +2 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.5) project(generate_crend_ivas_tables) # set(CMAKE_OSX_ARCHITECTURES "x86_64") set(CMAKE_BUILD_TYPE "Debug") set(IVAS_TRUNK_PATH "${PROJECT_SOURCE_DIR}/../..") set(IVAS_TRUNK_UTIL_PATH ${IVAS_TRUNK_PATH}/lib_util) string(REPLACE "/binauralRenderer_interface" "" IVAS_TRUNK_SCRIPTS_PATH ${PROJECT_SOURCE_DIR}) Loading
scripts/binauralRenderer_interface/fastconv/generate_BRIR_CLDFB_FASTCONV.m +7 −5 Original line number Diff line number Diff line Loading @@ -51,10 +51,10 @@ if isfolder("../matlab_hrir_generation_scripts") addpath("../matlab_hrir_generation_scripts"); end sofaData = hrtf_library_loader(); sofaData.readSOFA(char(sofa_file)); sofaData.readSOFA(char(sofa_file),'Combined'); ls_struct = get_ls_layout_config('Combined'); IR = permute(sofaData.Data.IR(:,:,:), [3 2 1]); IR = permute(sofaData.Data.IR(:,:,:), [3 2 1]) * sofaData.Gain ; % match required loudspeaker positions brirAziRad = sofaData.PosSpherical(1, :).'; Loading Loading @@ -142,7 +142,9 @@ end % Step 3: Compute EDC (Energy Decay Curve) in_struct.num_bands = size(IR_cldfb,1); in_struct.timeSlots = size(IR_cldfb,2); assert(in_struct.timeSlots > in_struct.max_index) if in_struct.max_index > in_struct.timeSlots in_struct.max_index = in_struct.timeSlots; end in_struct.num_channels = size(IR_cldfb,4); EDC = get_EDC(IR_cldfb,in_struct); Loading Loading @@ -276,12 +278,12 @@ index = find(EDC==0,1,'last'); i0 = index; i5 = i0+1; while EDC(i5) > (EDC(i0)-5) while (i5 <= length(EDC) && EDC(i5) > (EDC(i0)-5)) i5 = i5+1; end i35 = i5+1; while ((EDC(i35) > (EDC(i0) -35)) && (i35 < end_idx)) while (i35 <= length(i35) && (EDC(i35) > (EDC(i0) -35)) && (i35 < end_idx)) i35 = i35 + 1; end Loading