Commit 3c0d7273 authored by vaclav's avatar vaclav
Browse files

port FLP issue 1277: Fix Mismatch in DTX high-rate threshold between EVS float...

port FLP issue 1277: Fix Mismatch in DTX high-rate threshold between EVS float and BASOP; under NONBE_FIX_1277_EVS_DTX_HIGH_RATE_THRESHOLD
parent ecb2d1dd
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -178,6 +178,8 @@
#define FIX_920_IGF_INIT_ERROR                          /* FhG: issue 920: fix bitrate mismatch in initial IGF config to avoid error message in same cases */
#define NONBE_1273_ISM_METADATA_COUNTER                 /* VA: FLP issue 1273: fix counter overflow in ISM metadata encoder */
#define NONBE_FIX_GSC_BSTR                              /* VA: issue 1264 FLP (1189 BASOP): Fix bitstream synchronization between encoder and decoder in ACELP GSC in OMASA */
#define NONBE_FIX_1277_EVS_DTX_HIGH_RATE_THRESHOLD      /* VA/Eri: FLP issue 1277: Fix Mismatch in DTX high-rate threshold between EVS float and BASOP */


/* #################### End FIXES switches ############################ */

+28 −0
Original line number Diff line number Diff line
@@ -65,6 +65,13 @@

#define MAX_BRATE_DTX_EVS  ACELP_24k40 /* maximum bitrate to which the default DTX is applied in EVS; otherwise DTX is applied only in silence */
#define MAX_BRATE_DTX_IVAS IVAS_80k    /* maximum bitrate to which the default DTX is applied in IVAS; otherwise DTX is applied only in silence */

#ifdef NONBE_FIX_1277_EVS_DTX_HIGH_RATE_THRESHOLD
#define DTX_THR_EVS 15 /* lp_noise threshold for DTX at higher bitrates in EVS */ // ToDo: to be removed once EVS is CR fixed
#define DTX_THR     5                                                             /* lp_noise threshold for DTX at higher bitrates */
#endif


/*-------------------------------------------------------------------*
 * Local function prototypes
 *-------------------------------------------------------------------*/
@@ -92,6 +99,15 @@ void dtx(
    int16_t last_br_cng_flag, last_br_flag, br_dtx_flag;
#ifdef NONBE_1211_DTX_BR_SWITCHING
    int32_t total_brate_ref;
#ifdef NONBE_FIX_1277_EVS_DTX_HIGH_RATE_THRESHOLD
    int16_t dtx_thr;

    dtx_thr = DTX_THR;
    if ( st->element_mode == EVS_MONO )
    {
        dtx_thr = DTX_THR_EVS; // ToDo: to be removed once EVS is CR fixed
    }
#endif

    total_brate_ref = st->total_brate;
#endif
@@ -106,11 +122,19 @@ void dtx(
    }
    else
    {
#ifdef NONBE_FIX_1277_EVS_DTX_HIGH_RATE_THRESHOLD
        last_br_cng_flag = st->last_total_brate_cng <= MAX_BRATE_DTX_EVS || st->lp_noise < dtx_thr || ( st->element_mode == IVAS_SCE && st->last_total_brate_cng <= MAX_BRATE_DTX_IVAS );
#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 );
#endif
#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 ) ||
#ifdef NONBE_FIX_1277_EVS_DTX_HIGH_RATE_THRESHOLD
                       st->lp_noise < dtx_thr;
#else
                       st->lp_noise < 15;
#endif
#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;
@@ -195,7 +219,11 @@ void dtx(
    {
        br_dtx_flag = ( st->element_mode == EVS_MONO && st->total_brate <= MAX_BRATE_DTX_EVS ) ||
                      ( st->element_mode != EVS_MONO && ivas_total_brate <= MAX_BRATE_DTX_IVAS ) ||
#ifdef NONBE_FIX_1277_EVS_DTX_HIGH_RATE_THRESHOLD
                      st->lp_noise < dtx_thr;
#else
                      st->lp_noise < 15;
#endif
    }

    if ( st->Opt_DTX_ON && vad == 0 &&