Loading lib_com/ivas_prot.h +4 −1 Original line number Diff line number Diff line Loading @@ -200,6 +200,9 @@ ivas_error pre_proc_front_ivas( const int16_t front_vad_dtx_flag, /* i : front-VAD DTX flag to overwrite VAD decision*/ const IVAS_FORMAT ivas_format, /* i : IVAS format */ const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */ #ifdef NONBE_1211_DTX_BR_SWITCHING const int32_t last_ivas_total_brate, /* i : last IVAS total bitrate */ #endif const int32_t ivas_total_brate /* i : IVAS total bitrate */ #ifdef DEBUG_MODE_INFO , const int16_t ch_idx Loading lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -172,6 +172,8 @@ #define NONBE_1233_HQ_CLASSIFIER_DIV_BY_ZERO /* Eri: issue 1233: Address possible division by zero in hf_spectrum_sparseness() */ #define NONE_BE_FIX_BASOP_1044_OSBA_PRERENDER_MIX_GAINS /* DLB: adjust prerendering and mixing gain in OSBA encoder. This is fix to float codes*/ #define NONBE_1211_DTX_BR_SWITCHING /* VA: port float issue 1211: fix crash in MASA DTX bitrate switching */ /* #################### End FIXES switches ############################ */ #define BASOP_NOGLOB /* Disable global symbols in BASOPs, Overflow/Carry in BASOPs disabled, additional BASOPs in case of Overflow */ Loading lib_com/prot.h +13 −10 Original line number Diff line number Diff line Loading @@ -3903,6 +3903,9 @@ void td_cng_enc_init( void dtx( Encoder_State *st, /* i/o: encoder state structure */ #ifdef NONBE_1211_DTX_BR_SWITCHING const int32_t last_ivas_total_brate, /* i : last IVAS total bitrate */ #endif const int32_t ivas_total_brate, /* i : IVAS total bitrate */ const int16_t vad, /* i : VAD flag for DTX */ const float speech[] /* i : Pointer to the speech frame */ Loading lib_enc/amr_wb_enc.c +6 −0 Original line number Diff line number Diff line Loading @@ -310,7 +310,13 @@ void amr_wb_enc( { st->fd_cng_reset_flag = 0; } #ifdef NONBE_1211_DTX_BR_SWITCHING dtx( st, -1, -1, vad_flag_dtx, inp ); #else dtx( st, -1, vad_flag_dtx, inp ); #endif /*----------------------------------------------------------------* * Noise energy down-ward update and total noise energy estimation * Long-term energies and relative frame energy updates Loading lib_enc/dtx.c +28 −1 Original line number Diff line number Diff line Loading @@ -79,6 +79,9 @@ static void update_SID_cnt( DTX_ENC_HANDLE hDtxEnc, const int32_t core_brate, co void dtx( Encoder_State *st, /* i/o: encoder state structure */ #ifdef NONBE_1211_DTX_BR_SWITCHING const int32_t last_ivas_total_brate, /* i : last IVAS total bitrate */ #endif const int32_t ivas_total_brate, /* i : IVAS total bitrate */ const int16_t vad, /* i : VAD flag for DTX */ const float speech[] /* i : Pointer to the speech frame */ Loading @@ -87,17 +90,31 @@ void dtx( float alpha; DTX_ENC_HANDLE hDtxEnc = st->hDtxEnc; int16_t last_br_cng_flag, last_br_flag, br_dtx_flag; #ifdef NONBE_1211_DTX_BR_SWITCHING int32_t total_brate_ref; total_brate_ref = st->total_brate; #endif if ( st->dtx_sce_sba != 0 ) { last_br_cng_flag = 1; last_br_flag = 1; #ifndef NONBE_1211_DTX_BR_SWITCHING br_dtx_flag = 1; #endif } else { last_br_cng_flag = st->last_total_brate_cng <= MAX_BRATE_DTX_EVS || st->lp_noise < 15 || ( st->element_mode == IVAS_SCE && st->last_total_brate_cng <= MAX_BRATE_DTX_IVAS ); #ifdef NONBE_1211_DTX_BR_SWITCHING last_br_flag = ( st->element_mode == EVS_MONO && st->last_total_brate <= MAX_BRATE_DTX_EVS ) || ( st->element_mode != EVS_MONO && last_ivas_total_brate <= MAX_BRATE_DTX_IVAS ) || st->lp_noise < 15; #else last_br_flag = st->last_total_brate <= MAX_BRATE_DTX_EVS || st->lp_noise < 15 || ( st->element_mode == IVAS_SCE && st->last_total_brate <= MAX_BRATE_DTX_IVAS ); br_dtx_flag = 0; #endif } /* Initialization */ Loading Loading @@ -127,6 +144,7 @@ void dtx( last_br_cng_flag ) { st->total_brate = st->last_total_brate_cng; if ( !( st->total_brate == ACELP_7k20 && st->Opt_SC_VBR ) ) { st->Opt_SC_VBR = 0; Loading Loading @@ -170,6 +188,9 @@ void dtx( * Select SID or FRAME_NO_DATA frame if DTX is enabled *------------------------------------------------------------------------*/ #ifdef NONBE_1211_DTX_BR_SWITCHING br_dtx_flag = 1; #endif if ( st->dtx_sce_sba == 0 ) { br_dtx_flag = ( st->element_mode == EVS_MONO && st->total_brate <= MAX_BRATE_DTX_EVS ) || Loading Loading @@ -258,6 +279,12 @@ void dtx( reset_indices_enc( st->hBstr, st->hBstr->nb_ind_tot ); } } #ifdef NONBE_1211_DTX_BR_SWITCHING else if ( st->element_mode != EVS_MONO ) { st->total_brate = total_brate_ref; } #endif /*------------------------------------------------------------------------* * Reset counters when in active frame (neither SID nor FRAME_NO_DATA frame) Loading Loading
lib_com/ivas_prot.h +4 −1 Original line number Diff line number Diff line Loading @@ -200,6 +200,9 @@ ivas_error pre_proc_front_ivas( const int16_t front_vad_dtx_flag, /* i : front-VAD DTX flag to overwrite VAD decision*/ const IVAS_FORMAT ivas_format, /* i : IVAS format */ const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */ #ifdef NONBE_1211_DTX_BR_SWITCHING const int32_t last_ivas_total_brate, /* i : last IVAS total bitrate */ #endif const int32_t ivas_total_brate /* i : IVAS total bitrate */ #ifdef DEBUG_MODE_INFO , const int16_t ch_idx Loading
lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -172,6 +172,8 @@ #define NONBE_1233_HQ_CLASSIFIER_DIV_BY_ZERO /* Eri: issue 1233: Address possible division by zero in hf_spectrum_sparseness() */ #define NONE_BE_FIX_BASOP_1044_OSBA_PRERENDER_MIX_GAINS /* DLB: adjust prerendering and mixing gain in OSBA encoder. This is fix to float codes*/ #define NONBE_1211_DTX_BR_SWITCHING /* VA: port float issue 1211: fix crash in MASA DTX bitrate switching */ /* #################### End FIXES switches ############################ */ #define BASOP_NOGLOB /* Disable global symbols in BASOPs, Overflow/Carry in BASOPs disabled, additional BASOPs in case of Overflow */ Loading
lib_com/prot.h +13 −10 Original line number Diff line number Diff line Loading @@ -3903,6 +3903,9 @@ void td_cng_enc_init( void dtx( Encoder_State *st, /* i/o: encoder state structure */ #ifdef NONBE_1211_DTX_BR_SWITCHING const int32_t last_ivas_total_brate, /* i : last IVAS total bitrate */ #endif const int32_t ivas_total_brate, /* i : IVAS total bitrate */ const int16_t vad, /* i : VAD flag for DTX */ const float speech[] /* i : Pointer to the speech frame */ Loading
lib_enc/amr_wb_enc.c +6 −0 Original line number Diff line number Diff line Loading @@ -310,7 +310,13 @@ void amr_wb_enc( { st->fd_cng_reset_flag = 0; } #ifdef NONBE_1211_DTX_BR_SWITCHING dtx( st, -1, -1, vad_flag_dtx, inp ); #else dtx( st, -1, vad_flag_dtx, inp ); #endif /*----------------------------------------------------------------* * Noise energy down-ward update and total noise energy estimation * Long-term energies and relative frame energy updates Loading
lib_enc/dtx.c +28 −1 Original line number Diff line number Diff line Loading @@ -79,6 +79,9 @@ static void update_SID_cnt( DTX_ENC_HANDLE hDtxEnc, const int32_t core_brate, co void dtx( Encoder_State *st, /* i/o: encoder state structure */ #ifdef NONBE_1211_DTX_BR_SWITCHING const int32_t last_ivas_total_brate, /* i : last IVAS total bitrate */ #endif const int32_t ivas_total_brate, /* i : IVAS total bitrate */ const int16_t vad, /* i : VAD flag for DTX */ const float speech[] /* i : Pointer to the speech frame */ Loading @@ -87,17 +90,31 @@ void dtx( float alpha; DTX_ENC_HANDLE hDtxEnc = st->hDtxEnc; int16_t last_br_cng_flag, last_br_flag, br_dtx_flag; #ifdef NONBE_1211_DTX_BR_SWITCHING int32_t total_brate_ref; total_brate_ref = st->total_brate; #endif if ( st->dtx_sce_sba != 0 ) { last_br_cng_flag = 1; last_br_flag = 1; #ifndef NONBE_1211_DTX_BR_SWITCHING br_dtx_flag = 1; #endif } else { last_br_cng_flag = st->last_total_brate_cng <= MAX_BRATE_DTX_EVS || st->lp_noise < 15 || ( st->element_mode == IVAS_SCE && st->last_total_brate_cng <= MAX_BRATE_DTX_IVAS ); #ifdef NONBE_1211_DTX_BR_SWITCHING last_br_flag = ( st->element_mode == EVS_MONO && st->last_total_brate <= MAX_BRATE_DTX_EVS ) || ( st->element_mode != EVS_MONO && last_ivas_total_brate <= MAX_BRATE_DTX_IVAS ) || st->lp_noise < 15; #else last_br_flag = st->last_total_brate <= MAX_BRATE_DTX_EVS || st->lp_noise < 15 || ( st->element_mode == IVAS_SCE && st->last_total_brate <= MAX_BRATE_DTX_IVAS ); br_dtx_flag = 0; #endif } /* Initialization */ Loading Loading @@ -127,6 +144,7 @@ void dtx( last_br_cng_flag ) { st->total_brate = st->last_total_brate_cng; if ( !( st->total_brate == ACELP_7k20 && st->Opt_SC_VBR ) ) { st->Opt_SC_VBR = 0; Loading Loading @@ -170,6 +188,9 @@ void dtx( * Select SID or FRAME_NO_DATA frame if DTX is enabled *------------------------------------------------------------------------*/ #ifdef NONBE_1211_DTX_BR_SWITCHING br_dtx_flag = 1; #endif if ( st->dtx_sce_sba == 0 ) { br_dtx_flag = ( st->element_mode == EVS_MONO && st->total_brate <= MAX_BRATE_DTX_EVS ) || Loading Loading @@ -258,6 +279,12 @@ void dtx( reset_indices_enc( st->hBstr, st->hBstr->nb_ind_tot ); } } #ifdef NONBE_1211_DTX_BR_SWITCHING else if ( st->element_mode != EVS_MONO ) { st->total_brate = total_brate_ref; } #endif /*------------------------------------------------------------------------* * Reset counters when in active frame (neither SID nor FRAME_NO_DATA frame) Loading