Loading lib_com/ivas_cnst.h +4 −0 Original line number Diff line number Diff line Loading @@ -1426,7 +1426,11 @@ typedef enum #define BINAURAL_MAXBANDS 60 /* Max number of bands */ #define BINAURAL_CONVBANDS 50 /* Bands upto which convolution is performed */ #ifdef UPDATE_SBA_FILTER #define BINAURAL_NTAPS 5 #else #define BINAURAL_NTAPS 7 #endif #define BINAURAL_NTAPS_MAX 96 #define HRTF_SH_ORDER 3 Loading lib_dec/ivas_binRenderer_internal.c +23 −0 Original line number Diff line number Diff line Loading @@ -183,7 +183,11 @@ static ivas_error ivas_binRenderer_convModuleOpen( } else { #ifdef UPDATE_SBA_FILTER hBinRenConvModule->numTaps = BINAURAL_NTAPS; #else hBinRenConvModule->numTaps = 7; #endif /* Use fixed order filtering */ bandIdx = 0; Loading Loading @@ -347,13 +351,16 @@ static ivas_error ivas_binRenderer_convModuleOpen( else { #ifdef UPDATE_SBA_FILTER #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS if ( input_config == IVAS_REND_AUDIO_CONFIG_HOA3 ) { #endif /* 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]; #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS } else if ( input_config == IVAS_REND_AUDIO_CONFIG_HOA2 ) { Loading @@ -375,6 +382,7 @@ static ivas_error ivas_binRenderer_convModuleOpen( { return IVAS_ERR_INVALID_INPUT_FORMAT; } #endif #else /* HOA3 filter coefficients */ hBinRenConvModule->filterTapsLeftReal[bandIdx][chIdx] = hHrtf->leftHRIRReal_HOA3[bandIdx][chIdx]; Loading Loading @@ -430,10 +438,18 @@ static ivas_error ivas_binaural_hrtf_open( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef UPDATE_SBA_FILTER mvr2r( leftHRIRReal[i][j], HrtfFastConv->leftHRIRReal[i][j], BINAURAL_NTAPS ); mvr2r( leftHRIRImag[i][j], HrtfFastConv->leftHRIRImag[i][j], BINAURAL_NTAPS ); mvr2r( rightHRIRReal[i][j], HrtfFastConv->rightHRIRReal[i][j], BINAURAL_NTAPS ); mvr2r( rightHRIRImag[i][j], HrtfFastConv->rightHRIRImag[i][j], BINAURAL_NTAPS ); #else mvr2r( leftHRIRReal[i][j], HrtfFastConv->leftHRIRReal[i][j], 7 ); mvr2r( leftHRIRImag[i][j], HrtfFastConv->leftHRIRImag[i][j], 7 ); mvr2r( rightHRIRReal[i][j], HrtfFastConv->rightHRIRReal[i][j], 7 ); mvr2r( rightHRIRImag[i][j], HrtfFastConv->rightHRIRImag[i][j], 7 ); #endif mvr2r( leftBRIRReal[i][j], HrtfFastConv->leftBRIRReal[i][j], BINAURAL_NTAPS_MAX ); mvr2r( leftBRIRImag[i][j], HrtfFastConv->leftBRIRImag[i][j], BINAURAL_NTAPS_MAX ); Loading @@ -443,10 +459,17 @@ static ivas_error ivas_binaural_hrtf_open( for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { #ifdef UPDATE_SBA_FILTER mvr2r( leftHRIRReal_HOA3[i][j], HrtfFastConv->leftHRIRReal_HOA3[i][j], BINAURAL_NTAPS ); mvr2r( leftHRIRImag_HOA3[i][j], HrtfFastConv->leftHRIRImag_HOA3[i][j], BINAURAL_NTAPS ); mvr2r( rightHRIRReal_HOA3[i][j], HrtfFastConv->rightHRIRReal_HOA3[i][j], BINAURAL_NTAPS ); mvr2r( rightHRIRImag_HOA3[i][j], HrtfFastConv->rightHRIRImag_HOA3[i][j], BINAURAL_NTAPS ); #else mvr2r( leftHRIRReal_HOA3[i][j], HrtfFastConv->leftHRIRReal_HOA3[i][j], 7 ); mvr2r( leftHRIRImag_HOA3[i][j], HrtfFastConv->leftHRIRImag_HOA3[i][j], 7 ); mvr2r( rightHRIRReal_HOA3[i][j], HrtfFastConv->rightHRIRReal_HOA3[i][j], 7 ); mvr2r( rightHRIRImag_HOA3[i][j], HrtfFastConv->rightHRIRImag_HOA3[i][j], 7 ); #endif } } Loading lib_rend/ivas_crend.c +1 −1 Original line number Diff line number Diff line Loading @@ -975,11 +975,11 @@ static ivas_error ivas_rend_initCrend( hHrtf->pOut_to_bin_diffuse_im[j] = hSetOfHRTF->hHRTF_hrir_foa->pOut_to_bin_diffuse_im[j]; } } #endif else { return IVAS_ERROR( IVAS_ERR_INTERNAL, "Unsupported renderer type in Crend" ); } #endif } #else Loading lib_rend/ivas_stat_rend.h +22 −8 Original line number Diff line number Diff line Loading @@ -719,27 +719,41 @@ typedef struct ivas_hrtfs_crend_structure typedef struct ivas_hrtfs_fastconv_struct { float FASTCONV_HRIR_latency_s; #ifdef UPDATE_SBA_FILTER float leftHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; float leftHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; float rightHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; float rightHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; #else float leftHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][7]; float leftHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][7]; float rightHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][7]; float rightHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][7]; #endif float FASTCONV_HOA3_latency_s; #ifdef UPDATE_SBA_FILTER float leftHRIRReal_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; float leftHRIRImag_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; float rightHRIRReal_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; float rightHRIRImag_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; #else float leftHRIRReal_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][7]; 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]; #endif #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 leftHRIRReal_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; float leftHRIRImag_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; float rightHRIRReal_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; float rightHRIRImag_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; 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]; float leftHRIRReal_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; float leftHRIRImag_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; float rightHRIRReal_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; float rightHRIRImag_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; #endif float FASTCONV_BRIR_latency_s; float leftBRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; Loading Loading
lib_com/ivas_cnst.h +4 −0 Original line number Diff line number Diff line Loading @@ -1426,7 +1426,11 @@ typedef enum #define BINAURAL_MAXBANDS 60 /* Max number of bands */ #define BINAURAL_CONVBANDS 50 /* Bands upto which convolution is performed */ #ifdef UPDATE_SBA_FILTER #define BINAURAL_NTAPS 5 #else #define BINAURAL_NTAPS 7 #endif #define BINAURAL_NTAPS_MAX 96 #define HRTF_SH_ORDER 3 Loading
lib_dec/ivas_binRenderer_internal.c +23 −0 Original line number Diff line number Diff line Loading @@ -183,7 +183,11 @@ static ivas_error ivas_binRenderer_convModuleOpen( } else { #ifdef UPDATE_SBA_FILTER hBinRenConvModule->numTaps = BINAURAL_NTAPS; #else hBinRenConvModule->numTaps = 7; #endif /* Use fixed order filtering */ bandIdx = 0; Loading Loading @@ -347,13 +351,16 @@ static ivas_error ivas_binRenderer_convModuleOpen( else { #ifdef UPDATE_SBA_FILTER #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS if ( input_config == IVAS_REND_AUDIO_CONFIG_HOA3 ) { #endif /* 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]; #ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS } else if ( input_config == IVAS_REND_AUDIO_CONFIG_HOA2 ) { Loading @@ -375,6 +382,7 @@ static ivas_error ivas_binRenderer_convModuleOpen( { return IVAS_ERR_INVALID_INPUT_FORMAT; } #endif #else /* HOA3 filter coefficients */ hBinRenConvModule->filterTapsLeftReal[bandIdx][chIdx] = hHrtf->leftHRIRReal_HOA3[bandIdx][chIdx]; Loading Loading @@ -430,10 +438,18 @@ static ivas_error ivas_binaural_hrtf_open( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef UPDATE_SBA_FILTER mvr2r( leftHRIRReal[i][j], HrtfFastConv->leftHRIRReal[i][j], BINAURAL_NTAPS ); mvr2r( leftHRIRImag[i][j], HrtfFastConv->leftHRIRImag[i][j], BINAURAL_NTAPS ); mvr2r( rightHRIRReal[i][j], HrtfFastConv->rightHRIRReal[i][j], BINAURAL_NTAPS ); mvr2r( rightHRIRImag[i][j], HrtfFastConv->rightHRIRImag[i][j], BINAURAL_NTAPS ); #else mvr2r( leftHRIRReal[i][j], HrtfFastConv->leftHRIRReal[i][j], 7 ); mvr2r( leftHRIRImag[i][j], HrtfFastConv->leftHRIRImag[i][j], 7 ); mvr2r( rightHRIRReal[i][j], HrtfFastConv->rightHRIRReal[i][j], 7 ); mvr2r( rightHRIRImag[i][j], HrtfFastConv->rightHRIRImag[i][j], 7 ); #endif mvr2r( leftBRIRReal[i][j], HrtfFastConv->leftBRIRReal[i][j], BINAURAL_NTAPS_MAX ); mvr2r( leftBRIRImag[i][j], HrtfFastConv->leftBRIRImag[i][j], BINAURAL_NTAPS_MAX ); Loading @@ -443,10 +459,17 @@ static ivas_error ivas_binaural_hrtf_open( for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) { #ifdef UPDATE_SBA_FILTER mvr2r( leftHRIRReal_HOA3[i][j], HrtfFastConv->leftHRIRReal_HOA3[i][j], BINAURAL_NTAPS ); mvr2r( leftHRIRImag_HOA3[i][j], HrtfFastConv->leftHRIRImag_HOA3[i][j], BINAURAL_NTAPS ); mvr2r( rightHRIRReal_HOA3[i][j], HrtfFastConv->rightHRIRReal_HOA3[i][j], BINAURAL_NTAPS ); mvr2r( rightHRIRImag_HOA3[i][j], HrtfFastConv->rightHRIRImag_HOA3[i][j], BINAURAL_NTAPS ); #else mvr2r( leftHRIRReal_HOA3[i][j], HrtfFastConv->leftHRIRReal_HOA3[i][j], 7 ); mvr2r( leftHRIRImag_HOA3[i][j], HrtfFastConv->leftHRIRImag_HOA3[i][j], 7 ); mvr2r( rightHRIRReal_HOA3[i][j], HrtfFastConv->rightHRIRReal_HOA3[i][j], 7 ); mvr2r( rightHRIRImag_HOA3[i][j], HrtfFastConv->rightHRIRImag_HOA3[i][j], 7 ); #endif } } Loading
lib_rend/ivas_crend.c +1 −1 Original line number Diff line number Diff line Loading @@ -975,11 +975,11 @@ static ivas_error ivas_rend_initCrend( hHrtf->pOut_to_bin_diffuse_im[j] = hSetOfHRTF->hHRTF_hrir_foa->pOut_to_bin_diffuse_im[j]; } } #endif else { return IVAS_ERROR( IVAS_ERR_INTERNAL, "Unsupported renderer type in Crend" ); } #endif } #else Loading
lib_rend/ivas_stat_rend.h +22 −8 Original line number Diff line number Diff line Loading @@ -719,27 +719,41 @@ typedef struct ivas_hrtfs_crend_structure typedef struct ivas_hrtfs_fastconv_struct { float FASTCONV_HRIR_latency_s; #ifdef UPDATE_SBA_FILTER float leftHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; float leftHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; float rightHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; float rightHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; #else float leftHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][7]; float leftHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][7]; float rightHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][7]; float rightHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][7]; #endif float FASTCONV_HOA3_latency_s; #ifdef UPDATE_SBA_FILTER float leftHRIRReal_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; float leftHRIRImag_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; float rightHRIRReal_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; float rightHRIRImag_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; #else float leftHRIRReal_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][7]; 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]; #endif #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 leftHRIRReal_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; float leftHRIRImag_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; float rightHRIRReal_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; float rightHRIRImag_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; 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]; float leftHRIRReal_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; float leftHRIRImag_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; float rightHRIRReal_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; float rightHRIRImag_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; #endif float FASTCONV_BRIR_latency_s; float leftBRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; Loading