diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c index d221b9cf92ee46aec7477a53760820a4ccea9ade..9ee771fb6b688a6b710841f3a870049bf8b2c6c1 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 72af37ef8aec31483e6bfa982721f3af967deb27..b75fdeca54c11dfc65976a7e45b54e7e2e101f31 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 80ca92e18cf62d1436825b9e650004e797e7198c..fe344e6423d8eebd4573e43b6b84ea881a6b3ffe 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; @@ -142,8 +150,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 +319,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 +444,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 +593,7 @@ ivas_error ivas_dirac_sba_config( return error; } - +#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT /*------------------------------------------------------------------------- * ivas_dirac_getNumTransportChannels() * @@ -647,7 +665,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 bfef844788e3a62efdb8aabb8517d35ff0b3f442..22b7d37d2f50cac336a9595d9d457944aef4e4e9 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 2ea07710bc68b0fcc59caa529d769cb7888c876e..58cd80bc3783a034b2df29eb99257df1c292d625 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 4955f9f9e2d60c27e34312a2a2a6e09a16731418..ce4e742401135ffbd8b7ef2e220e85bd61d199ad 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 b8567b1503d4c49b523179f7b7e07fd1ab505eac..dcac3c309e2f88c03d2ae449bd788f2e80b9b46c 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -150,7 +150,9 @@ #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_CONTROLLABLE_SID_UPDATE_RATE /* Issue 117: fix controllable SID update rate mechanism */ - +#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 8048d8106f7924915aaacba6dabdc9da4e93063a..f83125fcbbdb862388c889b635e17474ad6c6267 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 162002852b00b71c83d712dac0772086f5731525..ef4527ea8f08b2bb32ce4f02d579996cc57f0f96 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 5b42032201b76131ec5380c4ecb592274b668321..f084b25b9b16282357664b804f762c223e7f9ea8 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 e25eacff54a3181ab25e2a16eca118da9d171d4a..854f0685cd50a9d6ffc790fd5f8921eb93778d9c 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 204b91b89dfdb44cf5a4f1d0bdd8e76d6b60ed13..9090588b55ae5da2ee10a9fd98b0666327a33d01 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 e5195cba5a74a1b3a7c1765c9f03eb0e7fbc9b2e..16af0c47aa3eb9cc677e087b4fdda879dd47c495 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 754aa6d57ccc49dfcff7e62e07e1daaab2c3a1ae..9d5893622df4130c44ba251f672d39d4dd2d420c 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 2e233bbc6d6f89cad5c20b260907bf4d2e2e173e..c2649adc56c10964b037c39eeb7c1e3f6b70f433 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 bcf5482da92ba513bd3b974cc6370732f8788756..9aa5fe04c5ddb8843b918cd7853cb0aca8deb357 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 62fc6d06671c6564d7eec8919eb941f3c22b3283..40b502fd70521afa0f1c79308f7b74760363d177 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 a0fa6d4b4ac920b067d1eb1c056c1a095e5e6ece..14f9f08a54d8d667999e0753559d871476d333fb 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 2ed6a0ff910a474fa7a87da0da11594c9a194bb1..2169cac9bd811ea28984e6ba0cb454691bc881c8 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 */ 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 21b59ad06ff711c3e71e216c9da76be255fc09d7..abc8b1e463072a94e95c068b6f0a1d2d0dbaae69 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 fe05a96f4fe24eb63f0a2591ecfb347a67bf8daa..ed4071d8ca1a9f7127dbf4691dc9331fdc7c179e 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 *------------------------------------------------------------------------------------------*/