From 8d2b4e1fcc1e0d902cd5359768550f21afff1e97 Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 4 Oct 2022 11:38:24 +0200 Subject: [PATCH 1/3] - FIX_DIRAC_CHANNELS - lower number of DirAC analysis channels - FIX_CREND_CHANNELS - fix number of Crend channels - HARMONIZE_SBA_NCHAN_TRANSPORT harmonize setting of number of transport channels in SBA --- lib_com/bitstream.c | 5 ++++- lib_com/ivas_cnst.h | 9 ++++++++ lib_com/ivas_dirac_com.c | 20 ++++++++++++----- lib_com/ivas_prot.h | 14 ++++++++++-- lib_com/ivas_sba_config.c | 11 ++++++++-- lib_com/ivas_spar_com.c | 21 ++++++++++++++++++ lib_com/options.h | 5 +++-- lib_dec/ivas_crend.c | 12 +++++++++++ lib_dec/ivas_dirac_dec.c | 9 +++++++- lib_dec/ivas_init_dec.c | 13 +++++++++++ lib_dec/ivas_reverb.c | 7 ++++++ lib_dec/ivas_sba_dec.c | 43 ++++++++++++++++++++++++++++++++++++- lib_dec/ivas_stat_dec.h | 22 +++++++++++++++++++ lib_enc/ivas_dirac_enc.c | 30 ++++++++++++++++++++------ lib_enc/ivas_masa_enc.c | 4 +--- lib_enc/ivas_mct_enc.c | 22 +++++++++++++++++++ lib_enc/ivas_sba_enc.c | 27 ++++++++++++++++++++++- lib_enc/ivas_spar_encoder.c | 5 +++++ lib_enc/ivas_stat_enc.h | 4 ++++ 19 files changed, 259 insertions(+), 24 deletions(-) diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c index d221b9cf92..9ee771fb6b 100644 --- a/lib_com/bitstream.c +++ b/lib_com/bitstream.c @@ -1981,7 +1981,6 @@ ivas_error preview_indices( } else if ( st_ivas->ivas_format == SBA_FORMAT ) { - /* Read SBA planar flag and SBA order */ st_ivas->sba_planar = ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA] == 1 ); st_ivas->sba_order = ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA + 2] == 1 ); @@ -1989,7 +1988,11 @@ ivas_error preview_indices( st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( total_brate, st_ivas->sba_order ); +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + ivas_sba_config( total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &( st_ivas->nSCE ), &( st_ivas->nCPE ), &( st_ivas->element_mode_init ) ); +#else ivas_sba_config( total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &( st_ivas->nSCE ), &( st_ivas->nCPE ), &( st_ivas->element_mode_init ), st_ivas->sba_mode ); +#endif } } diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 72af37ef8a..b75fdeca54 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -165,7 +165,9 @@ typedef enum #define HEAD_ROTATION_HOA_ORDER 3 /* HOA 3rd order */ #define MAX_CICP_CHANNELS 16 /* max channels for loudspeaker layouts (16 for custom layouts)*/ #define MAX_OUTPUT_CHANNELS 16 /* Maximum number of output channels (HOA 3rd order) */ +#ifndef FIX_CREND_CHANNELS #define IVAS_MAX_NUM_CH 16 /* == MAX_OUTPUT_CHANNELS */ +#endif #define FOA_CHANNELS 4 /* number of FOA channels */ @@ -867,8 +869,15 @@ typedef enum * DirAC Constants *----------------------------------------------------------------------------------*/ +#ifdef FIX_DIRAC_CHANNELS +#define DIRAC_MAX_ANA_CHANS FOA_CHANNELS /* Maximum number of channels for DirAC analysis */ +#else #define DIRAC_MAX_ANA_CHANS 4 /* Maximum number of channels for DirAC analysis */ +#endif + +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT #define DIRAC_MAX_TRANS_CHANS 8 /* Maximum number of transport channels for DirAC */ +#endif #define DIRAC_MIN_BITRATE_8_TRANS_CHAN IVAS_384k #define DIRAC_MIN_BITRATE_6_TRANS_CHAN IVAS_256k diff --git a/lib_com/ivas_dirac_com.c b/lib_com/ivas_dirac_com.c index 80ca92e18c..56e623b019 100644 --- a/lib_com/ivas_dirac_com.c +++ b/lib_com/ivas_dirac_com.c @@ -142,8 +142,12 @@ ivas_error ivas_dirac_config( if ( ivas_format == SBA_FORMAT ) /* skip for MASA decoder */ { +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + if ( ( error = ivas_dirac_sba_config( hQMetaData, nchan_transport, nSCE, nCPE, element_mode, ivas_total_brate, sba_order, sba_mode, hConfig->nbands - spar_dirac_split_band ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_dirac_sba_config( hQMetaData, nchan_transport, nSCE, nCPE, element_mode, ivas_total_brate, sba_order, sba_planar, sba_mode, hConfig->nbands - spar_dirac_split_band ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -307,9 +311,11 @@ ivas_error ivas_dirac_sba_config( int16_t *element_mode, /* i/o: element mode of the core coder */ int32_t sba_total_brate, /* i : SBA total bitrate */ const int16_t sba_order, /* i : Ambisonic (SBA) order */ - const int16_t sba_planar, /* i : SBA planar flag */ - const SBA_MODE sba_mode, /* i : SBA mode */ - const int16_t nbands /* i : number of frequency bands */ +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT + const int16_t sba_planar, /* i : SBA planar flag */ +#endif + const SBA_MODE sba_mode, /* i : SBA mode */ + const int16_t nbands /* i : number of frequency bands */ ) { int16_t i; @@ -430,7 +436,11 @@ ivas_error ivas_dirac_sba_config( if ( sba_total_brate > IVAS_SID_4k4 ) #endif { +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + *nchan_transport = ivas_get_sba_num_TCs( sba_total_brate, sba_order ); +#else *nchan_transport = ivas_dirac_getNumTransportChannels( sba_total_brate, sba_order, sba_planar ); +#endif } #ifdef ALIGN_SID_SIZE else if ( sba_total_brate == IVAS_SID_5k2 ) @@ -575,7 +585,7 @@ ivas_error ivas_dirac_sba_config( return error; } - +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT /*------------------------------------------------------------------------- * ivas_dirac_getNumTransportChannels() * @@ -647,7 +657,7 @@ int16_t ivas_dirac_getNumTransportChannels( return num_channels; } - +#endif /*------------------------------------------------------------------------- * computeDirectionVectors() diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index bfef844788..22b7d37d2f 100644 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -3033,8 +3033,10 @@ void ivas_sba_config( const int16_t sba_planar, /* i : SBA planar flag */ int16_t *nSCE, /* o : number of SCEs */ int16_t *nCPE, /* o : number of CPEs */ - int16_t *element_mode, /* o : element mode of the core coder */ + int16_t *element_mode /* o : element mode of the core coder */ +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT const SBA_MODE sba_mode /* i : SBA mode */ +#endif ); ivas_error ivas_sba_dec_reconfigure( @@ -3173,18 +3175,21 @@ ivas_error ivas_dirac_sba_config( int16_t *element_mode, /* o : element mode of the core coder */ int32_t sba_total_brate, /* i : SBA total bitrate */ const int16_t sba_order, /* i : Ambisonic (SBA) order */ +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT const int16_t sba_planar, /* i : SBA planar flag */ +#endif const SBA_MODE sba_mode, /* i : SBA mode */ const int16_t nbands /* i : number of frequency bands */ ); +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT /*! r: number of IVAS transport channels */ int16_t ivas_dirac_getNumTransportChannels( const int32_t sba_total_brate, /* i : SBA total bitrate */ const int16_t sba_order, /* i : SBA order */ const int16_t sba_planar /* i : SBA Planar flag */ ); - +#endif ivas_error ivas_dirac_dec_open( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ); @@ -3827,7 +3832,12 @@ int16_t ivas_get_spar_table_idx( int16_t *ind /* o : indice */ ); +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT +/*! r: number of transport channels */ +int16_t ivas_get_sba_num_TCs( +#else int16_t ivas_get_spar_num_TCs( +#endif const int32_t ivas_total_brate, /* i : IVAS total bitrate */ const int16_t sba_order /* i : IVAS SBA order */ ); diff --git a/lib_com/ivas_sba_config.c b/lib_com/ivas_sba_config.c index 2ea07710bc..58cd80bc37 100644 --- a/lib_com/ivas_sba_config.c +++ b/lib_com/ivas_sba_config.c @@ -87,8 +87,11 @@ void ivas_sba_config( const int16_t sba_planar, /* i : SBA Planar flag */ int16_t *nSCE, /* o : number of SCEs */ int16_t *nCPE, /* o : number of CPEs */ - int16_t *element_mode, /* o : element mode of the core coder */ - const SBA_MODE sba_mode /* i : SBA mode */ + int16_t *element_mode /* o : element mode of the core coder */ +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT + , + const SBA_MODE sba_mode /* i : SBA mode */ +#endif ) { if ( ( sba_order < 0 ) && ( nb_channels < 0 ) ) @@ -117,6 +120,9 @@ void ivas_sba_config( if ( nchan_transport != NULL ) { +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + *nchan_transport = ivas_get_sba_num_TCs( sba_total_brate, sba_order ); +#else if ( sba_mode == SBA_MODE_SPAR ) { *nchan_transport = ivas_get_spar_num_TCs( sba_total_brate, sba_order ); @@ -125,6 +131,7 @@ void ivas_sba_config( { *nchan_transport = ivas_dirac_getNumTransportChannels( sba_total_brate, sba_order, sba_planar ); } +#endif } /* Configure core coder number of elements*/ diff --git a/lib_com/ivas_spar_com.c b/lib_com/ivas_spar_com.c index 4955f9f9e2..ce4e742401 100644 --- a/lib_com/ivas_spar_com.c +++ b/lib_com/ivas_spar_com.c @@ -328,7 +328,11 @@ void ivas_spar_config( } else { +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + *nchan_transport = ivas_get_sba_num_TCs( ivas_total_brate, sba_order ); +#else *nchan_transport = ivas_get_spar_num_TCs( ivas_total_brate, sba_order ); +#endif } *nCPE = ( *nchan_transport > 1 ) ? ( *nchan_transport + 1 ) >> 1 : 0; @@ -416,6 +420,16 @@ int16_t ivas_get_spar_table_idx( } +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT +/*-------------------------------------------------------------------* + * ivas_get_sba_num_TCs() + * + * Return number of TCs in SBA format + *-------------------------------------------------------------------*/ + +/*! r: number of transport channels */ +int16_t ivas_get_sba_num_TCs( +#else /*-------------------------------------------------------------------* * ivas_get_spar_num_TCs() * @@ -424,6 +438,7 @@ int16_t ivas_get_spar_table_idx( /*! r: number of transport channels */ int16_t ivas_get_spar_num_TCs( +#endif const int32_t ivas_total_brate, /* i : IVAS total bitrate */ const int16_t sba_order /* i : Ambisonic (SBA) order */ ) @@ -438,6 +453,12 @@ int16_t ivas_get_spar_num_TCs( { nchan_transport = 1; } +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + else if ( ivas_sba_mode_select( ivas_total_brate ) == SBA_MODE_DIRAC ) + { + nchan_transport = 1; + } +#endif else { table_idx = ivas_get_spar_table_idx( ivas_total_brate, sba_order, SPAR_CONFIG_BW, NULL, NULL ); diff --git a/lib_com/options.h b/lib_com/options.h index 3c30e33d86..967bf5bd4a 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -149,8 +149,9 @@ #define FIX_I106_TDREND_5MS /* Issue 106: 5 ms update rate in TD object renderer */ #define ALIGN_SID_SIZE /* Issue 111: make all DTX modes use one SID frame bitrate (5.2 kbps) */ #define FIX_135_MDCT_STEREO_MODE_UNINITIALIZED /* Issue 135: fix uninitialized value usage in SBA MDCT-Stereo core with PLC */ - - +#define FIX_DIRAC_CHANNELS /* Issue 71: lower number of DirAC analysis channels */ +#define FIX_CREND_CHANNELS /* Issue 71: fix number of Crend channels */ +#define HARMONIZE_SBA_NCHAN_TRANSPORT /* harmonize setting of number of transport channels in SBA */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_dec/ivas_crend.c b/lib_dec/ivas_crend.c index 8048d8106f..f83125fcbb 100644 --- a/lib_dec/ivas_crend.c +++ b/lib_dec/ivas_crend.c @@ -68,7 +68,11 @@ static ivas_error ivas_hrtf_init( hHrtf->gain_lfe = 0; hHrtf->index_frequency_max_diffuse = 0; +#ifdef FIX_CREND_CHANNELS + for ( i = 0; i < MAX_TRANSPORT_CHANNELS; i++ ) +#else for ( i = 0; i < IVAS_MAX_NUM_CH; i++ ) +#endif { hHrtf->inv_diffuse_weight[i] = 0; for ( j = 0; j < BINAURAL_CHANNELS; j++ ) @@ -673,7 +677,11 @@ ivas_error ivas_crend_open( hCrend->lfe_delay_line = NULL; +#ifdef FIX_CREND_CHANNELS + for ( i = 0; i < MAX_TRANSPORT_CHANNELS; i++ ) +#else for ( i = 0; i < IVAS_MAX_NUM_CH; i++ ) +#endif { hCrend->freq_buffer_re[i] = NULL; hCrend->freq_buffer_im[i] = NULL; @@ -824,7 +832,11 @@ ivas_error ivas_crend_close( { if ( st_ivas->renderer_type != RENDERER_BINAURAL_OBJECTS_TD ) { +#ifdef FIX_CREND_CHANNELS + for ( i = 0; i < MAX_TRANSPORT_CHANNELS; i++ ) +#else for ( i = 0; i < IVAS_MAX_NUM_CH; i++ ) +#endif { if ( st_ivas->hCrend->freq_buffer_re[i] != NULL ) { diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index 162002852b..ef4527ea8f 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -202,7 +202,11 @@ ivas_error ivas_dirac_dec_config( if ( flag_config == DIRAC_RECONFIGURE && st_ivas->ivas_format == SBA_FORMAT ) { int16_t tmp1, tmp2, tmp3; +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + ivas_sba_config( st_ivas->hDecoderConfig->last_ivas_total_brate, st_ivas->sba_analysis_order, -1, &nchan_transport_old, st_ivas->sba_planar, &tmp1, &tmp2, &tmp3 ); +#else ivas_sba_config( st_ivas->hDecoderConfig->last_ivas_total_brate, st_ivas->sba_analysis_order, -1, &nchan_transport_old, st_ivas->sba_planar, &tmp1, &tmp2, &tmp3, SBA_MODE_DIRAC ); +#endif } /*-----------------------------------------------------------------* @@ -760,7 +764,6 @@ ivas_error ivas_dirac_dec_config( mvs2s( DirAC_block_grouping, hDirAC->block_grouping, MAX_PARAM_SPATIAL_SUBFRAMES + 1 ); - if ( flag_config == DIRAC_OPEN ) { hDirAC->dirac_md_buffer_length = 0; @@ -1858,7 +1861,11 @@ void ivas_dirac_dec( #ifdef DEBUG_MODE_DIRAC { +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + int16_t n, tmp[1 * L_FRAME48k]; +#else int16_t n, tmp[DIRAC_MAX_TRANS_CHANS * L_FRAME48k]; +#endif char file_name[50] = { 0 }; const int16_t output_frame = st_ivas->output_Fs / FRAMES_PER_SEC; diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 5b42032201..f084b25b9b 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -139,7 +139,11 @@ ivas_error ivas_dec_setup( } else { +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + ivas_sba_config( ivas_total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init ); +#else ivas_sba_config( ivas_total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init, st_ivas->sba_mode ); +#endif } } else if ( st_ivas->ivas_format == MASA_FORMAT ) @@ -832,8 +836,13 @@ ivas_error ivas_init_decoder( } } +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + if ( ( error = ivas_dirac_sba_config( st_ivas->hQMetaData, &st_ivas->nchan_transport, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, st_ivas->sba_mode, IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ) ) != IVAS_ERR_OK ) + +#else if ( ( error = ivas_dirac_sba_config( st_ivas->hQMetaData, &st_ivas->nchan_transport, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, st_ivas->sba_planar, st_ivas->sba_mode, IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -863,7 +872,11 @@ ivas_error ivas_init_decoder( } else { +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + if ( ( error = ivas_dirac_sba_config( st_ivas->hQMetaData, &st_ivas->nchan_transport, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, st_ivas->sba_mode, -1 ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_dirac_sba_config( st_ivas->hQMetaData, &st_ivas->nchan_transport, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, st_ivas->sba_planar, st_ivas->sba_mode, -1 ) ) != IVAS_ERR_OK ) +#endif { return error; } diff --git a/lib_dec/ivas_reverb.c b/lib_dec/ivas_reverb.c index e25eacff54..854f0685cd 100644 --- a/lib_dec/ivas_reverb.c +++ b/lib_dec/ivas_reverb.c @@ -795,10 +795,17 @@ static void set_reverb_acoustic_data( { int16_t nr_out_ch, hrtf_idx, offset, iter_idx, bin_idx; float ln_1e6_inverted, delay_diff, exp_argument; +#ifdef FIX_CREND_CHANNELS + float *pHrtf_set_l_re[MAX_TRANSPORT_CHANNELS]; + float *pHrtf_set_l_im[MAX_TRANSPORT_CHANNELS]; + float *pHrtf_set_r_re[MAX_TRANSPORT_CHANNELS]; + float *pHrtf_set_r_im[MAX_TRANSPORT_CHANNELS]; +#else float *pHrtf_set_l_re[IVAS_MAX_NUM_CH]; float *pHrtf_set_l_im[IVAS_MAX_NUM_CH]; float *pHrtf_set_r_re[IVAS_MAX_NUM_CH]; float *pHrtf_set_r_im[IVAS_MAX_NUM_CH]; +#endif /* use crend hrtf filters */ if ( hHrtf != NULL ) diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index 204b91b89d..9090588b55 100644 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -48,7 +48,9 @@ * Local function prototypes *-----------------------------------------------------------------------*/ +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT static void ivas_sba_dmx_dec( float sba_data[][L_FRAME48k], const int16_t nchan_transport, const int16_t output_frame ); +#endif #ifdef DEBUG_MODE_DIRAC static void debug_mode_dirac( float output[MAX_OUTPUT_CHANNELS][L_FRAME48k], const int16_t nchan_transport, const int16_t output_frame ); @@ -246,6 +248,25 @@ int16_t ivas_sba_remapTCs( } } +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + if ( st_ivas->nchan_transport >= 3 ) + { + int16_t i = 0; + float temp; + + /*convert WYXZ downmix to WYZX*/ + for ( i = 0; i < output_frame; i++ ) + { + temp = sba_data[2][i]; + sba_data[2][i] = sba_data[3][i]; + sba_data[3][i] = temp; + if ( st_ivas->nchan_transport == 3 ) + { + sba_data[2][i] = 0; + } + } + } +#else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) { int16_t i = 0; @@ -268,8 +289,13 @@ int16_t ivas_sba_remapTCs( } else { +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + /* do nothing; simply use omni */ +#else ivas_sba_dmx_dec( sba_data, nchan_remapped, output_frame ); +#endif } +#endif if ( st_ivas->sba_mode != SBA_MODE_SPAR ) { @@ -280,6 +306,7 @@ int16_t ivas_sba_remapTCs( } +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT /*-------------------------------------------------------------------* * ivas_sba_dmx_dec() * @@ -373,7 +400,7 @@ static void ivas_sba_dmx_dec( assert( 0 && "SBA: number of transport channels not supported." ); } } - +#endif /*-------------------------------------------------------------------------* * ivas_ism2sba() @@ -488,7 +515,11 @@ ivas_error ivas_sba_dec_reconfigure( st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, st_ivas->sba_order ); +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + ivas_sba_config( sba_total_brate, st_ivas->sba_analysis_order, -1, &nchan_transport, st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init ); +#else ivas_sba_config( sba_total_brate, st_ivas->sba_analysis_order, -1, &nchan_transport, st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init, st_ivas->sba_mode ); +#endif st_ivas->nchan_transport = nchan_transport; /* renderer might have changed */ @@ -504,7 +535,12 @@ ivas_error ivas_sba_dec_reconfigure( if ( st_ivas->sba_mode != SBA_MODE_SPAR ) { st_ivas->sba_dirac_stereo_flag = ( st_ivas->nchan_transport == 1 && st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_STEREO ); + +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + if ( ( error = ivas_dirac_sba_config( st_ivas->hQMetaData, &st_ivas->nchan_transport, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, st_ivas->sba_mode, -1 ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_dirac_sba_config( st_ivas->hQMetaData, &st_ivas->nchan_transport, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, st_ivas->sba_planar, st_ivas->sba_mode, -1 ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -516,8 +552,13 @@ ivas_error ivas_sba_dec_reconfigure( sba_order_internal = min( st_ivas->sba_analysis_order, IVAS_MAX_SBA_ORDER ); ivas_spar_config( st_ivas->hDecoderConfig->ivas_total_brate, sba_order_internal, &st_ivas->nchan_transport, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->hSpar->core_nominal_brate, st_ivas->sid_format ); +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + if ( ( error = ivas_dirac_sba_config( st_ivas->hQMetaData, &st_ivas->nchan_transport, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->sba_analysis_order, st_ivas->sba_mode, IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ) ) != IVAS_ERR_OK ) + +#else if ( ( error = ivas_dirac_sba_config( st_ivas->hQMetaData, &st_ivas->nchan_transport, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->sba_analysis_order, st_ivas->sba_planar, st_ivas->sba_mode, IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ) ) != IVAS_ERR_OK ) +#endif { return error; } diff --git a/lib_dec/ivas_stat_dec.h b/lib_dec/ivas_stat_dec.h index e5195cba5a..16af0c47aa 100644 --- a/lib_dec/ivas_stat_dec.h +++ b/lib_dec/ivas_stat_dec.h @@ -1682,19 +1682,36 @@ typedef struct ivas_binaural_td_rendering_struct typedef struct ivas_hrtfs_structure { +#ifdef FIX_CREND_CHANNELS + float *pOut_to_bin_re[MAX_TRANSPORT_CHANNELS][BINAURAL_CHANNELS]; + float *pOut_to_bin_im[MAX_TRANSPORT_CHANNELS][BINAURAL_CHANNELS]; +#else float *pOut_to_bin_re[IVAS_MAX_NUM_CH][BINAURAL_CHANNELS]; float *pOut_to_bin_im[IVAS_MAX_NUM_CH][BINAURAL_CHANNELS]; +#endif float *pOut_to_bin_diffuse_re[BINAURAL_CHANNELS]; float *pOut_to_bin_diffuse_im[BINAURAL_CHANNELS]; float latency_s; +#ifdef FIX_CREND_CHANNELS + uint16_t num_iterations[MAX_TRANSPORT_CHANNELS][BINAURAL_CHANNELS]; +#else uint16_t num_iterations[IVAS_MAX_NUM_CH][BINAURAL_CHANNELS]; +#endif uint16_t num_iterations_diffuse[BINAURAL_CHANNELS]; +#ifdef FIX_CREND_CHANNELS + uint16_t *pIndex_frequency_max[MAX_TRANSPORT_CHANNELS][BINAURAL_CHANNELS]; +#else uint16_t *pIndex_frequency_max[IVAS_MAX_NUM_CH][BINAURAL_CHANNELS]; +#endif uint16_t *pIndex_frequency_max_diffuse[BINAURAL_CHANNELS]; uint16_t index_frequency_max_diffuse; int16_t max_num_ir; int16_t max_num_iterations; +#ifdef FIX_CREND_CHANNELS + float inv_diffuse_weight[MAX_TRANSPORT_CHANNELS]; /* inverse diffuse weights array, access one inverse weight by pInvDiffuseWeight[channel] */ +#else float inv_diffuse_weight[IVAS_MAX_NUM_CH]; /* inverse diffuse weights array, access one inverse weight by pInvDiffuseWeight[channel] */ +#endif float gain_lfe; } HRTFS_DATA, *HRTFS_HANDLE; @@ -1835,8 +1852,13 @@ typedef struct ivas_orient_trk_state_t /* Crend structures */ typedef struct ivas_crend_state_t { +#ifdef FIX_CREND_CHANNELS + float *freq_buffer_re[MAX_TRANSPORT_CHANNELS]; + float *freq_buffer_im[MAX_TRANSPORT_CHANNELS]; +#else float *freq_buffer_re[IVAS_MAX_NUM_CH]; float *freq_buffer_im[IVAS_MAX_NUM_CH]; +#endif float *freq_buffer_re_diffuse; float *freq_buffer_im_diffuse; float *prev_out_buffer[BINAURAL_CHANNELS]; diff --git a/lib_enc/ivas_dirac_enc.c b/lib_enc/ivas_dirac_enc.c index 754aa6d57c..9d5893622d 100644 --- a/lib_enc/ivas_dirac_enc.c +++ b/lib_enc/ivas_dirac_enc.c @@ -122,19 +122,29 @@ ivas_error ivas_dirac_enc_open( if ( st_ivas->sba_mode == SBA_MODE_DIRAC ) { hDirAC->num_samples_synchro_delay = NS2SA( input_Fs, IVAS_FB_ENC_DELAY_NS ); +#ifdef FIX_DIRAC_CHANNELS + for ( i = 0; i < DIRAC_MAX_ANA_CHANS; i++ ) +#else for ( i = 0; i < st_ivas->hEncoderConfig->nchan_inp; i++ ) +#endif { hDirAC->sba_synchro_buffer[i] = (float *) count_malloc( hDirAC->num_samples_synchro_delay * sizeof( float ) ); set_zero( hDirAC->sba_synchro_buffer[i], hDirAC->num_samples_synchro_delay ); } +#ifndef FIX_DIRAC_CHANNELS for ( ; i < IVAS_MAX_NUM_CH; i++ ) { hDirAC->sba_synchro_buffer[i] = NULL; } +#endif } else { +#ifdef FIX_DIRAC_CHANNELS + for ( i = 0; i < DIRAC_MAX_ANA_CHANS; i++ ) +#else for ( i = 0; i < IVAS_MAX_NUM_CH; i++ ) +#endif { hDirAC->sba_synchro_buffer[i] = NULL; } @@ -242,7 +252,11 @@ void ivas_dirac_enc_close( ivas_FB_mixer_close( &hDirAC->hFbMixer, input_Fs ); } +#ifdef FIX_DIRAC_CHANNELS + for ( i = 0; i < DIRAC_MAX_ANA_CHANS; i++ ) +#else for ( i = 0; i < IVAS_MAX_NUM_CH; i++ ) +#endif { if ( hDirAC->sba_synchro_buffer[i] != NULL ) { @@ -412,9 +426,7 @@ void ivas_dirac_enc( } /* encode SID parameters */ - ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, - SBA_FORMAT, - SBA_MODE_DIRAC ); + ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, SBA_FORMAT, SBA_MODE_DIRAC ); /* restore original metadata */ hDirAC->hConfig->nbands = nbands; @@ -434,9 +446,7 @@ void ivas_dirac_enc( push_next_indice( hMetaData, 0, 1 ); #endif /* encode SID parameters */ - ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, - SBA_FORMAT, - SBA_MODE_DIRAC ); + ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, SBA_FORMAT, SBA_MODE_DIRAC ); } } } @@ -446,6 +456,7 @@ void ivas_dirac_enc( return; } + /*------------------------------------------------------------------------- * computeReferencePower_enc() * @@ -461,7 +472,11 @@ void ivas_dirac_enc_spar_delay_synchro( int16_t ch_idx; float tmp_buffer[L_FRAME48k]; +#ifdef FIX_DIRAC_CHANNELS + for ( ch_idx = 0; ch_idx < DIRAC_MAX_ANA_CHANS; ch_idx++ ) +#else for ( ch_idx = 0; ch_idx < st_ivas->hEncoderConfig->nchan_inp; ch_idx++ ) +#endif { mvr2r( data_f[ch_idx], tmp_buffer, input_frame ); mvr2r( st_ivas->hDirAC->sba_synchro_buffer[ch_idx], data_f[ch_idx], st_ivas->hDirAC->num_samples_synchro_delay ); @@ -472,6 +487,7 @@ void ivas_dirac_enc_spar_delay_synchro( return; } + /*------------------------------------------------------------------------- * computeReferencePower_enc() * @@ -511,11 +527,13 @@ void computeReferencePower_enc( return; } + /*------------------------------------------------------------------------- * ivas_dirac_param_est_enc() * * *------------------------------------------------------------------------*/ + void ivas_dirac_param_est_enc( DIRAC_ENC_HANDLE hDirAC, IVAS_QDIRECTION *q_direction, diff --git a/lib_enc/ivas_masa_enc.c b/lib_enc/ivas_masa_enc.c index 2e233bbc6d..c2649adc56 100644 --- a/lib_enc/ivas_masa_enc.c +++ b/lib_enc/ivas_masa_enc.c @@ -350,9 +350,7 @@ void ivas_masa_encode( count_free( h_orig_metadata ); - ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, masa_sid_descriptor, - ivas_format, - SBA_MODE_NONE ); + ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, masa_sid_descriptor, ivas_format, SBA_MODE_NONE ); /* restore old values */ hMasa->config.numCodingBands = numCodingBands; diff --git a/lib_enc/ivas_mct_enc.c b/lib_enc/ivas_mct_enc.c index bcf5482da9..9aa5fe04c5 100644 --- a/lib_enc/ivas_mct_enc.c +++ b/lib_enc/ivas_mct_enc.c @@ -193,6 +193,14 @@ ivas_error create_mct_enc( hMCT->nchan_out_woLFE = st_ivas->hEncoderConfig->nchan_inp - 1; /* LFE channel is coded separately */ hMCT->num_lfe = TRUE; } +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + else if ( ivas_format == SBA_FORMAT ) + { + hMCT->nchan_out_woLFE = ivas_get_sba_num_TCs( ivas_total_brate, st_ivas->sba_analysis_order ); + + hMCT->num_lfe = FALSE; + } +#else else if ( ivas_format == SBA_FORMAT && st_ivas->hSpar ) { hMCT->nchan_out_woLFE = ivas_get_spar_num_TCs( ivas_total_brate, st_ivas->sba_analysis_order ); @@ -204,6 +212,7 @@ ivas_error create_mct_enc( hMCT->nchan_out_woLFE = ivas_dirac_getNumTransportChannels( ivas_total_brate, st_ivas->sba_analysis_order, st_ivas->hEncoderConfig->sba_planar ); hMCT->num_lfe = FALSE; } +#endif else if ( ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_PARAMMC ) { hMCT->nchan_out_woLFE = ivas_param_mc_getNumTransportChannels( ivas_total_brate, st_ivas->hEncoderConfig->mc_input_setup ); @@ -337,6 +346,18 @@ ivas_error mct_enc_reconfigure( hMCT->nchan_out_woLFE = st_ivas->hEncoderConfig->nchan_inp - 1; /* LFE channel is coded separately */ hMCT->num_lfe = TRUE; } +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + else if ( ivas_format == SBA_FORMAT && st_ivas->hDirAC ) // VE: this condition to be reviewed together with the following one + { + hMCT->nchan_out_woLFE = ivas_get_sba_num_TCs( ivas_total_brate, st_ivas->sba_analysis_order ); + hMCT->num_lfe = FALSE; + } + else if ( ivas_format == SBA_FORMAT ) + { + hMCT->nchan_out_woLFE = ivas_sba_get_nchan( st_ivas->sba_analysis_order, st_ivas->hEncoderConfig->sba_planar ); + hMCT->num_lfe = FALSE; + } +#else else if ( ivas_format == SBA_FORMAT && st_ivas->hDirAC ) { hMCT->nchan_out_woLFE = ivas_dirac_getNumTransportChannels( ivas_total_brate, st_ivas->sba_analysis_order, st_ivas->hEncoderConfig->sba_planar ); @@ -347,6 +368,7 @@ ivas_error mct_enc_reconfigure( hMCT->nchan_out_woLFE = ivas_sba_get_nchan( st_ivas->sba_analysis_order, st_ivas->hEncoderConfig->sba_planar ); hMCT->num_lfe = FALSE; } +#endif else { assert( !"IVAS format currently not supported for MCT" ); diff --git a/lib_enc/ivas_sba_enc.c b/lib_enc/ivas_sba_enc.c index 62fc6d0667..40b502fd70 100644 --- a/lib_enc/ivas_sba_enc.c +++ b/lib_enc/ivas_sba_enc.c @@ -45,11 +45,13 @@ #endif #include "wmops.h" +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT /*-----------------------------------------------------------------------* * Local function prototypes *-----------------------------------------------------------------------*/ static void ivas_sba_dmx_enc( float sba_data[][L_FRAME48k], const int16_t nchan_transport, const int16_t input_frame ); +#endif /*-------------------------------------------------------------------* * ivas_sba_getTCs() @@ -65,6 +67,23 @@ void ivas_sba_getTCs( { ivas_sba_zero_vert_comp( sba_data, st_ivas->sba_analysis_order, st_ivas->hEncoderConfig->sba_planar, input_frame ); +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + st_ivas->nchan_transport = ivas_get_sba_num_TCs( st_ivas->hEncoderConfig->ivas_total_brate, st_ivas->sba_analysis_order ); + + if ( st_ivas->nchan_transport >= 3 ) + { + /*convert WYZX downmix to WYXZ*/ + int16_t i = 0; + float temp; + for ( i = 0; i < input_frame; i++ ) + { + temp = sba_data[2][i]; + sba_data[2][i] = sba_data[3][i]; + sba_data[3][i] = temp; + } + } + +#else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) { st_ivas->nchan_transport = ivas_get_spar_num_TCs( st_ivas->hEncoderConfig->ivas_total_brate, st_ivas->sba_analysis_order ); @@ -84,8 +103,13 @@ void ivas_sba_getTCs( else { st_ivas->nchan_transport = ivas_dirac_getNumTransportChannels( st_ivas->hEncoderConfig->ivas_total_brate, st_ivas->sba_analysis_order, st_ivas->hEncoderConfig->sba_planar ); +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + /* do nothing; simply use omni */ +#else ivas_sba_dmx_enc( sba_data, st_ivas->nchan_transport, input_frame ); +#endif } +#endif #ifdef DEBUG_MODE_DIRAC for ( int16_t n = 0; n < st_ivas->nchan_transport; n++ ) @@ -106,6 +130,7 @@ void ivas_sba_getTCs( } +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT /*-------------------------------------------------------------------* * ivas_sba_dmx_enc() * @@ -204,7 +229,7 @@ static void ivas_sba_dmx_enc( return; } - +#endif /*-------------------------------------------------------------------* * ivas_sba_enc_reconfigure() diff --git a/lib_enc/ivas_spar_encoder.c b/lib_enc/ivas_spar_encoder.c index a0fa6d4b4a..14f9f08a54 100644 --- a/lib_enc/ivas_spar_encoder.c +++ b/lib_enc/ivas_spar_encoder.c @@ -83,7 +83,12 @@ ivas_error ivas_spar_enc_open( nchan_inp = ivas_sba_get_nchan_metadata( sba_order_internal ); assert( nchan_inp <= hEncoderConfig->nchan_inp ); ivas_total_brate = hEncoderConfig->ivas_total_brate; + +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + nchan_transport = ivas_get_sba_num_TCs( hEncoderConfig->ivas_total_brate, sba_order_internal ); +#else nchan_transport = ivas_get_spar_num_TCs( hEncoderConfig->ivas_total_brate, sba_order_internal ); +#endif // bw = ivas_get_bw_idx_from_sample_rate(pCfg->input_Fs); table_idx = ivas_get_spar_table_idx( ivas_total_brate, sba_order_internal, SPAR_CONFIG_BW, NULL, NULL ); diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h index 2ed6a0ff91..2169cac9bd 100644 --- a/lib_enc/ivas_stat_enc.h +++ b/lib_enc/ivas_stat_enc.h @@ -571,7 +571,11 @@ typedef struct ivas_dirac_enc_data_structure PARAM_ISM_CONFIG_HANDLE hParamIsm; /* Parametric ISM handle */ IVAS_FB_MIXER_HANDLE hFbMixer; +#ifdef FIX_DIRAC_CHANNELS + float *sba_synchro_buffer[DIRAC_MAX_ANA_CHANS]; +#else float *sba_synchro_buffer[IVAS_MAX_NUM_CH]; // VE: all 16 buffers not needed ? +#endif int16_t num_samples_synchro_delay; /* DirAC parameter estimation */ -- GitLab From 5d150fe42c40f38c7803d85a48b7ea26d93aca90 Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 4 Oct 2022 12:01:46 +0200 Subject: [PATCH 2/3] fix Unit test build --- .../unit_tests/crend/ivas_crend_io_parse.h | 4 ++- .../unit_tests/crend/ivas_dec_parse_io.h | 30 ++++++++++--------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/scripts/ivas_pytests/tests/unit_tests/crend/ivas_crend_io_parse.h b/scripts/ivas_pytests/tests/unit_tests/crend/ivas_crend_io_parse.h index 21b59ad06f..abc8b1e463 100644 --- a/scripts/ivas_pytests/tests/unit_tests/crend/ivas_crend_io_parse.h +++ b/scripts/ivas_pytests/tests/unit_tests/crend/ivas_crend_io_parse.h @@ -49,6 +49,8 @@ #define IVAS_IN_FMT_714 "714" #define IVAS_IN_FMT_FOA "HOA1S" +#define IVAS_MAX_NUM_CH 16 + #define IVAS_MAX_PATH_LEN ( 2000 ) typedef enum ivas_in_out_fmt_struct_t @@ -65,7 +67,7 @@ typedef enum ivas_in_out_fmt_struct_t HOA_16, OBA, } ivas_in_out_fmt_t, - IVAS_IN_OUT_FMT_CONFIG; + IVAS_IN_OUT_FMT_CONFIG; #define CREND_MAND_ARGS 6 /* Tests */ diff --git a/scripts/ivas_pytests/tests/unit_tests/crend/ivas_dec_parse_io.h b/scripts/ivas_pytests/tests/unit_tests/crend/ivas_dec_parse_io.h index fe05a96f4f..ed4071d8ca 100644 --- a/scripts/ivas_pytests/tests/unit_tests/crend/ivas_dec_parse_io.h +++ b/scripts/ivas_pytests/tests/unit_tests/crend/ivas_dec_parse_io.h @@ -54,14 +54,14 @@ #define IVAS_IN_FMT_COMBINED "Combined" #define IVAS_IN_FMT_HOA_3 "HOA3S" -#define MAX_PCM_OUT_FILES ( IVAS_MAX_NUM_CH ) +#define MAX_PCM_OUT_FILES ( IVAS_MAX_NUM_CH ) #define REQ_DEC_CMD_LINE_PARAMS ( 7 ) #define IVAS_MAX_PATH_LEN ( 2000 ) #define IVAS_EXT_ADD_DELAY_MS ( 2 ) -#define MAX_OUT_FILE_LEN ( 1000 ) -#define MAX_CH_IDX_TAG_LEN ( 10 ) +#define MAX_OUT_FILE_LEN ( 1000 ) +#define MAX_CH_IDX_TAG_LEN ( 10 ) /*------------------------------------------------------------------------------------------* * Global variables @@ -73,22 +73,24 @@ /* IVAS decoder output formats */ #define IVAS_NO_RENDERER ( -1 ) /* no renderer required */ -#define IVAS_DEFAULT_QUIET_MODE ( 0 ) +#define IVAS_DEFAULT_QUIET_MODE ( 0 ) #define IVAS_DEFAULT_NO_DELAY_COMP_MODE ( 0 ) -#define IVAS_DEFAULT_BS_FORMAT ( IVAS_G192 ) -#define IVAS_DEFAULT_FMT ( IVAS_NO_RENDERER ) -#define IVAS_DEFAULT_LFE_CH_IDX ( 3 ) /* ch count starting from 0 */ -#define IVAS_DEFAULT_AGC ( 0 ) - -#define IVAS_IN_FMT_510 "510" -#define IVAS_IN_FMT_710 "710" -#define IVAS_IN_FMT_512 "512" -#define IVAS_IN_FMT_714 "714" -#define IVAS_IN_FMT_FOA "HOA1S" +#define IVAS_DEFAULT_BS_FORMAT ( IVAS_G192 ) +#define IVAS_DEFAULT_FMT ( IVAS_NO_RENDERER ) +#define IVAS_DEFAULT_LFE_CH_IDX ( 3 ) /* ch count starting from 0 */ +#define IVAS_DEFAULT_AGC ( 0 ) + +#define IVAS_IN_FMT_510 "510" +#define IVAS_IN_FMT_710 "710" +#define IVAS_IN_FMT_512 "512" +#define IVAS_IN_FMT_714 "714" +#define IVAS_IN_FMT_FOA "HOA1S" #define IVAS_IN_FMT_HOA_2 "HOA2S" #define IVAS_IN_FMT_HOA_3 "HOA3S" #define IVAS_IN_FMT_HOA_4 "HOA4S" +#define IVAS_MAX_NUM_CH 16 + /*------------------------------------------------------------------------------------------* * Structure definitions *------------------------------------------------------------------------------------------*/ -- GitLab From 63b73ac517998ea6be227ef448368a498e204ac8 Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 4 Oct 2022 12:08:33 +0200 Subject: [PATCH 3/3] fix build warning --- lib_com/ivas_dirac_com.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib_com/ivas_dirac_com.c b/lib_com/ivas_dirac_com.c index 56e623b019..fe344e6423 100644 --- a/lib_com/ivas_dirac_com.c +++ b/lib_com/ivas_dirac_com.c @@ -60,7 +60,11 @@ ivas_error ivas_dirac_config( ) { IVAS_FORMAT ivas_format; +#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT + int16_t sba_order; +#else int16_t sba_order, sba_planar; +#endif int16_t *nSCE, *nCPE, *element_mode, *nchan_transport; int32_t ivas_total_brate; DIRAC_CONFIG_DATA_HANDLE hConfig; @@ -83,7 +87,9 @@ ivas_error ivas_dirac_config( element_mode = &( (Encoder_Struct *) st_ivas )->hEncoderConfig->element_mode_init; nchan_transport = &( (Encoder_Struct *) st_ivas )->nchan_transport; sba_order = ( (Encoder_Struct *) st_ivas )->sba_analysis_order; +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT sba_planar = ( (Encoder_Struct *) st_ivas )->hEncoderConfig->sba_planar; +#endif ivas_total_brate = ( (Encoder_Struct *) st_ivas )->hEncoderConfig->ivas_total_brate; Fs = ( (Encoder_Struct *) st_ivas )->hEncoderConfig->input_Fs; band_grouping = ( (Encoder_Struct *) st_ivas )->hDirAC->band_grouping; @@ -108,7 +114,9 @@ ivas_error ivas_dirac_config( element_mode = &( (Decoder_Struct *) st_ivas )->element_mode_init; nchan_transport = &( (Decoder_Struct *) st_ivas )->nchan_transport; sba_order = ( (Decoder_Struct *) st_ivas )->sba_analysis_order; +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT sba_planar = ( (Decoder_Struct *) st_ivas )->sba_planar; +#endif ivas_total_brate = ( (Decoder_Struct *) st_ivas )->hDecoderConfig->ivas_total_brate; Fs = ( (Decoder_Struct *) st_ivas )->hDecoderConfig->output_Fs; band_grouping = ( (Decoder_Struct *) st_ivas )->hDirAC->band_grouping; -- GitLab