Loading lib_rend/ivas_hrtf.c +7 −5 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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; } Loading lib_rend/ivas_stat_rend.h +1 −3 Original line number Diff line number Diff line Loading @@ -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 Loading lib_util/hrtf_file_reader.c +56 −127 Original line number Diff line number Diff line Loading @@ -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() * Loading @@ -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++ ) Loading Loading @@ -625,10 +553,10 @@ static ivas_error set_default_reverb_iac_energy( break; } } #endif return error; } #endif #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES Loading Loading @@ -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 ) Loading Loading @@ -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++ ) Loading Loading @@ -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 Loading Loading
lib_rend/ivas_hrtf.c +7 −5 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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; } Loading
lib_rend/ivas_stat_rend.h +1 −3 Original line number Diff line number Diff line Loading @@ -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 Loading
lib_util/hrtf_file_reader.c +56 −127 Original line number Diff line number Diff line Loading @@ -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() * Loading @@ -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++ ) Loading Loading @@ -625,10 +553,10 @@ static ivas_error set_default_reverb_iac_energy( break; } } #endif return error; } #endif #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES Loading Loading @@ -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 ) Loading Loading @@ -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++ ) Loading Loading @@ -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 Loading