diff --git a/lib_com/options.h b/lib_com/options.h index bb0e077519d02bfc2c97a7b1d2760b55345bbe3a..6ed5b1057ae8135e73ce4dc8f66c0e541ce09f86 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -194,6 +194,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_jb4_jmf.c b/lib_dec/jbm_jb4_jmf.c index 721a6937d0113ef4d7b2d2cf216a4f3843badb22..9abb3d97324e6fa939c77290f4e22e4774c16d33 100644 --- a/lib_dec/jbm_jb4_jmf.c +++ b/lib_dec/jbm_jb4_jmf.c @@ -208,7 +208,7 @@ int16_t JB4_JMF_PushPacket( rtpTimeDiff = (int32_t) ( rtpTimeStamp - h->lastRtpTimeStamp ); sysTimeDiff = sysTime - h->lastSysTime; - offset = sysTime - rtpTimeStamp; + offset = (int32_t) sysTime - (int32_t) rtpTimeStamp; /* get the delay (yes, signed!!!!) */ delay = sysTimeDiff - rtpTimeDiff + h->lastDelay; diff --git a/lib_dec/jbm_jb4sb.c b/lib_dec/jbm_jb4sb.c index c1e728e103f3ad24c9aaca783238674981aa87c2..ad3ba459a6c4f5209525ae9de41398cb13465765 100644 --- a/lib_dec/jbm_jb4sb.c +++ b/lib_dec/jbm_jb4sb.c @@ -199,6 +199,9 @@ struct JB4 JB4_DATAUNIT_HANDLE freeMemorySlots[MAX_JBM_SLOTS]; uint16_t nFreeMemorySlots; /*@} */ +#ifdef NONBE_1122_KEEP_EVS_MODE_UNCHANGED + bool evsMode; +#endif }; /* JB4 */ @@ -293,6 +296,9 @@ ivas_error JB4_Create( h->freeMemorySlots[iter] = &h->memorySlots[iter]; } h->nFreeMemorySlots = MAX_JBM_SLOTS; +#ifdef NONBE_1122_KEEP_EVS_MODE_UNCHANGED + h->evsMode = false; +#endif *ph = h; return IVAS_ERR_OK; @@ -369,6 +375,12 @@ 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; +} +#endif /* Returns a memory slot to store a new data unit */ JB4_DATAUNIT_HANDLE JB4_AllocDataUnit( @@ -671,10 +683,22 @@ static void JB4_targetPlayoutDelay( *targetStartUp = ( *targetMin + *targetMax ) / 2; } +#ifdef NONBE_1122_JBM_FIX_PLAYOUT_DELAY_IN_DTX +#ifdef NONBE_1122_KEEP_EVS_MODE_UNCHANGED + if ( !h->evsMode ) + { +#endif + *targetDtx = JB4_MAX( *targetDtx, (uint32_t) h->safetyMargin ); +#ifdef NONBE_1122_KEEP_EVS_MODE_UNCHANGED + } +#endif + *targetStartUp = JB4_MAX( *targetStartUp, (uint32_t) h->safetyMargin ); +#else if ( *targetStartUp < 60 ) { *targetStartUp = 60; } +#endif return; } diff --git a/lib_dec/jbm_jb4sb.h b/lib_dec/jbm_jb4sb.h index 3d48723495cbf32fe3b37a358acda235a2a6d1af..8155d66ae9fafd953e854cb501aeab433b8fb28d 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 int16_t 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/lib_dec.c b/lib_dec/lib_dec.c index 25cf78924fa032f4168d4fdad529c5f17be6a8b5..f44d6e63a91041552f8dd815755d433b84e2d89d 100644 --- a/lib_dec/lib_dec.c +++ b/lib_dec/lib_dec.c @@ -784,6 +784,13 @@ ivas_error IVAS_DEC_EnableVoIP( return IVAS_ERR_FAILED_ALLOC; } +#ifdef NONBE_1122_KEEP_EVS_MODE_UNCHANGED + if ( hIvasDec->mode == IVAS_DEC_MODE_EVS ) + { + JB4_TMP_SetEvsCompatFlag( hIvasDec->hVoIP->hJBM ); + } +#endif + return IVAS_ERR_OK; }