Commit 5a12dcde authored by Jan Brouwer's avatar Jan Brouwer
Browse files

added fromROM flag to HRTFS_STATISTICS; set_default_reverb_iac_energy() not...

added fromROM flag to HRTFS_STATISTICS; set_default_reverb_iac_energy() not needed anymore, wound back changes
parent 6953ba6c
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -256,6 +256,11 @@ ivas_error ivas_HRTF_statistics_binary_open(
        return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for statistics HRTF tables!" );
    }

#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
    ( *hHrtfStatistics )->average_energy_l = NULL;
    ( *hHrtfStatistics )->average_energy_r = NULL;
    ( *hHrtfStatistics )->inter_aural_coherence = NULL;

    switch ( sampleRate )
    {
        case 48000:
@@ -273,12 +278,9 @@ ivas_error ivas_HRTF_statistics_binary_open(
            ( *hHrtfStatistics )->average_energy_r = defaultHRIR_right_avg_power_16kHz;
            ( *hHrtfStatistics )->inter_aural_coherence = defaultHRIR_coherence_16kHz;
            break;
        default:
            ( *hHrtfStatistics )->average_energy_l = NULL;
            ( *hHrtfStatistics )->average_energy_r = NULL;
            ( *hHrtfStatistics )->inter_aural_coherence = NULL;
            break;
    }
    ( *hHrtfStatistics )->fromROM = TRUE;
#endif

    return IVAS_ERR_OK;
}
+1 −3
Original line number Diff line number Diff line
@@ -1361,9 +1361,7 @@ typedef struct ivas_hrtfs_statistics_struct
    const float *average_energy_l;
    const float *average_energy_r;
    const float *inter_aural_coherence;
    float *average_energy_l_dyn;
    float *average_energy_r_dyn;
    float *inter_aural_coherence_dyn;
    int16_t fromROM;                     /*  Flag that indicates that the pointers point to tables in ROM (controls init/dealloc).*/
} HRTFS_STATISTICS, *HRTFS_STATISTICS_HANDLE;
#endif

+56 −127
Original line number Diff line number Diff line
@@ -463,6 +463,7 @@ static ivas_error LoadBSplineBinary(


#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
/*-------------------------------------------------------------------*
 * set_default_reverb_iac_energy()
 *
@@ -470,99 +471,26 @@ static ivas_error LoadBSplineBinary(
 --------------------------------------------------------------------*/

static ivas_error set_default_reverb_iac_energy(
#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
    HRTFS_STATISTICS_HANDLE hHrtfStatistics,
    int32_t sampleRate,
    int16_t modelROM
#else
    IVAS_DEC_HRTF_HANDLE HrFiltSet_p /* i/o: HR filter model parameter structure */
#endif
)
{
    ivas_error error = IVAS_ERR_OK;
#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
    int16_t i;
#endif
#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB
    int16_t lr_iac_len;
#endif
#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
    if ( hHrtfStatistics == NULL )
#else
    if ( HrFiltSet_p == NULL )
#endif
    {
        return IVAS_ERR_UNEXPECTED_NULL_POINTER;
    }

#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB
    lr_iac_len = LR_IAC_LENGTH_NR_FC;
#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
    if ( sampleRate == 16000 )
#else
    if ( HrFiltSet_p->SampleRate == 16000 )
#endif
    {
        lr_iac_len = LR_IAC_LENGTH_NR_FC_16KHZ;
    }
#endif
#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
    if ( modelROM == 0 )
#else
#endif
    {
#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES

        hHrtfStatistics->average_energy_l_dyn = (float *) malloc( lr_iac_len * sizeof( float ) );
        hHrtfStatistics->average_energy_r_dyn = (float *) malloc( lr_iac_len * sizeof( float ) );
        hHrtfStatistics->inter_aural_coherence_dyn = (float *) malloc( lr_iac_len * sizeof( float ) );

        if ( hHrtfStatistics->average_energy_l_dyn == NULL || hHrtfStatistics->average_energy_r_dyn == NULL || hHrtfStatistics->inter_aural_coherence_dyn == NULL )
        {
            return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for HRTF statistics data" );
        }

        switch ( sampleRate )
        {
            case 48000:
                mvr2r( defaultHRIR_left_avg_power_48kHz, hHrtfStatistics->average_energy_l_dyn, lr_iac_len );
                mvr2r( defaultHRIR_right_avg_power_48kHz, hHrtfStatistics->average_energy_r_dyn, lr_iac_len );
                mvr2r( defaultHRIR_coherence_48kHz, hHrtfStatistics->inter_aural_coherence_dyn, lr_iac_len );
                break;
            case 32000:
                mvr2r( defaultHRIR_left_avg_power_32kHz, hHrtfStatistics->average_energy_l_dyn, lr_iac_len );
                mvr2r( defaultHRIR_right_avg_power_32kHz, hHrtfStatistics->average_energy_r_dyn, lr_iac_len );
                mvr2r( defaultHRIR_coherence_32kHz, hHrtfStatistics->inter_aural_coherence_dyn, lr_iac_len );
                break;
            case 16000:
                mvr2r( defaultHRIR_left_avg_power_16kHz, hHrtfStatistics->average_energy_l_dyn, lr_iac_len );
                mvr2r( defaultHRIR_right_avg_power_16kHz, hHrtfStatistics->average_energy_r_dyn, lr_iac_len );
                mvr2r( defaultHRIR_coherence_16kHz, hHrtfStatistics->inter_aural_coherence_dyn, lr_iac_len );
                break;
        }
    }
    else
    {
        switch ( sampleRate )
        {
            case 48000:
                hHrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_48kHz;
                hHrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_48kHz;
                hHrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_48kHz;
                break;
            case 32000:
                hHrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_32kHz;
                hHrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_32kHz;
                hHrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_32kHz;
                break;
            case 16000:
                hHrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_16kHz;
                hHrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_16kHz;
                hHrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_16kHz;
                break;
        }
    }
#else
    if ( HrFiltSet_p->ModelParams.modelROM == 0 )
    {
        for ( i = 0; i < 3; i++ )
@@ -625,10 +553,10 @@ static ivas_error set_default_reverb_iac_energy(
                break;
        }
    }
#endif

    return error;
}
#endif

#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES

@@ -663,6 +591,10 @@ static ivas_error load_reverb_from_binary(
    int16_t lr_iac_len;

#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
    float *average_energy_l_dyn;
    float *average_energy_r_dyn;
    float *inter_aural_coherence_dyn;

    if ( hHrtfStatistics == NULL )
#else
    if ( HrFiltSet_p == NULL )
@@ -733,20 +665,21 @@ static ivas_error load_reverb_from_binary(
    if ( is_reverb )
    {
#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
        hHrtfStatistics->average_energy_l_dyn = (float *) malloc( lr_iac_len * sizeof( float ) );
        hHrtfStatistics->average_energy_r_dyn = (float *) malloc( lr_iac_len * sizeof( float ) );
        hHrtfStatistics->inter_aural_coherence_dyn = (float *) malloc( lr_iac_len * sizeof( float ) );
        average_energy_l_dyn = (float *) malloc( lr_iac_len * sizeof( float ) );
        average_energy_r_dyn = (float *) malloc( lr_iac_len * sizeof( float ) );
        inter_aural_coherence_dyn = (float *) malloc( lr_iac_len * sizeof( float ) );

        if ( hHrtfStatistics->average_energy_l_dyn == NULL || hHrtfStatistics->average_energy_r_dyn == NULL || hHrtfStatistics->inter_aural_coherence_dyn == NULL )
        if ( average_energy_l_dyn == NULL || average_energy_r_dyn == NULL || inter_aural_coherence_dyn == NULL )
        {
            return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" );
        }
        fread( hHrtfStatistics->average_energy_l_dyn, sizeof( const float ), lr_iac_len, f_hrtf );
        fread( hHrtfStatistics->average_energy_r_dyn, sizeof( const float ), lr_iac_len, f_hrtf );
        fread( hHrtfStatistics->inter_aural_coherence_dyn, sizeof( const float ), lr_iac_len, f_hrtf );
        hHrtfStatistics->average_energy_l = (const float *) hHrtfStatistics->average_energy_l_dyn;
        hHrtfStatistics->average_energy_r = (const float *) hHrtfStatistics->average_energy_r_dyn;
        hHrtfStatistics->inter_aural_coherence = (const float *) hHrtfStatistics->inter_aural_coherence_dyn;
        fread( average_energy_l_dyn, sizeof( const float ), lr_iac_len, f_hrtf );
        fread( average_energy_r_dyn, sizeof( const float ), lr_iac_len, f_hrtf );
        fread( inter_aural_coherence_dyn, sizeof( const float ), lr_iac_len, f_hrtf );
        hHrtfStatistics->average_energy_l = (const float *) average_energy_l_dyn;
        hHrtfStatistics->average_energy_r = (const float *) average_energy_r_dyn;
        hHrtfStatistics->inter_aural_coherence = (const float *) inter_aural_coherence_dyn;
        hHrtfStatistics->fromROM = FALSE;
#else
        /* left/right energy and interaural coherence for late reverb */
        for ( i = 0; i < 3; i++ )
@@ -778,10 +711,6 @@ static ivas_error load_reverb_from_binary(
    else
    {
#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
        /* TODO(922): Check for the modelROM correctness */

        /* TODO(922): Check should we call this function in other place as well? */
        set_default_reverb_iac_energy( hHrtfStatistics, sampleRate, TRUE );
#else
        set_default_reverb_iac_energy( HrFiltSet_p );
#endif