diff --git a/lib_com/options.h b/lib_com/options.h index bb61c714ce58404929dfb3adc9559e1f7653e596..13f2c757e01eb07852a6a7b910b2e23972e92bc8 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -137,6 +137,8 @@ #define FIX_1053_REVERB_RECONFIGURATION #define TMP_FIX_1119_SPLIT_RENDERING_VOIP /* FhG: Add error check for unsupported config: split rendering with VoIP mode */ #define FIX_1113_EXTREND_ISAR /* FhG: issue 1113: fix external renderer asserts for FOA/HOA2 and CLDFB config */ +#define NONBE_1122_JBM_FIX_PLAYOUT_DELAY_IN_DTX /* FhG: Avoid JBM ignoring safety margin and setting playout delay to 0 during DTX */ +#define NONBE_1122_KEEP_EVS_MODE_UNCHANGED /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR. */ #define FIX_938_COMPILER_WARNING /* FhG: Fix compiler warning in ivas_mdct_core_reconstruct() */ #define FIX_1376_MISSING_ISM_METADATA /* FhG: IVAS_rend: throw error if there exists an ISM input without a corresponding metadata file path */ #define FIX_1385_INIT_IGF_STOP_FREQ /* FhG: Initialize infoIGFStopFreq in init_igf_dec() */ diff --git a/lib_dec/jbm_jb4sb.h b/lib_dec/jbm_jb4sb.h index 7abe205c306eef495d15b03e6ed4822f1cb522f6..acc44ad32611f646884873a9fab5b231165ffd80 100644 --- a/lib_dec/jbm_jb4sb.h +++ b/lib_dec/jbm_jb4sb.h @@ -86,6 +86,10 @@ void JB4_Destroy( JB4_HANDLE *ph ); ivas_error JB4_Init( JB4_HANDLE h, const Word16 safetyMargin ); +#ifdef NONBE_1122_KEEP_EVS_MODE_UNCHANGED +void JB4_TMP_SetEvsCompatFlag( JB4_HANDLE h ); +#endif + JB4_DATAUNIT_HANDLE JB4_AllocDataUnit( JB4_HANDLE h ); void JB4_FreeDataUnit( JB4_HANDLE h, JB4_DATAUNIT_HANDLE dataUnit ); diff --git a/lib_dec/jbm_jb4sb_fx.c b/lib_dec/jbm_jb4sb_fx.c index 261954e0f322c603190c1f724b9533ae733094ad..6357c3a1bc70165220d678a281b327c663a0e179 100644 --- a/lib_dec/jbm_jb4sb_fx.c +++ b/lib_dec/jbm_jb4sb_fx.c @@ -198,6 +198,9 @@ struct JB4 JB4_DATAUNIT_HANDLE freeMemorySlots[MAX_JBM_SLOTS]; UWord16 nFreeMemorySlots; /*@} */ +#ifdef NONBE_1122_KEEP_EVS_MODE_UNCHANGED + bool evsMode; +#endif }; /* JB4 */ @@ -323,6 +326,10 @@ ivas_error JB4_Create( } h->nFreeMemorySlots = MAX_JBM_SLOTS; move16(); +#ifdef NONBE_1122_KEEP_EVS_MODE_UNCHANGED + h->evsMode = false; + move16(); +#endif *ph = h; return IVAS_ERR_OK; @@ -407,6 +414,13 @@ ivas_error JB4_Init( return IVAS_ERR_OK; } +#ifdef NONBE_1122_KEEP_EVS_MODE_UNCHANGED +void JB4_TMP_SetEvsCompatFlag( JB4_HANDLE h ) +{ + h->evsMode = true; + move16(); +} +#endif /* Returns a memory slot to store a new data unit */ JB4_DATAUNIT_HANDLE JB4_AllocDataUnit( @@ -760,11 +774,25 @@ static void JB4_targetPlayoutDelay( move32(); move32(); +#ifdef NONBE_1122_JBM_FIX_PLAYOUT_DELAY_IN_DTX +#ifdef NONBE_1122_KEEP_EVS_MODE_UNCHANGED + IF( !h->evsMode ) + { +#endif + *targetDtx = JB4_MAX( *targetDtx, (UWord32) h->safetyMargin ); + move32(); +#ifdef NONBE_1122_KEEP_EVS_MODE_UNCHANGED + } +#endif + *targetStartUp = JB4_MAX( *targetStartUp, (UWord32) h->safetyMargin ); + move32(); +#else if ( LT_64( *targetStartUp, 60 ) ) { *targetStartUp = 60; move32(); } +#endif return; } diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index 1e67b7110d9d15f030ed6c0e80c100abb45f6ad8..51af2036b5f44d259966d497b7046a880da76e0d 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -942,6 +942,13 @@ ivas_error IVAS_DEC_EnableVoIP( return IVAS_ERR_FAILED_ALLOC; } +#ifdef NONBE_1122_KEEP_EVS_MODE_UNCHANGED + if ( EQ_16( hIvasDec->mode, IVAS_DEC_MODE_EVS ) ) + { + JB4_TMP_SetEvsCompatFlag( hIvasDec->hVoIP->hJBM ); + } +#endif + return IVAS_ERR_OK; }