Commit b895f542 authored by reutelhuber's avatar reutelhuber
Browse files

change double functions to float counterparts in DFT stereo

parent 332bc972
Loading
Loading
Loading
Loading
Loading

lib_com/options.h

100644 → 100755
+1 −0
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@
/*#define SPLIT_REND_WITH_HEAD_ROT  */                  /* Dlb,FhG: Split Rendering contributions 21 and 35 */

#define FIX_643_PCA_OPTION                              /* VA: issue 643: rename PCA bypass command-line option */
#define FIX_811_DFT_DOUBLE_TO_FLOAT                     /* FhG: issue 811: change double precision functions to float in DFT Stereo */

/* #################### End BE switches ################################## */

lib_dec/ivas_stereo_dft_dec.c

100644 → 100755
+8 −0
Original line number Diff line number Diff line
@@ -135,10 +135,18 @@ static void stereo_dft_dequantize_res_gains_f(

        /* compensate for the offset and extract/remove sign of first index */
        sign = ind1[i] < 15 ? -1 : 1;
#ifdef  FIX_811_DFT_DOUBLE_TO_FLOAT
        i1 = (int16_t) floorf( ind1[i] < 15 ? 15 - ind1[i] : ind1[i] - 15 );
#else
        i1 = (int16_t) floor( ind1[i] < 15 ? 15 - ind1[i] : ind1[i] - 15 );
#endif
        fi = ( ind1[i] < 15 ? 15 - ind1[i] : ind1[i] - 15 ) - i1;

#ifdef  FIX_811_DFT_DOUBLE_TO_FLOAT
        j1 = (int16_t) floorf( ind2[i] );
#else
        j1 = (int16_t) floor( ind2[i] );
#endif
        fj = ind2[i] - j1;

        /* choose base indices for interpolation */

lib_enc/ivas_stereo_dft_enc.c

100644 → 100755
+12 −0
Original line number Diff line number Diff line
@@ -2695,7 +2695,11 @@ static void stereo_dft_enc_compute_prm(
            {
                hStereoDft->dot_prod_real_smooth[b2] = 0.5f * hStereoDft->dot_prod_real_smooth[b2] + 0.5f * dot_prod_real2;
                hStereoDft->dot_prod_img_smooth[b2] = 0.5f * hStereoDft->dot_prod_img_smooth[b2] + 0.5f * dot_prod_img2;
#ifdef  FIX_811_DFT_DOUBLE_TO_FLOAT
                pIpd[b2] = (float) atan2f( hStereoDft->dot_prod_img_smooth[b2], hStereoDft->dot_prod_real_smooth[b2] );
#else
                pIpd[b2] = (float) atan2( hStereoDft->dot_prod_img_smooth[b2], hStereoDft->dot_prod_real_smooth[b2] );
#endif

                ipd_smooth[b2] = stereo_dft_calc_mean_bipd( &pIpd[b2], hStereoDft->ipd_buf[b2] );

@@ -2825,7 +2829,11 @@ static void stereo_dft_enc_compute_prm(
                {
                    conversion_factor = 2.f / 3;
                }
#ifdef  FIX_811_DFT_DOUBLE_TO_FLOAT
                dItd32 = (int16_t) floorf( conversion_factor * hStereoDft->hItd->deltaItd[k_offset] + 0.5f );
#else
                dItd32 = (int16_t) floor( conversion_factor * hStereoDft->hItd->deltaItd[k_offset] + 0.5f );
#endif

                gain_offset = stereo_dft_gain_offset( c, dItd32 );
                pPredGain[b] = max( 0, pPredGain[b] - gain_offset );
@@ -2861,7 +2869,11 @@ static void stereo_dft_enc_compute_prm(
            hStereoDft->sum_dot_prod_real = ( 1.f - hStereoDft->sfm ) * hStereoDft->sum_dot_prod_real + hStereoDft->sfm * sum_dot_prod_real;
            hStereoDft->sum_dot_prod_img = ( 1.f - hStereoDft->sfm ) * hStereoDft->sum_dot_prod_img + hStereoDft->sfm * sum_dot_prod_img;

#ifdef  FIX_811_DFT_DOUBLE_TO_FLOAT
            pgIpd[0] = (float) atan2f( hStereoDft->sum_dot_prod_img, hStereoDft->sum_dot_prod_real );
#else
            pgIpd[0] = (float) atan2( hStereoDft->sum_dot_prod_img, hStereoDft->sum_dot_prod_real );
#endif

            stereo_dft_gipd_stabilization( &pgIpd[0], hStereoDft->prev_gipd, ipd_mean_change );
            hStereoDft->prev_gipd = pgIpd[0];
+4 −0
Original line number Diff line number Diff line
@@ -1368,7 +1368,11 @@ void stereo_dft_enc_compute_itd(

        if ( hItd->deltaItd[k_offset - 1] != 0 && itd_max_flip == 0 )
        {
#ifdef  FIX_811_DFT_DOUBLE_TO_FLOAT
            int16_t tmp_itd = (int16_t) floorf( ( ( hItd->prev_itd ) * ( (float) input_frame / 640 ) ) + 0.5f );
#else
            int16_t tmp_itd = (int16_t) floor( ( ( hItd->prev_itd ) * ( (float) input_frame / 640 ) ) + 0.5f );
#endif
            hItd->deltaItd[k_offset] = -1.0f * tmp_itd - hItd->td_itd[k_offset];
        }
    }
+4 −0
Original line number Diff line number Diff line
@@ -83,7 +83,11 @@ static void stereo_td_get_td_itd(
    {
        assert( ( input_Fs % 16000 ) == 0 && "sampling frequency should be divisible by 16000" );
        d = (int16_t) ( input_Fs / 16000 );
#ifdef  FIX_811_DFT_DOUBLE_TO_FLOAT
        *td_itd_32 = 2 * (int16_t) floorf( itd / d + 0.5f );
#else
        *td_itd_32 = 2 * (int16_t) floor( itd / d + 0.5f );
#endif
        *td_itd = ( ( *td_itd_32 ) / 2 ) * d;
    }