Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -183,6 +183,7 @@ #define NONBE_1200_ISM_JBM_BRATE_SW_FLUSH /* VA: issue 1200: fix bug in renderer flush in ISM JBM bitrate switching */ #define NONBE_FIX_1205_TD_STEREO_MOD_CT /* VA: fix mismatch of coder_type (mod_ct) btw. TD stereo encoder and decoder */ /* ##################### End NON-BE switches ########################### */ Loading lib_dec/ivas_stereo_td_dec.c +0 −1 Original line number Diff line number Diff line Loading @@ -251,7 +251,6 @@ void tdm_configure_dec( } #ifdef DEBUG_MODE_TD dbgwrite( &mod_ct, 2, 1, 320, "res/mod_ct.dec" ); dbgwrite( tdm_ratio_idx, 2, 1, 320, "res/tdm_ratio_idx.dec" ); dbgwrite( &tdm_inst_ratio_idx, 2, 1, 320, "res/tdm_inst_ratio_idx.dec" ); dbgwrite( &hStereoTD->tdm_lp_reuse_flag, 2, 1, 320, "res/tdm_lp_reuse_flag.dec" ); Loading lib_enc/ivas_decision_matrix_enc.c +22 −0 Original line number Diff line number Diff line Loading @@ -215,7 +215,18 @@ void ivas_decision_matrix_enc( if ( st->core == TCX_20_CORE && st->total_brate < STEREO_TCX_MIN_RATE ) { st->core = ACELP_CORE; #ifdef NONBE_FIX_1205_TD_STEREO_MOD_CT /* In TD stereo below 24.4 kbps we cannot overwrite the `coder_type` when it is set to TRANSITION, */ /* as it is used for TD stereo bit allocation. To ensure consistent bit allocation, it must remain unchanged on the decoder side. */ if ( st->idchan == 0 && !( element_brate <= IVAS_16k4 && st->coder_type == TRANSITION && st->element_mode == IVAS_CPE_TD ) ) { st->coder_type = AUDIO; } #else st->coder_type = AUDIO; #endif st->sp_aud_decision2 = 0; if ( st->low_rate_mode ) Loading Loading @@ -465,6 +476,16 @@ void ivas_signaling_enc( if ( st->core == ACELP_CORE ) { #ifdef NONBE_FIX_1205_TD_STEREO_MOD_CT /* write coder type */ push_indice( hBstr, IND_ACELP_SIGNALLING, st->coder_type, 3 ); if ( element_brate >= FRMT_SHP_MIN_BRATE_IVAS ) { /* write sharpening flag */ push_indice( hBstr, IND_SHARP_FLAG, st->sharpFlag, 1 ); } #else if ( element_brate < FRMT_SHP_MIN_BRATE_IVAS ) { push_indice( hBstr, IND_ACELP_SIGNALLING, st->coder_type, 3 ); Loading @@ -477,6 +498,7 @@ void ivas_signaling_enc( /* write sharpening flag */ push_indice( hBstr, IND_SHARP_FLAG, st->sharpFlag, 1 ); } #endif /* write extension layer flag to distinguish between TBE (0) and BWE (1) */ if ( st->extl_brate > 0 ) Loading lib_enc/ivas_stereo_td_enc.c +17 −1 Original line number Diff line number Diff line Loading @@ -449,6 +449,22 @@ void tdm_configure_enc( } mod_ct = AUDIO; #ifdef NONBE_FIX_1205_TD_STEREO_MOD_CT if ( hCPE->element_brate < IVAS_24k4 ) { /* In TD stereo, the TRANSITION mode has a specific bit allocation. All other formats share the same bit allocation. For these other formats, `mod_ct` is set to AUDIO to aid in debugging, though it does not have any functional impact. */ if ( !( sts[0]->localVAD == 0 && sts[0]->coder_type == TRANSITION ) && ( sts[0]->coder_type == TRANSITION || ( ( ( sts[0]->last_L_frame >= L_FRAME16k && sts[0]->flag_ACELP16k == 0 ) || ( sts[0]->last_L_frame == L_FRAME && sts[0]->flag_ACELP16k == 1 ) ) && sts[0]->last_core_brate != FRAME_NO_DATA && sts[0]->last_core_brate != SID_2k40 && sts[0]->coder_type_raw != VOICED ) ) ) { mod_ct = TRANSITION; } } #else if ( hCPE->element_brate < IVAS_24k4 ) { mod_ct = sts[0]->coder_type; Loading @@ -462,6 +478,7 @@ void tdm_configure_enc( mod_ct = AUDIO; } } #endif /* Correction of tdm_inst_ratio_idx in case of TC in the seecondary channel */ if ( hStereoTD->flag_skip_DMX == 0 && hStereoTD->tdm_LRTD_flag == 1 && sts[1]->tc_cnt > 1 /*&& abs(hStereoTD->tdm_inst_ratio_idx-LRTD_STEREO_MID_IS_PRIM) > 5*/ ) Loading Loading @@ -549,7 +566,6 @@ void tdm_configure_enc( #ifdef DEBUG_MODE_TD dbgwrite( &hStereoTD->tdm_low_rate_mode, 2, 1, 320, "res/tdm_low_rate_mode_c" ); dbgwrite( &hStereoTD->tdm_lp_reuse_flag, 2, 1, 320, "res/tdm_lp_reuse_flag_c" ); dbgwrite( &mod_ct, 2, 1, 320, "res/mod_ct.enc" ); #endif /*----------------------------------------------------------------* Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -183,6 +183,7 @@ #define NONBE_1200_ISM_JBM_BRATE_SW_FLUSH /* VA: issue 1200: fix bug in renderer flush in ISM JBM bitrate switching */ #define NONBE_FIX_1205_TD_STEREO_MOD_CT /* VA: fix mismatch of coder_type (mod_ct) btw. TD stereo encoder and decoder */ /* ##################### End NON-BE switches ########################### */ Loading
lib_dec/ivas_stereo_td_dec.c +0 −1 Original line number Diff line number Diff line Loading @@ -251,7 +251,6 @@ void tdm_configure_dec( } #ifdef DEBUG_MODE_TD dbgwrite( &mod_ct, 2, 1, 320, "res/mod_ct.dec" ); dbgwrite( tdm_ratio_idx, 2, 1, 320, "res/tdm_ratio_idx.dec" ); dbgwrite( &tdm_inst_ratio_idx, 2, 1, 320, "res/tdm_inst_ratio_idx.dec" ); dbgwrite( &hStereoTD->tdm_lp_reuse_flag, 2, 1, 320, "res/tdm_lp_reuse_flag.dec" ); Loading
lib_enc/ivas_decision_matrix_enc.c +22 −0 Original line number Diff line number Diff line Loading @@ -215,7 +215,18 @@ void ivas_decision_matrix_enc( if ( st->core == TCX_20_CORE && st->total_brate < STEREO_TCX_MIN_RATE ) { st->core = ACELP_CORE; #ifdef NONBE_FIX_1205_TD_STEREO_MOD_CT /* In TD stereo below 24.4 kbps we cannot overwrite the `coder_type` when it is set to TRANSITION, */ /* as it is used for TD stereo bit allocation. To ensure consistent bit allocation, it must remain unchanged on the decoder side. */ if ( st->idchan == 0 && !( element_brate <= IVAS_16k4 && st->coder_type == TRANSITION && st->element_mode == IVAS_CPE_TD ) ) { st->coder_type = AUDIO; } #else st->coder_type = AUDIO; #endif st->sp_aud_decision2 = 0; if ( st->low_rate_mode ) Loading Loading @@ -465,6 +476,16 @@ void ivas_signaling_enc( if ( st->core == ACELP_CORE ) { #ifdef NONBE_FIX_1205_TD_STEREO_MOD_CT /* write coder type */ push_indice( hBstr, IND_ACELP_SIGNALLING, st->coder_type, 3 ); if ( element_brate >= FRMT_SHP_MIN_BRATE_IVAS ) { /* write sharpening flag */ push_indice( hBstr, IND_SHARP_FLAG, st->sharpFlag, 1 ); } #else if ( element_brate < FRMT_SHP_MIN_BRATE_IVAS ) { push_indice( hBstr, IND_ACELP_SIGNALLING, st->coder_type, 3 ); Loading @@ -477,6 +498,7 @@ void ivas_signaling_enc( /* write sharpening flag */ push_indice( hBstr, IND_SHARP_FLAG, st->sharpFlag, 1 ); } #endif /* write extension layer flag to distinguish between TBE (0) and BWE (1) */ if ( st->extl_brate > 0 ) Loading
lib_enc/ivas_stereo_td_enc.c +17 −1 Original line number Diff line number Diff line Loading @@ -449,6 +449,22 @@ void tdm_configure_enc( } mod_ct = AUDIO; #ifdef NONBE_FIX_1205_TD_STEREO_MOD_CT if ( hCPE->element_brate < IVAS_24k4 ) { /* In TD stereo, the TRANSITION mode has a specific bit allocation. All other formats share the same bit allocation. For these other formats, `mod_ct` is set to AUDIO to aid in debugging, though it does not have any functional impact. */ if ( !( sts[0]->localVAD == 0 && sts[0]->coder_type == TRANSITION ) && ( sts[0]->coder_type == TRANSITION || ( ( ( sts[0]->last_L_frame >= L_FRAME16k && sts[0]->flag_ACELP16k == 0 ) || ( sts[0]->last_L_frame == L_FRAME && sts[0]->flag_ACELP16k == 1 ) ) && sts[0]->last_core_brate != FRAME_NO_DATA && sts[0]->last_core_brate != SID_2k40 && sts[0]->coder_type_raw != VOICED ) ) ) { mod_ct = TRANSITION; } } #else if ( hCPE->element_brate < IVAS_24k4 ) { mod_ct = sts[0]->coder_type; Loading @@ -462,6 +478,7 @@ void tdm_configure_enc( mod_ct = AUDIO; } } #endif /* Correction of tdm_inst_ratio_idx in case of TC in the seecondary channel */ if ( hStereoTD->flag_skip_DMX == 0 && hStereoTD->tdm_LRTD_flag == 1 && sts[1]->tc_cnt > 1 /*&& abs(hStereoTD->tdm_inst_ratio_idx-LRTD_STEREO_MID_IS_PRIM) > 5*/ ) Loading Loading @@ -549,7 +566,6 @@ void tdm_configure_enc( #ifdef DEBUG_MODE_TD dbgwrite( &hStereoTD->tdm_low_rate_mode, 2, 1, 320, "res/tdm_low_rate_mode_c" ); dbgwrite( &hStereoTD->tdm_lp_reuse_flag, 2, 1, 320, "res/tdm_lp_reuse_flag_c" ); dbgwrite( &mod_ct, 2, 1, 320, "res/mod_ct.enc" ); #endif /*----------------------------------------------------------------* Loading