Commit 57a968fa authored by norvell's avatar norvell
Browse files

Merge with ivas-float-update

parents ec60f21a 5b6c15b1
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -192,6 +192,7 @@
#define FIX_ISSUE_2008_MISSING_CODE_FROM_PORTING        /* FhG: Issue 2008: Code deleted while porting float-main MR !1504 (BASOP issue 1565)*/
#define ADJUST_MCT_CHANNELS_MAX                         /* FhG: set correct max mct channels constant*/
#define FIX_1053_REVERB_RECONFIGURATION
#define FIX_1179_USAN_PHASEECU                          /* Eri: issue 1179:  better handling of 16 bit wrap around for very long(>200ms) FER-bursts   */
#define NONBE_1246_INF_COHERENCE_IN_HIGH_LEVEL_DTX      /* Ericsson: Issue 1246: High level input which triggers DTX can lead to numerical overflow in coherence calculation */
#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 */
+30 −0
Original line number Diff line number Diff line
@@ -2110,6 +2110,12 @@ static void hq_phase_ecu(

    if ( !prev_bfi || ( prev_bfi && *last_fec && ( *time_offs == output_frame ) ) )
    {
#ifdef FIX_1179_USAN_PHASEECU
        if ( !( prev_bfi && *last_fec && ( element_mode == EVS_MONO ) ) )
        {
            *time_offs = 0; /* IVAS reset of offset time counter, timeoffset variable later also used to calculate burst length */
        }
#else
        if ( prev_bfi && *last_fec && element_mode == EVS_MONO )
        {
            *time_offs += 0;
@@ -2127,7 +2133,23 @@ static void hq_phase_ecu(

        if ( prev_bfi && *last_fec )
        {

#ifdef FIX_1179_USAN_PHASEECU
            if ( element_mode != EVS_MONO )
            {
                *time_offs = (int16_t) ( *time_offs + output_frame ); /* USAN avoid risk of internal int32_t  in "+="  */
                if ( *time_offs <= 0 )
                {                                     /* detected wrap around  of st->time_offs */
                    *time_offs = (int16_t) INT16_MAX; /* keep a very high value so that the long term muting stays on */
                }
            }
            else
            {
                *time_offs = (int16_t) ( *time_offs + output_frame ); /* EVS_MONO BE compatible, but EVS CR needed as wrap will cause burst length muting envelope instability issues */
            }
#else
            *time_offs += output_frame;
#endif
        }
    }
    else
@@ -2136,7 +2158,11 @@ static void hq_phase_ecu(
        if ( *time_offs <= 0 )
        {
            /* detect wrap around  of st->time_offs */
#ifdef FIX_1179_USAN_PHASEECU
            *time_offs = (int16_t) INT16_MAX; /* high value --> continued muting will ensure that the now saturated seed is not creating tones */
#else
            *time_offs = MAX16B; /* continued muting will ensure that the now fixed seeds are not creating tones */
#endif
        }

#ifdef NONBE_FIX_1180_HQMDCT_PHECU_LT_MUTING
@@ -2152,7 +2178,11 @@ static void hq_phase_ecu(
    seed = *time_offs;
    if ( *num_p > 0 )
    {
#ifdef FIX_1179_USAN_PHASEECU
        seed = (int16_t) ( seed + plocs[*num_p - 1] ); /* explicit cast and "+="  not used,  as it "+="  may create a cast from 32 bit to 16 bit, triggering USAN   */
#else
        seed += plocs[*num_p - 1];
#endif
    }

    subst_spec( plocs, plocsi, num_p, *time_offs, X, mag_chg, ph_dith, old_is_transient, output_frame, &seed, alpha, beta, *beta_mute, Xavg, element_mode, ph_ecu_lookahead, noise_fac );
+11 −0
Original line number Diff line number Diff line
@@ -568,6 +568,17 @@ columns are the Euler angles yaw, pitch, and roll. The rotations are applied in
The yaw angle rotates around the z axis, the pitch angle rotates aroud the new y axis, and the roll angle 
rotates around the new x axis.

In case of 6 DoF support for rendering, the head rotation trajectory file may also include a listener 
position in absolute Cartesian coordinates on the x-, y- and z-axis. Note that the listener position is 
expressed in absolute coordinates, while the listener orientation is expressed as scene displacement. 
An example line from a headtracking file of a listener facing forward, positioned at x=3.0, y=4.0 and z=0, 
could be:

-3.0,0.0,0.0,0.0,3.0,4.0,0.0

Note that the listener position applies for listener orientation expressed both in Quaternions and Euler angles.


For the Head rotation operation modes, external trajectory files are available:

headrot.csv