Commit ab6e3859 authored by emerit's avatar emerit
Browse files

Merge branch 'main' into update_crend

parent 0639df7b
Loading
Loading
Loading
Loading
+19993 −19913

File changed.

Preview size limit exceeded, changes collapsed.

+45 −1
Original line number Diff line number Diff line
@@ -30,8 +30,15 @@

*******************************************************************************************************/


#ifndef _IVAS_ROM_TDBINAURALRENDERER_
#define _IVAS_ROM_TDBINAURALRENDERER_

#include <stdint.h>
#include "options.h"
#ifdef DEBUGGING
#include "debug.h"
#endif
#include "cnst.h"
#include "ivas_cnst.h"

@@ -40,8 +47,13 @@
 *------------------------------------------------------------------------*/
/* TD renderer default HRIR model */
extern const float defaultHRIR_rom_latency_s;
extern const Word16 defaultHRIR_rom_latency_s_Q_fx;
extern const Word32 defaultHRIR_rom_latency_s_fx;
#ifdef FIX_989_TD_REND_ROM
extern const int16_t defaultHRIR_rom_model_configuration[6];
#else
extern const int16_t defaultHRIR_rom_azimDim2[15];
#endif
extern const int16_t defaultHRIR_rom_azimDim3[15];
extern const int16_t defaultHRIR_rom_azim_start_idx[15];
extern const int16_t defaultHRIR_rom_azimSegSamples[1];
@@ -49,7 +61,8 @@ extern const int16_t defaultHRIR_rom_azimShapeIdx[15];
extern const int16_t defaultHRIR_rom_azimShapeSampFactor[15];
extern const float defaultHRIR_rom_elevKSeq[13];
#ifdef IVAS_FLOAT_FIXED
extern const Word32 defaultHRIR_rom_elevKSeq_fx[13];
extern const Word16 defaultHRIR_rom_elevKSeq_Q_fx;
extern const Word16 defaultHRIR_rom_elevKSeq_fx[13];
#endif // IVAS_FLOAT_FIXED
extern const uint32_t defaultHRIR_rom_AlphaL48[470 * 128];
extern const uint32_t defaultHRIR_rom_AlphaR48[470 * 128];
@@ -65,24 +78,42 @@ extern const uint32_t defaultHRIR_rom_EL16[HRTF_MODEL_N_SECTIONS * 470];
extern const uint32_t defaultHRIR_rom_ER16[HRTF_MODEL_N_SECTIONS * 470];
extern const uint32_t defaultHRIR_rom_elevBsShape[36];
#ifdef IVAS_FLOAT_FIXED
extern const Word16 defaultHRIR_rom_AlphaL48_Q_fx;
extern const UWord32 defaultHRIR_rom_AlphaL48_fx[470 * 128];               /*Q30*/
extern const Word16 defaultHRIR_rom_AlphaR48_Q_fx;
extern const UWord32 defaultHRIR_rom_AlphaR48_fx[470 * 128];               /*Q30*/
extern const Word16 defaultHRIR_rom_AlphaL32_Q_fx;
extern const UWord32 defaultHRIR_rom_AlphaL32_fx[470 * 86];                /*Q30*/
extern const Word16 defaultHRIR_rom_AlphaR32_Q_fx;
extern const UWord32 defaultHRIR_rom_AlphaR32_fx[470 * 86];                /*Q30*/
extern const Word16 defaultHRIR_rom_AlphaL16_Q_fx;
extern const UWord32 defaultHRIR_rom_AlphaL16_fx[470 * 43];                /*Q30*/
extern const Word16 defaultHRIR_rom_AlphaR16_Q_fx;
extern const UWord32 defaultHRIR_rom_AlphaR16_fx[470 * 43];                /*Q30*/
extern const Word16 defaultHRIR_rom_EL48_Q_fx;
extern const UWord32 defaultHRIR_rom_EL48_fx[HRTF_MODEL_N_SECTIONS * 470]; /*Q28*/
extern const Word16 defaultHRIR_rom_ER48_Q_fx;
extern const UWord32 defaultHRIR_rom_ER48_fx[HRTF_MODEL_N_SECTIONS * 470]; /*Q28*/
extern const Word16 defaultHRIR_rom_EL32_Q_fx;
extern const UWord32 defaultHRIR_rom_EL32_fx[HRTF_MODEL_N_SECTIONS * 470]; /*Q28*/
extern const Word16 defaultHRIR_rom_ER32_Q_fx;
extern const UWord32 defaultHRIR_rom_ER32_fx[HRTF_MODEL_N_SECTIONS * 470]; /*Q28*/
extern const Word16 defaultHRIR_rom_EL16_Q_fx;
extern const UWord32 defaultHRIR_rom_EL16_fx[HRTF_MODEL_N_SECTIONS * 470]; /*Q28*/
extern const Word16 defaultHRIR_rom_ER16_Q_fx;
extern const UWord32 defaultHRIR_rom_ER16_fx[HRTF_MODEL_N_SECTIONS * 470]; /*Q28*/
#endif
#ifdef IVAS_FLOAT_FIXED
extern const Word16 defaultHRIR_rom_elevBsShape_Q_fx;
extern const Word32 defaultHRIR_rom_elevBsShape_fx[36]; /*Q30*/
#endif
#ifdef FIX_989_TD_REND_ROM
extern const int16_t defaultHRIR_rom_elevBsLen[4];
extern const int16_t defaultHRIR_rom_elevBsStart[4];
#endif
extern const uint32_t defaultHRIR_rom_azimBsShape[21];
#ifdef IVAS_FLOAT_FIXED
extern const Word16 defaultHRIR_rom_azimBsShape_Q_fx;
extern const Word32 defaultHRIR_rom_azimBsShape_fx[21]; /*Q30*/
#endif
extern const uint32_t defaultHRIR_rom_ITD_W[658];
@@ -91,9 +122,22 @@ extern const float defaultHRIR_rom_ITD_azimKSeq[19];
extern const uint32_t defaultHRIR_rom_ITD_elevBsShape[28];
extern const float defaultHRIR_rom_ITD_elevKSeq[16];
#ifdef IVAS_FLOAT_FIXED
extern const Word16 defaultHRIR_rom_ITD_W_Q_fx;
extern const UWord32 defaultHRIR_rom_ITD_W_fx[658];         /*Q25*/
extern const Word16 defaultHRIR_rom_ITD_elevKSeq_Q_fx;
extern const Word32 defaultHRIR_rom_ITD_elevKSeq_fx[16];    /*Q22*/
extern const Word16 defaultHRIR_rom_ITD_elevBsShape_Q_fx;
extern const Word32 defaultHRIR_rom_ITD_elevBsShape_fx[28]; /*Q30*/
extern const Word16 defaultHRIR_rom_ITD_azimKSeq_Q_fx;
extern const Word32 defaultHRIR_rom_ITD_azimKSeq_fx[19];    /*Q22*/
extern const Word32 defaultHRIR_rom_ITD_azimBsShape_Q_fx;
extern const Word32 defaultHRIR_rom_ITD_azimBsShape_fx[84]; /*Q30*/
#endif                                                      // IVAS_FLOAT_FIXED
#ifdef FIX_989_TD_REND_ROM
extern const int16_t defaultHRIR_rom_ITD_model_configuration[4];
extern int16_t defaultHRIR_rom_ITD_elevBsLen[4];
extern int16_t defaultHRIR_rom_ITD_elevBsStart[4];
extern int16_t defaultHRIR_rom_ITD_azimBsLen[4];
extern int16_t defaultHRIR_rom_ITD_azimBsStart[4];
#endif
#endif
+93166 −92812

File changed.

Preview size limit exceeded, changes collapsed.

+76 −7
Original line number Diff line number Diff line
@@ -710,7 +710,7 @@ char *create_hrtf_crend( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD
            input_mixerconv_bin_brir_file_name[strlen( input_mixerconv_bin_brir_file_name ) - 3] = '\0';
            is_fx = 1;
        }
        full_in_mixerconv_path = malloc( strlen( input_mixerconv_bin_brir_path ) + 1 + strlen( input_mixerconv_bin_brir_file_name ) + 1 + strlen( configuration_name ) + 1 + 5 + strlen( DEFAULT_BIN_FILE_EXT ) + 1 );
        full_in_mixerconv_path = malloc( strlen( input_mixerconv_bin_brir_path ) + 1 + strlen( input_mixerconv_bin_brir_file_name ) + 1 + strlen( configuration_name ) + 1 + 5 + strlen( DEFAULT_BIN_FILE_EXT ) + 1 + ( is_fx == 1 ? 3 : 0 ) );
#ifdef _WIN32
        if ( is_fx == 1 )
            sprintf( full_in_mixerconv_path, "%s\\%s_%s_%dkHz_fx%s", input_mixerconv_bin_brir_path, input_mixerconv_bin_brir_file_name, configuration_name, frequency / 1000, DEFAULT_BIN_FILE_EXT );
@@ -824,6 +824,9 @@ char *create_hrtf_tdrend( int32_t frequency, int32_t *hrtf_size )
    FILE *input_td_bin_file = NULL;
    int32_t td_hrtf_header_size, td_hrtf_data_size;
    char *td_hrtf = NULL, *td_hrtf_wptr, *full_in_td_path = NULL;
#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT
    int16_t is_fx = 0;
#endif

    // left/right and coherences for late reverb table sizes

@@ -845,6 +848,13 @@ char *create_hrtf_tdrend( int32_t frequency, int32_t *hrtf_size )
#endif
    input_td_bin_file = fopen( full_in_td_path, "rb" );

#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT
    if ( strstr( input_td_bin_file_name, "_fx" ) )
    {
        is_fx = 1;
    }
#endif

    if ( input_td_bin_file != NULL )
    {

@@ -878,7 +888,18 @@ char *create_hrtf_tdrend( int32_t frequency, int32_t *hrtf_size )
        // Get the HRTF header

        // Renderer type
#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT
        if ( is_fx == 1 )
        {
            *( (int32_t *) ( td_hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_OBJECTS_TD + DEFAULT_BIN_FILE_FX_FLAG;
        }
        else
        {
            *( (int32_t *) ( td_hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_OBJECTS_TD;
        }
#else
        *( (int32_t *) ( td_hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_OBJECTS_TD;
#endif
        td_hrtf_wptr += sizeof( int32_t );

        // Decoder output format
@@ -1334,13 +1355,14 @@ char *create_hrtf_parametric( int32_t *hrtf_size )
{
    char *hrtf = NULL, *hrtf_wptr, *full_in_param_bin_path = NULL;
    uint32_t hrtf_data_size;
    uint32_t data_size_tmp;

#ifndef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT
    int16_t i, j;
    uint32_t data_size_tmp;
#endif
    FILE *input_param_bin_file = NULL;

#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT
    char hrtf_identifier[8] = "";
    int16_t is_fx = 0;
    if ( strstr( input_param_bin_file_name, "_fx" ) )
    {
@@ -1378,8 +1400,6 @@ char *create_hrtf_parametric( int32_t *hrtf_size )

    if ( input_param_bin_file != NULL )
    {
        uint16_t hrtf_sh_channels, hrtf_num_bins, cldfb_no_channels_max;

        fseek( input_param_bin_file, 0, SEEK_END );
        hrtf_data_size = ftell( input_param_bin_file );
        fseek( input_param_bin_file, 0, SEEK_SET );
@@ -1399,6 +1419,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size )
        memset( hrtf, 0x00, *hrtf_size );
        hrtf_wptr = hrtf;

#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT
        if ( is_fx == 1 )
        {
            *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC + DEFAULT_BIN_FILE_FX_FLAG;
@@ -1407,6 +1428,16 @@ char *create_hrtf_parametric( int32_t *hrtf_size )
        {
            *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC;
        }
#else
        if ( is_fx == 1 )
        {
            *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM + DEFAULT_BIN_FILE_FX_FLAG;
        }
        else
        {
            *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM;
        }
#endif
        hrtf_wptr += sizeof( int32_t );

        // Decoder output format - not relevant parametric binaural renderer
@@ -1549,7 +1580,11 @@ char *create_hrtf_parametric( int32_t *hrtf_size )
    hrtf_wptr = hrtf;

    // Renderer type - we use only parametric room type here to cover both cases
#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT
    *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC;
#else
    *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM;
#endif
    hrtf_wptr += sizeof( int32_t );

    // Decoder output format - not relevant parametric binaural renderer
@@ -2084,7 +2119,11 @@ int32_t compute_crend_hrtf_data_size_fx( crend_hrtf_tables_pointers *hrtf_table_
    hrtf_data_size += sizeof( uint16_t );                                                 // index_frequency_max_diffuse
    hrtf_data_size += sizeof( Word16 );                                                   // inv_diffuse_weight factor Q
    hrtf_data_size += hrtf_table_dims->max_num_ir * BINAURAL_CHANNELS * sizeof( Word16 ); // inv_diffuse_weight
#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT
    hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration
#else
    hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration
#endif

    hrtf_data_size += sizeof( Word16 ); // filters factor Q
    // coeff_re & coeff_im : The size depends on pIndex_frequency_max
@@ -2099,7 +2138,11 @@ int32_t compute_crend_hrtf_data_size_fx( crend_hrtf_tables_pointers *hrtf_table_
        }
    }

#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT
    hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration_diff
#else
    hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration_diff
#endif
    if ( hrtf_table_dims->max_total_num_fsamp_per_iteration_diff != 0 )
    {
        // coeff_diffuse_re & coeff_diffuse_im : The size depends on pIndex_frequency_max
@@ -2149,7 +2192,11 @@ int32_t compute_crend_hrtf_data_size( crend_hrtf_tables_pointers *hrtf_table_ptr

    hrtf_data_size += sizeof( uint16_t );                                                // index_frequency_max_diffuse
    hrtf_data_size += hrtf_table_dims->max_num_ir * BINAURAL_CHANNELS * sizeof( float ); // inv_diffuse_weight
#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT
    hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration
#else
    hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration
#endif
    // coeff_re & coeff_im : The size depends on pIndex_frequency_max
    for ( iIR = 0, iIndex = 0; iIR < hrtf_table_dims->max_num_ir; iIR++ )
    {
@@ -2162,7 +2209,11 @@ int32_t compute_crend_hrtf_data_size( crend_hrtf_tables_pointers *hrtf_table_ptr
        }
    }

#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT
    hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration_diff
#else
    hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration_diff
#endif
    if ( hrtf_table_dims->max_total_num_fsamp_per_iteration_diff != 0 )
    {
        // coeff_diffuse_re & coeff_diffuse_im : The size depends on pIndex_frequency_max
@@ -2475,12 +2526,21 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD
    hrtf_data_in_rptr += ctrl_size;

    // max_total_num_fsamp_per_iteration
#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT
    if ( tabs_dims.max_total_num_fsamp_per_iteration != *( (uint32_t *) ( hrtf_data_in_rptr ) ) )
    {
        fprintf( stderr, "check_hrtf_data of binary file failed: bad max_total_num_fsamp_per_iteration!\n\n" );
        return -1;
    }
    hrtf_data_in_rptr += sizeof( uint32_t );
#else
    if ( tabs_dims.max_total_num_fsamp_per_iteration != *( (uint16_t *) ( hrtf_data_in_rptr ) ) )
    {
        fprintf( stderr, "check_hrtf_data of binary file failed: bad max_total_num_fsamp_per_iteration!\n\n" );
        return -1;
    }
    hrtf_data_in_rptr += sizeof( uint16_t );
#endif

    // coeff_re : The size depends on pIndex_frequency_max
    for ( iIR = 0, iIndex = 0; iIR < tabs_dims.max_num_ir; iIR++ )
@@ -2548,12 +2608,21 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD
    }

    // max_total_num_fsamp_per_iteration_diff
#ifdef FIX_CREND_CHANGES_AND_HRTF_FILE_FORMAT
    if ( tabs_dims.max_total_num_fsamp_per_iteration_diff != *( (uint32_t *) ( hrtf_data_in_rptr ) ) )
    {
        fprintf( stderr, "check_hrtf_data of binary file failed: bad max_total_num_fsamp_per_iteration_diff!\n\n" );
        return -1;
    }
    hrtf_data_in_rptr += sizeof( uint32_t );
#else
    if ( tabs_dims.max_total_num_fsamp_per_iteration_diff != *( (uint16_t *) ( hrtf_data_in_rptr ) ) )
    {
        fprintf( stderr, "check_hrtf_data of binary file failed: bad max_total_num_fsamp_per_iteration_diff!\n\n" );
        return -1;
    }
    hrtf_data_in_rptr += sizeof( uint16_t );
#endif

    if ( tabs_dims.max_total_num_fsamp_per_iteration_diff != 0 )
    {
Loading