From d647e81bf56e1ab76bcad44e603da16c3b701726 Mon Sep 17 00:00:00 2001 From: "Brown, Stefanie" Date: Fri, 5 May 2023 13:48:00 +1000 Subject: [PATCH 01/14] Removing some unneeded comments. --- lib_com/ivas_rom_com.c | 1 - lib_enc/ivas_spar_md_enc.c | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/lib_com/ivas_rom_com.c b/lib_com/ivas_rom_com.c index b220f19f9e..997106c08f 100644 --- a/lib_com/ivas_rom_com.c +++ b/lib_com/ivas_rom_com.c @@ -887,7 +887,6 @@ const ivas_spar_br_table_t ivas_spar_br_table_consts[IVAS_SPAR_BR_TABLE_LEN] = { /* When AGC is ON additional (AGC_BITS_PER_CH+1) bits may be taken from each core-coder channel so minimum core-coder bitrate per channel can be min core-coder bitrates as per the table - AGC_BITS_PER_CH */ - /* preferred tuning (3.2/4.9kbps) with/out TDD */ { 13200, 0, SBA_FOA_ORDER, FB, 24000, 1, WYXZ, 1, 0, { { 10000, 8300, 13150 } }, { { 15, 1, 5, 1 },{ 15, 1, 3, 1 },{ 7, 1, 3, 1 } }, 0, 0, 0 }, diff --git a/lib_enc/ivas_spar_md_enc.c b/lib_enc/ivas_spar_md_enc.c index cdfd6050ba..72f7cbab84 100644 --- a/lib_enc/ivas_spar_md_enc.c +++ b/lib_enc/ivas_spar_md_enc.c @@ -1714,8 +1714,7 @@ static void ivas_store_prior_coeffs( for ( i = 0; i < num_bands; i++ ) { b = i; - /* TODO: Bitrate switching will require dependence on bands_bw, and changes to time differential coding/prior index - storage for 6-12 band switching. e.g. b = (int16_t) floor( i * one_by_bands_bw ); */ + for ( j = 0; j < IVAS_SPAR_MAX_CH - 1; j++ ) { hMdEnc->spar_md_prior.band_coeffs_idx[i].pred_index_re[j] = hMdEnc->spar_md.band_coeffs_idx[b].pred_index_re[j]; -- GitLab From 3071b455f8f2009dd05be236dd016906cb85823e Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Mon, 8 May 2023 13:27:30 +0530 Subject: [PATCH 02/14] Added clean up changes for VLBR --- lib_com/bitstream.c | 2 + lib_com/ivas_dirac_com.c | 45 ++++++++-- lib_com/ivas_fb_mixer.c | 7 +- lib_com/ivas_prot.h | 49 +++++++--- lib_com/ivas_sba_config.c | 3 +- lib_com/ivas_spar_com.c | 2 + lib_com/options.h | 2 + lib_dec/ivas_corecoder_dec_reconfig.c | 6 +- lib_dec/ivas_dec.c | 32 ++++++- lib_dec/ivas_dirac_dec.c | 95 +++++++++++++++++--- lib_dec/ivas_init_dec.c | 50 ++++++++++- lib_dec/ivas_masa_dec.c | 9 +- lib_dec/ivas_output_config.c | 6 +- lib_dec/ivas_qmetadata_dec.c | 22 ++++- lib_dec/ivas_sba_dec.c | 9 +- lib_dec/ivas_sba_dirac_stereo_dec.c | 32 ++++++- lib_dec/ivas_sba_rendering_internal.c | 11 ++- lib_dec/ivas_sce_dec.c | 9 ++ lib_dec/ivas_spar_decoder.c | 5 ++ lib_dec/ivas_stat_dec.h | 2 + lib_dec/lib_dec.c | 2 + lib_enc/ivas_cpe_enc.c | 10 ++- lib_enc/ivas_dirac_enc.c | 52 +++++++++-- lib_enc/ivas_enc.c | 17 +++- lib_enc/ivas_init_enc.c | 16 +++- lib_enc/ivas_ism_param_enc.c | 5 ++ lib_enc/ivas_masa_enc.c | 6 +- lib_enc/ivas_mc_param_enc.c | 4 + lib_enc/ivas_mcmasa_enc.c | 15 +++- lib_enc/ivas_mct_enc.c | 19 +++- lib_enc/ivas_qmetadata_enc.c | 36 +++++++- lib_enc/ivas_sce_enc.c | 5 +- lib_enc/ivas_spar_encoder.c | 17 +++- lib_enc/ivas_stat_enc.h | 2 + lib_enc/lib_enc.c | 6 ++ lib_rend/ivas_dirac_dec_binaural_functions.c | 9 +- lib_rend/lib_rend.c | 6 ++ 37 files changed, 545 insertions(+), 80 deletions(-) diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c index 0a206fcdb5..ee80be77ac 100644 --- a/lib_com/bitstream.c +++ b/lib_com/bitstream.c @@ -1801,7 +1801,9 @@ ivas_error preview_indices( if ( bit_stream[2] == 0 ) { st_ivas->ivas_format = SBA_FORMAT; +#ifndef SBA_MODE_CLEAN_UP st_ivas->sba_mode = ivas_sba_mode_select(); +#endif } else { diff --git a/lib_com/ivas_dirac_com.c b/lib_com/ivas_dirac_com.c index e4bea78e79..c3a141b67e 100644 --- a/lib_com/ivas_dirac_com.c +++ b/lib_com/ivas_dirac_com.c @@ -70,7 +70,9 @@ ivas_error ivas_dirac_config( ivas_error error; int16_t spar_dirac_split_band; IVAS_FB_MIXER_HANDLE hFbMdft; +#ifndef SBA_MODE_CLEAN_UP SBA_MODE sba_mode; +#endif int16_t *dirac_to_spar_md_bands; error = IVAS_ERR_OK; @@ -88,7 +90,9 @@ ivas_error ivas_dirac_config( band_grouping = ( (Encoder_Struct *) st_ivas )->hDirAC->band_grouping; hConfig = ( (Encoder_Struct *) st_ivas )->hDirAC->hConfig; hQMetaData = ( (Encoder_Struct *) st_ivas )->hQMetaData; +#ifndef SBA_MODE_CLEAN_UP sba_mode = ( (Encoder_Struct *) st_ivas )->sba_mode; +#endif if ( ( (Encoder_Struct *) st_ivas )->hSpar != NULL ) { hFbMdft = ( (Encoder_Struct *) st_ivas )->hSpar->hFbMixer; @@ -112,7 +116,9 @@ ivas_error ivas_dirac_config( band_grouping = ( (Decoder_Struct *) st_ivas )->hDirAC->band_grouping; hConfig = ( (Decoder_Struct *) st_ivas )->hDirAC->hConfig; hQMetaData = ( (Decoder_Struct *) st_ivas )->hQMetaData; +#ifndef SBA_MODE_CLEAN_UP sba_mode = ( (Decoder_Struct *) st_ivas )->sba_mode; +#endif if ( ( (Decoder_Struct *) st_ivas )->hSpar != NULL ) { hFbMdft = ( (Decoder_Struct *) st_ivas )->hSpar->hFbMixer; @@ -124,8 +130,11 @@ ivas_error ivas_dirac_config( ( (Decoder_Struct *) st_ivas )->hDirAC->hFbMdft = hFbMdft; dirac_to_spar_md_bands = ( (Decoder_Struct *) st_ivas )->hDirAC->dirac_to_spar_md_bands; } - +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) +#else + if ( ivas_format == SBA_FORMAT ) +#endif { hConfig->nbands = IVAS_MAX_NUM_BANDS; spar_dirac_split_band = min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); @@ -142,28 +151,38 @@ ivas_error ivas_dirac_config( #endif if ( ivas_format == SBA_FORMAT ) /* skip for MASA decoder */ { +#ifndef SBA_MODE_CLEAN_UP 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, element_mode, ivas_total_brate, hConfig->nbands - spar_dirac_split_band ) ) != IVAS_ERR_OK ) +#endif { return error; } if ( hQMetaData != NULL ) { +#ifndef SBA_MODE_CLEAN_UP if ( enc_dec == ENC || sba_mode != SBA_MODE_SPAR ) +#else + if ( enc_dec == ENC || ivas_format != SBA_FORMAT ) +#endif { hConfig->nbands = hQMetaData->q_direction[0].cfg.nbands; } hConfig->enc_param_start_band = hQMetaData->q_direction[0].cfg.start_band + spar_dirac_split_band; } - +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) { +#endif hConfig->dec_param_estim = TRUE; if ( hConfig->dec_param_estim == TRUE ) { hConfig->enc_param_start_band = spar_dirac_split_band; } +#ifndef SBA_MODE_CLEAN_UP } else { @@ -172,9 +191,13 @@ ivas_error ivas_dirac_config( hConfig->dec_param_estim = TRUE; } } +#endif } - +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) +#else + if ( ivas_format == SBA_FORMAT ) +#endif { ivas_dirac_config_bands( band_grouping, IVAS_MAX_NUM_BANDS, (int16_t) ( Fs * INV_CLDFB_BANDWIDTH + 0.5f ), dirac_to_spar_md_bands, hQMetaData->useLowerBandRes, hConfig->enc_param_start_band, hFbMdft ); @@ -301,26 +324,33 @@ void ivas_dirac_config_bands( ivas_error ivas_dirac_sba_config( IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ +#ifndef SBA_MODE_CLEAN_UP int16_t *nchan_transport, /* o : number of transport channel needed for MASA format */ int16_t *nSCE, /* o : number of SCEs */ int16_t *nCPE, /* o : number of CPEs */ +#endif int16_t *element_mode, /* i/o: element mode of the core coder */ int32_t sba_total_brate, /* i : SBA total bitrate */ +#ifndef SBA_MODE_CLEAN_UP const int16_t sba_order, /* i : Ambisonic (SBA) order */ - const SBA_MODE sba_mode, /* i : SBA mode */ - const int16_t nbands /* i : number of frequency bands */ + const SBA_MODE sba_mode, /* i : SBA mode */ +#endif + const int16_t nbands /* i : number of frequency bands */ ) { +#ifndef SBA_MODE_CLEAN_UP int16_t i; int16_t nbands_wb; +#endif int16_t nbands_coded; ivas_error error; error = IVAS_ERR_OK; hQMetaData->is_masa_ivas_format = 0; - +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) { +#endif /* map the bitrate for SID frame */ if ( sba_total_brate == IVAS_SID_5k2 ) { @@ -417,6 +447,7 @@ ivas_error ivas_dirac_sba_config( hQMetaData->qmetadata_max_bit_req = QMETADATA_MAXBIT_REQ_SBA >> 1; return error; +#ifndef SBA_MODE_CLEAN_UP } if ( sba_total_brate > IVAS_SID_5k2 ) @@ -558,8 +589,8 @@ ivas_error ivas_dirac_sba_config( assert( !"SBA number of transport channels must be 8 or lower" ); } } - return error; +#endif } diff --git a/lib_com/ivas_fb_mixer.c b/lib_com/ivas_fb_mixer.c index f42e8bde74..9dd511d80b 100644 --- a/lib_com/ivas_fb_mixer.c +++ b/lib_com/ivas_fb_mixer.c @@ -101,7 +101,9 @@ static int16_t ivas_get_num_bands( ivas_error ivas_fb_set_cfg( IVAS_FB_CFG **pFb_cfg_out, /* o : FB config. handle */ const int16_t ivas_format, /* i : IVAS format */ +#ifndef SBA_MODE_CLEAN_UP const SBA_MODE sba_mode, /* i : SBA mode */ +#endif const int16_t num_in_chans, /* i : number of FB input channels */ const int16_t num_out_chans, /* i : number of FB output channels*/ const int16_t active_w_mixing, /* i : active_w_mixing flag */ @@ -131,12 +133,14 @@ ivas_error ivas_fb_set_cfg( else if ( ivas_format == SBA_FORMAT ) { pFb_cfg->fb_latency = NS2SA( sampling_rate, DELAY_FB_1_NS ); - +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) { +#endif pFb_cfg->fade_len = NS2SA( sampling_rate, DELAY_FB_4_NS ); pFb_cfg->prior_input_length = NS2SA( sampling_rate, FRAME_SIZE_NS ); pFb_cfg->windowed_fr_offset = (int16_t) ( (float) ( sampling_rate / FRAMES_PER_SEC ) * 3.0f / 4.0f ) - NS2SA( sampling_rate, DELAY_DIRAC_SPAR_ENC_CMP_NS ); +#ifndef SBA_MODE_CLEAN_UP } else /* SBA_MODE_DIRAC */ { @@ -145,6 +149,7 @@ ivas_error ivas_fb_set_cfg( /* extra SPAR/DirAC synchro delay */ pFb_cfg->prior_input_length += NS2SA( sampling_rate, DELAY_FB_1_NS ); } +#endif } else if ( ivas_format == MASA_FORMAT ) { diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index 890390309f..19b6f515fe 100644 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -2938,8 +2938,11 @@ void reset_metadata_spatial( const int32_t element_brate, /* i : element bitrate */ int32_t *total_brate, /* o : total bitrate */ const int32_t core_brate, /* i : core bitrate */ - const int16_t nb_bits_metadata, /* i : number of meatdata bits */ + const int16_t nb_bits_metadata /* i : number of meatdata bits */ +#ifndef SBA_MODE_CLEAN_UP + , const SBA_MODE sba_mode /* i : SBA mode */ +#endif ); /*! r: number of bits written */ @@ -2947,8 +2950,11 @@ void ivas_qmetadata_enc_sid_encode( BSTR_ENC_HANDLE hMetaData, /* i/o: metadata bitstream handle */ IVAS_QMETADATA *q_metadata, /* i/o: metadata handle */ const int16_t masa_sid_descriptor, /* i : description of MASA SID coding structure*/ - const int16_t ivas_format, /* i : ivas format */ + const int16_t ivas_format /* i : ivas format */ +#ifndef SBA_MODE_CLEAN_UP + , const SBA_MODE sba_mode /* i : SBA mode */ +#endif ); /*! r: number of bits read */ @@ -2965,8 +2971,11 @@ int16_t ivas_qmetadata_dec_sid_decode( int16_t *index, /* i/o: bitstream position */ const int16_t nchan_transport, /* i : number of transport channels */ int16_t *element_mode, /* o : element mode */ - const int16_t ivas_format, /* i : IVAS format */ + const int16_t ivas_format /* i : IVAS format */ +#ifndef SBA_MODE_CLEAN_UP + , const SBA_MODE sba_mode /* i : SBA mode */ +#endif ); void ivas_qmetadata_to_dirac( @@ -2974,7 +2983,11 @@ void ivas_qmetadata_to_dirac( DIRAC_DEC_HANDLE hDirAC, /* o : DirAC decoder structure */ MASA_DECODER_HANDLE hMasa, /* i : MASA decoder structure */ const int32_t ivas_total_brate, /* i : IVAS total bitrate */ +#ifndef SBA_MODE_CLEAN_UP const SBA_MODE sba_mode, /* i : SBA mode */ +#else + const IVAS_FORMAT ivas_format, /* i : IVAS format */ +#endif int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */ ); @@ -3170,10 +3183,14 @@ void ivas_dirac_param_est_enc( float **pp_fr_real, float **pp_fr_imag, const int16_t input_frame, - const SBA_MODE sba_mode +#ifndef SBA_MODE_CLEAN_UP + const SBA_MODE sba_mode +#else + const IVAS_FORMAT ivas_format +#endif ); - +#ifndef SBA_MODE_CLEAN_UP /*----------------------------------------------------------------------------------* * SBA format prototypes *----------------------------------------------------------------------------------*/ @@ -3182,7 +3199,7 @@ void ivas_dirac_param_est_enc( SBA_MODE ivas_sba_mode_select( void ); - +#endif void ivas_sba_config( const int32_t sba_total_brate, /* i : SBA total bitrate */ int16_t sba_order, /* i : Ambisonic (SBA) order */ @@ -3311,7 +3328,7 @@ void ivas_dirac_enc_close( DIRAC_ENC_HANDLE *hDirAC, /* i/o: encoder DirAC handle */ const int32_t input_Fs /* i : input sampling_rate */ ); - +#ifndef SBA_MODE_CLEAN_UP void ivas_dirac_enc( DIRAC_ENC_HANDLE hDirAC, /* i/o: encoder DirAC handle */ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ @@ -3322,7 +3339,7 @@ void ivas_dirac_enc( const int16_t input_frame, /* i : input frame length */ const int16_t sba_planar /* i : SBA planar flag */ ); - +#endif ivas_error ivas_dirac_config( void *st_ivas, /* i/o: IVAS encoder/decoder state structure */ const int16_t enc_dec /* i : encoder or decoder flag */ @@ -3340,13 +3357,17 @@ void ivas_dirac_config_bands( ivas_error ivas_dirac_sba_config( IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ +#ifndef SBA_MODE_CLEAN_UP int16_t *nchan_transport, /* o : number of transport channel needed for MASA format */ int16_t *nSCE, /* o : number of SCEs */ int16_t *nCPE, /* o : number of CPEs */ +#endif int16_t *element_mode, /* o : element mode of the core coder */ int32_t sba_total_brate, /* i : SBA total bitrate */ +#ifndef SBA_MODE_CLEAN_UP const int16_t sba_order, /* i : Ambisonic (SBA) order */ const SBA_MODE sba_mode, /* i : SBA mode */ +#endif const int16_t nbands /* i : number of frequency bands */ ); @@ -3369,7 +3390,9 @@ void ivas_dirac_dec_read_BS( DIRAC_DEC_HANDLE hDirAC, /* i/o: decoder DirAC handle */ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q metadata */ int16_t *nb_bits, /* o : number of bits read */ +#ifndef SBA_MODE_CLEAN_UP const SBA_MODE sba_mode, /* i : SBA mode */ +#endif int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */ ); @@ -4904,7 +4927,11 @@ void computeReferencePower_enc( float *reference_power, /* o : Estimated power */ const int16_t enc_param_start_band, /* i : first band to process */ const int16_t num_freq_bands, /* i : Number of frequency bands */ +#ifndef SBA_MODE_CLEAN_UP const SBA_MODE sba_mode /* i : SBA mode */ +#else + const IVAS_FORMAT ivas_format /* i : ivas_format */ +#endif ); ivas_error ivas_mono_dmx_renderer_open( @@ -5024,7 +5051,9 @@ ivas_error ivas_td_binaural_renderer( ivas_error ivas_fb_set_cfg( IVAS_FB_CFG **pFb_cfg_out, /* o : FB config. handle */ const int16_t ivas_format, /* i : IVAS format */ +#ifndef SBA_MODE_CLEAN_UP const SBA_MODE sba_mode, /* i : SBA mode */ +#endif const int16_t num_in_chans, /* i : number of FB input channels */ const int16_t num_out_chans, /* i : number of FB output channels */ const int16_t active_w_mixing, /* i : active_w_mixing flag */ @@ -5050,13 +5079,13 @@ void ivas_fb_mixer_pcm_ingest( float **ppOut_pcm, /* o : output audio channels */ const int16_t frame_length /* i : frame length */ ); - +#ifndef SBA_MODE_CLEAN_UP void ivas_dirac_enc_spar_delay_synchro( Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ const int16_t input_frame, /* i : input frame length */ float data_f[][L_FRAME48k] /* i/o: SBA channels (ACN / SN3D) */ ); - +#endif void ivas_fb_mixer_update_prior_input( IVAS_FB_MIXER_HANDLE hFbMixer, /* i/o: FB mixer handle */ float *pcm_in[], /* i : input audio channels */ diff --git a/lib_com/ivas_sba_config.c b/lib_com/ivas_sba_config.c index d307e3e9ac..22ff1b21b2 100644 --- a/lib_com/ivas_sba_config.c +++ b/lib_com/ivas_sba_config.c @@ -46,7 +46,7 @@ #endif #include "wmc_auto.h" - +#ifndef SBA_MODE_CLEAN_UP /*-------------------------------------------------------------------* * ivas_sba_mode_select() * @@ -58,6 +58,7 @@ SBA_MODE ivas_sba_mode_select() { return SBA_MODE_SPAR; } +#endif /*-------------------------------------------------------------------* * ivas_sba_config() * diff --git a/lib_com/ivas_spar_com.c b/lib_com/ivas_spar_com.c index 481812d22d..30420879b1 100644 --- a/lib_com/ivas_spar_com.c +++ b/lib_com/ivas_spar_com.c @@ -435,10 +435,12 @@ int16_t ivas_get_sba_num_TCs( { nchan_transport = 1; } +#ifndef SBA_MODE_CLEAN_UP else if ( ivas_sba_mode_select() == 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 1728371c0f..9ec91435ba 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -166,6 +166,8 @@ #define FIX_391_SBA /* Dlb: Fix for issue 391 for SBA */ #define EUALER2QUAT_FIX /*Dlb :fix for issue 430 issue in euler2quat, sign of quat y is inverted*/ +#define SBA_MODE_CLEAN_UP /* Dlb: Cean up SBA mode references */ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ + #endif diff --git a/lib_dec/ivas_corecoder_dec_reconfig.c b/lib_dec/ivas_corecoder_dec_reconfig.c index 9d15f1bdfc..86aee2d164 100644 --- a/lib_dec/ivas_corecoder_dec_reconfig.c +++ b/lib_dec/ivas_corecoder_dec_reconfig.c @@ -510,9 +510,13 @@ ivas_error ivas_cldfb_dec_reconfig( } } } - +#ifndef SBA_MODE_CLEAN_UP /* CLDFB Interpolation weights */ if ( st_ivas->sba_mode == SBA_MODE_SPAR && ( numCldfbAnalyses_old != numCldfbAnalyses || numCldfbSyntheses_old != numCldfbSyntheses || nchan_transport_old != st_ivas->nchan_transport ) && numCldfbAnalyses != 0 && numCldfbSyntheses != 0 ) +#else + /* CLDFB Interpolation weights */ + if ( st_ivas->ivas_format == SBA_FORMAT && ( numCldfbAnalyses_old != numCldfbAnalyses || numCldfbSyntheses_old != numCldfbSyntheses || nchan_transport_old != st_ivas->nchan_transport ) && numCldfbAnalyses != 0 && numCldfbSyntheses != 0 ) +#endif { ivas_spar_get_cldfb_gains( st_ivas->hSpar, st_ivas->cldfbAnaDec[0], st_ivas->cldfbSynDec[0], hDecoderConfig ); } diff --git a/lib_dec/ivas_dec.c b/lib_dec/ivas_dec.c index 11cc33af48..30f4b6d360 100644 --- a/lib_dec/ivas_dec.c +++ b/lib_dec/ivas_dec.c @@ -253,28 +253,43 @@ ivas_error ivas_dec( set_s( nb_bits_metadata, 0, MAX_SCE ); /* read parameters from the bitstream */ +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->hQMetaData != NULL && st_ivas->sba_mode != SBA_MODE_SPAR ) +#else + if ( st_ivas->hQMetaData != NULL && st_ivas->ivas_format != SBA_FORMAT ) +#endif { st = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; - +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->ivas_format == SBA_FORMAT ) { ivas_dirac_dec_read_BS( ivas_total_brate, st, st_ivas->hDirAC, st_ivas->hQMetaData, &nb_bits_metadata[0], st_ivas->sba_mode, 0 ); } else { +#endif if ( ( error = ivas_masa_decode( st_ivas, st, &nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) { return error; } +#ifndef SBA_MODE_CLEAN_UP } +#endif } +#ifndef SBA_MODE_CLEAN_UP else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#else + else if ( st_ivas->ivas_format == SBA_FORMAT ) +#endif { if ( st_ivas->hQMetaData != NULL ) { st = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; +#ifndef SBA_MODE_CLEAN_UP ivas_dirac_dec_read_BS( ivas_total_brate, st, st_ivas->hDirAC, st_ivas->hQMetaData, &nb_bits_metadata[0], st_ivas->sba_mode, st_ivas->hSpar->dirac_to_spar_md_bands ); +#else + ivas_dirac_dec_read_BS( ivas_total_brate, st, st_ivas->hDirAC, st_ivas->hQMetaData, &nb_bits_metadata[0], st_ivas->hSpar->dirac_to_spar_md_bands ); +#endif } if ( ( error = ivas_spar_dec( st_ivas, nb_bits_metadata ) ) != IVAS_ERR_OK ) @@ -330,8 +345,11 @@ ivas_error ivas_dec( if ( st_ivas->sba_dirac_stereo_flag ) { nchan_remapped = nchan_out; - +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#else + if ( st_ivas->ivas_format == SBA_FORMAT ) +#endif { ivas_agc_dec_process( st_ivas->hSpar->hAgcDec, output, output, st_ivas->hSpar->hMdDec->spar_md_cfg.nchan_transport, output_frame ); @@ -360,8 +378,12 @@ ivas_error ivas_dec( if ( st_ivas->ivas_format == SBA_FORMAT ) { nchan_remapped = ivas_sba_remapTCs( output, st_ivas, output_frame ); - +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR && ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) +#else + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) + +#endif { ivas_sba_mix_matrix_determiner( st_ivas->hSpar, output, st_ivas->bfi, nchan_remapped, output_frame ); } @@ -386,7 +408,11 @@ ivas_error ivas_dec( { ivas_dirac_dec_binaural( st_ivas, output, nchan_remapped ); } +#ifndef SBA_MODE_CLEAN_UP else if ( st_ivas->sba_mode == SBA_MODE_DIRAC || st_ivas->ivas_format == MASA_FORMAT ) +#else + else if ( st_ivas->ivas_format == MASA_FORMAT ) +#endif { if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_DEC ) { diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index 446ed23bb3..5bba194c41 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -170,7 +170,11 @@ ivas_error ivas_dirac_dec_config( num_protos_diff_old = 0; nchan_transport_orig = st_ivas->nchan_transport; +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->ivas_format == SBA_FORMAT && st_ivas->sba_mode == SBA_MODE_SPAR && !( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) +#else + if ( st_ivas->ivas_format == SBA_FORMAT && !( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) +#endif { st_ivas->nchan_transport = ivas_sba_get_nchan_metadata( st_ivas->sba_analysis_order ); } @@ -256,7 +260,11 @@ ivas_error ivas_dirac_dec_config( } /* band config needed only for SPAR with FOA output */ +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_FOA && st_ivas->sba_mode == SBA_MODE_SPAR ) +#else + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_FOA && st_ivas->ivas_format == SBA_FORMAT ) +#endif { return IVAS_ERR_OK; } @@ -509,8 +517,11 @@ ivas_error ivas_dirac_dec_config( { hDirAC->num_protos_diff = 1; hDirAC->num_protos_dir = nchan_transport; - +#ifndef SBA_MODE_CLEAN_UP if ( ( st_ivas->sba_planar ) && ( !( st_ivas->ivas_format == SBA_FORMAT && st_ivas->sba_mode == SBA_MODE_SPAR ) ) ) +#else + if ( ( st_ivas->sba_planar ) && ( !( st_ivas->ivas_format == SBA_FORMAT ) ) ) +#endif { hDirAC->num_protos_dir++; } @@ -620,7 +631,11 @@ ivas_error ivas_dirac_dec_config( if ( flag_config == DIRAC_OPEN ) { hDirAC->hoa_decoder = NULL; +#ifndef SBA_MODE_CLEAN_UP if ( ( hDirAC->panningConf == DIRAC_PANNING_HOA3 ) || st_ivas->sba_mode == SBA_MODE_SPAR || ( nchan_transport > 2 ) ) +#else + if ( ( hDirAC->panningConf == DIRAC_PANNING_HOA3 ) || st_ivas->ivas_format == SBA_FORMAT || ( nchan_transport > 2 ) ) +#endif { if ( hDirAC->hOutSetup.is_loudspeaker_setup ) { @@ -836,7 +851,7 @@ ivas_error ivas_dirac_dec_config( { int16_t num_slots_in_subfr; num_slots_in_subfr = hDirAC->hConfig->dec_param_estim ? CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES : 1; - +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_DIRAC ) { hDirAC->dirac_md_buffer_length = MAX_PARAM_SPATIAL_SUBFRAMES * num_slots_in_subfr; @@ -847,12 +862,15 @@ ivas_error ivas_dirac_dec_config( } else { +#endif hDirAC->dirac_md_buffer_length = ( MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_DIRAC_PARAM_DEC_SFR ) * num_slots_in_subfr; hDirAC->dirac_bs_md_write_idx = DELAY_DIRAC_PARAM_DEC_SFR * num_slots_in_subfr; hDirAC->spar_to_dirac_write_idx = DELAY_DIRAC_PARAM_DEC_SFR * num_slots_in_subfr; hDirAC->dirac_read_idx = 0; hDirAC->dirac_estimator_idx = 0; +#ifndef SBA_MODE_CLEAN_UP } +#endif } if ( ( hDirAC->azimuth = (int16_t **) malloc( hDirAC->dirac_md_buffer_length * sizeof( int16_t * ) ) ) == NULL ) @@ -991,7 +1009,11 @@ ivas_error ivas_dirac_dec_config( { int16_t num_slots_in_subfr; num_slots_in_subfr = hDirAC->hConfig->dec_param_estim ? CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES : 1; +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#else + if ( st_ivas->ivas_format == SBA_FORMAT ) +#endif { if ( ( hDirAC->hConfig->dec_param_estim_old != hDirAC->hConfig->dec_param_estim ) ) { @@ -1652,7 +1674,9 @@ void ivas_dirac_dec_read_BS( DIRAC_DEC_HANDLE hDirAC, /* i/o: decoder DirAC handle */ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata */ int16_t *nb_bits, /* o : number of bits read */ +#ifndef SBA_MODE_CLEAN_UP const SBA_MODE sba_mode, /* i : SBA mode */ +#endif int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */ ) { @@ -1668,14 +1692,15 @@ void ivas_dirac_dec_read_BS( /* 1 bit flag for signaling metadata to read */ b = st->bit_stream[( st->next_bit_pos )--]; ( *nb_bits )++; - +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode != SBA_MODE_SPAR ) { assert( ( b == 0 ) || ( hQMetaData->q_direction[0].cfg.start_band > 0 ) ); } - +#endif if ( b == 1 ) /* WB 4TCs condition, no other metadata to read*/ { +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode != SBA_MODE_SPAR ) { if ( hDirAC != NULL ) @@ -1700,6 +1725,7 @@ void ivas_dirac_dec_read_BS( } else { +#endif orig_dirac_bands = hQMetaData->q_direction[0].cfg.nbands; hQMetaData->sba_inactive_mode = 1; @@ -1713,9 +1739,11 @@ void ivas_dirac_dec_read_BS( set_zero( hQMetaData->q_direction[0].band_data[b].elevation, MAX_PARAM_SPATIAL_SUBFRAMES ); } } - +#ifndef SBA_MODE_CLEAN_UP *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT, sba_mode ); - +#else + *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT); +#endif for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].azimuth[i] = hQMetaData->q_direction[0].band_data[1].azimuth[0]; @@ -1733,7 +1761,9 @@ void ivas_dirac_dec_read_BS( } hQMetaData->q_direction->cfg.nbands = orig_dirac_bands; +#ifndef SBA_MODE_CLEAN_UP } +#endif } else { @@ -1781,11 +1811,15 @@ void ivas_dirac_dec_read_BS( } } } - +#ifndef SBA_MODE_CLEAN_UP *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT, sba_mode ); - +#else + *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT ); +#endif +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) { +#endif for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].azimuth[i] = hQMetaData->q_direction[0].band_data[1].azimuth[0]; @@ -1803,19 +1837,25 @@ void ivas_dirac_dec_read_BS( } hQMetaData->q_direction->cfg.nbands = orig_dirac_bands; +#ifndef SBA_MODE_CLEAN_UP } else { *nb_bits += SID_FORMAT_NBITS; } - +#endif st->next_bit_pos = next_bit_pos_orig; } if ( hDirAC != NULL ) { +#ifndef SBA_MODE_CLEAN_UP ivas_qmetadata_to_dirac( hQMetaData, hDirAC, NULL, ivas_total_brate, sba_mode, dirac_to_spar_md_bands ); +#else + ivas_qmetadata_to_dirac( hQMetaData, hDirAC, NULL, ivas_total_brate, SBA_FORMAT, dirac_to_spar_md_bands ); + +#endif } return; @@ -1833,7 +1873,11 @@ void ivas_qmetadata_to_dirac( DIRAC_DEC_HANDLE hDirAC, /* o : DirAC decoder structure */ MASA_DECODER_HANDLE hMasa, /* i : MASA decoder structure */ const int32_t ivas_total_brate, /* i : IVAS total bitrate */ +#ifndef SBA_MODE_CLEAN_UP const SBA_MODE sba_mode, /* i : SBA mode */ +#else + const IVAS_FORMAT ivas_format, /* i : IVAS format */ +#endif int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */ ) { @@ -1946,8 +1990,11 @@ void ivas_qmetadata_to_dirac( nblocks = q_direction->cfg.nblocks; nbands = hDirAC->band_grouping[hDirAC->hConfig->nbands]; band_grouping = hDirAC->band_grouping; - +#ifndef SBA_MODE_CLEAN_UP if ( ivas_total_brate <= IVAS_SID_5k2 && sba_mode != SBA_MODE_SPAR ) +#else + if ( ivas_total_brate <= IVAS_SID_5k2 && ivas_format != SBA_FORMAT ) +#endif { /* SID/zero-frame: 1 direction, 5 bands, nblocks re-generated out of SID decoder*/ start_band = 0; @@ -1959,8 +2006,11 @@ void ivas_qmetadata_to_dirac( { assert( ( hQMetaData->no_directions == 1 ) && "Only 1 direction supported in SBA mode!" ); start_band = hDirAC->hConfig->enc_param_start_band; - +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) +#else + if ( ivas_format == SBA_FORMAT ) +#endif { hDirAC->hConfig->nbands = IVAS_MAX_NUM_BANDS; } @@ -2002,8 +2052,11 @@ void ivas_qmetadata_to_dirac( band_start = band_grouping[band]; band_end = band_grouping[band + 1]; tmp_write_idx_param_band = hDirAC->dirac_bs_md_write_idx; - +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) +#else + if ( ivas_format == SBA_FORMAT ) +#endif { qBand_idx = dirac_to_spar_md_bands[band] - start_band; } @@ -2197,8 +2250,11 @@ void ivas_dirac_dec( reference_power_smooth = DirAC_mem.reference_power + hDirAC->num_freq_bands; onset_filter = DirAC_mem.onset_filter; onset_filter_subframe = DirAC_mem.onset_filter + hDirAC->num_freq_bands; - +#ifdef SBA_MODE_CLEAN_UP + if ( st_ivas->hQMetaData != NULL && st_ivas->ivas_format != SBA_FORMAT ) +#else if ( st_ivas->hQMetaData != NULL && st_ivas->sba_mode != SBA_MODE_SPAR ) +#endif { coherence_flag = st_ivas->hQMetaData->coherence_flag; } @@ -2343,8 +2399,11 @@ void ivas_dirac_dec( for ( slot_idx = 0; slot_idx < hDirAC->subframe_nbslots; slot_idx++ ) { index_slot = subframe_idx * hDirAC->subframe_nbslots + slot_idx; - +#ifdef SBA_MODE_CLEAN_UP + if ( st_ivas->ivas_format == SBA_FORMAT ) +#else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#endif { for ( ch = 0; ch < nchan_transport; ch++ ) { @@ -2366,7 +2425,11 @@ void ivas_dirac_dec( } /* CNG in DirAC, extra CLDFB ana for CNA*/ +#ifdef SBA_MODE_CLEAN_UP + if ( st_ivas->nchan_transport == 1 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag && st_ivas->ivas_format != SBA_FORMAT ) +#else if ( st_ivas->nchan_transport == 1 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag && st_ivas->sba_mode != SBA_MODE_SPAR ) +#endif { Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0]; @@ -2721,7 +2784,11 @@ void ivas_dirac_dec( st_ivas->cldfbSynDec[ch] ); } } +#ifdef SBA_MODE_CLEAN_UP + else if ( st_ivas->ivas_format == SBA_FORMAT ) +#else else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#endif { for ( ch = 0; ch < hDirAC->hOutSetup.nchan_out_woLFE; ch++ ) { diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index a193ac2823..5ca78b3ffa 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -257,12 +257,17 @@ ivas_error ivas_dec_setup( if ( st_ivas->ini_frame > 0 && st_ivas->ivas_format == SBA_FORMAT ) { int16_t nchan_transport_old, nchan_transport; +#ifndef SBA_MODE_CLEAN_UP SBA_MODE sba_mode_old; sba_mode_old = ivas_sba_mode_select(); +#endif nchan_transport_old = st_ivas->nchan_transport; nchan_transport = ( st_ivas->sid_format == SID_SBA_2TC ) ? 2 : 1; - +#ifdef SBA_MODE_CLEAN_UP + if ( ( nchan_transport_old != nchan_transport ) ) +#else if ( ( nchan_transport_old != nchan_transport ) || ( sba_mode_old != st_ivas->sba_mode ) ) +#endif { /*Setting the default bitrate for the reconfig function*/ if ( st_ivas->sid_format == SID_SBA_2TC ) @@ -271,7 +276,12 @@ ivas_error ivas_dec_setup( } else { +#ifdef SBA_MODE_CLEAN_UP + st_ivas->hDecoderConfig->ivas_total_brate = IVAS_24k4; +#else st_ivas->hDecoderConfig->ivas_total_brate = ( st_ivas->sba_mode == SBA_MODE_SPAR ) ? IVAS_24k4 : IVAS_13k2; + +#endif } if ( ( error = ivas_sba_dec_reconfigure( st_ivas ) ) != IVAS_ERR_OK ) @@ -380,7 +390,9 @@ static ivas_error ivas_read_format( else { st_ivas->ivas_format = SBA_FORMAT; +#ifndef SBA_MODE_CLEAN_UP st_ivas->sba_mode = ivas_sba_mode_select(); +#endif } ( *num_bits_read )++; break; @@ -448,6 +460,7 @@ static ivas_error ivas_read_format( { st_ivas->sba_analysis_order = SBA_FOA_ORDER; } +#ifndef SBA_MODE_CLEAN_UP if ( idx == 1 ) { st_ivas->sba_mode = SBA_MODE_SPAR; @@ -456,6 +469,7 @@ static ivas_error ivas_read_format( { st_ivas->sba_mode = SBA_MODE_DIRAC; } +#endif } /* reset bitstream handle to avoid BER detection after reading the 2400 kbps for ch0 */ @@ -550,8 +564,9 @@ ivas_error ivas_init_decoder_front( st_ivas->ism_mode = ISM_MODE_NONE; st_ivas->mc_mode = MC_MODE_NONE; +#ifndef SBA_MODE_CLEAN_UP st_ivas->sba_mode = SBA_MODE_NONE; - +#endif st_ivas->sba_dirac_stereo_flag = 0; /* HRTF binauralization latency in ns */ @@ -886,8 +901,10 @@ ivas_error ivas_init_decoder( } else if ( st_ivas->ivas_format == SBA_FORMAT ) { +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR ) { +#endif if ( ( error = ivas_spar_dec_open( st_ivas, 0 ) ) != IVAS_ERR_OK ) { return error; @@ -900,8 +917,11 @@ ivas_error ivas_init_decoder( return error; } } - +#ifndef SBA_MODE_CLEAN_UP 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->element_mode_init, ivas_total_brate, IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -929,6 +949,7 @@ ivas_error ivas_init_decoder( st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0 ); } st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas ); +#ifndef SBA_MODE_CLEAN_UP } else /* SBA_MODE_DIRAC */ { @@ -939,10 +960,15 @@ ivas_error ivas_init_decoder( st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas ); } +#endif } - +#ifdef SBA_MODE_CLEAN_UP + if ( st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV && st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV_ROOM && + st_ivas->renderer_type != RENDERER_DISABLE && st_ivas->renderer_type != RENDERER_SBA_LINEAR_DEC && st_ivas->ivas_format != SBA_FORMAT ) +#else if ( st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV && st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV_ROOM && st_ivas->renderer_type != RENDERER_DISABLE && st_ivas->renderer_type != RENDERER_SBA_LINEAR_DEC && st_ivas->sba_mode != SBA_MODE_SPAR ) +#endif { if ( ( error = ivas_dirac_dec_open( st_ivas ) ) != IVAS_ERR_OK ) { @@ -1343,7 +1369,11 @@ ivas_error ivas_init_decoder( } /* CLDFB Interpolation weights */ +#ifdef SBA_MODE_CLEAN_UP + if ( st_ivas->ivas_format == SBA_FORMAT && !st_ivas->sba_dirac_stereo_flag && st_ivas->hDecoderConfig->nchan_out != 1 ) +#else if ( st_ivas->ivas_format == SBA_FORMAT && st_ivas->sba_mode == SBA_MODE_SPAR && !st_ivas->sba_dirac_stereo_flag && st_ivas->hDecoderConfig->nchan_out != 1 ) +#endif { ivas_spar_get_cldfb_gains( st_ivas->hSpar, st_ivas->cldfbAnaDec[0], st_ivas->cldfbSynDec[0], hDecoderConfig ); } @@ -1816,7 +1846,11 @@ void ivas_init_dec_get_num_cldfb_instances( } break; case RENDERER_DIRAC: +#ifdef SBA_MODE_CLEAN_UP + if ( st_ivas->ivas_format == SBA_FORMAT ) +#else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#endif { *numCldfbAnalyses = st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans; @@ -1833,7 +1867,11 @@ void ivas_init_dec_get_num_cldfb_instances( *numCldfbSyntheses = MAX_OUTPUT_CHANNELS; } } +#ifdef SBA_MODE_CLEAN_UP + if ( st_ivas->ivas_format != SBA_FORMAT ) +#else if ( st_ivas->sba_mode != SBA_MODE_SPAR ) +#endif { if ( st_ivas->nchan_transport > 2 && st_ivas->sba_planar ) { @@ -1874,7 +1912,11 @@ void ivas_init_dec_get_num_cldfb_instances( case RENDERER_BINAURAL_MIXER_CONV_ROOM: case RENDERER_BINAURAL_FASTCONV: case RENDERER_BINAURAL_FASTCONV_ROOM: +#ifdef SBA_MODE_CLEAN_UP + if ( st_ivas->ivas_format == SBA_FORMAT ) +#else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#endif { if ( st_ivas->sba_dirac_stereo_flag ) { diff --git a/lib_dec/ivas_masa_dec.c b/lib_dec/ivas_masa_dec.c index 2c87109f6e..7b08e9fd94 100644 --- a/lib_dec/ivas_masa_dec.c +++ b/lib_dec/ivas_masa_dec.c @@ -254,8 +254,11 @@ ivas_error ivas_masa_decode( } tmp_elem_mode = -1; +#ifndef SBA_MODE_CLEAN_UP *nb_bits_read += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), st_ivas->nchan_transport, &tmp_elem_mode, ivas_format, SBA_MODE_NONE ); - +#else + *nb_bits_read += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), st_ivas->nchan_transport, &tmp_elem_mode, ivas_format ); +#endif if ( st_ivas->nchan_transport == 2 ) { assert( st_ivas->nCPE > 0 ); @@ -275,7 +278,11 @@ ivas_error ivas_masa_decode( } if ( st_ivas->hDirAC != NULL ) { +#ifndef SBA_MODE_CLEAN_UP ivas_qmetadata_to_dirac( hQMetaData, st_ivas->hDirAC, hMasa, ivas_total_brate, SBA_MODE_NONE, 0 ); +#else + ivas_qmetadata_to_dirac( hQMetaData, st_ivas->hDirAC, hMasa, ivas_total_brate, 0, 0 ); +#endif } st->next_bit_pos = next_bit_pos_orig; diff --git a/lib_dec/ivas_output_config.c b/lib_dec/ivas_output_config.c index ff73e6aa49..023f1f2012 100644 --- a/lib_dec/ivas_output_config.c +++ b/lib_dec/ivas_output_config.c @@ -301,9 +301,13 @@ void ivas_renderer_select( else if ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == SBA_FORMAT ) { *renderer_type = RENDERER_DIRAC; - +#ifdef SBA_MODE_CLEAN_UP + if ( st_ivas->ivas_format == SBA_FORMAT && + ( output_config != AUDIO_CONFIG_5_1 && output_config != AUDIO_CONFIG_5_1_2 && output_config != AUDIO_CONFIG_5_1_4 && output_config != AUDIO_CONFIG_7_1 && output_config != AUDIO_CONFIG_7_1_4 && output_config != AUDIO_CONFIG_LS_CUSTOM && output_config != AUDIO_CONFIG_MONO && output_config != AUDIO_CONFIG_STEREO ) ) +#else if ( st_ivas->ivas_format == SBA_FORMAT && st_ivas->sba_mode == SBA_MODE_SPAR && ( output_config != AUDIO_CONFIG_5_1 && output_config != AUDIO_CONFIG_5_1_2 && output_config != AUDIO_CONFIG_5_1_4 && output_config != AUDIO_CONFIG_7_1 && output_config != AUDIO_CONFIG_7_1_4 && output_config != AUDIO_CONFIG_LS_CUSTOM && output_config != AUDIO_CONFIG_MONO && output_config != AUDIO_CONFIG_STEREO ) ) +#endif { if ( output_config == AUDIO_CONFIG_HOA2 || output_config == AUDIO_CONFIG_FOA ) { diff --git a/lib_dec/ivas_qmetadata_dec.c b/lib_dec/ivas_qmetadata_dec.c index 9c6597fdcb..6b6aeb1605 100644 --- a/lib_dec/ivas_qmetadata_dec.c +++ b/lib_dec/ivas_qmetadata_dec.c @@ -687,8 +687,11 @@ int16_t ivas_qmetadata_dec_sid_decode( int16_t *index, /* i/o: bitstream position */ const int16_t nchan_transport, /* i : number of transport channels */ int16_t *element_mode, /* o : element mode */ - const int16_t ivas_format, /* i : IVAS format */ + const int16_t ivas_format /* i : IVAS format */ +#ifndef SBA_MODE_CLEAN_UP + , const SBA_MODE sba_mode /* i : SBA mode */ +#endif ) { int16_t b, m, i; @@ -719,10 +722,13 @@ int16_t ivas_qmetadata_dec_sid_decode( if ( ivas_format == SBA_FORMAT ) { +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) { +#endif /* TODO: still use old sid frame size to keep bitexactness */ metadata_sid_bits = (int16_t) ( 5000 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - ( SPAR_DTX_BANDS * 18 ) - 1; /* -1 for inactive mode header bit*/ +#ifndef SBA_MODE_CLEAN_UP } else { @@ -730,6 +736,7 @@ int16_t ivas_qmetadata_dec_sid_decode( /* TODO: still use old sid frame size to keep bitexactness */ metadata_sid_bits = ( 4400 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - SID_FORMAT_NBITS; } +#endif } else { @@ -755,8 +762,11 @@ int16_t ivas_qmetadata_dec_sid_decode( /* Fix configuration for SID */ q_direction = &hQMetaData->q_direction[0]; /* only 1 direction */ - +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) +#else + if ( ivas_format == SBA_FORMAT ) +#endif { nbands = DIRAC_DTX_BANDS; /* only 2 bands transmitted */ } @@ -769,7 +779,11 @@ int16_t ivas_qmetadata_dec_sid_decode( start_band = 0; /* start from band 0 */ /* Read 2D signaling*/ +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode != SBA_MODE_SPAR ) +#else + if ( ivas_format != SBA_FORMAT ) +#endif { q_direction->not_in_2D = bitstream[( *index )--]; } @@ -854,6 +868,7 @@ int16_t ivas_qmetadata_dec_sid_decode( } } /* TODO: temporary hack to keep BE */ +#ifndef SBA_MODE_CLEAN_UP if ( ivas_format == SBA_FORMAT ) { if ( sba_mode != SBA_MODE_SPAR ) @@ -862,6 +877,9 @@ int16_t ivas_qmetadata_dec_sid_decode( } } else +#else + if ( ivas_format != SBA_FORMAT ) +#endif { metadata_sid_bits = ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC - SID_FORMAT_NBITS; } diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index ec47273c64..cab57ef808 100644 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -58,8 +58,11 @@ void ivas_sba_set_cna_cng_flag( ) { int16_t n, cpe_id; - +#ifdef SBA_MODE_CLEAN_UP + if ( st_ivas->ivas_format == SBA_FORMAT && st_ivas->nchan_transport == 1 ) +#else if ( st_ivas->sba_mode == SBA_MODE_SPAR && st_ivas->nchan_transport == 1 ) +#endif { /* skip as done in init function */ /* st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag = 0; */ /* Todo: Check if these can be enabled */ @@ -247,7 +250,11 @@ ivas_error ivas_sba_dec_reconfigure( return error; } } +#ifndef SBA_MODE_CLEAN_UP 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->element_mode_init, ivas_total_brate, IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ) ) != IVAS_ERR_OK ) +#endif { return error; } diff --git a/lib_dec/ivas_sba_dirac_stereo_dec.c b/lib_dec/ivas_sba_dirac_stereo_dec.c index 0894920480..bac500e80d 100644 --- a/lib_dec/ivas_sba_dirac_stereo_dec.c +++ b/lib_dec/ivas_sba_dirac_stereo_dec.c @@ -63,7 +63,11 @@ int16_t ivas_get_sba_dirac_stereo_flag( if ( st_ivas->ivas_format == SBA_FORMAT || ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) ) { +#ifdef SBA_MODE_CLEAN_UP + if ( st_ivas->ivas_format == SBA_FORMAT ) +#else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#endif { if ( output_config == AUDIO_CONFIG_STEREO || ( output_config == AUDIO_CONFIG_MONO && st_ivas->nchan_transport == 1 ) ) { @@ -844,8 +848,12 @@ void ivas_sba_dirac_stereo_dec( memOffset = NS2SA( output_frame * FRAMES_PER_SEC, IVAS_DEC_DELAY_NS - DELAY_BWE_TOTAL_NS ); ivas_sba_dirac_stereo_config( hStereoDft->hConfig ); +#ifdef SBA_MODE_CLEAN_UP + hStereoDft->nbands = ivas_sba_dirac_stereo_band_config( hStereoDft->band_limits, st_ivas->hDecoderConfig->output_Fs, hStereoDft->NFFT, ( st_ivas->ivas_format == SBA_FORMAT && !mcmasa ) ); +#else hStereoDft->nbands = ivas_sba_dirac_stereo_band_config( hStereoDft->band_limits, st_ivas->hDecoderConfig->output_Fs, hStereoDft->NFFT, ( st_ivas->sba_mode == SBA_MODE_SPAR && !mcmasa ) ); +#endif stereo_dft_dec_update( hStereoDft, output_frame, 1 /*st_ivas->sba_dirac_stereo_flag*/ ); if ( st_ivas->nchan_transport > 1 ) { @@ -867,12 +875,22 @@ void ivas_sba_dirac_stereo_dec( } /* mapping of DirAC parameters (azimuth, elevation, diffuseness) to DFT Stereo parameters (side gain, prediction gain) */ +#ifdef SBA_MODE_CLEAN_UP + map_params_dirac_to_stereo( hStereoDft, st_ivas->hQMetaData, tmp_synth, DFT[0], + st_ivas->ivas_format == MC_FORMAT, + ( st_ivas->ivas_format != SBA_FORMAT || mcmasa ) ? hSCE->hCoreCoder[0]->L_frame : output_frame, + ( st_ivas->ivas_format != SBA_FORMAT || mcmasa ) ); +#else map_params_dirac_to_stereo( hStereoDft, st_ivas->hQMetaData, tmp_synth, DFT[0], st_ivas->ivas_format == MC_FORMAT, ( st_ivas->sba_mode != SBA_MODE_SPAR || mcmasa ) ? hSCE->hCoreCoder[0]->L_frame : output_frame, ( st_ivas->sba_mode != SBA_MODE_SPAR || mcmasa ) ); - +#endif +#ifdef SBA_MODE_CLEAN_UP + if ( st_ivas->ivas_format == SBA_FORMAT && !mcmasa ) +#else if ( st_ivas->sba_mode == SBA_MODE_SPAR && !mcmasa ) +#endif { set_f( hStereoDft->res_pred_gain, 1.f, 3 * STEREO_DFT_BAND_MAX ); } @@ -912,10 +930,13 @@ void ivas_sba_dirac_stereo_dec( { /* upmix ACELP BWE */ ivas_sba_dirac_stereo_compute_hb_gain( hStereoDft, hb_gain ); - +#ifdef SBA_MODE_CLEAN_UP + ivas_sba_dirac_stereo_upmix_hb( hb_synth_stereo, hSCE->save_hb_synth, hb_gain, output_frame, + ( st_ivas->ivas_format != SBA_FORMAT || mcmasa ), sba_mono_flag, hSCE->hCoreCoder[0]->bwidth, hStereoDft ); +#else ivas_sba_dirac_stereo_upmix_hb( hb_synth_stereo, hSCE->save_hb_synth, hb_gain, output_frame, ( st_ivas->sba_mode != SBA_MODE_SPAR || mcmasa ), sba_mono_flag, hSCE->hCoreCoder[0]->bwidth, hStereoDft ); - +#endif /* add HB to ACELP core */ v_add( output[0], hb_synth_stereo[0], output[0], output_frame ); @@ -924,7 +945,12 @@ void ivas_sba_dirac_stereo_dec( v_add( output[1], hb_synth_stereo[1], output[1], output_frame ); /* apply TD Stereo Filling as is done in ICBWE */ +#ifdef SBA_MODE_CLEAN_UP + ivas_sba_dirac_stereo_apply_td_stefi( hStereoDft, output, output_frame, ( st_ivas->ivas_format == SBA_FORMAT && !mcmasa ) ); +#else ivas_sba_dirac_stereo_apply_td_stefi( hStereoDft, output, output_frame, ( st_ivas->sba_mode == SBA_MODE_SPAR && !mcmasa ) ); + +#endif } } diff --git a/lib_dec/ivas_sba_rendering_internal.c b/lib_dec/ivas_sba_rendering_internal.c index a80986b39e..1cc8ca229c 100644 --- a/lib_dec/ivas_sba_rendering_internal.c +++ b/lib_dec/ivas_sba_rendering_internal.c @@ -228,16 +228,21 @@ int16_t ivas_sba_remapTCs( #endif nchan_remapped = st_ivas->nchan_transport; +#ifdef SBA_MODE_CLEAN_UP + if ( nchan_remapped == 3 ) +#else if ( ( st_ivas->sba_mode != SBA_MODE_SPAR && st_ivas->sba_planar && nchan_remapped >= 3 ) || ( ( st_ivas->sba_mode == SBA_MODE_SPAR ) && nchan_remapped == 3 ) ) +#endif { nchan_remapped++; +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode != SBA_MODE_SPAR ) { assert( ( ( st_ivas->nchan_transport == 3 ) || ( st_ivas->nchan_transport == 5 ) || ( st_ivas->nchan_transport == 7 ) ) && "Number of channels must be odd for SBA planar!" ); } - +#endif if ( nchan_remapped == 4 ) { /*For planar A-format channel 2 and 3 are identical -> Z=0*/ @@ -262,12 +267,12 @@ int16_t ivas_sba_remapTCs( } } } - +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode != SBA_MODE_SPAR ) { ivas_sba_zero_vert_comp( sba_data, st_ivas->sba_analysis_order, st_ivas->sba_planar, output_frame ); } - +#endif return ( nchan_remapped ); } diff --git a/lib_dec/ivas_sce_dec.c b/lib_dec/ivas_sce_dec.c index 9a940b9b6d..d64bbf705f 100755 --- a/lib_dec/ivas_sce_dec.c +++ b/lib_dec/ivas_sce_dec.c @@ -155,8 +155,13 @@ ivas_error ivas_sce_dec( st->codec_mode = MODE1; /* set "bits_frame_nominal" */ +#ifndef SBA_MODE_CLEAN_UP if ( ( st_ivas->hQMetaData != NULL ) && ( st_ivas->sba_mode != SBA_MODE_SPAR ) ) +#else + if ( ( st_ivas->hQMetaData != NULL ) && + ( st_ivas->ivas_format != SBA_FORMAT) ) +#endif { if ( st_ivas->mc_mode == MC_MODE_MCMASA && ivas_total_brate >= MCMASA_SEPARATE_BRATE ) { @@ -167,7 +172,11 @@ ivas_error ivas_sce_dec( st->bits_frame_nominal = st_ivas->hQMetaData->bits_frame_nominal; } } +#ifndef SBA_MODE_CLEAN_UP else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#else + else if ( st_ivas->ivas_format == SBA_FORMAT ) +#endif { st->bits_frame_nominal = (int16_t) ( st_ivas->hSpar->core_nominal_brate / FRAMES_PER_SEC ); } diff --git a/lib_dec/ivas_spar_decoder.c b/lib_dec/ivas_spar_decoder.c index f0588ae303..142961c285 100644 --- a/lib_dec/ivas_spar_decoder.c +++ b/lib_dec/ivas_spar_decoder.c @@ -105,7 +105,12 @@ ivas_error ivas_spar_dec_open( /* set FB config. */ active_w_mixing = -1; +#ifndef SBA_MODE_CLEAN_UP if ( ( error = ivas_fb_set_cfg( &fb_cfg, SBA_FORMAT, SBA_MODE_SPAR, num_channels_internal, num_channels_internal, active_w_mixing, output_Fs ) ) != IVAS_ERR_OK ) +#else + if ( ( error = ivas_fb_set_cfg( &fb_cfg, SBA_FORMAT, num_channels_internal, num_channels_internal, active_w_mixing, output_Fs ) ) != IVAS_ERR_OK ) + +#endif { return error; } diff --git a/lib_dec/ivas_stat_dec.h b/lib_dec/ivas_stat_dec.h index ad453cd5bd..c4eab25b85 100644 --- a/lib_dec/ivas_stat_dec.h +++ b/lib_dec/ivas_stat_dec.h @@ -1209,7 +1209,9 @@ typedef struct Decoder_Struct ISM_MODE ism_mode; /* ISM format mode */ int16_t nchan_ism; /* number of ISM channels */ +#ifndef SBA_MODE_CLEAN_UP SBA_MODE sba_mode; /* SBA format mode */ +#endif MC_MODE mc_mode; /* MC format mode */ int16_t sba_order; /* Ambisonic (SBA) order */ int16_t sba_planar; /* Ambisonic (SBA) planar flag */ diff --git a/lib_dec/lib_dec.c b/lib_dec/lib_dec.c index ee315bf399..f980a80dfe 100644 --- a/lib_dec/lib_dec.c +++ b/lib_dec/lib_dec.c @@ -192,7 +192,9 @@ ivas_error IVAS_DEC_Open( st_ivas->writeFECoffset = 0; st_ivas->ism_mode = ISM_MODE_NONE; +#ifndef SBA_MODE_CLEAN_UP st_ivas->sba_mode = SBA_MODE_NONE; +#endif st_ivas->mc_mode = MC_MODE_NONE; st_ivas->sba_order = 0; diff --git a/lib_enc/ivas_cpe_enc.c b/lib_enc/ivas_cpe_enc.c index 72a737e64b..c84beba539 100644 --- a/lib_enc/ivas_cpe_enc.c +++ b/lib_enc/ivas_cpe_enc.c @@ -463,7 +463,11 @@ ivas_error ivas_cpe_enc( { if ( hCPE->element_mode == IVAS_CPE_DFT || hCPE->element_mode == IVAS_CPE_TD ) { +#ifndef SBA_MODE_CLEAN_UP reset_metadata_spatial( ivas_format, hCPE->hMetaData, hCPE->element_brate, &tmp, sts[0]->core_brate, nb_bits_metadata, st_ivas->sba_mode ); +#else + reset_metadata_spatial( ivas_format, hCPE->hMetaData, hCPE->element_brate, &tmp, sts[0]->core_brate, nb_bits_metadata ); +#endif } } @@ -473,9 +477,13 @@ ivas_error ivas_cpe_enc( stereoFdCngCoherence( sts, hCPE->last_element_mode, fft_buff ); /* Reset metadata */ +#ifndef SBA_MODE_CLEAN_UP if ( sts[0]->cng_sba_flag || ( ivas_format == SBA_FORMAT && st_ivas->sba_mode == SBA_MODE_SPAR ) ) +#else + if ( sts[0]->cng_sba_flag || ( ivas_format == SBA_FORMAT ) ) +#endif { - reset_metadata_spatial( ivas_format, hCPE->hMetaData, hCPE->element_brate, &tmp, sts[0]->core_brate, nb_bits_metadata, st_ivas->sba_mode ); + reset_metadata_spatial( ivas_format, hCPE->hMetaData, hCPE->element_brate, &tmp, sts[0]->core_brate, nb_bits_metadata ); } } diff --git a/lib_enc/ivas_dirac_enc.c b/lib_enc/ivas_dirac_enc.c index 45ce09bb15..35d3062126 100644 --- a/lib_enc/ivas_dirac_enc.c +++ b/lib_enc/ivas_dirac_enc.c @@ -64,7 +64,9 @@ ivas_error ivas_dirac_enc_open( int16_t i, j; int32_t input_Fs; DIRAC_ENC_HANDLE hDirAC; +#ifndef SBA_MODE_CLEAN_UP IVAS_FB_CFG *fb_cfg; +#endif int32_t dirac_slot_ns; ivas_error error; @@ -93,9 +95,12 @@ ivas_error ivas_dirac_enc_open( } /* set FB config. */ +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR ) { +#endif hDirAC->hFbMixer = NULL; +#ifndef SBA_MODE_CLEAN_UP } else { @@ -109,7 +114,7 @@ ivas_error ivas_dirac_enc_open( return error; } } - +#endif for ( i = 0; i < DIRAC_MAX_NBANDS + 1; i++ ) { @@ -119,6 +124,7 @@ ivas_error ivas_dirac_enc_open( dirac_slot_ns = DIRAC_SLOT_ENC_NS; /* initialize delay for SPAR/DirAC delay synchronization */ +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_DIRAC ) { hDirAC->num_samples_synchro_delay = NS2SA( input_Fs, IVAS_FB_ENC_DELAY_NS ); @@ -134,14 +140,16 @@ ivas_error ivas_dirac_enc_open( } else { +#endif hDirAC->num_samples_synchro_delay = 0; for ( i = 0; i < DIRAC_MAX_ANA_CHANS; i++ ) { hDirAC->sba_synchro_buffer[i] = NULL; } +#ifndef SBA_MODE_CLEAN_UP } - +#endif /* intensity 3-dim */ for ( i = 0; i < DIRAC_NUM_DIMS; i++ ) { @@ -196,13 +204,15 @@ ivas_error ivas_dirac_enc_open( hDirAC->index_buffer_intensity = 0; st_ivas->hDirAC = hDirAC; - +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR ) { +#endif mvs2s( st_ivas->hDirAC->dirac_to_spar_md_bands, st_ivas->hSpar->dirac_to_spar_md_bands, DIRAC_MAX_NBANDS ); st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band; +#ifndef SBA_MODE_CLEAN_UP } - +#endif return error; } @@ -317,7 +327,7 @@ void ivas_dirac_enc_close( return; } - +#ifndef SBA_MODE_CLEAN_UP /*------------------------------------------------------------------------- * ivas_dirac_enc() * @@ -440,8 +450,12 @@ void ivas_dirac_enc( } /* encode SID parameters */ +#ifndef SBA_MODE_CLEAN_UP ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, SBA_FORMAT, SBA_MODE_DIRAC ); +#else + ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, SBA_FORMAT ); +#endif /* restore original metadata */ hDirAC->hConfig->nbands = nbands; hQMetaData->q_direction[0].cfg.nbands = nbands; @@ -459,7 +473,11 @@ void ivas_dirac_enc( push_next_indice( hMetaData, 0, 1 ); /* encode SID parameters */ +#ifndef SBA_MODE_CLEAN_UP ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, SBA_FORMAT, SBA_MODE_DIRAC ); +#else + ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, SBA_FORMAT ); +#endif } } } @@ -524,7 +542,7 @@ void ivas_dirac_enc_spar_delay_synchro( return; } - +#endif /*------------------------------------------------------------------------- * computeReferencePower_enc() @@ -539,7 +557,11 @@ void computeReferencePower_enc( float *reference_power, /* o : Estimated power */ const int16_t enc_param_start_band, /* i : first band to process */ const int16_t num_freq_bands, /* i : Number of frequency bands */ +#ifndef SBA_MODE_CLEAN_UP const SBA_MODE sba_mode /* i : SBA mode */ +#else + const IVAS_FORMAT ivas_format /* i : ivas_format */ +#endif ) { int16_t brange[2]; @@ -570,7 +592,11 @@ void computeReferencePower_enc( } v_multc( reference_power, 0.5f, reference_power, num_freq_bands ); +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) +#else + if ( ivas_format == SBA_FORMAT ) +#endif { for ( i = 0; i < num_freq_bands; i++ ) { @@ -596,7 +622,12 @@ void ivas_dirac_param_est_enc( float **pp_fr_real, float **pp_fr_imag, const int16_t input_frame, - const SBA_MODE sba_mode ) +#ifndef SBA_MODE_CLEAN_UP + const SBA_MODE sba_mode +#else + const IVAS_FORMAT ivas_format +#endif +) { int16_t i, d, ts, index, l_ts, num_freq_bands; int16_t band_m_idx, block_m_idx; @@ -695,7 +726,12 @@ void ivas_dirac_param_est_enc( reference_power[ts], hDirAC->hConfig->enc_param_start_band, num_freq_bands, - sba_mode ); +#ifndef SBA_MODE_CLEAN_UP + sba_mode +#else + ivas_format +#endif + ); computeIntensityVector_enc( hDirAC, diff --git a/lib_enc/ivas_enc.c b/lib_enc/ivas_enc.c index bc374f88e5..762522a8bf 100644 --- a/lib_enc/ivas_enc.c +++ b/lib_enc/ivas_enc.c @@ -132,7 +132,11 @@ ivas_error ivas_enc( /* bypass EVS coding in float precision, emulating EVS encoder/decoder delay */ for ( i = 0; i < n; i++ ) { +#ifndef SBA_MODE_CLEAN_UP if ( ( ivas_format == SBA_FORMAT ) && ( st_ivas->sba_mode == SBA_MODE_SPAR ) ) +#else + if ( ivas_format == SBA_FORMAT ) +#endif { hp20( data_f[HOA_keep_ind[i]], input_frame, st_ivas->mem_hp20_in[i], input_Fs ); } @@ -216,9 +220,13 @@ ivas_error ivas_enc( /* SBA/MASA metadata encoding and SBA/MASA metadata bitstream writing */ hMetaData = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData : st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData; - +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->hQMetaData != NULL && st_ivas->sba_mode != SBA_MODE_SPAR ) +#else + if ( st_ivas->hQMetaData != NULL && ivas_format != SBA_FORMAT) +#endif { +#ifndef SBA_MODE_CLEAN_UP if ( ivas_format == SBA_FORMAT ) { ivas_dirac_enc( st_ivas->hDirAC, st_ivas->hQMetaData, hMetaData, &nb_bits_metadata[0], hEncoderConfig->Opt_DTX_ON, data_f, input_frame, hEncoderConfig->sba_planar ); @@ -227,6 +235,7 @@ ivas_error ivas_enc( } else { +#endif ivas_masa_estimate_energy( st_ivas->hMasa, data_f, input_frame, st_ivas->nchan_transport ); /* energy-estimation uses TF-resolution: 4x24 */ if ( ( error = ivas_masa_enc_config( st_ivas ) ) != IVAS_ERR_OK ) { @@ -237,9 +246,15 @@ ivas_error ivas_enc( { return error; } +#ifndef SBA_MODE_CLEAN_UP } +#endif } +#ifndef SBA_MODE_CLEAN_UP else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#else + else if ( ivas_format == SBA_FORMAT ) +#endif { if ( ( error = ivas_spar_enc( st_ivas, data_f, input_frame, nb_bits_metadata, hMetaData ) ) != IVAS_ERR_OK ) { diff --git a/lib_enc/ivas_init_enc.c b/lib_enc/ivas_init_enc.c index 36d476723c..b3d526c3ee 100644 --- a/lib_enc/ivas_init_enc.c +++ b/lib_enc/ivas_init_enc.c @@ -342,8 +342,9 @@ ivas_error ivas_init_encoder( hEncoderConfig->spar_reconfig_flag = 0; st_ivas->ism_mode = ISM_MODE_NONE; st_ivas->mc_mode = MC_MODE_NONE; +#ifndef SBA_MODE_CLEAN_UP st_ivas->sba_mode = SBA_MODE_NONE; - +#endif st_ivas->nchan_transport = -1; /*-----------------------------------------------------------------* * Allocate and initialize SCE/CPE and other handles @@ -448,17 +449,21 @@ ivas_error ivas_init_encoder( if ( ivas_format == SBA_FORMAT ) { +#ifndef SBA_MODE_CLEAN_UP st_ivas->sba_mode = ivas_sba_mode_select(); +#endif st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, st_ivas->hEncoderConfig->sba_order ); - +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR ) { +#endif if ( ( error = ivas_spar_enc_open( st_ivas, 0 ) ) != IVAS_ERR_OK ) { return error; } +#ifndef SBA_MODE_CLEAN_UP } - +#endif if ( ( error = ivas_dirac_enc_open( st_ivas ) ) != IVAS_ERR_OK ) { return error; @@ -486,8 +491,11 @@ ivas_error ivas_init_encoder( st_ivas->hSCE[sce_id]->hMetaData->ind_list = ind_list_metadata[sce_id]; reset_indices_enc( st_ivas->hSCE[sce_id]->hMetaData, MAX_BITS_METADATA ); - +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR && st_ivas->hEncoderConfig->Opt_DTX_ON ) +#else + if ( ivas_format == SBA_FORMAT && st_ivas->hEncoderConfig->Opt_DTX_ON ) +#endif { st_ivas->hSCE[sce_id]->hCoreCoder[0]->dtx_sce_sba = 1; } diff --git a/lib_enc/ivas_ism_param_enc.c b/lib_enc/ivas_ism_param_enc.c index 32fb6af515..bed940b70c 100644 --- a/lib_enc/ivas_ism_param_enc.c +++ b/lib_enc/ivas_ism_param_enc.c @@ -273,7 +273,12 @@ ivas_error ivas_param_ism_enc_open( /* set FB config. */ +#ifndef SBA_MODE_CLEAN_UP if ( ( error = ivas_fb_set_cfg( &fb_cfg, ISM_FORMAT, SBA_MODE_NONE, st_ivas->hEncoderConfig->nchan_inp, 0, 0, input_Fs ) ) != IVAS_ERR_OK ) +#else + if ( ( error = ivas_fb_set_cfg( &fb_cfg, ISM_FORMAT, st_ivas->hEncoderConfig->nchan_inp, 0, 0, input_Fs ) ) != IVAS_ERR_OK ) + +#endif { return error; } diff --git a/lib_enc/ivas_masa_enc.c b/lib_enc/ivas_masa_enc.c index 2a21a667e9..0f80b39659 100644 --- a/lib_enc/ivas_masa_enc.c +++ b/lib_enc/ivas_masa_enc.c @@ -367,9 +367,11 @@ ivas_error ivas_masa_encode( } free( h_orig_metadata ); - +#ifndef SBA_MODE_CLEAN_UP ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, masa_sid_descriptor, ivas_format, SBA_MODE_NONE ); - +#else + ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, masa_sid_descriptor, ivas_format ); +#endif /* restore old values */ hMasa->config.numCodingBands = numCodingBands; hMasa->config.numTwoDirBands = numTwoDirBands; diff --git a/lib_enc/ivas_mc_param_enc.c b/lib_enc/ivas_mc_param_enc.c index 14eca6afee..052b47ed40 100644 --- a/lib_enc/ivas_mc_param_enc.c +++ b/lib_enc/ivas_mc_param_enc.c @@ -140,7 +140,11 @@ ivas_error ivas_param_mc_enc_open( hParamMC->dmx_factors = ivas_param_mc_conf[config_index].dmx_fac; /* set FB config. */ +#ifndef SBA_MODE_CLEAN_UP if ( ( error = ivas_fb_set_cfg( &fb_cfg, MC_FORMAT, SBA_MODE_DIRAC, nchan_inp, 0, 0, input_Fs ) ) != IVAS_ERR_OK ) +#else + if ( ( error = ivas_fb_set_cfg( &fb_cfg, MC_FORMAT, nchan_inp, 0, 0, input_Fs ) ) != IVAS_ERR_OK ) +#endif { return error; } diff --git a/lib_enc/ivas_mcmasa_enc.c b/lib_enc/ivas_mcmasa_enc.c index 8151b33c66..54c05fb888 100644 --- a/lib_enc/ivas_mcmasa_enc.c +++ b/lib_enc/ivas_mcmasa_enc.c @@ -188,7 +188,11 @@ ivas_error ivas_mcmasa_enc_open( } /* set FB config. */ +#ifndef SBA_MODE_CLEAN_UP if ( ( error = ivas_fb_set_cfg( &fb_cfg, MASA_FORMAT, SBA_MODE_NONE, numAnalysisChannels, 0, 0, input_Fs ) ) != IVAS_ERR_OK ) +#else + if ( ( error = ivas_fb_set_cfg( &fb_cfg, MASA_FORMAT, numAnalysisChannels, 0, 0, input_Fs ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -219,7 +223,11 @@ ivas_error ivas_mcmasa_enc_open( else { /* Allocate and initialize FB mixer handle for LFE channel */ +#ifndef SBA_MODE_CLEAN_UP if ( ( error = ivas_fb_set_cfg( &fb_cfgLfe, MASA_FORMAT, SBA_MODE_NONE, 1, 0, 0, input_Fs ) ) != IVAS_ERR_OK ) +#else + if ( ( error = ivas_fb_set_cfg( &fb_cfgLfe, MASA_FORMAT, 1, 0, 0, input_Fs ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -973,7 +981,12 @@ void ivas_mcmasa_param_est_enc( reference_power[ts], 0, num_freq_bands, - SBA_MODE_NONE ); +#ifndef SBA_MODE_CLEAN_UP + SBA_MODE_NONE +#else + MC_FORMAT +#endif + ); /* Fill buffers of length "averaging_length" time slots for intensity and energy */ hMcMasa->index_buffer_intensity = ( hMcMasa->index_buffer_intensity % hMcMasa->no_col_avg_diff ) + 1; /* averaging_length = 32 */ diff --git a/lib_enc/ivas_mct_enc.c b/lib_enc/ivas_mct_enc.c index f2f5d23461..917aa73680 100644 --- a/lib_enc/ivas_mct_enc.c +++ b/lib_enc/ivas_mct_enc.c @@ -60,7 +60,11 @@ static ivas_error ivas_mc_enc_reconfig( Encoder_Struct *st_ivas, const int16_t l static void set_mct_enc_params( MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */ const int32_t ivas_total_brate, /* i : IVAS total bitrate */ +#ifndef SBA_MODE_CLEAN_UP const SBA_MODE sba_mode, /* i : SBA mode */ +#else + const IVAS_FORMAT ivas_format, /* i : IVAS_FORMAT */ +#endif const uint16_t b_nchan_change /* i : flag indicating different channel count */ ) { @@ -82,7 +86,11 @@ static void set_mct_enc_params( } hMCT->hbr_mct = 0; +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR && ivas_total_brate >= IVAS_256k ) +#else + if ( ivas_format == SBA_FORMAT && ivas_total_brate >= IVAS_256k ) +#endif { hMCT->hbr_mct = 1; } @@ -377,8 +385,11 @@ ivas_error create_mct_enc( /*-----------------------------------------------------------------* * Initializations *-----------------------------------------------------------------*/ - +#ifndef SBA_MODE_CLEAN_UP set_mct_enc_params( hMCT, ivas_total_brate, st_ivas->sba_mode, 1 ); +#else + set_mct_enc_params( hMCT, ivas_total_brate, ivas_format, 1 ); +#endif st_ivas->hMCT = hMCT; @@ -535,9 +546,11 @@ ivas_error mct_enc_reconfigure( /*-----------------------------------------------------------------* * Initializations *-----------------------------------------------------------------*/ - +#ifndef SBA_MODE_CLEAN_UP set_mct_enc_params( hMCT, ivas_total_brate, st_ivas->sba_mode, b_nchan_change ); - +#else + set_mct_enc_params( hMCT, ivas_total_brate, ivas_format, b_nchan_change ); +#endif return IVAS_ERR_OK; } diff --git a/lib_enc/ivas_qmetadata_enc.c b/lib_enc/ivas_qmetadata_enc.c index ac4f83a657..7aac2cc66e 100644 --- a/lib_enc/ivas_qmetadata_enc.c +++ b/lib_enc/ivas_qmetadata_enc.c @@ -665,8 +665,11 @@ void ivas_qmetadata_enc_sid_encode( BSTR_ENC_HANDLE hMetaData, /* i/o: metadata bitstream handle */ IVAS_QMETADATA *q_metadata, /* i/o: metadata handle */ const int16_t masa_sid_descriptor, /* i : description of MASA SID coding structure */ - const int16_t ivas_format, /* i : IVAS format */ + const int16_t ivas_format /* i : IVAS format */ +#ifndef SBA_MODE_CLEAN_UP + , const SBA_MODE sba_mode /* i : SBA mode */ +#endif ) { int16_t b, m; @@ -682,10 +685,13 @@ void ivas_qmetadata_enc_sid_encode( if ( ivas_format == SBA_FORMAT ) { +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) { +#endif /* TODO: still use old sid frame size to keep bitexactness */ metadata_sid_bits = (int16_t) ( 5000 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - ( SPAR_DTX_BANDS * SPAR_SID_BITS_TAR_PER_BAND ) - 1; /* -1 for inactive mode header bit*/ +#ifndef SBA_MODE_CLEAN_UP } else { @@ -693,6 +699,7 @@ void ivas_qmetadata_enc_sid_encode( /* TODO: still use old sid frame size to keep bitexactness */ metadata_sid_bits = ( 4400 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - SID_FORMAT_NBITS; } +#endif } else { @@ -731,7 +738,11 @@ void ivas_qmetadata_enc_sid_encode( /* sanity checks*/ assert( q_metadata->no_directions == 1 && "Qmetadata SID: only one direction supported!" ); +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) +#else + if ( ivas_format == SBA_FORMAT ) +#endif { assert( ( q_direction->cfg.nbands == DIRAC_DTX_BANDS ) && "Qmetadata SID: only 2 bands supported!" ); } @@ -739,8 +750,11 @@ void ivas_qmetadata_enc_sid_encode( { assert( ( q_direction->cfg.nbands == 5 ) && "Qmetadata SID: only 5 bands supported!" ); } - +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode != SBA_MODE_SPAR ) +#else + if ( ivas_format != SBA_FORMAT ) +#endif { /* Signalling 2D*/ push_next_indice( hMetaData, ( q_direction->not_in_2D > 0 ), 1 ); /*2D flag*/ @@ -877,6 +891,7 @@ void ivas_qmetadata_enc_sid_encode( #endif /* TODO: temporary to keep BE */ +#ifndef SBA_MODE_CLEAN_UP if ( ivas_format == SBA_FORMAT ) { if ( sba_mode != SBA_MODE_SPAR ) @@ -886,6 +901,9 @@ void ivas_qmetadata_enc_sid_encode( } } else +#else + if ( ivas_format != SBA_FORMAT ) +#endif { metadata_sid_bits = ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC - SID_FORMAT_NBITS; } @@ -912,8 +930,11 @@ void reset_metadata_spatial( const int32_t element_brate, /* i : element bitrate */ int32_t *total_brate, /* o : total bitrate */ const int32_t core_brate, /* i : core bitrate */ - const int16_t nb_bits_metadata, /* i : number of meatdata bits */ + const int16_t nb_bits_metadata /* i : number of meatdata bits */ +#ifndef SBA_MODE_CLEAN_UP + , const SBA_MODE sba_mode /* i : SBA mode */ +#endif ) { int16_t i, next_ind_sid, last_ind_sid; @@ -923,7 +944,11 @@ void reset_metadata_spatial( { if ( ( ivas_format == SBA_FORMAT || ivas_format == MASA_FORMAT ) && core_brate != FRAME_NO_DATA ) { +#ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) +#else + if ( ivas_format == SBA_FORMAT ) +#endif { assert( hMetaData->ind_list[0].nb_bits == 1 ); hMetaData->ind_list[0].value = 1; @@ -978,7 +1003,11 @@ void reset_metadata_spatial( *total_brate = element_brate; } +#ifndef SBA_MODE_CLEAN_UP else if ( sba_mode != SBA_MODE_SPAR ) +#else + else if ( ivas_format != SBA_FORMAT ) +#endif { /* Reset SID metadata bits*/ while ( hMetaData->nb_bits_tot > nb_bits_metadata ) @@ -990,7 +1019,6 @@ void reset_metadata_spatial( assert( hMetaData->nb_bits_tot == nb_bits_metadata && "Problem in metadata for SCE" ); hMetaData->last_ind = hMetaData->next_ind; } - return; } diff --git a/lib_enc/ivas_sce_enc.c b/lib_enc/ivas_sce_enc.c index c8577a85ba..4e74fc6a1a 100644 --- a/lib_enc/ivas_sce_enc.c +++ b/lib_enc/ivas_sce_enc.c @@ -204,9 +204,12 @@ ivas_error ivas_sce_enc( /*----------------------------------------------------------------* * Reset metadata *----------------------------------------------------------------*/ - +#ifndef SBA_MODE_CLEAN_UP reset_metadata_spatial( ivas_format, hSCE->hMetaData, hSCE->element_brate, &st->total_brate, st->core_brate, nb_bits_metadata, st_ivas->sba_mode ); +#else + reset_metadata_spatial( ivas_format, hSCE->hMetaData, hSCE->element_brate, &st->total_brate, st->core_brate, nb_bits_metadata ); +#endif /*----------------------------------------------------------------* * Write IVAS format signaling in SID frames *----------------------------------------------------------------*/ diff --git a/lib_enc/ivas_spar_encoder.c b/lib_enc/ivas_spar_encoder.c index 0484e2fb92..695988fcc0 100644 --- a/lib_enc/ivas_spar_encoder.c +++ b/lib_enc/ivas_spar_encoder.c @@ -103,7 +103,11 @@ ivas_error ivas_spar_enc_open( /* set FB config. */ active_w_mixing = ivas_spar_br_table_consts[table_idx].active_w; +#ifndef SBA_MODE_CLEAN_UP ivas_fb_set_cfg( &fb_cfg, SBA_FORMAT, SBA_MODE_SPAR, nchan_inp, nchan_transport, active_w_mixing, input_Fs ); +#else + ivas_fb_set_cfg( &fb_cfg, SBA_FORMAT, nchan_inp, nchan_transport, active_w_mixing, input_Fs ); +#endif fb_cfg->remix_order = remix_order_set[hSpar->hMdEnc->spar_md_cfg.remix_unmix_order]; /* FB mixer handle */ @@ -319,6 +323,7 @@ ivas_error ivas_spar_enc( // VE2DB: can hFbMixer->ppFilterbank_prior_input be replaced by st->input ? /* check last sba_mode */ +#ifndef SBA_MODE_CLEAN_UP if ( ivas_sba_mode_select() == SBA_MODE_DIRAC ) { Encoder_State *sts[MCT_MAX_BLOCKS]; @@ -346,7 +351,7 @@ ivas_error ivas_spar_enc( ( st_ivas->hSpar->hFbMixer->ppFilterbank_prior_input[i] + st_ivas->hSpar->hFbMixer->fb_cfg->prior_input_length - input_frame ), input_frame ); } } - +#endif /* front VAD */ if ( ( error = front_vad_spar( st_ivas->hSpar, data_f[0], hEncoderConfig, input_frame ) ) != IVAS_ERR_OK ) { @@ -497,8 +502,12 @@ static ivas_error ivas_spar_enc_process( /*-----------------------------------------------------------------------------------------* * DirAC encoding *-----------------------------------------------------------------------------------------*/ - +#ifndef SBA_MODE_CLEAN_UP ivas_dirac_param_est_enc( st_ivas->hDirAC, hQMetaData->q_direction, hQMetaData->useLowerRes, data_f, ppIn_FR_real, ppIn_FR_imag, input_frame, st_ivas->sba_mode ); +#else + ivas_dirac_param_est_enc( st_ivas->hDirAC, hQMetaData->q_direction, hQMetaData->useLowerRes, data_f, ppIn_FR_real, ppIn_FR_imag, input_frame, hEncoderConfig->ivas_format ); + +#endif if ( hQMetaData->q_direction->cfg.nbands > 0 ) { @@ -546,7 +555,11 @@ static ivas_error ivas_spar_enc_process( push_next_indice( hMetaData, 1, 1 ); /* encode SID parameters */ +#ifndef SBA_MODE_CLEAN_UP ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, SBA_FORMAT, st_ivas->sba_mode ); +#else + ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, SBA_FORMAT ); +#endif } for ( b = hQMetaData->q_direction->cfg.start_band; b < hQMetaData->q_direction->cfg.nbands; b++ ) diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h index 9dfafbbc04..708675506c 100644 --- a/lib_enc/ivas_stat_enc.h +++ b/lib_enc/ivas_stat_enc.h @@ -1088,7 +1088,9 @@ typedef struct LFE_ENC_HANDLE hLFE; /* LFE data handle */ ISM_MODE ism_mode; /* ISM format mode */ +#ifndef SBA_MODE_CLEAN_UP SBA_MODE sba_mode; /* SBA format mode */ +#endif MC_MODE mc_mode; /* MC format mode */ /* Stereo downmix for EVS module */ diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index 45d4c85683..72334f288f 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -182,7 +182,9 @@ ivas_error IVAS_ENC_Open( /* set high-level parameters */ st_ivas->mc_mode = MC_MODE_NONE; st_ivas->ism_mode = ISM_MODE_NONE; +#ifndef SBA_MODE_CLEAN_UP st_ivas->sba_mode = SBA_MODE_NONE; +#endif st_ivas->sba_analysis_order = 0; return IVAS_ERR_OK; @@ -888,7 +890,11 @@ static ivas_error configureEncoder( } #ifdef DEBUG_AGC_ENCODER_CMD_OPTION +#ifndef SBA_MODE_CLEAN_UP if ( hEncoderConfig->Opt_AGC_ON == SBA_AGC_FORCE_ENABLE && !( hEncoderConfig->ivas_format == SBA_FORMAT && ivas_sba_mode_select() == SBA_MODE_SPAR ) ) +#else + if ( hEncoderConfig->Opt_AGC_ON == SBA_AGC_FORCE_ENABLE && !( hEncoderConfig->ivas_format == SBA_FORMAT ) ) +#endif { return IVAS_ERROR( IVAS_ERR_NOT_SUPPORTED_OPTION, "AGC supported in SBA format at bitrates >= 24.4 kbps only." ); } diff --git a/lib_rend/ivas_dirac_dec_binaural_functions.c b/lib_rend/ivas_dirac_dec_binaural_functions.c index 1fbcad6f68..495e6a1570 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions.c @@ -564,8 +564,11 @@ static void ivas_dirac_dec_binaural_internal( } } } - +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->ivas_format == SBA_FORMAT && st_ivas->sba_mode == SBA_MODE_SPAR ) +#else + if ( st_ivas->ivas_format == SBA_FORMAT ) +#endif { st_ivas->hDirAC->hDiffuseDist = &diffuseDistData; @@ -980,7 +983,11 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric } else /* When rendering binaural, ambience has frequency dependent ICC. */ { +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->ivas_format == SBA_FORMAT && st_ivas->sba_mode == SBA_MODE_SPAR && bin < BINAURAL_COHERENCE_DIFFERENCE_BINS ) +#else + if ( st_ivas->ivas_format == SBA_FORMAT && bin < BINAURAL_COHERENCE_DIFFERENCE_BINS ) +#endif { float diffuseFieldCoherence; diffuseFieldCoherence = hDirAC->hDiffuseDist->diffuseRatioX[subframe][bin] * h->diffuseFieldCoherenceX[bin] + hDirAC->hDiffuseDist->diffuseRatioY[subframe][bin] * h->diffuseFieldCoherenceY[bin] + hDirAC->hDiffuseDist->diffuseRatioZ[subframe][bin] * h->diffuseFieldCoherenceZ[bin]; diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 7744a6582b..b090574f31 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -2196,7 +2196,9 @@ static ivas_error initMasaDummyDecForMcOut( decDummy->hDecoderConfig->output_config = output_config; decDummy->hDecoderConfig->ivas_total_brate = IVAS_512k; /* Todo Nokia: This is preventing initialization of 2TC as 1TC, should be fixed properly in ivas_dirac_dec_config() */ +#ifndef SBA_MODE_CLEAN_UP decDummy->sba_mode = SBA_MODE_NONE; /* Todo Nokia: This is done to prevent ivas_dirac_dec_config() to not use uninitialized value. It could be considered if this should not be even accessed when not in SBA. */ +#endif decDummy->mc_mode = MC_MODE_NONE; /* Todo Nokia: This should be also refactored in such way that it is not checked if not in MC mode */ ivas_output_init( &( decDummy->hOutSetup ), output_config ); @@ -2279,7 +2281,9 @@ static ivas_error initMasaDummyDecForSbaOut( decDummy->hDecoderConfig->output_config = output_config; decDummy->hDecoderConfig->ivas_total_brate = IVAS_512k; /* Todo Nokia: This is preventing initialization of 2TC as 1TC, should be fixed properly in ivas_dirac_dec_config() */ +#ifndef SBA_MODE_CLEAN_UP decDummy->sba_mode = SBA_MODE_NONE; /* Todo Nokia: This is done to prevent ivas_dirac_dec_config() to not use uninitialized value. It could be considered if this should not be even accessed when not in SBA. */ +#endif decDummy->mc_mode = MC_MODE_NONE; /* Todo Nokia: This should be also refactored in such way that it is not checked if not in MC mode */ ivas_output_init( &( decDummy->hOutSetup ), output_config ); @@ -2349,7 +2353,9 @@ static ivas_error initMasaDummyDecForBinauralOut( output_config = decDummy->hDecoderConfig->output_config; decDummy->hDecoderConfig->ivas_total_brate = IVAS_512k; /* Todo Nokia: This is preventing initialization of 2TC as 1TC, should be fixed properly in ivas_dirac_dec_config() */ +#ifndef SBA_MODE_CLEAN_UP decDummy->sba_mode = SBA_MODE_NONE; /* Todo Nokia: This is done to prevent ivas_dirac_dec_config() to not use uninitialized value. It could be considered if this should not be even accessed when not in SBA. */ +#endif decDummy->mc_mode = MC_MODE_NONE; /* Todo Nokia: This should be also refactored in such way that it is not checked if not in MC mode */ ivas_output_init( &( decDummy->hOutSetup ), output_config ); -- GitLab From 0aadfb1ba8648227d787fc7437e6394f263a9578 Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Mon, 8 May 2023 18:29:17 +0530 Subject: [PATCH 03/14] One more minor clean up change. --- lib_com/ivas_cnst.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 0623cacb43..5b8b219e95 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -881,7 +881,7 @@ typedef enum { #define SBA_NHARM_HOA3 16 #define SBA_T_DESIGN_11_SIZE 70 #define SBA_DTX_BITRATE_THRESHOLD IVAS_80k - +#ifndef SBA_MODE_CLEAN_UP typedef enum { SBA_MODE_NONE, @@ -889,7 +889,7 @@ typedef enum SBA_MODE_SPAR, // VE: this is actually SBA_MODE_SPAR_DIRAC } SBA_MODE; - +#endif /*----------------------------------------------------------------------------------* * DirAC Constants *----------------------------------------------------------------------------------*/ -- GitLab From ee8912e3b814c690ef9ea59d99ba7184e87272c2 Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Tue, 9 May 2023 10:43:40 +0530 Subject: [PATCH 04/14] Minor modification :clean up change --- lib_dec/ivas_masa_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_masa_dec.c b/lib_dec/ivas_masa_dec.c index 7b08e9fd94..288b781a75 100644 --- a/lib_dec/ivas_masa_dec.c +++ b/lib_dec/ivas_masa_dec.c @@ -281,7 +281,7 @@ ivas_error ivas_masa_decode( #ifndef SBA_MODE_CLEAN_UP ivas_qmetadata_to_dirac( hQMetaData, st_ivas->hDirAC, hMasa, ivas_total_brate, SBA_MODE_NONE, 0 ); #else - ivas_qmetadata_to_dirac( hQMetaData, st_ivas->hDirAC, hMasa, ivas_total_brate, 0, 0 ); + ivas_qmetadata_to_dirac( hQMetaData, st_ivas->hDirAC, hMasa, ivas_total_brate, ivas_format, 0 ); #endif } st->next_bit_pos = next_bit_pos_orig; -- GitLab From 2188b6a953ea9870e4fcd5fac4d05e0e653c4433 Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Tue, 9 May 2023 12:17:46 +0530 Subject: [PATCH 05/14] Moved the spar reconfig flag to Spar structure --- lib_enc/ivas_init_enc.c | 2 ++ lib_enc/ivas_sba_enc.c | 4 ++++ lib_enc/ivas_spar_encoder.c | 8 +++++++- lib_enc/ivas_stat_enc.h | 6 +++++- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib_enc/ivas_init_enc.c b/lib_enc/ivas_init_enc.c index b3d526c3ee..8ee6555990 100644 --- a/lib_enc/ivas_init_enc.c +++ b/lib_enc/ivas_init_enc.c @@ -339,7 +339,9 @@ ivas_error ivas_init_encoder( /* In IVAS, ensure that minimum coded bandwidth is WB */ hEncoderConfig->max_bwidth = max( hEncoderConfig->max_bwidth, WB ); } +#ifndef SBA_MODE_CLEAN_UP hEncoderConfig->spar_reconfig_flag = 0; +#endif st_ivas->ism_mode = ISM_MODE_NONE; st_ivas->mc_mode = MC_MODE_NONE; #ifndef SBA_MODE_CLEAN_UP diff --git a/lib_enc/ivas_sba_enc.c b/lib_enc/ivas_sba_enc.c index d9fb1fef83..51cd8b3b06 100644 --- a/lib_enc/ivas_sba_enc.c +++ b/lib_enc/ivas_sba_enc.c @@ -232,7 +232,11 @@ ivas_error ivas_sba_enc_reconfigure( return error; } } +#ifndef SBA_MODE_CLEAN_UP hEncoderConfig->spar_reconfig_flag = spar_reconfig_flag; +#else + st_ivas->hSpar->spar_reconfig_flag = spar_reconfig_flag; +#endif if ( ( error = ivas_dirac_enc_reconfigure( st_ivas ) ) != IVAS_ERR_OK ) { return error; diff --git a/lib_enc/ivas_spar_encoder.c b/lib_enc/ivas_spar_encoder.c index 695988fcc0..df5cf47fb4 100644 --- a/lib_enc/ivas_spar_encoder.c +++ b/lib_enc/ivas_spar_encoder.c @@ -82,7 +82,9 @@ ivas_error ivas_spar_enc_open( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR encoder" ); } } - +#ifdef SBA_MODE_CLEAN_UP + hSpar->spar_reconfig_flag = 0; +#endif input_Fs = hEncoderConfig->input_Fs; sba_order_internal = min( st_ivas->sba_analysis_order, IVAS_MAX_SBA_ORDER ); nchan_inp = ivas_sba_get_nchan_metadata( sba_order_internal ); @@ -603,7 +605,11 @@ static ivas_error ivas_spar_enc_process( if ( hSpar->hMdEnc->table_idx != table_idx ) { hSpar->hMdEnc->table_idx = table_idx; +#ifndef SBA_MODE_CLEAN_UP if ( ( ivas_total_brate != hEncoderConfig->last_ivas_total_brate ) && ( !hEncoderConfig->spar_reconfig_flag ) ) +#else + if ( ( ivas_total_brate != hEncoderConfig->last_ivas_total_brate ) && ( !hSpar->spar_reconfig_flag) ) +#endif { if ( ( error = ivas_spar_md_enc_init( hSpar->hMdEnc, hEncoderConfig, sba_order ) ) != IVAS_ERR_OK ) { diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h index 708675506c..005d39ecbf 100644 --- a/lib_enc/ivas_stat_enc.h +++ b/lib_enc/ivas_stat_enc.h @@ -686,7 +686,9 @@ typedef struct ivas_spar_enc_lib_t int32_t core_nominal_brate; /* Nominal bitrate for core coding */ FRONT_VAD_ENC_HANDLE hFrontVad; /* front-VAD handle */ ENC_CORE_HANDLE hCoreCoderVAD; /* core-coder handle for front-VAD module */ - +#ifdef SBA_MODE_CLEAN_UP + int16_t spar_reconfig_flag; +#endif int16_t front_vad_flag; int16_t front_vad_dtx_flag; int16_t force_front_vad; @@ -1037,7 +1039,9 @@ typedef struct encoder_config_structure /* temp. development parameters */ int16_t Opt_PCA_ON; /* flag indicating PCA operation in SBA */ +#ifndef SBA_MODE_CLEAN_UP int16_t spar_reconfig_flag; + #endif #ifdef DEBUGGING /* debugging options */ int16_t stereo_mode_cmdl; /* stereo mode forced from the command-line */ -- GitLab From 10e3b1235dba3b2fed7716b47a0d419d194cd6a1 Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Wed, 17 May 2023 12:13:24 +0530 Subject: [PATCH 06/14] Modified ivas_dirac_enc() [x] Moved the DiRAC encoding functions from ivas_spar_enc_process() --- lib_com/ivas_prot.h | 12 ++++ lib_enc/ivas_dirac_enc.c | 119 +++++++++++++++++++++++++++++++++++- lib_enc/ivas_spar_encoder.c | 18 +++--- 3 files changed, 137 insertions(+), 12 deletions(-) diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index 19b6f515fe..96a6302aaa 100644 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -3339,6 +3339,18 @@ void ivas_dirac_enc( const int16_t input_frame, /* i : input frame length */ const int16_t sba_planar /* i : SBA planar flag */ ); +#else +void ivas_dirac_enc( + DIRAC_ENC_HANDLE hDirAC, /* i/o: encoder DirAC handle */ + IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ + BSTR_ENC_HANDLE hMetaData, /* i/o: Metadata bitstream handle */ + float data_f[][L_FRAME48k], /* i/o: SBA channels */ + float **ppIn_FR_real, /* o : real freq domain values */ + float **ppIn_FR_imag, /* o : imag freq domain values */ + const int16_t input_frame, /* i : input frame length */ + const int16_t dtx_vad, /* i : DTX vad flag */ + const IVAS_FORMAT ivas_format /* i : ivas format */ +); #endif ivas_error ivas_dirac_config( void *st_ivas, /* i/o: IVAS encoder/decoder state structure */ diff --git a/lib_enc/ivas_dirac_enc.c b/lib_enc/ivas_dirac_enc.c index 35d3062126..6af189eddb 100644 --- a/lib_enc/ivas_dirac_enc.c +++ b/lib_enc/ivas_dirac_enc.c @@ -542,6 +542,119 @@ void ivas_dirac_enc_spar_delay_synchro( return; } +#else +/*------------------------------------------------------------------------- + * ivas_dirac_enc() + * + * DirAC Encoder + * + *------------------------------------------------------------------------*/ + +void ivas_dirac_enc( + DIRAC_ENC_HANDLE hDirAC, /* i/o: encoder DirAC handle */ + IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ + BSTR_ENC_HANDLE hMetaData, /* i/o: Metadata bitstream handle */ + float data_f[][L_FRAME48k], /* i/o: SBA channels */ + float **ppIn_FR_real, /* o : real freq domain values */ + float **ppIn_FR_imag, /* o : imag freq domain values */ + const int16_t input_frame, /* i : input frame length */ + const int16_t dtx_vad, /* i : DTX vad flag */ + const IVAS_FORMAT ivas_format ) /* i : ivas format */ +{ + int16_t orig_dirac_bands; + float dir[3], avg_dir[3]; + float energySum, vecLen; + int16_t i, j, b, i_ts; + push_wmops( "ivas_dirac_enc" ); + + ivas_dirac_param_est_enc( hDirAC, hQMetaData->q_direction, hQMetaData->useLowerRes, data_f, ppIn_FR_real, ppIn_FR_imag, input_frame, ivas_format ); + + + if ( hQMetaData->q_direction->cfg.nbands > 0 ) + { + orig_dirac_bands = hQMetaData->q_direction[0].cfg.nbands; + + if ( dtx_vad == 1 ) + { + /* WB 4TC mode bit : disable for now*/ + push_next_indice( hMetaData, 0, 1 ); + ivas_qmetadata_enc_encode( hMetaData, hQMetaData ); + } + else + { + hQMetaData->q_direction[0].cfg.nbands = DIRAC_DTX_BANDS; + + /* compute directions */ + for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) + { + set_zero( dir, 3 ); + set_zero( avg_dir, 3 ); + energySum = 0.0f; + + /* combine all DirAC bands except the last one, handle last band separately, last band covers BW above WB */ + for ( j = 0; j < orig_dirac_bands - 1; j++ ) + { + ivas_qmetadata_azimuth_elevation_to_direction_vector( hQMetaData->q_direction[0].band_data[j].azimuth[i], hQMetaData->q_direction[0].band_data[j].elevation[i], &dir[0] ); + vecLen = hQMetaData->q_direction[0].band_data[j].energy_ratio[i] * hDirAC->buffer_energy[i * orig_dirac_bands + j]; + + avg_dir[0] += dir[0] * vecLen; + avg_dir[1] += dir[1] * vecLen; + avg_dir[2] += dir[2] * vecLen; + + energySum += hDirAC->buffer_energy[i * orig_dirac_bands + j]; + } + + ivas_qmetadata_direction_vector_to_azimuth_elevation( &avg_dir[0], &hQMetaData->q_direction[0].band_data[0].azimuth[i], &hQMetaData->q_direction[0].band_data[0].elevation[i] ); + hQMetaData->q_direction[0].band_data[0].energy_ratio[i] = sqrtf( dotp( avg_dir, avg_dir, 3 ) ) / ( energySum + EPSILON ); + + hQMetaData->q_direction[0].band_data[1].azimuth[i] = hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].azimuth[i]; + hQMetaData->q_direction[0].band_data[1].elevation[i] = hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].elevation[i]; + hQMetaData->q_direction[0].band_data[1].energy_ratio[i] = hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio[i]; + } + + /* 1 bit to indicate mode MD coding : temp solution*/ + push_next_indice( hMetaData, 1, 1 ); + + /* encode SID parameters */ + ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, SBA_FORMAT ); + } + + for ( b = hQMetaData->q_direction->cfg.start_band; b < hQMetaData->q_direction->cfg.nbands; b++ ) + { + for ( i_ts = 0; i_ts < ( ( dtx_vad == 1 ) ? hQMetaData->q_direction[0].cfg.nblocks : 1 ); i_ts++ ) + { + hQMetaData->q_direction->band_data[b].azimuth[i_ts] = hQMetaData->q_direction->band_data[b].q_azimuth[i_ts]; + hQMetaData->q_direction->band_data[b].elevation[i_ts] = hQMetaData->q_direction->band_data[b].q_elevation[i_ts]; + hQMetaData->q_direction[0].band_data[b].energy_ratio[0] = 1.0f - diffuseness_reconstructions[hQMetaData->q_direction[0].band_data[b].energy_ratio_index[0]]; + } + } + + if ( dtx_vad == 0 ) + { + for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) + { + hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].azimuth[i] = hQMetaData->q_direction[0].band_data[1].azimuth[0]; + hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].elevation[i] = hQMetaData->q_direction[0].band_data[1].elevation[0]; + hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio[0]; + } + + for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) + { + for ( j = orig_dirac_bands - 2; j >= 0; j-- ) + { + hQMetaData->q_direction[0].band_data[j].azimuth[i] = hQMetaData->q_direction[0].band_data[0].azimuth[0]; + hQMetaData->q_direction[0].band_data[j].elevation[i] = hQMetaData->q_direction[0].band_data[0].elevation[0]; + hQMetaData->q_direction[0].band_data[j].energy_ratio[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio[0]; + } + } + + hQMetaData->q_direction->cfg.nbands = orig_dirac_bands; + } + } + pop_wmops(); + + return; +} #endif /*------------------------------------------------------------------------- @@ -558,9 +671,9 @@ void computeReferencePower_enc( const int16_t enc_param_start_band, /* i : first band to process */ const int16_t num_freq_bands, /* i : Number of frequency bands */ #ifndef SBA_MODE_CLEAN_UP - const SBA_MODE sba_mode /* i : SBA mode */ + const SBA_MODE sba_mode /* i : SBA mode */ #else - const IVAS_FORMAT ivas_format /* i : ivas_format */ + const IVAS_FORMAT ivas_format /* i : ivas_format */ #endif ) { @@ -623,7 +736,7 @@ void ivas_dirac_param_est_enc( float **pp_fr_imag, const int16_t input_frame, #ifndef SBA_MODE_CLEAN_UP - const SBA_MODE sba_mode + const SBA_MODE sba_mode #else const IVAS_FORMAT ivas_format #endif diff --git a/lib_enc/ivas_spar_encoder.c b/lib_enc/ivas_spar_encoder.c index df5cf47fb4..e1908a29d6 100644 --- a/lib_enc/ivas_spar_encoder.c +++ b/lib_enc/ivas_spar_encoder.c @@ -410,12 +410,17 @@ static ivas_error ivas_spar_enc_process( const int16_t *order; SPAR_ENC_HANDLE hSpar = st_ivas->hSpar; IVAS_QMETADATA_HANDLE hQMetaData = st_ivas->hQMetaData; +#ifndef SBA_MODE_CLEAN_UP int16_t ts, l_ts, orig_dirac_bands, num_del_samples; +#else + int16_t ts, l_ts, num_del_samples; +#endif float *ppIn_FR_real[IVAS_SPAR_MAX_CH], *ppIn_FR_imag[IVAS_SPAR_MAX_CH]; float w_del_buf[IVAS_FB_1MS_48K_SAMP]; +#ifndef SBA_MODE_CLEAN_UP float dir[3], avg_dir[3]; float energySum, vecLen; - +#endif push_wmops( "ivas_spar_enc_process" ); /*-----------------------------------------------------------------------------------------* @@ -505,12 +510,8 @@ static ivas_error ivas_spar_enc_process( * DirAC encoding *-----------------------------------------------------------------------------------------*/ #ifndef SBA_MODE_CLEAN_UP - ivas_dirac_param_est_enc( st_ivas->hDirAC, hQMetaData->q_direction, hQMetaData->useLowerRes, data_f, ppIn_FR_real, ppIn_FR_imag, input_frame, st_ivas->sba_mode ); -#else ivas_dirac_param_est_enc( st_ivas->hDirAC, hQMetaData->q_direction, hQMetaData->useLowerRes, data_f, ppIn_FR_real, ppIn_FR_imag, input_frame, hEncoderConfig->ivas_format ); -#endif - if ( hQMetaData->q_direction->cfg.nbands > 0 ) { orig_dirac_bands = hQMetaData->q_direction[0].cfg.nbands; @@ -557,11 +558,7 @@ static ivas_error ivas_spar_enc_process( push_next_indice( hMetaData, 1, 1 ); /* encode SID parameters */ -#ifndef SBA_MODE_CLEAN_UP - ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, SBA_FORMAT, st_ivas->sba_mode ); -#else ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, -1, SBA_FORMAT ); -#endif } for ( b = hQMetaData->q_direction->cfg.start_band; b < hQMetaData->q_direction->cfg.nbands; b++ ) @@ -596,6 +593,9 @@ static ivas_error ivas_spar_enc_process( hQMetaData->q_direction->cfg.nbands = orig_dirac_bands; } } +#else + ivas_dirac_enc( st_ivas->hDirAC, hQMetaData, hMetaData, data_f, ppIn_FR_real, ppIn_FR_imag, input_frame, dtx_vad, hEncoderConfig->ivas_format ); +#endif /*-----------------------------------------------------------------------------------------* * Set SPAR bitrates *-----------------------------------------------------------------------------------------*/ -- GitLab From 2020b7894e02c025f189cb3eff63e245ce6a3b50 Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Thu, 18 May 2023 16:33:09 +0530 Subject: [PATCH 07/14] Resolving Linux warnings & Clang formatting --- lib_com/ivas_dirac_com.c | 24 ++++++++++++++++++------ lib_enc/ivas_dirac_enc.c | 5 ++++- lib_rend/lib_rend.c | 12 ++++++------ 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/lib_com/ivas_dirac_com.c b/lib_com/ivas_dirac_com.c index c3a141b67e..2c7907af1e 100644 --- a/lib_com/ivas_dirac_com.c +++ b/lib_com/ivas_dirac_com.c @@ -60,8 +60,12 @@ ivas_error ivas_dirac_config( ) { IVAS_FORMAT ivas_format; +#ifndef SBA_MODE_CLEAN_UP int16_t sba_order; int16_t *nSCE, *nCPE, *element_mode, *nchan_transport; +#else + int16_t *element_mode; +#endif int32_t ivas_total_brate; DIRAC_CONFIG_DATA_HANDLE hConfig; IVAS_QMETADATA_HANDLE hQMetaData; @@ -80,11 +84,15 @@ ivas_error ivas_dirac_config( if ( enc_dec == ENC ) { ivas_format = ( (Encoder_Struct *) st_ivas )->hEncoderConfig->ivas_format; +#ifndef SBA_MODE_CLEAN_UP nSCE = &( ( (Encoder_Struct *) st_ivas )->nSCE ); nCPE = &( (Encoder_Struct *) st_ivas )->nCPE; +#endif element_mode = &( (Encoder_Struct *) st_ivas )->hEncoderConfig->element_mode_init; +#ifndef SBA_MODE_CLEAN_UP nchan_transport = &( (Encoder_Struct *) st_ivas )->nchan_transport; sba_order = ( (Encoder_Struct *) st_ivas )->sba_analysis_order; +#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; @@ -106,11 +114,15 @@ ivas_error ivas_dirac_config( else { ivas_format = ( (Decoder_Struct *) st_ivas )->ivas_format; +#ifndef SBA_MODE_CLEAN_UP nSCE = &( (Decoder_Struct *) st_ivas )->nSCE; nCPE = &( (Decoder_Struct *) st_ivas )->nCPE; +#endif element_mode = &( (Decoder_Struct *) st_ivas )->element_mode_init; +#ifndef SBA_MODE_CLEAN_UP nchan_transport = &( (Decoder_Struct *) st_ivas )->nchan_transport; sba_order = ( (Decoder_Struct *) st_ivas )->sba_analysis_order; +#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; @@ -325,14 +337,14 @@ void ivas_dirac_config_bands( ivas_error ivas_dirac_sba_config( IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ #ifndef SBA_MODE_CLEAN_UP - int16_t *nchan_transport, /* o : number of transport channel needed for MASA format */ - int16_t *nSCE, /* o : number of SCEs */ - int16_t *nCPE, /* o : number of CPEs */ + int16_t *nchan_transport, /* o : number of transport channel needed for MASA format */ + int16_t *nSCE, /* o : number of SCEs */ + int16_t *nCPE, /* o : number of CPEs */ #endif - int16_t *element_mode, /* i/o: element mode of the core coder */ - int32_t sba_total_brate, /* i : SBA total bitrate */ + int16_t *element_mode, /* i/o: element mode of the core coder */ + int32_t sba_total_brate, /* i : SBA total bitrate */ #ifndef SBA_MODE_CLEAN_UP - const int16_t sba_order, /* i : Ambisonic (SBA) order */ + const int16_t sba_order, /* i : Ambisonic (SBA) order */ const SBA_MODE sba_mode, /* i : SBA mode */ #endif const int16_t nbands /* i : number of frequency bands */ diff --git a/lib_enc/ivas_dirac_enc.c b/lib_enc/ivas_dirac_enc.c index 6af189eddb..23035db988 100644 --- a/lib_enc/ivas_dirac_enc.c +++ b/lib_enc/ivas_dirac_enc.c @@ -62,7 +62,9 @@ ivas_error ivas_dirac_enc_open( ) { int16_t i, j; +#ifndef SBA_MODE_CLEAN_UP int32_t input_Fs; +#endif DIRAC_ENC_HANDLE hDirAC; #ifndef SBA_MODE_CLEAN_UP IVAS_FB_CFG *fb_cfg; @@ -87,8 +89,9 @@ ivas_error ivas_dirac_enc_open( *-----------------------------------------------------------------*/ st_ivas->hDirAC = hDirAC; +#ifndef SBA_MODE_CLEAN_UP input_Fs = st_ivas->hEncoderConfig->input_Fs; - +#endif if ( ( error = ivas_dirac_config( (void *) st_ivas, ENC ) ) != IVAS_ERR_OK ) { return error; diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index b090574f31..fa86fe8fc5 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -2197,9 +2197,9 @@ static ivas_error initMasaDummyDecForMcOut( decDummy->hDecoderConfig->ivas_total_brate = IVAS_512k; /* Todo Nokia: This is preventing initialization of 2TC as 1TC, should be fixed properly in ivas_dirac_dec_config() */ #ifndef SBA_MODE_CLEAN_UP - decDummy->sba_mode = SBA_MODE_NONE; /* Todo Nokia: This is done to prevent ivas_dirac_dec_config() to not use uninitialized value. It could be considered if this should not be even accessed when not in SBA. */ + decDummy->sba_mode = SBA_MODE_NONE; /* Todo Nokia: This is done to prevent ivas_dirac_dec_config() to not use uninitialized value. It could be considered if this should not be even accessed when not in SBA. */ #endif - decDummy->mc_mode = MC_MODE_NONE; /* Todo Nokia: This should be also refactored in such way that it is not checked if not in MC mode */ + decDummy->mc_mode = MC_MODE_NONE; /* Todo Nokia: This should be also refactored in such way that it is not checked if not in MC mode */ ivas_output_init( &( decDummy->hOutSetup ), output_config ); ivas_output_init( &( decDummy->hIntSetup ), output_config ); @@ -2282,9 +2282,9 @@ static ivas_error initMasaDummyDecForSbaOut( decDummy->hDecoderConfig->ivas_total_brate = IVAS_512k; /* Todo Nokia: This is preventing initialization of 2TC as 1TC, should be fixed properly in ivas_dirac_dec_config() */ #ifndef SBA_MODE_CLEAN_UP - decDummy->sba_mode = SBA_MODE_NONE; /* Todo Nokia: This is done to prevent ivas_dirac_dec_config() to not use uninitialized value. It could be considered if this should not be even accessed when not in SBA. */ + decDummy->sba_mode = SBA_MODE_NONE; /* Todo Nokia: This is done to prevent ivas_dirac_dec_config() to not use uninitialized value. It could be considered if this should not be even accessed when not in SBA. */ #endif - decDummy->mc_mode = MC_MODE_NONE; /* Todo Nokia: This should be also refactored in such way that it is not checked if not in MC mode */ + decDummy->mc_mode = MC_MODE_NONE; /* Todo Nokia: This should be also refactored in such way that it is not checked if not in MC mode */ ivas_output_init( &( decDummy->hOutSetup ), output_config ); ivas_output_init( &( decDummy->hIntSetup ), output_config ); @@ -2354,9 +2354,9 @@ static ivas_error initMasaDummyDecForBinauralOut( decDummy->hDecoderConfig->ivas_total_brate = IVAS_512k; /* Todo Nokia: This is preventing initialization of 2TC as 1TC, should be fixed properly in ivas_dirac_dec_config() */ #ifndef SBA_MODE_CLEAN_UP - decDummy->sba_mode = SBA_MODE_NONE; /* Todo Nokia: This is done to prevent ivas_dirac_dec_config() to not use uninitialized value. It could be considered if this should not be even accessed when not in SBA. */ + decDummy->sba_mode = SBA_MODE_NONE; /* Todo Nokia: This is done to prevent ivas_dirac_dec_config() to not use uninitialized value. It could be considered if this should not be even accessed when not in SBA. */ #endif - decDummy->mc_mode = MC_MODE_NONE; /* Todo Nokia: This should be also refactored in such way that it is not checked if not in MC mode */ + decDummy->mc_mode = MC_MODE_NONE; /* Todo Nokia: This should be also refactored in such way that it is not checked if not in MC mode */ ivas_output_init( &( decDummy->hOutSetup ), output_config ); if ( output_config == AUDIO_CONFIG_BINAURAL ) -- GitLab From 7b2af10911288c0bc7d9f376cf1696dff9392149 Mon Sep 17 00:00:00 2001 From: Rivukanta Bhattacharya <100792@ittiam.com> Date: Wed, 24 May 2023 19:38:00 +0530 Subject: [PATCH 08/14] Build fixes for macro disabled cases --- lib_dec/ivas_jbm_dec.c | 40 ++++++++++++++++++++++++++++++++ lib_enc/ivas_mc_paramupmix_enc.c | 5 ++++ lib_enc/ivas_sba_enc.c | 4 ++++ 3 files changed, 49 insertions(+) diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 2ecbc9b382..c502d152bb 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -181,13 +181,21 @@ ivas_error ivas_jbm_dec_tc( set_s( nb_bits_metadata, 0, MAX_SCE ); /* read parameters from the bitstream */ +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->hQMetaData != NULL && st_ivas->sba_mode != SBA_MODE_SPAR ) +#else + if ( st_ivas->hQMetaData != NULL && st_ivas->ivas_format != SBA_FORMAT ) +#endif { st = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; if ( st_ivas->ivas_format == SBA_FORMAT ) { +#ifndef SBA_MODE_CLEAN_UP ivas_dirac_dec_read_BS( ivas_total_brate, st, st_ivas->hDirAC, st_ivas->hQMetaData, &nb_bits_metadata[0], st_ivas->sba_mode, hodirac_flag, 0 ); +#else + ivas_dirac_dec_read_BS( ivas_total_brate, st, st_ivas->hDirAC, st_ivas->hQMetaData, &nb_bits_metadata[0], hodirac_flag, 0 ); +#endif } else { @@ -197,12 +205,20 @@ ivas_error ivas_jbm_dec_tc( } } } +#ifndef SBA_MODE_CLEAN_UP else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#else + else if ( st_ivas->ivas_format == SBA_FORMAT ) +#endif { if ( st_ivas->hQMetaData != NULL ) { st = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; +#ifndef SBA_MODE_CLEAN_UP ivas_dirac_dec_read_BS( ivas_total_brate, st, st_ivas->hDirAC, st_ivas->hQMetaData, &nb_bits_metadata[0], st_ivas->sba_mode, hodirac_flag, st_ivas->hSpar->dirac_to_spar_md_bands ); +#else + ivas_dirac_dec_read_BS( ivas_total_brate, st, st_ivas->hDirAC, st_ivas->hQMetaData, &nb_bits_metadata[0], hodirac_flag, st_ivas->hSpar->dirac_to_spar_md_bands ); +#endif } if ( ( error = ivas_spar_dec( st_ivas, nb_bits_metadata ) ) != IVAS_ERR_OK ) @@ -249,7 +265,11 @@ ivas_error ivas_jbm_dec_tc( { nchan_remapped = nchan_out; +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#else + if ( st_ivas->ivas_format == SBA_FORMAT ) +#endif { ivas_agc_dec_process( st_ivas->hSpar->hAgcDec, output, output, st_ivas->hSpar->hMdDec->spar_md_cfg.nchan_transport, output_frame ); @@ -280,11 +300,19 @@ ivas_error ivas_jbm_dec_tc( { nchan_remapped = ivas_sba_remapTCs( output, st_ivas, output_frame ); +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR && ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) +#else + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) +#endif { ivas_sba_mix_matrix_determiner( st_ivas->hSpar, output, st_ivas->bfi, nchan_remapped, output_frame ); } +#ifndef SBA_MODE_CLEAN_UP else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#else + else +#endif { ivas_spar_dec_agc_pca( st_ivas, output, output_frame ); } @@ -735,7 +763,11 @@ ivas_error ivas_jbm_dec_render( { ivas_dirac_dec_binaural_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, nchan_remapped, p_output ); } +#ifndef SBA_MODE_CLEAN_UP else if ( st_ivas->sba_mode == SBA_MODE_DIRAC || st_ivas->ivas_format == MASA_FORMAT ) +#else + else if ( st_ivas->ivas_format == MASA_FORMAT ) +#endif { if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_DEC ) { @@ -1241,8 +1273,12 @@ int16_t ivas_jbm_dec_get_num_tc_channels( Decoder_Struct *st_ivas ) /* i : IVAS } if ( st_ivas->ivas_format == SBA_FORMAT ) { +#ifndef SBA_MODE_CLEAN_UP if ( ( st_ivas->sba_mode != SBA_MODE_SPAR && st_ivas->sba_planar && num_tc >= 3 ) || ( ( st_ivas->sba_mode == SBA_MODE_SPAR ) && num_tc == 3 ) ) +#else + if ( ( st_ivas->sba_planar && num_tc >= 3 ) || ( num_tc == 3 ) ) +#endif { num_tc++; } @@ -1684,7 +1720,11 @@ TC_BUFFER_MODE ivas_jbm_dec_get_tc_buffer_mode( Decoder_Struct *st_ivas ) } break; case RENDERER_SBA_LINEAR_DEC: +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->ivas_format == SBA_FORMAT && st_ivas->sba_mode == SBA_MODE_SPAR && ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_MONO || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_STEREO ) ) +#else + if ( st_ivas->ivas_format == SBA_FORMAT && ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_MONO || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_STEREO ) ) +#endif { buffer_mode = TC_BUFFER_MODE_BUFFER; } diff --git a/lib_enc/ivas_mc_paramupmix_enc.c b/lib_enc/ivas_mc_paramupmix_enc.c index 997b0043ac..562a75320a 100644 --- a/lib_enc/ivas_mc_paramupmix_enc.c +++ b/lib_enc/ivas_mc_paramupmix_enc.c @@ -184,8 +184,13 @@ ivas_error ivas_mc_paramupmix_enc_open( /* set FB config. */ /* need to set num output channels to a value > 0 to get pFb != NULL */ +#ifndef SBA_MODE_CLEAN_UP if ( ( error = ivas_fb_set_cfg( &fb_cfg, MC_FORMAT, SBA_MODE_SPAR, MC_PARAMUPMIX_COMBINATIONS * MC_PARAMUPMIX_NCH, MC_PARAMUPMIX_COMBINATIONS, 0, input_Fs, 0 ) ) != IVAS_ERR_OK ) +#else + if ( ( error = ivas_fb_set_cfg( &fb_cfg, MC_FORMAT, MC_PARAMUPMIX_COMBINATIONS * MC_PARAMUPMIX_NCH, MC_PARAMUPMIX_COMBINATIONS, 0, input_Fs, + 0 ) ) != IVAS_ERR_OK ) +#endif { return error; } diff --git a/lib_enc/ivas_sba_enc.c b/lib_enc/ivas_sba_enc.c index ebd9f74ebb..632fd041de 100644 --- a/lib_enc/ivas_sba_enc.c +++ b/lib_enc/ivas_sba_enc.c @@ -297,7 +297,11 @@ int16_t ivas_sba_get_max_md_bits( max_bits = 500; } max_md_bits = min( st_ivas->hQMetaData->metadata_max_bits + 1, max_bits ); // TODO: remove 500 once max MD bits has been defined at all bitrates in DirAC +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR ) +#else + if ( st_ivas->hEncoderConfig->ivas_format == SBA_FORMAT ) +#endif { max_md_bits += st_ivas->hSpar->hMdEnc->spar_md_cfg.max_md_bits_spar; } -- GitLab From 6572cd316b1af89c3085a18da76343fe16439689 Mon Sep 17 00:00:00 2001 From: Rivukanta Bhattacharya <100792@ittiam.com> Date: Fri, 26 May 2023 10:10:45 +0530 Subject: [PATCH 09/14] Fix for BE failure fixes observed for 384 and 512 kbps cases --- lib_com/ivas_prot.h | 3 ++- lib_enc/ivas_dirac_enc.c | 6 ++++-- lib_enc/ivas_mcmasa_enc.c | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index 03cb1010f3..0dfb1b3b42 100644 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -5554,7 +5554,8 @@ void computeReferencePower_enc( #ifndef SBA_MODE_CLEAN_UP const SBA_MODE sba_mode /* i : SBA mode */ #else - const IVAS_FORMAT ivas_format /* i : ivas_format */ + const IVAS_FORMAT ivas_format, /* i : ivas_format */ + int16_t ref_power_w /* i : use 0 if hodirac is enabled */ #endif , const int16_t nchan_ana /* i : number of analysis channels */ diff --git a/lib_enc/ivas_dirac_enc.c b/lib_enc/ivas_dirac_enc.c index 11b861350e..9d070a549d 100644 --- a/lib_enc/ivas_dirac_enc.c +++ b/lib_enc/ivas_dirac_enc.c @@ -699,7 +699,8 @@ void computeReferencePower_enc( #ifndef SBA_MODE_CLEAN_UP const SBA_MODE sba_mode /* i : SBA mode */ #else - const IVAS_FORMAT ivas_format /* i : ivas_format */ + const IVAS_FORMAT ivas_format, /* i : ivas_format */ + int16_t ref_power_w /* i : use 0 if hodirac is enabled */ #endif , const int16_t nchan_ana /* i : number of analysis channels */ @@ -737,7 +738,7 @@ void computeReferencePower_enc( #ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) #else - if ( ivas_format == SBA_FORMAT ) + if ( ivas_format == SBA_FORMAT && ref_power_w == 1 ) #endif { for ( i = 0; i < num_freq_bands; i++ ) @@ -881,6 +882,7 @@ void ivas_dirac_param_est_enc( hodirac_flag ? SBA_MODE_DIRAC : sba_mode, #else ivas_format, + hodirac_flag ? 0 : 1, #endif FOA_CHANNELS ); diff --git a/lib_enc/ivas_mcmasa_enc.c b/lib_enc/ivas_mcmasa_enc.c index 508b13209e..ee7dd02d42 100644 --- a/lib_enc/ivas_mcmasa_enc.c +++ b/lib_enc/ivas_mcmasa_enc.c @@ -991,6 +991,7 @@ void ivas_mcmasa_param_est_enc( SBA_MODE_NONE, #else MC_FORMAT, + 0, #endif FOA_CHANNELS ); -- GitLab From 20d8a9355d796966c7a5b257201164e3d672e24c Mon Sep 17 00:00:00 2001 From: Rivukanta Bhattacharya <100792@ittiam.com> Date: Fri, 26 May 2023 12:05:33 +0530 Subject: [PATCH 10/14] Crash fix in decoder --- lib_dec/ivas_sba_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index 9606bc073e..c978db9b61 100644 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -446,7 +446,7 @@ ivas_error ivas_sba_dec_digest_tc( #ifndef SBA_MODE_CLEAN_UP if ( st_ivas->hDirAC && !( st_ivas->renderer_type == RENDERER_SBA_LINEAR_DEC && st_ivas->sba_mode == SBA_MODE_DIRAC ) ) #else - if ( st_ivas->hDirAC && !( st_ivas->renderer_type == RENDERER_SBA_LINEAR_DEC && st_ivas->ivas_format == SBA_FORMAT ) ) + if ( st_ivas->hDirAC ) #endif { ivas_dirac_dec_set_md_map( st_ivas, nCldfbSlots ); -- GitLab From 0197b5b9a8f92a95152546a7f100e4bc8a5b0950 Mon Sep 17 00:00:00 2001 From: Rivukanta Bhattacharya <100792@ittiam.com> Date: Fri, 26 May 2023 13:20:01 +0530 Subject: [PATCH 11/14] Clang format fixes --- lib_com/ivas_dirac_com.c | 104 +++++++++++++------------- lib_com/ivas_fb_mixer.c | 6 +- lib_dec/ivas_dirac_dec.c | 22 +++--- lib_dec/ivas_qmetadata_dec.c | 4 +- lib_dec/ivas_sba_rendering_internal.c | 2 +- lib_dec/ivas_sce_dec.c | 2 +- lib_enc/ivas_dirac_enc.c | 2 +- lib_enc/ivas_enc.c | 2 +- lib_enc/ivas_mcmasa_enc.c | 2 +- lib_enc/ivas_mct_enc.c | 6 +- lib_enc/ivas_qmetadata_enc.c | 18 ++--- lib_enc/ivas_spar_encoder.c | 2 +- 12 files changed, 86 insertions(+), 86 deletions(-) diff --git a/lib_com/ivas_dirac_com.c b/lib_com/ivas_dirac_com.c index dcd5f0bef7..ac7ccc3182 100644 --- a/lib_com/ivas_dirac_com.c +++ b/lib_com/ivas_dirac_com.c @@ -541,59 +541,59 @@ ivas_error ivas_dirac_sba_config( &hQMetaData->qmetadata_max_bit_req, hQMetaData->q_direction[0].cfg.nbands ); #else - if ( sba_total_brate <= IVAS_13k2 ) - { - hQMetaData->bits_frame_nominal = ACELP_9k60 / FRAMES_PER_SEC; - hQMetaData->metadata_max_bits = 70; - } - else if ( sba_total_brate <= IVAS_16k4 ) - { - hQMetaData->bits_frame_nominal = ACELP_13k20 / FRAMES_PER_SEC; - hQMetaData->metadata_max_bits = 80; - } - else if ( sba_total_brate <= IVAS_24k4 ) - { - hQMetaData->bits_frame_nominal = ACELP_16k40 / FRAMES_PER_SEC; - hQMetaData->metadata_max_bits = 103; - } - else if ( sba_total_brate <= IVAS_32k ) - { - hQMetaData->bits_frame_nominal = ACELP_32k / FRAMES_PER_SEC; - hQMetaData->metadata_max_bits = 214; - } - else if ( sba_total_brate <= IVAS_48k ) - { - hQMetaData->bits_frame_nominal = IVAS_48k / FRAMES_PER_SEC; - hQMetaData->metadata_max_bits = 240; - } - else if ( sba_total_brate <= IVAS_64k ) - { - hQMetaData->bits_frame_nominal = IVAS_64k / FRAMES_PER_SEC; - hQMetaData->metadata_max_bits = 200; - } - else if ( sba_total_brate <= IVAS_80k ) - { - hQMetaData->bits_frame_nominal = IVAS_80k / FRAMES_PER_SEC; - hQMetaData->metadata_max_bits = 200; - } - else if ( sba_total_brate <= IVAS_96k ) - { - hQMetaData->bits_frame_nominal = IVAS_96k / FRAMES_PER_SEC; - hQMetaData->metadata_max_bits = 200; - } - else if ( sba_total_brate <= IVAS_128k ) - { - hQMetaData->bits_frame_nominal = IVAS_128k / FRAMES_PER_SEC; - hQMetaData->metadata_max_bits = 250; - } - else - { - hQMetaData->bits_frame_nominal = (int16_t) ( sba_total_brate / FRAMES_PER_SEC ); - hQMetaData->metadata_max_bits = MAX16B; /* no limit */ - } + if ( sba_total_brate <= IVAS_13k2 ) + { + hQMetaData->bits_frame_nominal = ACELP_9k60 / FRAMES_PER_SEC; + hQMetaData->metadata_max_bits = 70; + } + else if ( sba_total_brate <= IVAS_16k4 ) + { + hQMetaData->bits_frame_nominal = ACELP_13k20 / FRAMES_PER_SEC; + hQMetaData->metadata_max_bits = 80; + } + else if ( sba_total_brate <= IVAS_24k4 ) + { + hQMetaData->bits_frame_nominal = ACELP_16k40 / FRAMES_PER_SEC; + hQMetaData->metadata_max_bits = 103; + } + else if ( sba_total_brate <= IVAS_32k ) + { + hQMetaData->bits_frame_nominal = ACELP_32k / FRAMES_PER_SEC; + hQMetaData->metadata_max_bits = 214; + } + else if ( sba_total_brate <= IVAS_48k ) + { + hQMetaData->bits_frame_nominal = IVAS_48k / FRAMES_PER_SEC; + hQMetaData->metadata_max_bits = 240; + } + else if ( sba_total_brate <= IVAS_64k ) + { + hQMetaData->bits_frame_nominal = IVAS_64k / FRAMES_PER_SEC; + hQMetaData->metadata_max_bits = 200; + } + else if ( sba_total_brate <= IVAS_80k ) + { + hQMetaData->bits_frame_nominal = IVAS_80k / FRAMES_PER_SEC; + hQMetaData->metadata_max_bits = 200; + } + else if ( sba_total_brate <= IVAS_96k ) + { + hQMetaData->bits_frame_nominal = IVAS_96k / FRAMES_PER_SEC; + hQMetaData->metadata_max_bits = 200; + } + else if ( sba_total_brate <= IVAS_128k ) + { + hQMetaData->bits_frame_nominal = IVAS_128k / FRAMES_PER_SEC; + hQMetaData->metadata_max_bits = 250; + } + else + { + hQMetaData->bits_frame_nominal = (int16_t) ( sba_total_brate / FRAMES_PER_SEC ); + hQMetaData->metadata_max_bits = MAX16B; /* no limit */ + } - hQMetaData->metadata_max_bits = (int16_t) ceilf( (float) hQMetaData->metadata_max_bits * hQMetaData->q_direction[0].cfg.nbands / 5 ); - hQMetaData->qmetadata_max_bit_req = QMETADATA_MAXBIT_REQ_SBA >> 1; + hQMetaData->metadata_max_bits = (int16_t) ceilf( (float) hQMetaData->metadata_max_bits * hQMetaData->q_direction[0].cfg.nbands / 5 ); + hQMetaData->qmetadata_max_bit_req = QMETADATA_MAXBIT_REQ_SBA >> 1; #endif return error; diff --git a/lib_com/ivas_fb_mixer.c b/lib_com/ivas_fb_mixer.c index ec19099524..d9010b5c69 100644 --- a/lib_com/ivas_fb_mixer.c +++ b/lib_com/ivas_fb_mixer.c @@ -99,10 +99,10 @@ static int16_t ivas_get_num_bands( *---------------------------------------------------------------------*/ ivas_error ivas_fb_set_cfg( - IVAS_FB_CFG **pFb_cfg_out, /* o : FB config. handle */ - const int16_t ivas_format, /* i : IVAS format */ + IVAS_FB_CFG **pFb_cfg_out, /* o : FB config. handle */ + const int16_t ivas_format, /* i : IVAS format */ #ifndef SBA_MODE_CLEAN_UP - const SBA_MODE sba_mode, /* i : SBA mode */ + const SBA_MODE sba_mode, /* i : SBA mode */ #endif const int16_t num_in_chans, /* i : number of FB input channels */ const int16_t num_out_chans, /* i : number of FB output channels */ diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index d047c58eda..f25356eaca 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -1744,10 +1744,10 @@ void ivas_dirac_dec_read_BS( IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata */ int16_t *nb_bits, /* o : number of bits read */ #ifndef SBA_MODE_CLEAN_UP - const SBA_MODE sba_mode, /* i : SBA mode */ + const SBA_MODE sba_mode, /* i : SBA mode */ #endif - const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */ - int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */ + const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */ + int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */ ) { int16_t i, j, b, dir, orig_dirac_bands; @@ -1811,7 +1811,7 @@ void ivas_dirac_dec_read_BS( #ifndef SBA_MODE_CLEAN_UP *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT, sba_mode ); #else - *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT); + *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT ); #endif for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { @@ -1947,12 +1947,12 @@ void ivas_qmetadata_to_dirac( MASA_DECODER_HANDLE hMasa, /* i : MASA decoder structure */ const int32_t ivas_total_brate, /* i : IVAS total bitrate */ #ifndef SBA_MODE_CLEAN_UP - const SBA_MODE sba_mode, /* i : SBA mode */ + const SBA_MODE sba_mode, /* i : SBA mode */ #else - const IVAS_FORMAT ivas_format, /* i : IVAS format */ + const IVAS_FORMAT ivas_format, /* i : IVAS format */ #endif - const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */ - int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */ + const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */ + int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */ ) { int16_t block, band; @@ -2965,7 +2965,7 @@ void ivas_dirac_dec_render_sf( #ifdef SBA_MODE_CLEAN_UP if ( st_ivas->ivas_format == SBA_FORMAT ) #else - if ( st_ivas->sba_mode == SBA_MODE_SPAR ) + if ( st_ivas->sba_mode == SBA_MODE_SPAR ) #endif { for ( ch = 0; ch < nchan_transport; ch++ ) @@ -2999,7 +2999,7 @@ void ivas_dirac_dec_render_sf( #ifdef SBA_MODE_CLEAN_UP if ( st_ivas->nchan_transport == 1 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag && st_ivas->ivas_format != SBA_FORMAT ) #else - if ( st_ivas->nchan_transport == 1 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag && st_ivas->sba_mode != SBA_MODE_SPAR ) + if ( st_ivas->nchan_transport == 1 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag && st_ivas->sba_mode != SBA_MODE_SPAR ) #endif { Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0]; @@ -3513,7 +3513,7 @@ void ivas_dirac_dec_render_sf( #ifdef SBA_MODE_CLEAN_UP else if ( st_ivas->ivas_format == SBA_FORMAT ) #else - else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) + else if ( st_ivas->sba_mode == SBA_MODE_SPAR ) #endif { for ( ch = 0; ch < hDirAC->hOutSetup.nchan_out_woLFE; ch++ ) diff --git a/lib_dec/ivas_qmetadata_dec.c b/lib_dec/ivas_qmetadata_dec.c index 951feaf8c7..9ae1e8a281 100644 --- a/lib_dec/ivas_qmetadata_dec.c +++ b/lib_dec/ivas_qmetadata_dec.c @@ -1202,10 +1202,10 @@ int16_t ivas_qmetadata_dec_sid_decode( int16_t *index, /* i/o: bitstream position */ const int16_t nchan_transport, /* i : number of transport channels */ int16_t *element_mode, /* o : element mode */ - const int16_t ivas_format /* i : IVAS format */ + const int16_t ivas_format /* i : IVAS format */ #ifndef SBA_MODE_CLEAN_UP , - const SBA_MODE sba_mode /* i : SBA mode */ + const SBA_MODE sba_mode /* i : SBA mode */ #endif ) { diff --git a/lib_dec/ivas_sba_rendering_internal.c b/lib_dec/ivas_sba_rendering_internal.c index a5aa73e004..03569eed8a 100644 --- a/lib_dec/ivas_sba_rendering_internal.c +++ b/lib_dec/ivas_sba_rendering_internal.c @@ -255,7 +255,7 @@ int16_t ivas_sba_remapTCs( nchan_remapped = st_ivas->nchan_transport; #ifdef SBA_MODE_CLEAN_UP - if ( nchan_remapped == 3 ) + if ( nchan_remapped == 3 ) #else if ( ( st_ivas->sba_mode != SBA_MODE_SPAR && st_ivas->sba_planar && nchan_remapped >= 3 ) || ( ( st_ivas->sba_mode == SBA_MODE_SPAR ) && nchan_remapped == 3 ) ) diff --git a/lib_dec/ivas_sce_dec.c b/lib_dec/ivas_sce_dec.c index ac52b56e1e..f405f50c04 100755 --- a/lib_dec/ivas_sce_dec.c +++ b/lib_dec/ivas_sce_dec.c @@ -154,7 +154,7 @@ ivas_error ivas_sce_dec( ( st_ivas->sba_mode != SBA_MODE_SPAR ) ) #else if ( ( st_ivas->hQMetaData != NULL ) && - ( st_ivas->ivas_format != SBA_FORMAT) ) + ( st_ivas->ivas_format != SBA_FORMAT ) ) #endif { if ( st_ivas->mc_mode == MC_MODE_MCMASA && ivas_total_brate >= MCMASA_SEPARATE_BRATE ) diff --git a/lib_enc/ivas_dirac_enc.c b/lib_enc/ivas_dirac_enc.c index 9d070a549d..774b995e9a 100644 --- a/lib_enc/ivas_dirac_enc.c +++ b/lib_enc/ivas_dirac_enc.c @@ -700,7 +700,7 @@ void computeReferencePower_enc( const SBA_MODE sba_mode /* i : SBA mode */ #else const IVAS_FORMAT ivas_format, /* i : ivas_format */ - int16_t ref_power_w /* i : use 0 if hodirac is enabled */ + int16_t ref_power_w /* i : use 0 if hodirac is enabled */ #endif , const int16_t nchan_ana /* i : number of analysis channels */ diff --git a/lib_enc/ivas_enc.c b/lib_enc/ivas_enc.c index b5090a2732..5d53a12c17 100644 --- a/lib_enc/ivas_enc.c +++ b/lib_enc/ivas_enc.c @@ -223,7 +223,7 @@ ivas_error ivas_enc( #ifndef SBA_MODE_CLEAN_UP if ( st_ivas->hQMetaData != NULL && st_ivas->sba_mode != SBA_MODE_SPAR ) #else - if ( st_ivas->hQMetaData != NULL && ivas_format != SBA_FORMAT) + if ( st_ivas->hQMetaData != NULL && ivas_format != SBA_FORMAT ) #endif { #ifndef SBA_MODE_CLEAN_UP diff --git a/lib_enc/ivas_mcmasa_enc.c b/lib_enc/ivas_mcmasa_enc.c index ee7dd02d42..0c158afbb7 100644 --- a/lib_enc/ivas_mcmasa_enc.c +++ b/lib_enc/ivas_mcmasa_enc.c @@ -988,7 +988,7 @@ void ivas_mcmasa_param_est_enc( 0, num_freq_bands, #ifndef SBA_MODE_CLEAN_UP - SBA_MODE_NONE, + SBA_MODE_NONE, #else MC_FORMAT, 0, diff --git a/lib_enc/ivas_mct_enc.c b/lib_enc/ivas_mct_enc.c index eee20e403e..185d9b483e 100644 --- a/lib_enc/ivas_mct_enc.c +++ b/lib_enc/ivas_mct_enc.c @@ -61,11 +61,11 @@ static void set_mct_enc_params( MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */ const int32_t ivas_total_brate, /* i : IVAS total bitrate */ #ifndef SBA_MODE_CLEAN_UP - const SBA_MODE sba_mode, /* i : SBA mode */ + const SBA_MODE sba_mode, /* i : SBA mode */ #else - const IVAS_FORMAT ivas_format, /* i : IVAS_FORMAT */ + const IVAS_FORMAT ivas_format, /* i : IVAS_FORMAT */ #endif - const uint16_t b_nchan_change /* i : flag indicating different channel count */ + const uint16_t b_nchan_change /* i : flag indicating different channel count */ ) { int16_t n; diff --git a/lib_enc/ivas_qmetadata_enc.c b/lib_enc/ivas_qmetadata_enc.c index 0f3d67a476..53cc475927 100644 --- a/lib_enc/ivas_qmetadata_enc.c +++ b/lib_enc/ivas_qmetadata_enc.c @@ -1007,7 +1007,7 @@ void ivas_qmetadata_enc_sid_encode( const int16_t ivas_format /* i : IVAS format */ #ifndef SBA_MODE_CLEAN_UP , - const SBA_MODE sba_mode /* i : SBA mode */ + const SBA_MODE sba_mode /* i : SBA mode */ #endif ) { @@ -1079,7 +1079,7 @@ void ivas_qmetadata_enc_sid_encode( assert( q_metadata->no_directions == 1 && "Qmetadata SID: only one direction supported!" ); #ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) -#else +#else if ( ivas_format == SBA_FORMAT ) #endif { @@ -1264,15 +1264,15 @@ void ivas_qmetadata_enc_sid_encode( *------------------------------------------------------------------------*/ void reset_metadata_spatial( - const IVAS_FORMAT ivas_format, /* i : IVAS format */ - BSTR_ENC_HANDLE hMetaData, /* i/o: metadata bitstream handle */ - const int32_t element_brate, /* i : element bitrate */ - int32_t *total_brate, /* o : total bitrate */ - const int32_t core_brate, /* i : core bitrate */ - const int16_t nb_bits_metadata /* i : number of meatdata bits */ + const IVAS_FORMAT ivas_format, /* i : IVAS format */ + BSTR_ENC_HANDLE hMetaData, /* i/o: metadata bitstream handle */ + const int32_t element_brate, /* i : element bitrate */ + int32_t *total_brate, /* o : total bitrate */ + const int32_t core_brate, /* i : core bitrate */ + const int16_t nb_bits_metadata /* i : number of meatdata bits */ #ifndef SBA_MODE_CLEAN_UP , - const SBA_MODE sba_mode /* i : SBA mode */ + const SBA_MODE sba_mode /* i : SBA mode */ #endif ) { diff --git a/lib_enc/ivas_spar_encoder.c b/lib_enc/ivas_spar_encoder.c index 854888d7b1..0d21477259 100644 --- a/lib_enc/ivas_spar_encoder.c +++ b/lib_enc/ivas_spar_encoder.c @@ -670,7 +670,7 @@ static ivas_error ivas_spar_enc_process( #ifndef SBA_MODE_CLEAN_UP if ( ( ivas_total_brate != hEncoderConfig->last_ivas_total_brate ) && ( !hEncoderConfig->spar_reconfig_flag ) ) #else - if ( ( ivas_total_brate != hEncoderConfig->last_ivas_total_brate ) && ( !hSpar->spar_reconfig_flag) ) + if ( ( ivas_total_brate != hEncoderConfig->last_ivas_total_brate ) && ( !hSpar->spar_reconfig_flag ) ) #endif { if ( ( error = ivas_spar_md_enc_init( hSpar->hMdEnc, hEncoderConfig, sba_order ) ) != IVAS_ERR_OK ) -- GitLab From 892759fb1607d50b686423d14a9bcac88f2f2a1f Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Fri, 26 May 2023 15:15:07 +0530 Subject: [PATCH 12/14] Addressing review comments: set 1 --- lib_com/ivas_cnst.h | 1 + lib_com/ivas_dirac_com.c | 4 ++++ lib_com/ivas_fb_mixer.c | 1 + lib_com/ivas_prot.h | 3 +++ lib_com/ivas_sba_config.c | 1 + lib_dec/ivas_corecoder_dec_reconfig.c | 1 + lib_dec/ivas_dec.c | 6 +++++- lib_dec/ivas_dirac_dec.c | 5 +++++ lib_dec/ivas_init_dec.c | 3 +++ lib_dec/ivas_sba_dec.c | 1 + lib_dec/ivas_sba_dirac_stereo_dec.c | 1 + lib_dec/ivas_sba_rendering_internal.c | 2 ++ lib_enc/ivas_dirac_enc.c | 8 ++++---- lib_enc/ivas_enc.c | 1 + lib_enc/ivas_init_enc.c | 3 +++ lib_enc/ivas_masa_enc.c | 2 ++ lib_enc/ivas_mct_enc.c | 2 ++ lib_enc/ivas_qmetadata_enc.c | 2 ++ lib_enc/ivas_sba_enc.c | 3 ++- lib_enc/ivas_sce_enc.c | 1 + lib_enc/ivas_spar_encoder.c | 2 ++ lib_enc/ivas_stat_enc.h | 3 +++ lib_rend/ivas_dirac_dec_binaural_functions.c | 1 + 23 files changed, 51 insertions(+), 6 deletions(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 256e7b7d8f..1e7ca7ae8e 100755 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -928,6 +928,7 @@ typedef enum } SBA_MODE; #endif + /*----------------------------------------------------------------------------------* * DirAC Constants *----------------------------------------------------------------------------------*/ diff --git a/lib_com/ivas_dirac_com.c b/lib_com/ivas_dirac_com.c index ac7ccc3182..e4bbe4e1c7 100644 --- a/lib_com/ivas_dirac_com.c +++ b/lib_com/ivas_dirac_com.c @@ -101,6 +101,7 @@ ivas_error ivas_dirac_config( #ifndef SBA_MODE_CLEAN_UP SBA_MODE sba_mode; #endif + int16_t *dirac_to_spar_md_bands; @@ -167,6 +168,7 @@ ivas_error ivas_dirac_config( ( (Decoder_Struct *) st_ivas )->hDirAC->hFbMdft = hFbMdft; dirac_to_spar_md_bands = ( (Decoder_Struct *) st_ivas )->hDirAC->dirac_to_spar_md_bands; } + #ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) #else @@ -214,6 +216,7 @@ ivas_error ivas_dirac_config( hConfig->enc_param_start_band = hQMetaData->q_direction[0].cfg.start_band + spar_dirac_split_band; } + #ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) { @@ -243,6 +246,7 @@ ivas_error ivas_dirac_config( } #endif } + #ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) #else diff --git a/lib_com/ivas_fb_mixer.c b/lib_com/ivas_fb_mixer.c index d9010b5c69..dbbce9afe4 100644 --- a/lib_com/ivas_fb_mixer.c +++ b/lib_com/ivas_fb_mixer.c @@ -136,6 +136,7 @@ ivas_error ivas_fb_set_cfg( else if ( ivas_format == SBA_FORMAT ) { pFb_cfg->fb_latency = NS2SA( sampling_rate, DELAY_FB_1_NS ); + #ifndef SBA_MODE_CLEAN_UP if ( sba_mode == SBA_MODE_SPAR ) { diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h index 2c06fb6870..669aff0912 100644 --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -3413,6 +3413,7 @@ void ivas_dirac_param_est_enc( const int16_t nchan_fb_in ); + #ifndef SBA_MODE_CLEAN_UP /*----------------------------------------------------------------------------------* * SBA format prototypes @@ -3584,6 +3585,7 @@ void ivas_dirac_enc_close( DIRAC_ENC_HANDLE *hDirAC, /* i/o: encoder DirAC handle */ const int32_t input_Fs /* i : input sampling_rate */ ); + #ifndef SBA_MODE_CLEAN_UP void ivas_dirac_enc( DIRAC_ENC_HANDLE hDirAC, /* i/o: encoder DirAC handle */ @@ -5730,6 +5732,7 @@ void ivas_fb_mixer_pcm_ingest( , const int16_t HOA_md_ind[IVAS_SPAR_MAX_CH] ); + #ifndef SBA_MODE_CLEAN_UP void ivas_dirac_enc_spar_delay_synchro( Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ diff --git a/lib_com/ivas_sba_config.c b/lib_com/ivas_sba_config.c index 9668331dce..450ebef791 100644 --- a/lib_com/ivas_sba_config.c +++ b/lib_com/ivas_sba_config.c @@ -46,6 +46,7 @@ #endif #include "wmc_auto.h" + #ifndef SBA_MODE_CLEAN_UP /*-------------------------------------------------------------------* * ivas_sba_mode_select() diff --git a/lib_dec/ivas_corecoder_dec_reconfig.c b/lib_dec/ivas_corecoder_dec_reconfig.c index 86aee2d164..e112a8ec04 100644 --- a/lib_dec/ivas_corecoder_dec_reconfig.c +++ b/lib_dec/ivas_corecoder_dec_reconfig.c @@ -510,6 +510,7 @@ ivas_error ivas_cldfb_dec_reconfig( } } } + #ifndef SBA_MODE_CLEAN_UP /* CLDFB Interpolation weights */ if ( st_ivas->sba_mode == SBA_MODE_SPAR && ( numCldfbAnalyses_old != numCldfbAnalyses || numCldfbSyntheses_old != numCldfbSyntheses || nchan_transport_old != st_ivas->nchan_transport ) && numCldfbAnalyses != 0 && numCldfbSyntheses != 0 ) diff --git a/lib_dec/ivas_dec.c b/lib_dec/ivas_dec.c index 070f8f1d09..3826d7d0bb 100644 --- a/lib_dec/ivas_dec.c +++ b/lib_dec/ivas_dec.c @@ -316,10 +316,11 @@ ivas_error ivas_dec( #ifndef SBA_MODE_CLEAN_UP if ( st_ivas->hQMetaData != NULL && st_ivas->sba_mode != SBA_MODE_SPAR ) #else - if ( st_ivas->hQMetaData != NULL && st_ivas->ivas_format != SBA_FORMAT ) + if ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->hQMetaData != NULL ) #endif { st = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; + #ifndef SBA_MODE_CLEAN_UP if ( st_ivas->ivas_format == SBA_FORMAT ) { @@ -347,6 +348,7 @@ ivas_error ivas_dec( if ( st_ivas->hQMetaData != NULL ) { st = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; + #ifndef SBA_MODE_CLEAN_UP ivas_dirac_dec_read_BS( ivas_total_brate, st, st_ivas->hDirAC, st_ivas->hQMetaData, &nb_bits_metadata[0], st_ivas->sba_mode, ivas_get_hodirac_flag( ivas_total_brate, st_ivas->sba_analysis_order ), @@ -412,6 +414,7 @@ ivas_error ivas_dec( if ( st_ivas->sba_dirac_stereo_flag ) { nchan_remapped = nchan_out; + #ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR ) #else @@ -446,6 +449,7 @@ ivas_error ivas_dec( if ( st_ivas->ivas_format == SBA_FORMAT ) { nchan_remapped = ivas_sba_remapTCs( output, st_ivas, output_frame ); + #ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR && ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) #else diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index f25356eaca..01ed888fb4 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -1761,6 +1761,7 @@ void ivas_dirac_dec_read_BS( /* 1 bit flag for signaling metadata to read */ b = st->bit_stream[( st->next_bit_pos )--]; ( *nb_bits )++; + #ifndef SBA_MODE_CLEAN_UP if ( sba_mode != SBA_MODE_SPAR ) { @@ -1808,6 +1809,7 @@ void ivas_dirac_dec_read_BS( set_zero( hQMetaData->q_direction[0].band_data[b].elevation, MAX_PARAM_SPATIAL_SUBFRAMES ); } } + #ifndef SBA_MODE_CLEAN_UP *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT, sba_mode ); #else @@ -1881,6 +1883,7 @@ void ivas_dirac_dec_read_BS( } } } + #ifndef SBA_MODE_CLEAN_UP *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT, sba_mode ); #else @@ -1915,6 +1918,7 @@ void ivas_dirac_dec_read_BS( } #endif + st->next_bit_pos = next_bit_pos_orig; } @@ -2068,6 +2072,7 @@ void ivas_qmetadata_to_dirac( nblocks = q_direction->cfg.nblocks; nbands = hDirAC->band_grouping[hDirAC->hConfig->nbands]; band_grouping = hDirAC->band_grouping; + #ifndef SBA_MODE_CLEAN_UP if ( ivas_total_brate <= IVAS_SID_5k2 && sba_mode != SBA_MODE_SPAR ) #else diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 22b5cc3e3f..63ee9368d3 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -279,6 +279,7 @@ ivas_error ivas_dec_setup( #endif nchan_transport_old = st_ivas->nchan_transport; nchan_transport = ( st_ivas->sid_format == SID_SBA_2TC ) ? 2 : 1; + #ifdef SBA_MODE_CLEAN_UP if ( ( nchan_transport_old != nchan_transport ) ) #else @@ -596,6 +597,7 @@ ivas_error ivas_init_decoder_front( #ifndef SBA_MODE_CLEAN_UP st_ivas->sba_mode = SBA_MODE_NONE; #endif + st_ivas->sba_dirac_stereo_flag = 0; /* HRTF binauralization latency in ns */ @@ -1016,6 +1018,7 @@ ivas_error ivas_init_decoder( } #endif } + #ifdef SBA_MODE_CLEAN_UP if ( st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV && st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV_ROOM && st_ivas->renderer_type != RENDERER_DISABLE && st_ivas->renderer_type != RENDERER_SBA_LINEAR_DEC && st_ivas->ivas_format != SBA_FORMAT ) diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index c978db9b61..a742a8f5a3 100644 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -58,6 +58,7 @@ void ivas_sba_set_cna_cng_flag( ) { int16_t n, cpe_id; + #ifdef SBA_MODE_CLEAN_UP if ( st_ivas->ivas_format == SBA_FORMAT && st_ivas->nchan_transport == 1 ) #else diff --git a/lib_dec/ivas_sba_dirac_stereo_dec.c b/lib_dec/ivas_sba_dirac_stereo_dec.c index 430e9de655..13f1401f8e 100644 --- a/lib_dec/ivas_sba_dirac_stereo_dec.c +++ b/lib_dec/ivas_sba_dirac_stereo_dec.c @@ -951,6 +951,7 @@ void ivas_sba_dirac_stereo_dec( { /* upmix ACELP BWE */ ivas_sba_dirac_stereo_compute_hb_gain( hStereoDft, hb_gain ); + #ifdef SBA_MODE_CLEAN_UP ivas_sba_dirac_stereo_upmix_hb( hb_synth_stereo, hSCE->save_hb_synth, hb_gain, output_frame, ( st_ivas->ivas_format != SBA_FORMAT || mcmasa ), sba_mono_flag, hSCE->hCoreCoder[0]->bwidth, hStereoDft ); diff --git a/lib_dec/ivas_sba_rendering_internal.c b/lib_dec/ivas_sba_rendering_internal.c index 03569eed8a..dd4af01ccf 100644 --- a/lib_dec/ivas_sba_rendering_internal.c +++ b/lib_dec/ivas_sba_rendering_internal.c @@ -269,6 +269,7 @@ int16_t ivas_sba_remapTCs( assert( ( ( st_ivas->nchan_transport == 3 ) || ( st_ivas->nchan_transport == 5 ) || ( st_ivas->nchan_transport == 7 ) ) && "Number of channels must be odd for SBA planar!" ); } #endif + if ( nchan_remapped == 4 ) { /*For planar A-format channel 2 and 3 are identical -> Z=0*/ @@ -293,6 +294,7 @@ int16_t ivas_sba_remapTCs( } } } + #ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode != SBA_MODE_SPAR ) { diff --git a/lib_enc/ivas_dirac_enc.c b/lib_enc/ivas_dirac_enc.c index 774b995e9a..d0df7a0084 100644 --- a/lib_enc/ivas_dirac_enc.c +++ b/lib_enc/ivas_dirac_enc.c @@ -100,6 +100,7 @@ ivas_error ivas_dirac_enc_open( #ifndef SBA_MODE_CLEAN_UP input_Fs = st_ivas->hEncoderConfig->input_Fs; #endif + if ( ( error = ivas_dirac_config( (void *) st_ivas, ENC ) ) != IVAS_ERR_OK ) { return error; @@ -154,16 +155,15 @@ ivas_error ivas_dirac_enc_open( } else { -#endif hDirAC->num_samples_synchro_delay = 0; for ( i = 0; i < DIRAC_MAX_ANA_CHANS; i++ ) { hDirAC->sba_synchro_buffer[i] = NULL; } -#ifndef SBA_MODE_CLEAN_UP } #endif + /* intensity 3-dim */ for ( i = 0; i < DIRAC_NUM_DIMS; i++ ) { @@ -299,7 +299,7 @@ void ivas_dirac_enc_close( { ivas_FB_mixer_close( &hDirAC->hFbMixer, input_Fs, 0 ); } - +#ifndef SBA_MODE_CLEAN_UP for ( i = 0; i < DIRAC_MAX_ANA_CHANS; i++ ) { if ( hDirAC->sba_synchro_buffer[i] != NULL ) @@ -308,7 +308,7 @@ void ivas_dirac_enc_close( hDirAC->sba_synchro_buffer[i] = NULL; } } - +#endif /* intensity 3-dim */ for ( i = 0; i < DIRAC_NUM_DIMS; i++ ) { diff --git a/lib_enc/ivas_enc.c b/lib_enc/ivas_enc.c index 5d53a12c17..64ed5c9c02 100644 --- a/lib_enc/ivas_enc.c +++ b/lib_enc/ivas_enc.c @@ -220,6 +220,7 @@ ivas_error ivas_enc( /* SBA/MASA metadata encoding and SBA/MASA metadata bitstream writing */ hMetaData = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData : st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData; + #ifndef SBA_MODE_CLEAN_UP if ( st_ivas->hQMetaData != NULL && st_ivas->sba_mode != SBA_MODE_SPAR ) #else diff --git a/lib_enc/ivas_init_enc.c b/lib_enc/ivas_init_enc.c index e2cbc9ff7f..006fb176fb 100644 --- a/lib_enc/ivas_init_enc.c +++ b/lib_enc/ivas_init_enc.c @@ -365,6 +365,7 @@ ivas_error ivas_init_encoder( #ifndef SBA_MODE_CLEAN_UP st_ivas->sba_mode = SBA_MODE_NONE; #endif + st_ivas->nchan_transport = -1; #ifdef IND_LIST_DYN @@ -521,6 +522,7 @@ ivas_error ivas_init_encoder( #ifndef SBA_MODE_CLEAN_UP st_ivas->sba_mode = ivas_sba_mode_select(); #endif + st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, st_ivas->hEncoderConfig->sba_order ); #ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR ) @@ -530,6 +532,7 @@ ivas_error ivas_init_encoder( { return error; } + #ifndef SBA_MODE_CLEAN_UP } #endif diff --git a/lib_enc/ivas_masa_enc.c b/lib_enc/ivas_masa_enc.c index ab5e0f4708..492b0dbe14 100644 --- a/lib_enc/ivas_masa_enc.c +++ b/lib_enc/ivas_masa_enc.c @@ -401,11 +401,13 @@ ivas_error ivas_masa_encode( } free( h_orig_metadata ); + #ifndef SBA_MODE_CLEAN_UP ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, masa_sid_descriptor, ivas_format, SBA_MODE_NONE ); #else ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, masa_sid_descriptor, ivas_format ); #endif + /* restore old values */ hMasa->config.numCodingBands = numCodingBands; hMasa->config.numTwoDirBands = numTwoDirBands; diff --git a/lib_enc/ivas_mct_enc.c b/lib_enc/ivas_mct_enc.c index 185d9b483e..55da6495f8 100644 --- a/lib_enc/ivas_mct_enc.c +++ b/lib_enc/ivas_mct_enc.c @@ -394,6 +394,7 @@ ivas_error create_mct_enc( /*-----------------------------------------------------------------* * Initializations *-----------------------------------------------------------------*/ + #ifndef SBA_MODE_CLEAN_UP set_mct_enc_params( hMCT, ivas_total_brate, st_ivas->sba_mode, 1 ); #else @@ -559,6 +560,7 @@ ivas_error mct_enc_reconfigure( /*-----------------------------------------------------------------* * Initializations *-----------------------------------------------------------------*/ + #ifndef SBA_MODE_CLEAN_UP set_mct_enc_params( hMCT, ivas_total_brate, st_ivas->sba_mode, b_nchan_change ); #else diff --git a/lib_enc/ivas_qmetadata_enc.c b/lib_enc/ivas_qmetadata_enc.c index 9067fd5a49..a9cb5c7631 100644 --- a/lib_enc/ivas_qmetadata_enc.c +++ b/lib_enc/ivas_qmetadata_enc.c @@ -1114,6 +1114,7 @@ void ivas_qmetadata_enc_sid_encode( { assert( ( q_direction->cfg.nbands == 5 ) && "Qmetadata SID: only 5 bands supported!" ); } + #ifndef SBA_MODE_CLEAN_UP if ( sba_mode != SBA_MODE_SPAR ) #else @@ -1425,6 +1426,7 @@ void reset_metadata_spatial( hMetaData->last_ind = hMetaData->next_ind; #endif } + return; } diff --git a/lib_enc/ivas_sba_enc.c b/lib_enc/ivas_sba_enc.c index 632fd041de..c6ff188c23 100644 --- a/lib_enc/ivas_sba_enc.c +++ b/lib_enc/ivas_sba_enc.c @@ -204,7 +204,7 @@ ivas_error ivas_sba_enc_reconfigure( } ivas_spar_config( ivas_total_brate, min( st_ivas->sba_analysis_order, IVAS_MAX_SBA_ORDER ), &st_ivas->nchan_transport, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->hSpar->core_nominal_brate, -1 ); - +#ifndef SBA_MODE_CLEAN_UP for ( n = 0; n < DIRAC_MAX_ANA_CHANS; n++ ) { if ( hDirAC->sba_synchro_buffer[n] != NULL ) @@ -214,6 +214,7 @@ ivas_error ivas_sba_enc_reconfigure( } } hDirAC->num_samples_synchro_delay = 0; +#endif hSpar = st_ivas->hSpar; if ( st_ivas->nchan_transport == 1 ) diff --git a/lib_enc/ivas_sce_enc.c b/lib_enc/ivas_sce_enc.c index be46ae8b62..87c0e8e9d3 100644 --- a/lib_enc/ivas_sce_enc.c +++ b/lib_enc/ivas_sce_enc.c @@ -204,6 +204,7 @@ ivas_error ivas_sce_enc( /*----------------------------------------------------------------* * Reset metadata *----------------------------------------------------------------*/ + #ifndef SBA_MODE_CLEAN_UP reset_metadata_spatial( ivas_format, hSCE->hMetaData, hSCE->element_brate, &st->total_brate, st->core_brate, nb_bits_metadata, st_ivas->sba_mode ); #else diff --git a/lib_enc/ivas_spar_encoder.c b/lib_enc/ivas_spar_encoder.c index 0d21477259..57e6ce003e 100644 --- a/lib_enc/ivas_spar_encoder.c +++ b/lib_enc/ivas_spar_encoder.c @@ -83,6 +83,7 @@ ivas_error ivas_spar_enc_open( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR encoder" ); } } + #ifdef SBA_MODE_CLEAN_UP hSpar->spar_reconfig_flag = 0; #endif @@ -384,6 +385,7 @@ ivas_error ivas_spar_enc( } } #endif + /* front VAD */ if ( ( error = front_vad_spar( st_ivas->hSpar, data_f[0], hEncoderConfig, input_frame ) ) != IVAS_ERR_OK ) { diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h index 3456df0eef..803613e7e7 100644 --- a/lib_enc/ivas_stat_enc.h +++ b/lib_enc/ivas_stat_enc.h @@ -591,8 +591,10 @@ typedef struct ivas_dirac_enc_data_structure PARAM_ISM_CONFIG_HANDLE hParamIsm; /* Parametric ISM handle */ IVAS_FB_MIXER_HANDLE hFbMixer; +#ifndef SBA_MODE_CLEAN_UP float *sba_synchro_buffer[DIRAC_MAX_ANA_CHANS]; int16_t num_samples_synchro_delay; +#endif /* DirAC parameter estimation */ float **direction_vector[DIRAC_NUM_DIMS]; @@ -710,6 +712,7 @@ typedef struct ivas_spar_enc_lib_t int32_t core_nominal_brate; /* Nominal bitrate for core coding */ FRONT_VAD_ENC_HANDLE hFrontVad; /* front-VAD handle */ ENC_CORE_HANDLE hCoreCoderVAD; /* core-coder handle for front-VAD module */ + #ifdef SBA_MODE_CLEAN_UP int16_t spar_reconfig_flag; #endif diff --git a/lib_rend/ivas_dirac_dec_binaural_functions.c b/lib_rend/ivas_dirac_dec_binaural_functions.c index 3caff4abd9..c3e76e7306 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions.c @@ -674,6 +674,7 @@ static void ivas_dirac_dec_binaural_internal( } } } + #ifndef SBA_MODE_CLEAN_UP if ( st_ivas->ivas_format == SBA_FORMAT && st_ivas->sba_mode == SBA_MODE_SPAR ) #else -- GitLab From 6e55737eb8e75a9e0dde6fdbe74e35384a40b830 Mon Sep 17 00:00:00 2001 From: Vidhya V P <100825@ittiam.com> Date: Fri, 26 May 2023 17:24:37 +0530 Subject: [PATCH 13/14] Clang format fix --- lib_enc/ivas_masa_enc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/ivas_masa_enc.c b/lib_enc/ivas_masa_enc.c index 492b0dbe14..cfed98617a 100644 --- a/lib_enc/ivas_masa_enc.c +++ b/lib_enc/ivas_masa_enc.c @@ -407,7 +407,7 @@ ivas_error ivas_masa_encode( #else ivas_qmetadata_enc_sid_encode( hMetaData, hQMetaData, masa_sid_descriptor, ivas_format ); #endif - + /* restore old values */ hMasa->config.numCodingBands = numCodingBands; hMasa->config.numTwoDirBands = numTwoDirBands; -- GitLab From 71161f8c9d9aaeff4d2352e5dc009f73fd36bbb4 Mon Sep 17 00:00:00 2001 From: Rivukanta Bhattacharya <100792@ittiam.com> Date: Tue, 30 May 2023 21:26:59 +0530 Subject: [PATCH 14/14] Addressing review comments: set 2 --- lib_com/ivas_dirac_com.c | 8 ++++++++ lib_dec/ivas_dec.c | 2 ++ lib_dec/ivas_init_dec.c | 6 ++++++ lib_dec/ivas_jbm_dec.c | 2 ++ lib_dec/ivas_sba_dec.c | 2 ++ lib_dec/ivas_spar_decoder.c | 10 ++++++++++ lib_dec/ivas_stat_dec.h | 2 ++ lib_enc/ivas_dirac_enc.c | 2 +- lib_enc/ivas_sba_enc.c | 2 ++ lib_enc/ivas_stat_enc.h | 2 ++ 10 files changed, 37 insertions(+), 1 deletion(-) diff --git a/lib_com/ivas_dirac_com.c b/lib_com/ivas_dirac_com.c index e4bbe4e1c7..721a6befdb 100644 --- a/lib_com/ivas_dirac_com.c +++ b/lib_com/ivas_dirac_com.c @@ -135,7 +135,11 @@ ivas_error ivas_dirac_config( { hFbMdft = NULL; } +#ifndef SBA_MODE_CLEAN_UP dirac_to_spar_md_bands = ( (Encoder_Struct *) st_ivas )->hDirAC->dirac_to_spar_md_bands; +#else + dirac_to_spar_md_bands = ( (Encoder_Struct *) st_ivas )->hSpar->dirac_to_spar_md_bands; +#endif } else { @@ -166,7 +170,11 @@ ivas_error ivas_dirac_config( hFbMdft = NULL; } ( (Decoder_Struct *) st_ivas )->hDirAC->hFbMdft = hFbMdft; +#ifndef SBA_MODE_CLEAN_UP dirac_to_spar_md_bands = ( (Decoder_Struct *) st_ivas )->hDirAC->dirac_to_spar_md_bands; +#else + dirac_to_spar_md_bands = ( (Decoder_Struct *) st_ivas )->hSpar->dirac_to_spar_md_bands; +#endif } #ifndef SBA_MODE_CLEAN_UP diff --git a/lib_dec/ivas_dec.c b/lib_dec/ivas_dec.c index 3826d7d0bb..587f3c34fc 100644 --- a/lib_dec/ivas_dec.c +++ b/lib_dec/ivas_dec.c @@ -345,6 +345,7 @@ ivas_error ivas_dec( else if ( st_ivas->ivas_format == SBA_FORMAT ) #endif { +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->hQMetaData != NULL ) { st = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; @@ -359,6 +360,7 @@ ivas_error ivas_dec( st_ivas->hSpar->dirac_to_spar_md_bands ); #endif } +#endif if ( ( error = ivas_spar_dec( st_ivas, nb_bits_metadata ) ) != IVAS_ERR_OK ) { diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 63ee9368d3..b232078417 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -690,7 +690,11 @@ ivas_error ivas_init_decoder( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ) { +#ifndef SBA_MODE_CLEAN_UP int16_t i, k, n; +#else + int16_t i, n; +#endif int16_t sce_id, cpe_id; int16_t numCldfbAnalyses, numCldfbSyntheses; #ifdef JBM_TSM_ON_TCS @@ -982,10 +986,12 @@ ivas_error ivas_init_decoder( return error; } +#ifndef SBA_MODE_CLEAN_UP for ( k = 0; k < DIRAC_MAX_NBANDS; k++ ) { st_ivas->hSpar->dirac_to_spar_md_bands[k] = st_ivas->hDirAC->dirac_to_spar_md_bands[k]; } +#endif st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band; } else diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index 37f4870960..987c55f221 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -214,6 +214,7 @@ ivas_error ivas_jbm_dec_tc( else if ( st_ivas->ivas_format == SBA_FORMAT ) #endif { +#ifndef SBA_MODE_CLEAN_UP if ( st_ivas->hQMetaData != NULL ) { st = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; @@ -223,6 +224,7 @@ ivas_error ivas_jbm_dec_tc( ivas_dirac_dec_read_BS( ivas_total_brate, st, st_ivas->hDirAC, st_ivas->hQMetaData, &nb_bits_metadata[0], hodirac_flag, st_ivas->hSpar->dirac_to_spar_md_bands ); #endif } +#endif if ( ( error = ivas_spar_dec( st_ivas, nb_bits_metadata ) ) != IVAS_ERR_OK ) { diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index 33465bb459..2d4c4cb2ab 100644 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -327,7 +327,9 @@ ivas_error ivas_sba_dec_reconfigure( if ( st_ivas->hDirAC != NULL ) { +#ifndef SBA_MODE_CLEAN_UP mvs2s( st_ivas->hDirAC->dirac_to_spar_md_bands, st_ivas->hSpar->dirac_to_spar_md_bands, DIRAC_MAX_NBANDS ); +#endif st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band; } diff --git a/lib_dec/ivas_spar_decoder.c b/lib_dec/ivas_spar_decoder.c index 3c95d4cd3b..0d028b2359 100755 --- a/lib_dec/ivas_spar_decoder.c +++ b/lib_dec/ivas_spar_decoder.c @@ -326,6 +326,16 @@ ivas_error ivas_spar_dec( bit_stream_orig = st0->bit_stream; next_bit_pos_orig = st0->next_bit_pos; +#ifdef SBA_MODE_CLEAN_UP + /* read DirAC bitstream */ + if ( st_ivas->hQMetaData != NULL ) + { + ivas_dirac_dec_read_BS( hDecoderConfig->ivas_total_brate, st0, st_ivas->hDirAC, st_ivas->hQMetaData, nb_bits_read, + ivas_get_hodirac_flag( hDecoderConfig->ivas_total_brate, st_ivas->sba_analysis_order ), + st_ivas->hSpar->dirac_to_spar_md_bands ); + } +#endif + last_bit_pos = (int16_t) ( ( hDecoderConfig->ivas_total_brate / FRAMES_PER_SEC ) - 1 ); if ( !st0->bfi && hDecoderConfig->ivas_total_brate == IVAS_SID_5k2 ) { diff --git a/lib_dec/ivas_stat_dec.h b/lib_dec/ivas_stat_dec.h index 7b39ca36a7..aacaa7aa0f 100644 --- a/lib_dec/ivas_stat_dec.h +++ b/lib_dec/ivas_stat_dec.h @@ -732,7 +732,9 @@ typedef struct ivas_dirac_dec_data_structure float power_ratios[MAX_PARAM_ISM_NBANDS][MAX_PARAM_ISM_NBLOCKS][MAX_PARAM_ISM_WAVE]; PARAM_ISM_RENDERING_HANDLE hParamIsmRendering; IVAS_FB_MIXER_HANDLE hFbMdft; +#ifndef SBA_MODE_CLEAN_UP int16_t dirac_to_spar_md_bands[DIRAC_MAX_NBANDS]; +#endif const int16_t *sba_map_tc; } DIRAC_DEC_DATA, *DIRAC_DEC_HANDLE; diff --git a/lib_enc/ivas_dirac_enc.c b/lib_enc/ivas_dirac_enc.c index d0df7a0084..de15725b65 100644 --- a/lib_enc/ivas_dirac_enc.c +++ b/lib_enc/ivas_dirac_enc.c @@ -221,8 +221,8 @@ ivas_error ivas_dirac_enc_open( #ifndef SBA_MODE_CLEAN_UP if ( st_ivas->sba_mode == SBA_MODE_SPAR ) { -#endif mvs2s( st_ivas->hDirAC->dirac_to_spar_md_bands, st_ivas->hSpar->dirac_to_spar_md_bands, DIRAC_MAX_NBANDS ); +#endif st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band; #ifndef SBA_MODE_CLEAN_UP } diff --git a/lib_enc/ivas_sba_enc.c b/lib_enc/ivas_sba_enc.c index c6ff188c23..e01de98741 100644 --- a/lib_enc/ivas_sba_enc.c +++ b/lib_enc/ivas_sba_enc.c @@ -268,7 +268,9 @@ ivas_error ivas_sba_enc_reconfigure( } } #endif +#ifndef SBA_MODE_CLEAN_UP mvs2s( hDirAC->dirac_to_spar_md_bands, hSpar->dirac_to_spar_md_bands, DIRAC_MAX_NBANDS ); +#endif hSpar->enc_param_start_band = hDirAC->hConfig->enc_param_start_band; /*-----------------------------------------------------------------* * Allocate, initialize, and configure SCE/CPE/MCT handles diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h index 803613e7e7..7690ac5b30 100644 --- a/lib_enc/ivas_stat_enc.h +++ b/lib_enc/ivas_stat_enc.h @@ -614,7 +614,9 @@ typedef struct ivas_dirac_enc_data_structure float ele_prev[NUM_ANA_SECTORS * IVAS_MAX_NUM_BANDS]; #endif +#ifndef SBA_MODE_CLEAN_UP int16_t dirac_to_spar_md_bands[DIRAC_MAX_NBANDS]; +#endif /* diffuseness */ int16_t index_buffer_intensity; -- GitLab