Commit 6a19989e authored by emerit's avatar emerit
Browse files

FastConv SBA Rom update

parent dab4fae6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+58 −0
Original line number Diff line number Diff line
@@ -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
    {
@@ -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
                }
            }
        }
@@ -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++ )
@@ -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
        {
+7068 −0

File changed.

Preview size limit exceeded, changes collapsed.

+4 −0
Original line number Diff line number Diff line
@@ -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];

+12 −1
Original line number Diff line number Diff line
@@ -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