Loading lib_com/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -172,7 +172,7 @@ #define FIX_BINAURAL_DELAY_PRECISION #define USE_HRIR_128_METH5_IRC_53_Q10_SYML_ITRP1_48000 #define USE_IIS_BRIR_OFFICIALMPEG_COMBINED //#define UPDATE_SBA_FILTER #define UPDATE_SBA_FILTER #ifdef UPDATE_SBA_FILTER #define UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS Loading lib_dec/ivas_binRenderer_internal.c +58 −0 Original line number Diff line number Diff line Loading @@ -143,7 +143,11 @@ static ivas_error ivas_binRenderer_convModuleOpen( if ( !isLoudspeaker ) { #ifdef UPDATE_SBA_FILTER hBinRenderer->nInChannels = audioCfg2channels( input_config ); // TODO maybe an audioCfg2channels_woLFE() function? Works as long as only 1 LFE is present #else hBinRenderer->nInChannels = 16; #endif } else { Loading Loading @@ -342,11 +346,42 @@ static ivas_error ivas_binRenderer_convModuleOpen( } else { #ifdef UPDATE_SBA_FILTER if ( input_config == IVAS_REND_AUDIO_CONFIG_HOA3 ) { /* HOA3 filter coefficients */ hBinRenConvModule->filterTapsLeftReal[bandIdx][chIdx] = hHrtf->leftHRIRReal_HOA3[bandIdx][chIdx]; hBinRenConvModule->filterTapsLeftImag[bandIdx][chIdx] = hHrtf->leftHRIRImag_HOA3[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightReal[bandIdx][chIdx] = hHrtf->rightHRIRReal_HOA3[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightImag[bandIdx][chIdx] = hHrtf->rightHRIRImag_HOA3[bandIdx][chIdx]; } else if ( input_config == IVAS_REND_AUDIO_CONFIG_HOA2 ) { /* HOA3 filter coefficients */ hBinRenConvModule->filterTapsLeftReal[bandIdx][chIdx] = hHrtf->leftHRIRReal_HOA2[bandIdx][chIdx]; hBinRenConvModule->filterTapsLeftImag[bandIdx][chIdx] = hHrtf->leftHRIRImag_HOA2[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightReal[bandIdx][chIdx] = hHrtf->rightHRIRReal_HOA2[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightImag[bandIdx][chIdx] = hHrtf->rightHRIRImag_HOA2[bandIdx][chIdx]; } else if ( input_config == IVAS_REND_AUDIO_CONFIG_FOA ) { /* HOA3 filter coefficients */ hBinRenConvModule->filterTapsLeftReal[bandIdx][chIdx] = hHrtf->leftHRIRReal_FOA[bandIdx][chIdx]; hBinRenConvModule->filterTapsLeftImag[bandIdx][chIdx] = hHrtf->leftHRIRImag_FOA[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightReal[bandIdx][chIdx] = hHrtf->rightHRIRReal_FOA[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightImag[bandIdx][chIdx] = hHrtf->rightHRIRImag_FOA[bandIdx][chIdx]; } else { return IVAS_ERR_INVALID_INPUT_FORMAT; } #else /* HOA3 filter coefficients */ hBinRenConvModule->filterTapsLeftReal[bandIdx][chIdx] = hHrtf->leftHRIRReal_HOA3[bandIdx][chIdx]; hBinRenConvModule->filterTapsLeftImag[bandIdx][chIdx] = hHrtf->leftHRIRImag_HOA3[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightReal[bandIdx][chIdx] = hHrtf->rightHRIRReal_HOA3[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightImag[bandIdx][chIdx] = hHrtf->rightHRIRImag_HOA3[bandIdx][chIdx]; #endif } } } Loading Loading @@ -385,6 +420,10 @@ static ivas_error ivas_binaural_hrtf_open( HrtfFastConv->FASTCONV_HRIR_latency_s = FASTCONV_HRIR_latency_s; HrtfFastConv->FASTCONV_HOA3_latency_s = FASTCONV_HOA3_latency_s; #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS HrtfFastConv->FASTCONV_HOA2_latency_s = FASTCONV_HOA2_latency_s; HrtfFastConv->FASTCONV_FOA_latency_s = FASTCONV_FOA_latency_s; #endif HrtfFastConv->FASTCONV_BRIR_latency_s = FASTCONV_BRIR_latency_s; for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) Loading Loading @@ -658,8 +697,27 @@ ivas_error ivas_binRenderer_open( } else { #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS if ( hBinRenderer->nInChannels == 16 ) { st_ivas->binaural_latency_ns = (int32_t) ( st_ivas->hHrtfFastConv->FASTCONV_HOA3_latency_s * 1000000000.f ); } else if ( hBinRenderer->nInChannels == 9 ) { st_ivas->binaural_latency_ns = (int32_t) ( st_ivas->hHrtfFastConv->FASTCONV_HOA2_latency_s * 1000000000.f ); } else if ( hBinRenderer->nInChannels == 4 ) { st_ivas->binaural_latency_ns = (int32_t) ( st_ivas->hHrtfFastConv->FASTCONV_FOA_latency_s * 1000000000.f ); } else { return IVAS_ERR_INVALID_INPUT_FORMAT; } #else st_ivas->binaural_latency_ns = (int32_t) ( st_ivas->hHrtfFastConv->FASTCONV_HOA3_latency_s * 1000000000.f ); #endif } } else { Loading lib_rend/ivas_rom_binauralRenderer.c +7068 −0 File changed.Preview size limit exceeded, changes collapsed. Show changes lib_rend/ivas_rom_binauralRenderer.h +4 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,10 @@ extern float rightHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS] extern float rightHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; extern float FASTCONV_HOA3_latency_s; #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS extern float FASTCONV_HOA2_latency_s; extern float FASTCONV_FOA_latency_s; #endif extern float hrtfShCoeffsRe[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; extern float hrtfShCoeffsIm[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; Loading lib_rend/ivas_stat_rend.h +12 −1 Original line number Diff line number Diff line Loading @@ -729,7 +729,18 @@ typedef struct ivas_hrtfs_fastconv_struct float leftHRIRImag_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][7]; float rightHRIRReal_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][7]; float rightHRIRImag_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][7]; #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS float FASTCONV_HOA2_latency_s; float leftHRIRReal_HOA2[BINAURAL_CONVBANDS][9][7]; float leftHRIRImag_HOA2[BINAURAL_CONVBANDS][9][7]; float rightHRIRReal_HOA2[BINAURAL_CONVBANDS][9][7]; float rightHRIRImag_HOA2[BINAURAL_CONVBANDS][9][7]; float FASTCONV_FOA_latency_s; float leftHRIRReal_FOA[BINAURAL_CONVBANDS][4][7]; float leftHRIRImag_FOA[BINAURAL_CONVBANDS][4][7]; float rightHRIRReal_FOA[BINAURAL_CONVBANDS][4][7]; float rightHRIRImag_FOA[BINAURAL_CONVBANDS][4][7]; #endif float FASTCONV_BRIR_latency_s; float leftBRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; float leftBRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; Loading Loading
lib_com/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -172,7 +172,7 @@ #define FIX_BINAURAL_DELAY_PRECISION #define USE_HRIR_128_METH5_IRC_53_Q10_SYML_ITRP1_48000 #define USE_IIS_BRIR_OFFICIALMPEG_COMBINED //#define UPDATE_SBA_FILTER #define UPDATE_SBA_FILTER #ifdef UPDATE_SBA_FILTER #define UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS Loading
lib_dec/ivas_binRenderer_internal.c +58 −0 Original line number Diff line number Diff line Loading @@ -143,7 +143,11 @@ static ivas_error ivas_binRenderer_convModuleOpen( if ( !isLoudspeaker ) { #ifdef UPDATE_SBA_FILTER hBinRenderer->nInChannels = audioCfg2channels( input_config ); // TODO maybe an audioCfg2channels_woLFE() function? Works as long as only 1 LFE is present #else hBinRenderer->nInChannels = 16; #endif } else { Loading Loading @@ -342,11 +346,42 @@ static ivas_error ivas_binRenderer_convModuleOpen( } else { #ifdef UPDATE_SBA_FILTER if ( input_config == IVAS_REND_AUDIO_CONFIG_HOA3 ) { /* HOA3 filter coefficients */ hBinRenConvModule->filterTapsLeftReal[bandIdx][chIdx] = hHrtf->leftHRIRReal_HOA3[bandIdx][chIdx]; hBinRenConvModule->filterTapsLeftImag[bandIdx][chIdx] = hHrtf->leftHRIRImag_HOA3[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightReal[bandIdx][chIdx] = hHrtf->rightHRIRReal_HOA3[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightImag[bandIdx][chIdx] = hHrtf->rightHRIRImag_HOA3[bandIdx][chIdx]; } else if ( input_config == IVAS_REND_AUDIO_CONFIG_HOA2 ) { /* HOA3 filter coefficients */ hBinRenConvModule->filterTapsLeftReal[bandIdx][chIdx] = hHrtf->leftHRIRReal_HOA2[bandIdx][chIdx]; hBinRenConvModule->filterTapsLeftImag[bandIdx][chIdx] = hHrtf->leftHRIRImag_HOA2[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightReal[bandIdx][chIdx] = hHrtf->rightHRIRReal_HOA2[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightImag[bandIdx][chIdx] = hHrtf->rightHRIRImag_HOA2[bandIdx][chIdx]; } else if ( input_config == IVAS_REND_AUDIO_CONFIG_FOA ) { /* HOA3 filter coefficients */ hBinRenConvModule->filterTapsLeftReal[bandIdx][chIdx] = hHrtf->leftHRIRReal_FOA[bandIdx][chIdx]; hBinRenConvModule->filterTapsLeftImag[bandIdx][chIdx] = hHrtf->leftHRIRImag_FOA[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightReal[bandIdx][chIdx] = hHrtf->rightHRIRReal_FOA[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightImag[bandIdx][chIdx] = hHrtf->rightHRIRImag_FOA[bandIdx][chIdx]; } else { return IVAS_ERR_INVALID_INPUT_FORMAT; } #else /* HOA3 filter coefficients */ hBinRenConvModule->filterTapsLeftReal[bandIdx][chIdx] = hHrtf->leftHRIRReal_HOA3[bandIdx][chIdx]; hBinRenConvModule->filterTapsLeftImag[bandIdx][chIdx] = hHrtf->leftHRIRImag_HOA3[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightReal[bandIdx][chIdx] = hHrtf->rightHRIRReal_HOA3[bandIdx][chIdx]; hBinRenConvModule->filterTapsRightImag[bandIdx][chIdx] = hHrtf->rightHRIRImag_HOA3[bandIdx][chIdx]; #endif } } } Loading Loading @@ -385,6 +420,10 @@ static ivas_error ivas_binaural_hrtf_open( HrtfFastConv->FASTCONV_HRIR_latency_s = FASTCONV_HRIR_latency_s; HrtfFastConv->FASTCONV_HOA3_latency_s = FASTCONV_HOA3_latency_s; #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS HrtfFastConv->FASTCONV_HOA2_latency_s = FASTCONV_HOA2_latency_s; HrtfFastConv->FASTCONV_FOA_latency_s = FASTCONV_FOA_latency_s; #endif HrtfFastConv->FASTCONV_BRIR_latency_s = FASTCONV_BRIR_latency_s; for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) Loading Loading @@ -658,8 +697,27 @@ ivas_error ivas_binRenderer_open( } else { #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS if ( hBinRenderer->nInChannels == 16 ) { st_ivas->binaural_latency_ns = (int32_t) ( st_ivas->hHrtfFastConv->FASTCONV_HOA3_latency_s * 1000000000.f ); } else if ( hBinRenderer->nInChannels == 9 ) { st_ivas->binaural_latency_ns = (int32_t) ( st_ivas->hHrtfFastConv->FASTCONV_HOA2_latency_s * 1000000000.f ); } else if ( hBinRenderer->nInChannels == 4 ) { st_ivas->binaural_latency_ns = (int32_t) ( st_ivas->hHrtfFastConv->FASTCONV_FOA_latency_s * 1000000000.f ); } else { return IVAS_ERR_INVALID_INPUT_FORMAT; } #else st_ivas->binaural_latency_ns = (int32_t) ( st_ivas->hHrtfFastConv->FASTCONV_HOA3_latency_s * 1000000000.f ); #endif } } else { Loading
lib_rend/ivas_rom_binauralRenderer.c +7068 −0 File changed.Preview size limit exceeded, changes collapsed. Show changes
lib_rend/ivas_rom_binauralRenderer.h +4 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,10 @@ extern float rightHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS] extern float rightHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; extern float FASTCONV_HOA3_latency_s; #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS extern float FASTCONV_HOA2_latency_s; extern float FASTCONV_FOA_latency_s; #endif extern float hrtfShCoeffsRe[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; extern float hrtfShCoeffsIm[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; Loading
lib_rend/ivas_stat_rend.h +12 −1 Original line number Diff line number Diff line Loading @@ -729,7 +729,18 @@ typedef struct ivas_hrtfs_fastconv_struct float leftHRIRImag_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][7]; float rightHRIRReal_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][7]; float rightHRIRImag_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][7]; #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS float FASTCONV_HOA2_latency_s; float leftHRIRReal_HOA2[BINAURAL_CONVBANDS][9][7]; float leftHRIRImag_HOA2[BINAURAL_CONVBANDS][9][7]; float rightHRIRReal_HOA2[BINAURAL_CONVBANDS][9][7]; float rightHRIRImag_HOA2[BINAURAL_CONVBANDS][9][7]; float FASTCONV_FOA_latency_s; float leftHRIRReal_FOA[BINAURAL_CONVBANDS][4][7]; float leftHRIRImag_FOA[BINAURAL_CONVBANDS][4][7]; float rightHRIRReal_FOA[BINAURAL_CONVBANDS][4][7]; float rightHRIRImag_FOA[BINAURAL_CONVBANDS][4][7]; #endif float FASTCONV_BRIR_latency_s; float leftBRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; float leftBRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; Loading