Commit c796d46a authored by emerit's avatar emerit
Browse files

Merge branch 'orange/fixpoint_crend_hrtf_file_format' of...

Merge branch 'orange/fixpoint_crend_hrtf_file_format' of https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec into orange/fixpoint_crend_hrtf_file_format
parents fc514b2b e8728e90
Loading
Loading
Loading
Loading
+134 −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,34 @@ static ivas_error ivas_binRenderer_convModuleOpen(
    {
        if ( hBinRenderer->ivas_format == SBA_FORMAT )
        {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
            if ( input_config == IVAS_AUDIO_CONFIG_HOA3 )
            {
                hBinRenConvModule->numTaps = hHrtf->ntaps_hrir_hoa3;
            }
            else if ( input_config == IVAS_AUDIO_CONFIG_HOA2 )
            {
                hBinRenConvModule->numTaps = hHrtf->ntaps_hrir_hoa2;
            }
            else if ( input_config == IVAS_AUDIO_CONFIG_FOA )
            {
                hBinRenConvModule->numTaps = hHrtf->ntaps_hrir_foa;
            }
            else
            {
                return IVAS_ERR_INVALID_INPUT_FORMAT;
            }
#else
            hBinRenConvModule->numTaps = BINAURAL_NTAPS_SBA;
#endif
        }
        else
        {
#ifdef FIX_1123_FASTCONV_16BIT_ROM
            hBinRenConvModule->numTaps = hHrtf->ntaps_hrir;
#else
            hBinRenConvModule->numTaps = BINAURAL_NTAPS;
#endif
        }

        /* Use fixed order filtering */
@@ -465,6 +492,13 @@ void ivas_init_binaural_hrtf(
    HrtfFastConv->FASTCONV_FOA_latency_s = 0x00;

    HrtfFastConv->allocate_init_flag = 0x00;
#ifdef FIX_1123_FASTCONV_16BIT_ROM
    HrtfFastConv->ntaps_hrir = BINAURAL_NTAPS;
    HrtfFastConv->ntaps_hrir_foa = BINAURAL_NTAPS_SBA;
    HrtfFastConv->ntaps_hrir_hoa2 = BINAURAL_NTAPS_SBA;
    HrtfFastConv->ntaps_hrir_hoa3 = BINAURAL_NTAPS_SBA;
    HrtfFastConv->ntaps_brir = BINAURAL_NTAPS_MAX;
#endif

    for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ )
    {
@@ -543,6 +577,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_hoa3, 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_hoa3, 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_hoa3, 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_hoa3, 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 +611,7 @@ ivas_error ivas_allocate_binaural_hrtf(
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA3" );
            }
#endif
        }
    }

@@ -570,6 +623,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_hoa2, 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_hoa2, 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_hoa2, 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_hoa2, 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 +657,7 @@ ivas_error ivas_allocate_binaural_hrtf(
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA2" );
            }
#endif
        }
    }

@@ -597,6 +669,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_foa, 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_foa, 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_foa, 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_foa, 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 +703,7 @@ ivas_error ivas_allocate_binaural_hrtf(
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_FOA" );
            }
#endif
        }
    }

@@ -620,7 +711,24 @@ ivas_error ivas_allocate_binaural_hrtf(
    {
        if ( ( HrtfFastConv->leftHRIRReal == NULL ) && ( HrtfFastConv->leftHRIRImag == NULL ) && ( HrtfFastConv->rightHRIRReal == NULL ) && ( HrtfFastConv->rightHRIRImag == NULL ) )
        {

#ifdef FIX_1123_FASTCONV_16BIT_ROM
            if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRReal, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_hrir, 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, 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, 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, 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" );
@@ -637,6 +745,7 @@ ivas_error ivas_allocate_binaural_hrtf(
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag" );
            }
#endif
        }
    }

@@ -644,6 +753,24 @@ ivas_error ivas_allocate_binaural_hrtf(
    {
        if ( ( HrtfFastConv->leftBRIRReal == NULL ) && ( HrtfFastConv->leftBRIRImag == NULL ) && ( HrtfFastConv->rightBRIRReal == NULL ) && ( HrtfFastConv->rightBRIRImag == NULL ) )
        {
#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" );
@@ -660,6 +787,7 @@ ivas_error ivas_allocate_binaural_hrtf(
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightBRIRImag" );
            }
#endif
        }
    }

@@ -741,7 +869,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; 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 );
@@ -761,7 +889,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 );
@@ -781,7 +909,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_hoa3; 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 );
@@ -801,7 +929,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_hoa2; 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 );
@@ -821,7 +949,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_foa; 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 );
+0 −1
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@
/* Generated on 28-Jun-2024 with Matlab version 24.1.0.2578822 (R2024a) Update 2 by marcemerit on MACA64 */
/* clang-format off */
#include <stdint.h>
+0 −1
Original line number Diff line number Diff line
@@ -156,4 +156,3 @@ extern const float parametricReverberationTimes[CLDFB_NO_CHANNELS_MAX];
extern const float parametricReverberationEneCorrections[CLDFB_NO_CHANNELS_MAX];
extern const float parametricEarlyPartEneCorrection[CLDFB_NO_CHANNELS_MAX];
#endif
+12 −0
Original line number Diff line number Diff line
@@ -1263,12 +1263,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;
@@ -1293,6 +1298,13 @@ 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;
    uint16_t ntaps_hrir_hoa3;
    uint16_t ntaps_hrir_hoa2;
    uint16_t ntaps_hrir_foa;
    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.