Commit 646369c2 authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

[fastconv] use BINAURAL_NTAPS{_SBA,_MAX} from binary file instead of ROM

parent 0c8e76d2
Loading
Loading
Loading
Loading
+112 −6
Original line number Diff line number Diff line
@@ -167,7 +167,11 @@ static ivas_error ivas_binRenderer_convModuleOpen(

    if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM )
    {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
        hBinRenConvModule->numTaps = hHrtf->ntaps_brir;
#else
        hBinRenConvModule->numTaps = BINAURAL_NTAPS_MAX;
#endif

        /* Use variable order filtering */
        bandIdx = 0;
@@ -196,11 +200,19 @@ static ivas_error ivas_binRenderer_convModuleOpen(
    {
        if ( hBinRenderer->ivas_format == SBA_FORMAT )
        {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
            hBinRenConvModule->numTaps = hHrtf->ntaps_hrir_sba;
#else
            hBinRenConvModule->numTaps = BINAURAL_NTAPS_SBA;
#endif
        }
        else
        {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
            hBinRenConvModule->numTaps = hHrtf->ntaps_hrir_mc;
#else
            hBinRenConvModule->numTaps = BINAURAL_NTAPS;
#endif
        }

        /* Use fixed order filtering */
@@ -543,6 +555,24 @@ ivas_error ivas_allocate_binaural_hrtf(
        }
        else
        {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRReal_HOA3, BINAURAL_CONVBANDS, HOA3_CHANNELS, HrtfFastConv->ntaps_hrir_sba, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA3" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRImag_HOA3, BINAURAL_CONVBANDS, HOA3_CHANNELS, HrtfFastConv->ntaps_hrir_sba, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag_HOA3" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRReal_HOA3, BINAURAL_CONVBANDS, HOA3_CHANNELS, HrtfFastConv->ntaps_hrir_sba, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal_HOA3" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRImag_HOA3, BINAURAL_CONVBANDS, HOA3_CHANNELS, HrtfFastConv->ntaps_hrir_sba, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA3" );
            }
#else
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRReal_HOA3, BINAURAL_CONVBANDS, HOA3_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA3" );
@@ -559,6 +589,7 @@ ivas_error ivas_allocate_binaural_hrtf(
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA3" );
            }
#endif
        }
    }

@@ -570,6 +601,24 @@ ivas_error ivas_allocate_binaural_hrtf(
        }
        else
        {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRReal_HOA2, BINAURAL_CONVBANDS, HOA2_CHANNELS, HrtfFastConv->ntaps_hrir_sba, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA2" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRImag_HOA2, BINAURAL_CONVBANDS, HOA2_CHANNELS, HrtfFastConv->ntaps_hrir_sba, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag_HOA2" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRReal_HOA2, BINAURAL_CONVBANDS, HOA2_CHANNELS, HrtfFastConv->ntaps_hrir_sba, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal_HOA2" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRImag_HOA2, BINAURAL_CONVBANDS, HOA2_CHANNELS, HrtfFastConv->ntaps_hrir_sba, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA2" );
            }
#else
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRReal_HOA2, BINAURAL_CONVBANDS, HOA2_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA2" );
@@ -586,6 +635,7 @@ ivas_error ivas_allocate_binaural_hrtf(
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA2" );
            }
#endif
        }
    }

@@ -597,6 +647,24 @@ ivas_error ivas_allocate_binaural_hrtf(
        }
        else
        {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRReal_FOA, BINAURAL_CONVBANDS, FOA_CHANNELS, HrtfFastConv->ntaps_hrir_sba, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_FOA" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRImag_FOA, BINAURAL_CONVBANDS, FOA_CHANNELS, HrtfFastConv->ntaps_hrir_sba, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag_FOA" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRReal_FOA, BINAURAL_CONVBANDS, FOA_CHANNELS, HrtfFastConv->ntaps_hrir_sba, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal_FOA" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRImag_FOA, BINAURAL_CONVBANDS, FOA_CHANNELS, HrtfFastConv->ntaps_hrir_sba, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_FOA" );
            }
#else
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRReal_FOA, BINAURAL_CONVBANDS, FOA_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_FOA" );
@@ -613,6 +681,7 @@ ivas_error ivas_allocate_binaural_hrtf(
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_FOA" );
            }
#endif
        }
    }

@@ -628,7 +697,24 @@ ivas_error ivas_allocate_binaural_hrtf(
        if ( ( HrtfFastConv->leftHRIRReal == NULL ) && ( HrtfFastConv->leftHRIRImag == NULL ) && ( HrtfFastConv->rightHRIRReal == NULL ) && ( HrtfFastConv->rightHRIRImag == NULL ) )
#endif
        {

#ifdef FIX_1123_FASTCONV_16BIT_ROM
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRReal, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_hrir_mc, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRImag, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_hrir_mc, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRReal, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_hrir_mc, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRImag, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_hrir_mc, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag" );
            }
#else
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRReal, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal" );
@@ -645,6 +731,7 @@ ivas_error ivas_allocate_binaural_hrtf(
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag" );
            }
#endif
        }
    }

@@ -660,6 +747,24 @@ ivas_error ivas_allocate_binaural_hrtf(
        if ( ( HrtfFastConv->leftBRIRReal == NULL ) && ( HrtfFastConv->leftBRIRImag == NULL ) && ( HrtfFastConv->rightBRIRReal == NULL ) && ( HrtfFastConv->rightBRIRImag == NULL ) )
#endif
        {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftBRIRReal, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_brir, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftBRIRReal" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftBRIRImag, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_brir, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftBRIRImag" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightBRIRReal, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_brir, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightBRIRReal" );
            }
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightBRIRImag, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_brir, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightBRIRImag" );
            }
#else
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftBRIRReal, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS_MAX, allocate_init_flag ) )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftBRIRReal" );
@@ -676,6 +781,7 @@ ivas_error ivas_allocate_binaural_hrtf(
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightBRIRImag" );
            }
#endif
        }
    }

@@ -757,7 +863,7 @@ 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++ )
                    for ( k = 0; k < HrtfFastConv->ntaps_hrir_mc; 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 );
@@ -777,7 +883,7 @@ 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_MAX; k++ )
                    for ( k = 0; k < HrtfFastConv->ntaps_brir; 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 );
@@ -797,7 +903,7 @@ static ivas_error ivas_binaural_hrtf_open(
                for ( j = 0; j < HOA3_CHANNELS; j++ )
                {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
                    for ( k = 0; k < BINAURAL_NTAPS; k++ )
                    for ( k = 0; k < HrtfFastConv->ntaps_hrir_sba; 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 );
@@ -817,7 +923,7 @@ static ivas_error ivas_binaural_hrtf_open(
                for ( j = 0; j < HOA2_CHANNELS; j++ )
                {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
                    for ( k = 0; k < BINAURAL_NTAPS; k++ )
                    for ( k = 0; k < HrtfFastConv->ntaps_hrir_sba; 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 );
@@ -837,7 +943,7 @@ static ivas_error ivas_binaural_hrtf_open(
                for ( j = 0; j < FOA_CHANNELS; j++ )
                {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
                    for ( k = 0; k < BINAURAL_NTAPS; k++ )
                    for ( k = 0; k < HrtfFastConv->ntaps_hrir_sba; 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 );
+10 −0
Original line number Diff line number Diff line
@@ -1253,12 +1253,17 @@ typedef struct ivas_hrtfs_crend_structure
typedef struct ivas_hrtfs_fastconv_struct
{
    float FASTCONV_HOA3_latency_s;
#ifndef FIX_1123_FASTCONV_16BIT_ROM
    float FASTCONV_HRIR_latency_s;
#endif
    float ***leftHRIRReal_HOA3;
    float ***leftHRIRImag_HOA3;
    float ***rightHRIRReal_HOA3;
    float ***rightHRIRImag_HOA3;

#ifdef FIX_1123_FASTCONV_16BIT_ROM
    float FASTCONV_HRIR_latency_s;
#endif
    float ***leftHRIRReal;
    float ***leftHRIRImag;
    float ***rightHRIRReal;
@@ -1283,6 +1288,11 @@ typedef struct ivas_hrtfs_fastconv_struct
    float FASTCONV_FOA_latency_s;

    int16_t allocate_init_flag; /*Memory allocation flag 0: if the hrtf pointers are allocated at application level , 1: of allocated at ivas_binaural_hrtf_open() */
#ifdef FIX_1123_FASTCONV_16BIT_ROM
    uint16_t ntaps_hrir_mc;
    uint16_t ntaps_hrir_sba;
    uint16_t ntaps_brir;
#endif

    float fastconvReverberationTimes[CLDFB_NO_CHANNELS_MAX];
    float fastconvReverberationEneCorrections[CLDFB_NO_CHANNELS_MAX];
+80 −40

File changed.

Preview size limit exceeded, changes collapsed.