void ff_acelp_interpolate(

        int16_t* out,

        const int16_t* in,

        const int16_t* filter_coeffs,

        int precision,

        int frac_pos,

        int filter_length,

        int length)

{

    int n, i;



    assert(pitch_delay_frac >= 0 && pitch_delay_frac < precision);



    for(n=0; n<length; n++)

    {

        int idx = 0;

        int v = 0x4000;



        for(i=0; i<filter_length;)

        {



            /* The reference G.729 and AMR fixed point code performs clipping after

               each of the two following accumulations.

               Since clipping affects only the synthetic OVERFLOW test without

               causing an int type overflow, it was moved outside the loop. */



            /*  R(x):=ac_v[-k+x]

                v += R(n-i)*ff_acelp_interp_filter(t+6i)

                v += R(n+i+1)*ff_acelp_interp_filter(6-t+6i) */



            v += in[n + i] * filter_coeffs[idx + frac_pos];

            idx += precision;

            i++;

            v += in[n - i] * filter_coeffs[idx - frac_pos];

        }

        out[n] = av_clip_int16(v >> 15);

    }

}

void ff_acelp_interpolate(

        int16_t* out,

        const int16_t* in,

        const int16_t* filter_coeffs,

        int precision,

        int frac_pos,

        int filter_length,

        int length)

{

    int n, i;



    assert(pitch_delay_frac >= 0 && pitch_delay_frac < precision);



    for(n=0; n<length; n++)

    {

        int idx = 0;

        int v = 0x4000;



        for(i=0; i<filter_length;)

        {



            









            







            v += in[n + i] * filter_coeffs[idx + frac_pos];

            idx += precision;

            i++;

            v += in[n - i] * filter_coeffs[idx - frac_pos];

        }

        out[n] = av_clip_int16(v >> 15);

    }

}

void FUNC_0(

        int16_t* VAR_0,

        const int16_t* VAR_1,

        const int16_t* VAR_2,

        int VAR_3,

        int VAR_4,

        int VAR_5,

        int VAR_6)

{

    int VAR_7, VAR_8;



    assert(pitch_delay_frac >= 0 && pitch_delay_frac < VAR_3);



    for(VAR_7=0; VAR_7<VAR_6; VAR_7++)

    {

        int VAR_9 = 0;

        int VAR_10 = 0x4000;



        for(VAR_8=0; VAR_8<VAR_5;)

        {



            









            







            VAR_10 += VAR_1[VAR_7 + VAR_8] * VAR_2[VAR_9 + VAR_4];

            VAR_9 += VAR_3;

            VAR_8++;

            VAR_10 += VAR_1[VAR_7 - VAR_8] * VAR_2[VAR_9 - VAR_4];

        }

        VAR_0[VAR_7] = av_clip_int16(VAR_10 >> 15);

    }

}

void FUNC_0(
int16_t* VAR_0,
const int16_t* VAR_1,
const int16_t* VAR_2,
int VAR_3,
int VAR_4,
int VAR_5,
int VAR_6)
{ int VAR_7, VAR_8; assert(pitch_delay_frac >= 0 && pitch_delay_frac < VAR_3); for(VAR_7=0; VAR_7<VAR_6; VAR_7++) { int VAR_9 = 0; int VAR_10 = 0x4000; for(VAR_8=0; VAR_8<VAR_5;) { VAR_10 += VAR_1[VAR_7 + VAR_8] * VAR_2[VAR_9 + VAR_4]; VAR_9 += VAR_3; VAR_8++; VAR_10 += VAR_1[VAR_7 - VAR_8] * VAR_2[VAR_9 - VAR_4]; } VAR_0[VAR_7] = av_clip_int16(VAR_10 >> 15); } }