Commit 256528d9 authored by Tapani Pihlajakuja's avatar Tapani Pihlajakuja
Browse files

Merge branch '225-complete-masa-external-renderer-implementation' into 'main'

Resolve "Complete MASA external renderer implementation"

See merge request !1160
parents 6a88cb40 875f3105
Loading
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -1815,6 +1815,26 @@ int main(
                exit( -1 );
            }

#ifdef NONBE_FIX_225_MASA_EXT_REND
            if ( isCurrentFrameMultipleOf20ms )
            {
                if ( masaReaders[i] != NULL )
                {
                    /* This will update data in hMasaMetadata[i] */
                    if ( ( error = MasaFileReader_readNextFrame( masaReaders[i] ) ) != IVAS_ERR_OK )
                    {
                        fprintf( stderr, "Error in MASA Metadata File Reading: %s\n", ivas_error_to_string( error ) );
                        exit( -1 );
                    }

                    if ( ( error = IVAS_REND_FeedInputMasaMetadata( hIvasRend, masaIds[i], hMasaMetadata[i] ) ) != IVAS_ERR_OK )
                    {
                        fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) );
                        exit( -1 );
                    }
                }
            }
#else
            if ( masaReaders[i] != NULL )
            {
                /* This will update data in hMasaMetadata[i] */
@@ -1826,6 +1846,7 @@ int main(
                    exit( -1 );
                }
            }
#endif
        }


@@ -2530,9 +2551,13 @@ static IVAS_AUDIO_CONFIG parseAudioConfig(
        switch ( charBuf[4] )
        {
            case '1':
#ifdef NONBE_FIX_225_MASA_EXT_REND
                return IVAS_AUDIO_CONFIG_MASA1;
#else
                fprintf( stderr, "1TC MASA support is not functional and is pending on DirAC renderer refactoring.\n" );
                exit( EXIT_FAILURE );
                /*return IVAS_AUDIO_CONFIG_MASA1;*/ // ToDo: temporarily disabled to avoid compilation warnings
#endif
            case '2':
                return IVAS_AUDIO_CONFIG_MASA2;
            default:
+1 −0
Original line number Diff line number Diff line
@@ -168,6 +168,7 @@
#define NONBE_FIX_856_TCX_LTP_SYNTH_FILTER                    /* FhG: issue 856: correct filtering length for tcx-ltp synth filtering*/
#define NONBE_UNIFIED_DECODING_PATHS                          /* FhG: unify decoding paths   */
#define NONBE_FIX_874_OMASA_BRSW_2TD                          /* Nokia: issue 874: Fixes the crashes with the long test vectors that prompted switching to TD*/
#define NONBE_FIX_225_MASA_EXT_REND                           /* Nokia: Resolve #225: Complete MASA external renderer implementation */

/* ##################### End NON-BE switches ########################### */

+17 −0
Original line number Diff line number Diff line
@@ -41,6 +41,9 @@
#include "ivas_cnst.h"
#include "ivas_rom_com.h"
#include "ivas_rom_dec.h"
#ifdef NONBE_FIX_225_MASA_EXT_REND
#include "ivas_rom_rend.h"
#endif
#ifdef DEBUGGING
#include "debug.h"
#endif
@@ -840,8 +843,14 @@ ivas_error ivas_dirac_dec_config(
    if ( !sparfoa_flag )
    {
        common_rend_config_flag = st_ivas->hSpatParamRendCom == NULL ? DIRAC_OPEN : flag_config_inp;
#ifdef NONBE_FIX_225_MASA_EXT_REND
        if ( ( error = ivas_spat_hSpatParamRendCom_config( &st_ivas->hSpatParamRendCom, common_rend_config_flag, dec_param_estim_new,
                                                           st_ivas->ivas_format, st_ivas->mc_mode, output_Fs, hodirac_flag, 0 ) ) != IVAS_ERR_OK )
#else
        if ( ( error = ivas_spat_hSpatParamRendCom_config( &st_ivas->hSpatParamRendCom, common_rend_config_flag, dec_param_estim_new,
                                                           st_ivas->ivas_format, st_ivas->mc_mode, output_Fs, hodirac_flag ) ) != IVAS_ERR_OK )

#endif
        {
            return error;
        }
@@ -1960,7 +1969,11 @@ void ivas_dirac_dec_render_sf(
            ivas_dirac_dec_compute_directional_responses( hSpatParamRendCom,
                                                          hDirACRend,
                                                          st_ivas->hVBAPdata,
#ifdef NONBE_FIX_225_MASA_EXT_REND
                                                          st_ivas->hMasa == NULL ? NULL : st_ivas->hMasa->data.band_mapping,
#else
                                                          st_ivas->hMasa,
#endif
                                                          st_ivas->hMasaIsmData,
                                                          azimuth,
                                                          elevation,
@@ -1975,7 +1988,11 @@ void ivas_dirac_dec_render_sf(
            ivas_dirac_dec_compute_directional_responses( hSpatParamRendCom,
                                                          hDirACRend,
                                                          st_ivas->hVBAPdata,
#ifdef NONBE_FIX_225_MASA_EXT_REND
                                                          st_ivas->hMasa == NULL ? NULL : st_ivas->hMasa->data.band_mapping,
#else
                                                          st_ivas->hMasa,
#endif
                                                          st_ivas->hMasaIsmData,
                                                          azimuth,
                                                          elevation,
+4 −0
Original line number Diff line number Diff line
@@ -379,6 +379,7 @@ const uint16_t * const sym_freq_ECSQ_tab_abs_lsbs[1 + 4] =
 * DirAC ROM tables
 *----------------------------------------------------------------------------------*/

#ifndef NONBE_FIX_225_MASA_EXT_REND
const float ls_azimuth_4d4[8] = { 45.0f, -45.0f, 135.0f, -135.0f,  45.0f, -45.0f, 135.0f, -135.0f };

const float ls_elevation_4d4[8] = { 0.0f,   0.0f,   0.0f,    0.0f,  35.0f,  35.0f,  35.0f,   35.0f };
@@ -389,6 +390,7 @@ const float diffuse_response_CICP14[7] = { 0.3817f, 0.3817f, 0.2819f, 0.5399f, 0

const float diffuse_response_CICP16[9] = { 0.3456f, 0.3456f, 0.3035f, 0.4124f, 0.4124f, 0.2702f, 0.2702f, 0.3023f, 0.3023f };

#endif

const float dirac_dithering_azi_scale[DIRAC_DIFFUSE_LEVELS] =
{
@@ -400,6 +402,7 @@ const float dirac_dithering_ele_scale[DIRAC_DIFFUSE_LEVELS] =
    6.716062e-01f, 1.011804e+00f, 1.796875e+00f, 2.804382e+00f, 4.623130e+00f, 7.802667e+00f, 1.045446e+01f, 1.379538e+01f
};

#ifndef NONBE_FIX_225_MASA_EXT_REND
const int16_t ap_pre_delay[DIRAC_DECORR_NUM_SPLIT_BANDS] = { 7, 2, 1 };

const int16_t ap_filter_length[DIRAC_DECORR_NUM_SPLIT_BANDS] = { 15, 6, 3 };
@@ -530,6 +533,7 @@ const int16_t sba_map_tc_512[11] =
};


#endif
/*----------------------------------------------------------------------------------*
 * FASTCONV and PARAMETRIC binaural renderer ROM tables
 *----------------------------------------------------------------------------------*/
+4 −1
Original line number Diff line number Diff line
@@ -92,16 +92,19 @@ extern const uint16_t *const sym_freq_ECSQ_tab_abs_lsbs[1 + 4];
 * DirAC ROM tables
 *----------------------------------------------------------------------------------*/

#ifndef NONBE_FIX_225_MASA_EXT_REND
extern const float ls_azimuth_4d4[8];
extern const float ls_elevation_4d4[8];
extern const float diffuse_response_CICP6[5];
extern const float diffuse_response_CICP14[7];
extern const float diffuse_response_CICP16[9];

#endif

extern const float dirac_dithering_azi_scale[DIRAC_DIFFUSE_LEVELS];
extern const float dirac_dithering_ele_scale[DIRAC_DIFFUSE_LEVELS];

#ifndef NONBE_FIX_225_MASA_EXT_REND
extern const int16_t ap_pre_delay[DIRAC_DECORR_NUM_SPLIT_BANDS];
extern const int16_t ap_filter_length[DIRAC_DECORR_NUM_SPLIT_BANDS];
extern const float ap_lattice_delta_phi[DIRAC_MAX_NUM_DECORR_FILTERS * DIRAC_MAX_DECORR_FILTER_LEN];
@@ -113,6 +116,7 @@ extern const float ap_split_frequencies[DIRAC_DECORR_NUM_SPLIT_BANDS + 1];

extern const int16_t sba_map_tc[11];
extern const int16_t sba_map_tc_512[11];
#endif

/*----------------------------------------------------------------------------------*
 * FASTCONV and PARAMETRIC binaural renderer ROM tables
@@ -120,7 +124,6 @@ extern const int16_t sba_map_tc_512[11];

extern const float dmxmtx_table[BINAURAL_CHANNELS][11];


#ifdef SPLIT_REND_WITH_HEAD_ROT
/*----------------------------------------------------------------------*
 * Binuaral split rendering ROM tables
Loading