Commit e9701ce1 authored by sekine's avatar sekine
Browse files

Remove unnecessary code.

parent ae58d3f0
Loading
Loading
Loading
Loading
+2 −12
Original line number Diff line number Diff line
@@ -150,18 +150,8 @@
#define DIRAC_DRCT_GAIN_TUNING                          /* issue 64: tuning of DirAC energy-compensation gains */

/* NTT switches */
///////#define DEBUG_STEREO_DMX
//#define STEREO_AVE_DOWNMIX
#ifndef STEREO_AVE_DOWNMIX

//#define NTT_UPDATE_ITD_SW
//#define NTT_REMOVE_EPS_ROM
//#define REDUCED_POC
//#define DELAYED_SUM2

//#define REDUCED_POC5A
///////////#define REDUCED_POC6
#endif
#define NTT_UPDATE_ITD_SW
#define NTT_REMOVE_EPS_ROM

/* ################## End DEVELOPMENT switches ######################### */
/* clang-format on */
+1 −495
Original line number Diff line number Diff line
@@ -78,10 +78,6 @@ static void create_M_signal( const float srcL[], const float srcR[], float dmx[]
static float find_poc_peak( STEREO_DMX_EVS_POC_HANDLE hPOC, float itd[], const int16_t input_frame, const float ratio );
static void calc_energy( const float src1[], const float src2[], float energy[], const int16_t input_frame, const float ratio );

#ifdef DEBUG_STEREO_DMX
FILE *fp;
#endif

/*-------------------------------------------------------------------*
 * estimate_itd_wnd_fft()
 *
@@ -159,27 +155,14 @@ static void calc_poc(
    const float *c, *s;
    float *P;
    float tmp1, tmp2, Lr, Li, Rr, Ri, gamma, igamma, iN;
#ifdef REDUCED_POC
    float specPOr[L_FRAME48k / 2 + 1], specPOi[L_FRAME48k / 2];
    float aR, aI;
#else
    float specPOr[L_FRAME48k], specPOi[L_FRAME48k];
#endif
    float tmpPOC1[L_FRAME48k], tmpPOC2[L_FRAME48k];
    float rfft_buf[L_FRAME48k];
    int16_t step, bias;
#ifdef REDUCED_POC6
    float add_pow, prev_pow = 0.0f;
#endif
#ifdef NTT_REMOVE_EPS_ROM
    int16_t i_for;
    int16_t cos_step, cos_max;
    float eps_cos, eps_sin, EPS;
#endif
#ifdef REDUCED_POC
#ifdef NTT_REMOVE_EPS_ROM
    int16_t j;
#endif
#endif

    /* Initialization */
@@ -192,10 +175,6 @@ static void calc_poc(
    itdLR = hPOC->itdLR;
    igamma = STEREO_DMX_EVS_POC_GAMMA * iN;
    gamma = 1.0f - igamma;
#ifndef REDUCED_POC
    set_zero( tmpPOC1, L_FRAME48k );
    set_zero( tmpPOC2, L_FRAME48k );
#endif

    if ( input_frame == L_FRAME16k )
    {
@@ -211,401 +190,8 @@ static void calc_poc(
    specPOr[0] = sign( specLr[0] ) * sign( specRr[0] ) * wnd[bias];
    specPOi[0] = 0.0f;

#ifdef REDUCED_POC
#ifdef NTT_REMOVE_EPS_ROM
    EPS = hPOC->eps;

    if ( input_frame == L_FRAME16k )
    {
        cos_step = 4;
        cos_max = input_frame;
    }
    else // for 32 kHz & 48 kHz
    {
        cos_step = 2;
        cos_max = n0;
    }

    for ( i = 1; i < n0 / 2; i++ )
    {
        Lr = specLr[i];
        Li = specLi[i];
        Rr = specRr[i];
        Ri = specRi[i];
        // i_for = i * 4;
        i_for = i * cos_step;
        eps_cos = s[cos_max - i_for] * EPS;
        eps_sin = s[i_for] * EPS;
        Lr += ( specRr[i] * eps_cos + specRi[i] * eps_sin );
        Li += ( -specRr[i] * eps_sin + specRi[i] * eps_cos );
        Rr += ( specLr[i] * eps_cos + specLi[i] * eps_sin );
        Ri += ( -specLr[i] * eps_sin + specLi[i] * eps_cos );

        specPOr[i] = ( Lr * Rr + Li * Ri );
        specPOi[i] = ( Lr * Ri - Li * Rr );

        j = n0 - i;
        Lr = specLr[j];
        Li = specLi[j];
        Rr = specRr[j];
        Ri = specRi[j];
        Lr += ( -specRr[j] * eps_cos + specRi[j] * eps_sin );
        Li += ( -specRr[j] * eps_sin - specRi[j] * eps_cos );
        Rr += ( -specLr[j] * eps_cos + specLi[j] * eps_sin );
        Ri += ( -specLr[j] * eps_sin - specLi[j] * eps_cos );

        specPOr[j] = ( Lr * Rr + Li * Ri );
        specPOi[j] = ( Lr * Ri - Li * Rr );
    }
    {
        i = n0 / 2;
        Lr = specLr[i] + specRi[i] * EPS;
        Li = specLi[i] - specRr[i] * EPS;
        Rr = specRr[i] + specLi[i] * EPS;
        Ri = specRi[i] - specLr[i] * EPS;

        specPOr[i] = ( Lr * Rr + Li * Ri );
        specPOi[i] = ( Lr * Ri - Li * Rr );
    }


#else
    for ( i = 1; i < n0; i++ )
    {
        Lr = specLr[i];
        Li = specLi[i];
        Rr = specRr[i];
        Ri = specRi[i];

        Lr += ( specRr[i] * c[i] + specRi[i] * s[i] );
        Li += ( -specRr[i] * s[i] + specRi[i] * c[i] );
        Rr += ( specLr[i] * c[i] + specLi[i] * s[i] );
        Ri += ( -specLr[i] * s[i] + specLi[i] * c[i] );

        specPOr[i] = ( Lr * Rr + Li * Ri );
        specPOi[i] = ( Lr * Ri - Li * Rr );
    }
#endif //end NTT_REMOVE_EPS_ROM
    for ( i = 1; i < 10; i++ )
    {
        specPOr[i] = sign( specPOr[i] ) * 0.866f; // low angles are more frequent
        specPOi[i] = sign( specPOi[i] ) * 0.5f;
    }
    for ( i = 10; i<n0>> 4; i++ )
    {
        specPOr[i] = sign( specPOr[i] ) * 0.7071f;
        specPOi[i] = sign( specPOi[i] ) * 0.7071f;
    }
    for ( i = n0 >> 4; i<n0>> 3; i++ )
    {
        aR = fabsf( specPOr[i] );
        aI = fabsf( specPOi[i] );
        if ( aR > aI )
        {
            specPOr[i] = sign( specPOr[i] ) * 0.92388f;  //(wnd[n0>>2]+wnd[(n0>>2)-1])*0.5f)
            specPOi[i] = sign( specPOi[i] ) * 0.382683f; //(wnd[n0>>2]+wnd[(n0>>2)-1])*0.5f)
                                                         //if (i==2)
        }
        else
        {
            specPOr[i] = sign( specPOr[i] ) * 0.382683f; //(wnd[n0>>2]+wnd[(n0>>2)-1])*0.5f)
            specPOi[i] = sign( specPOi[i] ) * 0.92388f;  //(wnd[(n0>>2)*3]+wnd[((n0>>2)*3)-1])*0.5f)
                                                         //if (i==2)
        }
    } //// 4level
    for ( i = n0 >> 3; i<n0>> 2; i++ )
    {
        aR = fabsf( specPOr[i] );
        aI = fabsf( specPOi[i] );
        if ( aR > aI )
        {
            if ( aR * 0.414213f /*tanf(EVS_PI*0.125f)*/ > aI )
            {
                specPOr[i] = sign( specPOr[i] ) * 0.980785f; //(wnd[(n0>>3)*7]+wnd[((n0>>3)*7)-1])*0.5f
                specPOi[i] = sign( specPOi[i] ) * 0.19509f;  //(wnd[n0>>3]+wnd[(n0>>3)-1])*0.5f)
            }
            else
            {
                specPOr[i] = sign( specPOr[i] ) * 0.83147f; //(wnd[(n0>>3)*5]+wnd[((n0>>3)*5)-1])*0.5f
                specPOi[i] = sign( specPOi[i] ) * 0.55557f; //(wnd[(n0>>3)*3]+wnd[(n0>>3)*3-1])*0.5f
            }
        }
        else
        {
            if ( aR /** 2.414213f*/ /*tanf(EVS_PI*6/16)*/ > aI * 0.41421356f /*cot(PI*3/8)*/ )
            {
                specPOr[i] = sign( specPOr[i] ) * 0.55557f;
                specPOi[i] = sign( specPOi[i] ) * 0.83147f;
            }
            else
            {
                specPOr[i] = sign( specPOr[i] ) * 0.19509f;
                specPOi[i] = sign( specPOi[i] ) * 0.980785f;
            }
        }
    }
    //// 8 level
    for ( i = 1; i<n0>> 2; i++ )
    {
        tmp1 = wnd[i * step + bias] * gamma;
        specPOr[i] *= tmp1;
        specPOi[i] *= tmp1;
        gamma -= igamma;
    }

#ifdef REDUCED_POC5A
    for ( i = n0 >> 2; i<n0>> 1 /*min((n0>>1), 320)*/; i++ )
#else
    for ( i = n0 >> 2; i<n0>> 1; i++ )
#endif
    {
        aR = fabsf( specPOr[i] );
        aI = fabsf( specPOi[i] );

#ifdef REDUCED_POC6
        add_pow = aR + aI;
        prev_pow = 0.2f * prev_pow + 0.8f * add_pow;
        if ( prev_pow * 0.2f > add_pow )
        {
            //fprintf(stderr, "%d skip_bin %f %f \n", i, prev_pow, aR+aI);
            specPOr[i] = 0.f;
            specPOi[i] = 0.f;
            gamma -= igamma;
            continue;
        }
#endif

        if ( aR > aI )
        {
            if ( aR * 0.4142136f /*tanf(EVS_PI*0.125f)*/ > aI )
            {
                if ( aR * 0.19891f /*tanf(EVS_PI/16)*/ > aI )
                {
                    specPOr[i] = sign( specPOr[i] ) * 0.995185f;
                    specPOi[i] = sign( specPOi[i] ) * 0.098017f;
                }
                else
                {
                    specPOr[i] = sign( specPOr[i] ) * 0.95694f;
                    specPOi[i] = sign( specPOi[i] ) * 0.290285f;
                }
            }
            else
            {
                if ( aR * 0.66818f /*tanf(EVS_PI*3/16)*/ > aI )
                {
                    specPOr[i] = sign( specPOr[i] ) * 0.881921f;
                    specPOi[i] = sign( specPOi[i] ) * 0.471397f;
                }
                else
                {
                    specPOr[i] = sign( specPOr[i] ) * 0.77301f;
                    specPOi[i] = sign( specPOi[i] ) * 0.634393f;
                }
            }
        }
        else
        {
            if ( aR /** 2.414213f*/ /*tanf(EVS_PI*6/16)*/ > aI * 0.4142136f /*cot(PI*3/8)*/ )
            {
                if ( aR /**1.49661f*/ /*tanf(EVS_PI*5/16)*/ > aI * 0.668179f /*cot(PI*5/16)*/ )
                {
                    specPOr[i] = sign( specPOr[i] ) * 0.634393f;
                    specPOi[i] = sign( specPOi[i] ) * 0.77301f;
                }
                else
                {
                    specPOr[i] = sign( specPOr[i] ) * 0.471397f;
                    specPOi[i] = sign( specPOi[i] ) * 0.881921f;
                }
            }
            else
            {
                if ( aR /**5.027339f*/ /*tanf(EVS_PI*7/16)*/ > aI * 0.198912f /*cot(PI*7/16)*/ )
                {
                    specPOr[i] = sign( specPOr[i] ) * 0.290285f;
                    specPOi[i] = sign( specPOi[i] ) * 0.95694f;
                }
                else
                {
                    specPOr[i] = sign( specPOr[i] ) * 0.098017f;
                    specPOi[i] = sign( specPOi[i] ) * 0.995158f;
                }
            }
        }

        tmp1 = wnd[i * step + bias] * gamma;
        specPOr[i] *= tmp1;
        specPOi[i] *= tmp1;
        gamma -= igamma;
    }

#ifdef REDUCED_POC5A
    for ( i = n0 >> 1; i < min( n0, 320 /*240*/ ); i++ )
#else
    for ( i = n0 >> 1; i < n0; i++ )
#endif ////// 16 level
    {
        aR = fabsf( specPOr[i] );
        aI = fabsf( specPOi[i] );

#ifdef REDUCED_POC6
        add_pow = aR + aI;
        prev_pow = 0.2f * prev_pow + 0.8f * add_pow;
        if ( prev_pow * 0.2f > add_pow )
        {
            //fprintf(stderr, "%d skip_bin %f %f \n", i, prev_pow, aR+aI);
            specPOr[i] = 0.f;
            specPOi[i] = 0.f;
            gamma -= igamma;
            continue;
        }
#endif

        if ( aR > aI )
        {
            if ( aR * 0.414213f /*tanf(EVS_PI*0.125f)*/ > aI )
            {
                if ( aR * 0.19891f /*tanf(EVS_PI/16)*/ > aI )
                {
                    if ( aR * 0.0984914f /*tanf(EVS_PI/32)*/ > aI )
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.99879f;
                        specPOi[i] = sign( specPOi[i] ) * 0.04907f;
                    }
                    else
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.98918f;
                        specPOi[i] = sign( specPOi[i] ) * 0.14763f;
                    }
                }
                else
                {
                    if ( aR * 0.303347f /*tanf(EVS_PI*3/32)*/ > aI )
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.970031f;
                        specPOi[i] = sign( specPOi[i] ) * 0.24298f;
                    }
                    else
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.941544f;
                        specPOi[i] = sign( specPOi[i] ) * 0.33689f;
                    }
                }
            }
            else
            {
                if ( aR * 0.66818f /*tanf(EVS_PI*3/16)*/ > aI )
                {
                    if ( aR * 0.534511f /*tanf(EVS_PI*5/32)*/ > aI )
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.903989f;
                        specPOi[i] = sign( specPOi[i] ) * 0.427555f;
                    }
                    else
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.857729f;
                        specPOi[i] = sign( specPOi[i] ) * 0.514103f;
                    }
                }
                else
                {
                    if ( aR * 0.8206788f /*tanf(EVS_PI*7/32)*/ > aI )
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.803208f;
                        specPOi[i] = sign( specPOi[i] ) * 0.595699f;
                    }
                    else
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.740951f;
                        specPOi[i] = sign( specPOi[i] ) * 0.671559f;
                    }
                }
            }
        }
        else
        {
            if ( aR /** 2.414213*/ /*tanf(EVS_PI*0.375f)*/ > aI * 0.4142136f )
            {
                if ( aR /**1.49661f*/ /*tanf(EVS_PI*5/16)*/ > aI * 0.6681767f )
                {
                    if ( aR /**1.21850f*/ /*tanf(EVS_PI*9/32)*/ > aI * 0.820681f )
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.671559f;
                        specPOi[i] = sign( specPOi[i] ) * 0.740951f;
                    }
                    else
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.595699f;
                        specPOi[i] = sign( specPOi[i] ) * 0.803208f;
                    }
                }
                else
                {
                    if ( aR /**1.8708684f*/ /*tanf(EVS_PI*11/32)*/ > aI * 0.5345111f )
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.514103f;
                        specPOi[i] = sign( specPOi[i] ) * 0.857729f;
                    }
                    else
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.427555f;
                        specPOi[i] = sign( specPOi[i] ) * 0.903989f;
                    }
                }
            }
            else
            {
                if ( aR /**5.027339f*/ /*tanf(EVS_PI*7/16)*/ > aI * 0.1989124f )
                {
                    if ( aR /**3.296558f*/ /*tanf(EVS_PI*13/32)*/ > aI * 0.3033467f )
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.33689f;
                        specPOi[i] = sign( specPOi[i] ) * 0.941544f;
                    }
                    else
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.24298f;
                        specPOi[i] = sign( specPOi[i] ) * 0.970031f;
                    }
                }
                else
                {
                    if ( aR /**10.15317f*/ /*tanf(EVS_PI*15/32)*/ > aI * 0.098491f )
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.14673f;
                        specPOi[i] = sign( specPOi[i] ) * 0.989177f;
                    }
                    else
                    {
                        specPOr[i] = sign( specPOr[i] ) * 0.049068f;
                        specPOi[i] = sign( specPOi[i] ) * 0.998795f;
                    }
                }
            }
        }
        tmp1 = wnd[i * step + bias] * gamma;
        specPOr[i] *= tmp1;
        specPOi[i] *= tmp1;
        gamma -= igamma;
    }
    if ( i < n0 )
    {
        gamma -= igamma * ( n0 - 320 );
    }
    for ( /* i = min(n0, 320) */; i < n0; i++ )
    {
        specPOr[i] = 0.f;
        specPOi[i] = 0.f;
    }
    specPOr[n0] = sign( specLr[n0] ) * sign( specRr[n0] ) * wnd[i * step + bias] * gamma;

    //end REDUCED_POC
#else
#ifdef NTT_REMOVE_EPS_ROM
    EPS = hPOC->eps;
    //EPS=0.009817f;
    //fprintf(stderr, "%f \n", EPS);

    if ( input_frame == L_FRAME16k )
    {
@@ -624,7 +210,6 @@ static void calc_poc(
        Li = specLi[i];
        Rr = specRr[i];
        Ri = specRi[i];
        // i_for = i * 4;
        i_for = i * cos_step;
        eps_cos = s[cos_max - i_for] * EPS;
        eps_sin = s[i_for] * EPS;
@@ -684,8 +269,8 @@ static void calc_poc(
        gamma -= igamma;
    }
#endif //end !NTT_REMOVE_EPS_ROM

    specPOr[n0] = sign( specLr[i] ) * sign( specRr[i] ) * wnd[i * step + bias] * gamma;
#endif

    rfft_buf[0] = specPOr[0];
    rfft_buf[1] = specPOr[n0];
@@ -1160,20 +745,7 @@ void stereo_dmx_evs_enc(
    float data_f[CPE_CHANNELS][L_FRAME48k];
    float dmx_data[L_FRAME48k];
    int16_t input_frame;
#ifdef DEBUG_STEREO_DMX
    static int16_t tlen = -1;

    if ( tlen == -1 )
    {
        tlen = NS2SA( input_Fs, get_delay( ENC, input_Fs, MONO_FORMAT, NULL, RENDERER_DISABLE, 0 ) + 0.5f );
    }
#endif

#ifdef DELAYED_SUM2
    float wt_delay, wt1, wt2;
    int16_t itd;
    itd = min( (int16_t) hStereoDmxEVS->itd, 640 );
#endif
    input_frame = ( int16_t )( input_Fs / FRAMES_PER_SEC );

    for ( n = 0; n < input_frame; n++ )
@@ -1187,55 +759,8 @@ void stereo_dmx_evs_enc(
        set_f( data_f[1] + n_samples, 0.0f, input_frame - n_samples );
    }

#ifdef STEREO_AVE_DOWNMIX
    for ( n = 0; n < input_frame; n++ )
    {
        dmx_data[n] = ( data_f[0][n] + data_f[1][n] ) / 2.f;
    }
#else
    estimate_itd( &corr, hStereoDmxEVS->hPOC, data_f[0], data_f[1], &hStereoDmxEVS->itd, input_frame );

#ifdef DELAYED_SUM2
    wt_delay = corr /*max(0.0f, (corr-0.3f)*1.5f)*/;

    if ( itd > 1 && itd < 200 )
    {
        if ( corr > 0.5f /*0.8f*/ )
        {
            wt1 = wt_delay * 2.0f - 1.0f;
            wt2 = 1.0f - wt1;
            for ( n = input_frame - 1; n >= itd; n-- )
            {
                data_f[0][n] = wt2 * data_f[0][n] + wt1 * data_f[0][n - itd];
            }
        }
    }
    else if ( itd < -1 && itd > -200 )
    {
        if ( corr > 0.5f /*0.8f*/ )
        {
            wt1 = wt_delay * 2.0f - 1.0f;
            wt2 = 1.0f - wt1;
            for ( n = input_frame - 1; n >= -itd; n-- )
            {
                data_f[1][n] = wt2 * data_f[1][n] + wt1 * data_f[1][n + itd];
            }
        }
    }
#endif

#ifdef DEBUG_STEREO_DMX
    ///* itd */
    //fp = fopen("itd.csv", "a");
    //fprintf(fp, "%f\n", hStereoDmxEVS->itd);
    //fclose(fp);

    ///* confidence */
    //fp = fopen("conf.csv", "a");
    //fprintf(fp, "%f\n", corr);
    //fclose(fp);
#endif

    if ( hStereoDmxEVS->itd )
    {
        dmx_weight = ( ( hStereoDmxEVS->itd > 0 ) ? ( -1 ) : 1 ) * 0.5f * corr + 0.5f;
@@ -1245,30 +770,11 @@ void stereo_dmx_evs_enc(
        dmx_weight = 0.5f;
    }

#ifdef DEBUG_STEREO_DMX
    //fp = fopen("weight.csv", "a");
    //fprintf(fp, "%f\n", dmx_weight);
    //fclose(fp);
#endif

    create_M_signal( data_f[0], data_f[1], dmx_data, dmx_weight, input_frame, hStereoDmxEVS->s_wnd,
                     hStereoDmxEVS->dmx_weight, hStereoDmxEVS->pre_dmx_energy, hStereoDmxEVS->aux_dmx_energy );
#endif

    mvr2s( dmx_data, data, n_samples );

#ifdef DEBUG_STEREO_DMX
    fp = fopen( "debug_mono.pcm", "ab" );
    if ( tlen != 0 )
    {
        short buf[L_FRAME48k] = { 0 };
        fwrite( buf, sizeof( short ), tlen, fp );
        tlen = 0;
    }
    fwrite( data, sizeof( short ), n_samples, fp );
    fclose( fp );
#endif

    return;
}