Commit 468aa780 authored by emerit's avatar emerit
Browse files

fix FIX_INV_DIFFUSE_WEIGHT bug, make switchs USE_NEW_HRTF_BINARY_FILE_FORMAT,...

fix FIX_INV_DIFFUSE_WEIGHT bug, make switchs USE_NEW_HRTF_BINARY_FILE_FORMAT, FIX_WARNING_RENDER_CONFIG, FIX_INV_DIFFUSE_WEIGHT, FIX_638_ENERGIE_IAC_ROM_TABLES independant
parent 83880287
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -610,7 +610,6 @@ int main(
        }

#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
        if ( ( *hHrtfTD != NULL ) && ( error = load_reverb_binary( *hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK )
        {
            if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
@@ -619,7 +618,6 @@ int main(
                goto cleanup;
            }
        }
#endif
#endif
        if ( ( error = IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ) ) != IVAS_ERR_OK )
        {
@@ -704,7 +702,6 @@ int main(
            }
        }
#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
        if ( ( error = IVAS_DEC_GetHrtfStatisticsHandle( hIvasDec, &hHrtfStatistics ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nIVAS_DEC_GetHrtfHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
@@ -723,12 +720,14 @@ int main(
            }
        }
#else
        if ( ( hHrtfTD != NULL ) && ( error = load_reverb_binary( hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK )
        if ( ( hHrtfTD != NULL ) && ( *hHrtfTD != NULL ) && ( error = load_reverb_binary( *hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK )
        {
            if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
            {
                fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
                goto cleanup;
            }
#endif
        }
#endif
    }

+1 −4
Original line number Diff line number Diff line
@@ -1012,7 +1012,6 @@ int main(
            }

#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
            if ( ( hHrtfTD != NULL ) && ( error = load_reverb_binary( *hHrtfTD, hrtfFileReader ) ) != IVAS_ERR_OK )
            {
                if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
@@ -1021,7 +1020,6 @@ int main(
                    goto cleanup;
                }
            }
#endif
#endif

            if ( ( error = IVAS_REND_GetHrtfCRendHandle( hIvasRend, &hSetOfHRTF ) ) != IVAS_ERR_OK )
@@ -1105,8 +1103,8 @@ int main(
            }
        }


#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
        if ( ( error = IVAS_REND_GetHrtfStatisticsHandle( hIvasRend, &hHrtfStatistics ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nIVAS_REND_GetHrtfStatisticsHandle failed\n\n" );
@@ -1124,7 +1122,6 @@ int main(
                destroy_hrtf_statistics( hHrtfStatistics );
            }
        }
#endif
#endif

        hrtfFileReader_close( &hrtfFileReader );
+10 −6
Original line number Diff line number Diff line
@@ -105,17 +105,21 @@

#define FIX_1372_ISAR_POST_REND
#define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM   /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */

#ifdef NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM
#define NONBE_FIX_AVG_IAC_CLDFB_REVERB
#endif

#define USE_NEW_HRTF_BINARY_FILE_FORMAT                 /* Orange: to activate when decided to change the hrtf binary file format */
#define NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES       /* Philips: Use pre-computed HRTF average L/R energies and IAC in all renderers	*/
#define FIX_638_ENERGIE_IAC_ROM_TABLES                  /* Orange: Missing left/right and coherence late reverb tables in binary format*/
#define NONBE_FIX_AVG_IAC_CLDFB_REVERB
//#define FIX_OLD_BINARY_FORMAT                           /* Orange: trick to make tests succesful when changing hrtf binary format between ref and new branch*/      
//#define FIX_OLD_BINARY_FILE                             /* Orange: current hrtf binary file in ref branch contains wrong values for fastconv value. This switch can be activated to compre running codec with and without hrtf file*/      
#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT
#define FIX_OLD_BINARY_FORMAT                           /* Orange: trick to make tests succesful when changing hrtf binary format between ref and new branch*/      
//#define NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES			  /* Philips: Use pre-computed HRTF average L/R energies and IAC in all renderers	*/
#endif

//#define FIX_638_ENERGIE_IAC_ROM_TABLES                  /* Orange: Missing left/right and coherence late reverb tables in binary format*/
#define FIX_WARNING_RENDER_CONFIG                       /* Orange: fix warning on windows build */
#define FIX_INV_DIFFUSE_WEIGHT                          /* Orange : Fix error in energy compensation in late binaural */


#define FIX_993_REMOVE_SBA_GET_ORDER                    /* VA: issue 993: remove unused function ivas_sba_get_order() */

//#define FIX_777_COMBI_RENDER_CONFIG_FILE                /* Philips: Fix for combined renderer config file support */
+12 −6
Original line number Diff line number Diff line
@@ -2153,8 +2153,10 @@ static ivas_error ivas_rend_crendConvolver(

                    FOR( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ )
                    {
                        pFreq_buf_re[k] += pFreq_filt_re[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i];
                        pFreq_buf_im[k] += pFreq_filt_im[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i];
                        pFreq_buf_re[k] = L_add( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_re[k] ); // Qx
                        pFreq_buf_im[k] = L_add( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_im[k] ); // Qx
                        move32();
                        move32();
                    }
                }
                ELSE
@@ -2168,10 +2170,14 @@ static ivas_error ivas_rend_crendConvolver(

                    for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ )
                    {
                        pFreq_buf_re[k] += pFreq_filt_re[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i];
                        pFreq_buf_im[k] += pFreq_filt_im[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i];
                        pFreq_buf2_re[k] += pFreq_filt_re[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i];
                        pFreq_buf2_im[k] += pFreq_filt_im[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i];
                        pFreq_buf_re[k] = L_add( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_re[k] ); // Qx
                        pFreq_buf_im[k] = L_add( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_im[k] ); // Qx
                        move32();
                        move32();
                        pFreq_buf2_re[k] = L_add( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i] ), pFreq_buf2_re[k] ); // Qx
                        pFreq_buf2_im[k] = L_add( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i] ), pFreq_buf2_im[k] ); // Qx
                        move32();
                        move32();
                    }
                }
#else
+28 −1
Original line number Diff line number Diff line
@@ -33,8 +33,10 @@
#include <stdint.h>
#include "options.h"
#include "prot_fx.h"
#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
#include "ivas_rom_binaural_crend_head.h"
#else
#include "ivas_rom_rend.h"
#endif
#include "ivas_prot_rend_fx.h"
#include "ivas_error.h"
@@ -297,9 +299,34 @@ ivas_error ivas_HRTF_statistics_init(
            HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_32kHz_fx;
            break;
        case 16000:
#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB
            HrtfStatistics->average_energy_l_dyn = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC_16KHZ * sizeof( float ) );
            if ( HrtfStatistics->average_energy_l_dyn == NULL )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" );
            }
            HrtfStatistics->average_energy_r_dyn = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC_16KHZ * sizeof( float ) );
            if ( HrtfStatistics->average_energy_r_dyn == NULL )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" );
            }
            HrtfStatistics->inter_aural_coherence_dyn = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC_16KHZ * sizeof( float ) );
            if ( HrtfStatistics->inter_aural_coherence_dyn == NULL )
            {
                return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" );
            }
            floatToFixed_arr32( defaultHRIR_left_avg_power_16kHz_fx, HrtfStatistics->average_energy_l_dyn, Q27, LR_IAC_LENGTH_NR_FC_16KHZ );  /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */
            floatToFixed_arr32( defaultHRIR_right_avg_power_16kHz_fx, HrtfStatistics->average_energy_r_dyn, Q27, LR_IAC_LENGTH_NR_FC_16KHZ ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */
            floatToFixed_arr32( defaultHRIR_coherence_16kHz_fx, HrtfStatistics->inter_aural_coherence_dyn, Q27, LR_IAC_LENGTH_NR_FC_16KHZ );  /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */
            HrtfStatistics->average_energy_l = (const Word32 *) HrtfStatistics->average_energy_l_dyn;
            HrtfStatistics->average_energy_r = (const Word32 *) HrtfStatistics->average_energy_r_dyn;
            HrtfStatistics->inter_aural_coherence = (const Word32 *) HrtfStatistics->inter_aural_coherence_dyn;
#else

            HrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_16kHz_fx;
            HrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_16kHz_fx;
            HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_16kHz_fx;
#endif
            break;
    }
    HrtfStatistics->fromROM = TRUE;
Loading