Loading lib_com/ivas_prot.h +11 −7 Original line number Diff line number Diff line Loading @@ -3001,7 +3001,7 @@ void ivas_dirac_param_est_enc( const int16_t input_frame #ifdef SBA_HOA_HBR_IMPROV , const int16_t merged_sba_mode const SBA_MODE sba_mode #endif ); Loading Loading @@ -3063,6 +3063,14 @@ int16_t ivas_sba_get_nchan_metadata( const int16_t sba_order /* i : Ambisonic (SBA) order */ ); #ifdef SBA_HOA_HBR_IMPROV /*! r: get the flag to code SPAR HOA MD for all band */ int16_t ivas_sba_get_spar_hoa_md_flag( const int16_t sba_order, /* i : Ambisonic (SBA) order */ const int32_t ivas_total_brate /* i : IVAS total bitrate */ ); #endif void ivas_sba_zero_vert_comp( float sba_data[][L_FRAME48k], /* i/o: SBA data frame */ const int16_t sba_order, /* i : Ambisonic (SBA) order */ Loading Loading @@ -3870,10 +3878,6 @@ ivas_error ivas_spar_md_enc_open( ivas_spar_md_enc_state_t **hMdEnc, /* i/o: SPAR MD encoder handle */ const ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : configuration structure */ const int16_t sba_order /* i : Ambisonic (SBA) order */ #ifdef SBA_HOA_HBR_IMPROV , const int16_t spar_hoa_md_flag /* i : flag to send HOA MD for all bands */ #endif ); void ivas_spar_md_enc_close( Loading Loading @@ -3951,7 +3955,7 @@ ivas_error ivas_spar_md_dec_open( const int16_t num_channels /* i : number of internal channels */ #ifdef SBA_HOA_HBR_IMPROV , const int16_t spar_hoa_md_flag /* i : flag to send HOA MD for all bands */ const int16_t sba_order /* i : flag to send HOA MD for all bands */ #endif ); Loading Loading @@ -4780,7 +4784,7 @@ void computeReferencePower_enc( const int16_t num_freq_bands /* i : Number of frequency bands */ #ifdef SBA_HOA_HBR_IMPROV , const int16_t merged_sba_mode const SBA_MODE sba_mode /* i : SBA mode */ #endif ); Loading lib_com/ivas_sba_config.c +25 −0 Original line number Diff line number Diff line Loading @@ -289,6 +289,31 @@ int16_t ivas_sba_get_nchan_metadata( return ( nb_channels ); } #ifdef SBA_HOA_HBR_IMPROV /*-------------------------------------------------------------------* * ivas_sba_get_spar_hoa_md_flag() * * et the flag to code SPAR HOA MD for all band *-------------------------------------------------------------------*/ /*! r: get the flag to code SPAR HOA MD for all band */ int16_t ivas_sba_get_spar_hoa_md_flag( const int16_t sba_order, /* i : Ambisonic (SBA) order */ const int32_t ivas_total_brate /* i : IVAS total bitrate */ ) { int16_t spar_hoa_md_flag = 0; if ( sba_order > 1 && ivas_total_brate >= IVAS_256k ) { spar_hoa_md_flag = 1; } else { spar_hoa_md_flag = 0; } return spar_hoa_md_flag; } #endif /*-------------------------------------------------------------------* * ivas_sba_zero_vert_comp() Loading lib_dec/ivas_spar_decoder.c +1 −15 Original line number Diff line number Diff line Loading @@ -69,9 +69,6 @@ ivas_error ivas_spar_dec_open( IVAS_FB_CFG *fb_cfg; int16_t i, j, b, active_w_mixing; int32_t output_Fs; #ifdef SBA_HOA_HBR_IMPROV int16_t spar_hoa_md_flag; #endif error = IVAS_ERR_OK; sba_order_internal = min( st_ivas->sba_analysis_order, IVAS_MAX_SBA_ORDER ); Loading @@ -83,17 +80,6 @@ ivas_error ivas_spar_dec_open( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR decoder" ); } #ifdef SBA_HOA_HBR_IMPROV if ( st_ivas->sba_order > 1 && st_ivas->hDecoderConfig->ivas_total_brate >= IVAS_256k ) { spar_hoa_md_flag = 1; } else { spar_hoa_md_flag = 0; } #endif output_Fs = st_ivas->hDecoderConfig->output_Fs; /* TD decorr. */ Loading @@ -106,7 +92,7 @@ ivas_error ivas_spar_dec_open( if ( ( error = ivas_spar_md_dec_open( &hSpar->hMdDec, st_ivas->hDecoderConfig, num_channels_internal #ifdef SBA_HOA_HBR_IMPROV , spar_hoa_md_flag sba_order_internal #endif ) ) != IVAS_ERR_OK ) { Loading lib_dec/ivas_spar_md_dec.c +10 −8 Original line number Diff line number Diff line Loading @@ -254,7 +254,7 @@ ivas_error ivas_spar_md_dec_open( const int16_t num_channels /* i : number of internal channels */ #ifdef SBA_HOA_HBR_IMPROV , const int16_t spar_hoa_md_flag /* i : flag to send HOA MD for all bands */ const int16_t sba_order /* i : SBA order */ #endif ) { Loading @@ -274,7 +274,7 @@ ivas_error ivas_spar_md_dec_open( } #ifdef SBA_HOA_HBR_IMPROV hMdDec->spar_hoa_md_flag = spar_hoa_md_flag; hMdDec->spar_hoa_md_flag = ivas_sba_get_spar_hoa_md_flag( sba_order, hDecoderConfig->ivas_total_brate ); #endif hMdDec->table_idx = 0; /* just to initialize state variables*/ Loading Loading @@ -447,9 +447,16 @@ ivas_error ivas_spar_md_dec_init( float pFC[IVAS_MAX_NUM_BANDS], PR_minmax[2]; hMdDec->spar_md_cfg.gen_bs = 1; // VE2DB : always 1 - can it be removed? #ifdef SBA_HOA_HBR_IMPROV hMdDec->spar_md.num_bands = ( hMdDec->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); #else hMdDec->spar_md.num_bands = min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); #endif ivas_spar_set_bitrate_config( &hMdDec->spar_md_cfg, hMdDec->table_idx, #ifdef SBA_HOA_HBR_IMPROV ( hMdDec->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ) hMdDec->spar_md.num_bands #else min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ) #endif Loading Loading @@ -538,11 +545,6 @@ ivas_error ivas_spar_md_dec_init( ivas_clear_band_coeff_idx( hMdDec->spar_md_prev.band_coeffs_idx_mapped, IVAS_MAX_NUM_BANDS ); hMdDec->spar_md.dtx_vad = 0; #ifdef SBA_HOA_HBR_IMPROV hMdDec->spar_md.num_bands = ( hMdDec->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); #else hMdDec->spar_md.num_bands = min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); #endif hMdDec->td_decorr_flag = 1; set_f( hMdDec->spar_md.en_ratio_slow, 0.0f, IVAS_MAX_NUM_BANDS ); Loading lib_enc/ivas_dirac_enc.c +10 −5 Original line number Diff line number Diff line Loading @@ -340,7 +340,7 @@ void ivas_dirac_enc( ivas_dirac_param_est_enc( hDirAC, &( hQMetaData->q_direction[0] ), hQMetaData->useLowerRes, data_f, NULL, NULL, input_frame #ifdef SBA_HOA_HBR_IMPROV , 0 SBA_MODE_DIRAC #endif ); /* encode parameters */ Loading Loading @@ -488,7 +488,7 @@ void computeReferencePower_enc( const int16_t num_freq_bands /* i : Number of frequency bands */ #ifdef SBA_HOA_HBR_IMPROV , const int16_t merged_sba_mode const SBA_MODE sba_mode #endif ) { Loading @@ -511,8 +511,13 @@ void computeReferencePower_enc( { reference_power_W[i] += ( Cldfb_RealBuffer[0][j] * Cldfb_RealBuffer[0][j] ) + ( Cldfb_ImagBuffer[0][j] * Cldfb_ImagBuffer[0][j] ); } reference_power[i] += reference_power_W[i]; #endif #ifdef SBA_HOA_HBR_IMPROV for ( ch_idx = 1; ch_idx < DIRAC_MAX_ANA_CHANS; ch_idx++ ) #else for ( ch_idx = 0; ch_idx < DIRAC_MAX_ANA_CHANS; ch_idx++ ) #endif { /* abs()^2 */ for ( j = brange[0]; j < brange[1]; j++ ) Loading @@ -524,7 +529,7 @@ void computeReferencePower_enc( v_multc( reference_power, 0.5f, reference_power, num_freq_bands ); #ifdef SBA_HOA_HBR_IMPROV if ( merged_sba_mode ) if ( sba_mode == SBA_MODE_SPAR ) { for ( i = 0; i < num_freq_bands; i++ ) { Loading @@ -551,7 +556,7 @@ void ivas_dirac_param_est_enc( const int16_t input_frame #ifdef SBA_HOA_HBR_IMPROV , const int16_t merged_sba_mode const SBA_MODE sba_mode #endif ) { Loading Loading @@ -654,7 +659,7 @@ void ivas_dirac_param_est_enc( num_freq_bands #ifdef SBA_HOA_HBR_IMPROV , merged_sba_mode sba_mode #endif ); Loading Loading
lib_com/ivas_prot.h +11 −7 Original line number Diff line number Diff line Loading @@ -3001,7 +3001,7 @@ void ivas_dirac_param_est_enc( const int16_t input_frame #ifdef SBA_HOA_HBR_IMPROV , const int16_t merged_sba_mode const SBA_MODE sba_mode #endif ); Loading Loading @@ -3063,6 +3063,14 @@ int16_t ivas_sba_get_nchan_metadata( const int16_t sba_order /* i : Ambisonic (SBA) order */ ); #ifdef SBA_HOA_HBR_IMPROV /*! r: get the flag to code SPAR HOA MD for all band */ int16_t ivas_sba_get_spar_hoa_md_flag( const int16_t sba_order, /* i : Ambisonic (SBA) order */ const int32_t ivas_total_brate /* i : IVAS total bitrate */ ); #endif void ivas_sba_zero_vert_comp( float sba_data[][L_FRAME48k], /* i/o: SBA data frame */ const int16_t sba_order, /* i : Ambisonic (SBA) order */ Loading Loading @@ -3870,10 +3878,6 @@ ivas_error ivas_spar_md_enc_open( ivas_spar_md_enc_state_t **hMdEnc, /* i/o: SPAR MD encoder handle */ const ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : configuration structure */ const int16_t sba_order /* i : Ambisonic (SBA) order */ #ifdef SBA_HOA_HBR_IMPROV , const int16_t spar_hoa_md_flag /* i : flag to send HOA MD for all bands */ #endif ); void ivas_spar_md_enc_close( Loading Loading @@ -3951,7 +3955,7 @@ ivas_error ivas_spar_md_dec_open( const int16_t num_channels /* i : number of internal channels */ #ifdef SBA_HOA_HBR_IMPROV , const int16_t spar_hoa_md_flag /* i : flag to send HOA MD for all bands */ const int16_t sba_order /* i : flag to send HOA MD for all bands */ #endif ); Loading Loading @@ -4780,7 +4784,7 @@ void computeReferencePower_enc( const int16_t num_freq_bands /* i : Number of frequency bands */ #ifdef SBA_HOA_HBR_IMPROV , const int16_t merged_sba_mode const SBA_MODE sba_mode /* i : SBA mode */ #endif ); Loading
lib_com/ivas_sba_config.c +25 −0 Original line number Diff line number Diff line Loading @@ -289,6 +289,31 @@ int16_t ivas_sba_get_nchan_metadata( return ( nb_channels ); } #ifdef SBA_HOA_HBR_IMPROV /*-------------------------------------------------------------------* * ivas_sba_get_spar_hoa_md_flag() * * et the flag to code SPAR HOA MD for all band *-------------------------------------------------------------------*/ /*! r: get the flag to code SPAR HOA MD for all band */ int16_t ivas_sba_get_spar_hoa_md_flag( const int16_t sba_order, /* i : Ambisonic (SBA) order */ const int32_t ivas_total_brate /* i : IVAS total bitrate */ ) { int16_t spar_hoa_md_flag = 0; if ( sba_order > 1 && ivas_total_brate >= IVAS_256k ) { spar_hoa_md_flag = 1; } else { spar_hoa_md_flag = 0; } return spar_hoa_md_flag; } #endif /*-------------------------------------------------------------------* * ivas_sba_zero_vert_comp() Loading
lib_dec/ivas_spar_decoder.c +1 −15 Original line number Diff line number Diff line Loading @@ -69,9 +69,6 @@ ivas_error ivas_spar_dec_open( IVAS_FB_CFG *fb_cfg; int16_t i, j, b, active_w_mixing; int32_t output_Fs; #ifdef SBA_HOA_HBR_IMPROV int16_t spar_hoa_md_flag; #endif error = IVAS_ERR_OK; sba_order_internal = min( st_ivas->sba_analysis_order, IVAS_MAX_SBA_ORDER ); Loading @@ -83,17 +80,6 @@ ivas_error ivas_spar_dec_open( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR decoder" ); } #ifdef SBA_HOA_HBR_IMPROV if ( st_ivas->sba_order > 1 && st_ivas->hDecoderConfig->ivas_total_brate >= IVAS_256k ) { spar_hoa_md_flag = 1; } else { spar_hoa_md_flag = 0; } #endif output_Fs = st_ivas->hDecoderConfig->output_Fs; /* TD decorr. */ Loading @@ -106,7 +92,7 @@ ivas_error ivas_spar_dec_open( if ( ( error = ivas_spar_md_dec_open( &hSpar->hMdDec, st_ivas->hDecoderConfig, num_channels_internal #ifdef SBA_HOA_HBR_IMPROV , spar_hoa_md_flag sba_order_internal #endif ) ) != IVAS_ERR_OK ) { Loading
lib_dec/ivas_spar_md_dec.c +10 −8 Original line number Diff line number Diff line Loading @@ -254,7 +254,7 @@ ivas_error ivas_spar_md_dec_open( const int16_t num_channels /* i : number of internal channels */ #ifdef SBA_HOA_HBR_IMPROV , const int16_t spar_hoa_md_flag /* i : flag to send HOA MD for all bands */ const int16_t sba_order /* i : SBA order */ #endif ) { Loading @@ -274,7 +274,7 @@ ivas_error ivas_spar_md_dec_open( } #ifdef SBA_HOA_HBR_IMPROV hMdDec->spar_hoa_md_flag = spar_hoa_md_flag; hMdDec->spar_hoa_md_flag = ivas_sba_get_spar_hoa_md_flag( sba_order, hDecoderConfig->ivas_total_brate ); #endif hMdDec->table_idx = 0; /* just to initialize state variables*/ Loading Loading @@ -447,9 +447,16 @@ ivas_error ivas_spar_md_dec_init( float pFC[IVAS_MAX_NUM_BANDS], PR_minmax[2]; hMdDec->spar_md_cfg.gen_bs = 1; // VE2DB : always 1 - can it be removed? #ifdef SBA_HOA_HBR_IMPROV hMdDec->spar_md.num_bands = ( hMdDec->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); #else hMdDec->spar_md.num_bands = min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); #endif ivas_spar_set_bitrate_config( &hMdDec->spar_md_cfg, hMdDec->table_idx, #ifdef SBA_HOA_HBR_IMPROV ( hMdDec->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ) hMdDec->spar_md.num_bands #else min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ) #endif Loading Loading @@ -538,11 +545,6 @@ ivas_error ivas_spar_md_dec_init( ivas_clear_band_coeff_idx( hMdDec->spar_md_prev.band_coeffs_idx_mapped, IVAS_MAX_NUM_BANDS ); hMdDec->spar_md.dtx_vad = 0; #ifdef SBA_HOA_HBR_IMPROV hMdDec->spar_md.num_bands = ( hMdDec->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); #else hMdDec->spar_md.num_bands = min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); #endif hMdDec->td_decorr_flag = 1; set_f( hMdDec->spar_md.en_ratio_slow, 0.0f, IVAS_MAX_NUM_BANDS ); Loading
lib_enc/ivas_dirac_enc.c +10 −5 Original line number Diff line number Diff line Loading @@ -340,7 +340,7 @@ void ivas_dirac_enc( ivas_dirac_param_est_enc( hDirAC, &( hQMetaData->q_direction[0] ), hQMetaData->useLowerRes, data_f, NULL, NULL, input_frame #ifdef SBA_HOA_HBR_IMPROV , 0 SBA_MODE_DIRAC #endif ); /* encode parameters */ Loading Loading @@ -488,7 +488,7 @@ void computeReferencePower_enc( const int16_t num_freq_bands /* i : Number of frequency bands */ #ifdef SBA_HOA_HBR_IMPROV , const int16_t merged_sba_mode const SBA_MODE sba_mode #endif ) { Loading @@ -511,8 +511,13 @@ void computeReferencePower_enc( { reference_power_W[i] += ( Cldfb_RealBuffer[0][j] * Cldfb_RealBuffer[0][j] ) + ( Cldfb_ImagBuffer[0][j] * Cldfb_ImagBuffer[0][j] ); } reference_power[i] += reference_power_W[i]; #endif #ifdef SBA_HOA_HBR_IMPROV for ( ch_idx = 1; ch_idx < DIRAC_MAX_ANA_CHANS; ch_idx++ ) #else for ( ch_idx = 0; ch_idx < DIRAC_MAX_ANA_CHANS; ch_idx++ ) #endif { /* abs()^2 */ for ( j = brange[0]; j < brange[1]; j++ ) Loading @@ -524,7 +529,7 @@ void computeReferencePower_enc( v_multc( reference_power, 0.5f, reference_power, num_freq_bands ); #ifdef SBA_HOA_HBR_IMPROV if ( merged_sba_mode ) if ( sba_mode == SBA_MODE_SPAR ) { for ( i = 0; i < num_freq_bands; i++ ) { Loading @@ -551,7 +556,7 @@ void ivas_dirac_param_est_enc( const int16_t input_frame #ifdef SBA_HOA_HBR_IMPROV , const int16_t merged_sba_mode const SBA_MODE sba_mode #endif ) { Loading Loading @@ -654,7 +659,7 @@ void ivas_dirac_param_est_enc( num_freq_bands #ifdef SBA_HOA_HBR_IMPROV , merged_sba_mode sba_mode #endif ); Loading