Commit 006a6d91 authored by Jan Kiene's avatar Jan Kiene
Browse files

port MR 2318 from float

Fix non-BE between optimization levels in dft stereo for Apple Clang - Alternative Version
parent 5f9a3530
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -196,6 +196,7 @@
#define FIX_1383_HEAD_TRACK_SANITIZER                   /* Nok: issue 1383: Fix head tracking struc values reading in renderer */
#define FIX_1411_IGF_CRASH_BW_SWITCHING                 /* FhG: Fix for issue 1411: fixes crash that can happen for IGF with BW switching and DTX*/
#define NONBE_MDCT_ST_DTX_FIX_SUBOPT_SPATIAL_CNG       /* FhG: Fix MDCT-Stereo comfort noise for certain noise types */
#define NONBE_FIX_NONBE_BETWEEN_OPTIMIZATION_LEVELS    /* FhG: fix non-BE in DFT stereo encoder between optimization levels */

// object-editing feature porting
#define FIX_HRTF_LOAD_API                               // solves API conflicts between HRTF and object-editing features
+12 −0
Original line number Diff line number Diff line
@@ -1318,12 +1318,24 @@ void stereo_dft_enc_process(

        if ( hStereoDft->hItd->deltaItd[k_offset] != 0 && hStereoDft->hConfig->dmx_active )
        {
#ifdef NONBE_FIX_NONBE_BETWEEN_OPTIMIZATION_LEVELS
            /* Note: this variable is used as an in-between step when passing the angle to the trig functions.
             *       this keeps the compilter from applying optimizations at higher optimizaton levels which can break bit-exactness */
            volatile float alpha_tmp;
#endif
            /*time shift channels*/
            alpha = -2.0f * EVS_PI * hStereoDft->hItd->deltaItd[k_offset] / hStereoDft->NFFT;
            c = 1.f; /*cos(0)*/
            s = 0.f; /*sin(0)*/
#ifdef NONBE_FIX_NONBE_BETWEEN_OPTIMIZATION_LEVELS

            alpha_tmp = alpha;
            c1 = cosf( alpha_tmp );
            s1 = sinf( alpha_tmp );
#else
            c1 = cosf( alpha );
            s1 = sinf( alpha );
#endif

            if ( alpha >= 0 )
            {