static void adx_encode(unsigned char *adx,const short *wav,

                       ADXChannelState *prev)

{

    int scale;

    int i;

    int s0,s1,s2,d;

    int max=0;

    int min=0;

    int data[32];



    s1 = prev->s1;

    s2 = prev->s2;

    for(i=0;i<32;i++) {

        s0 = wav[i];

        d = ((s0<<14) - SCALE1*s1 + SCALE2*s2)/BASEVOL;

        data[i]=d;

        if (max<d) max=d;

        if (min>d) min=d;

        s2 = s1;

        s1 = s0;

    }

    prev->s1 = s1;

    prev->s2 = s2;



    /* -8..+7 */



    if (max==0 && min==0) {

        memset(adx,0,18);

        return;

    }



    if (max/7>-min/8) scale = max/7;

    else scale = -min/8;



    if (scale==0) scale=1;



    AV_WB16(adx, scale);



    for(i=0;i<16;i++) {

        adx[i+2] = ((data[i*2]/scale)<<4) | ((data[i*2+1]/scale)&0xf);

    }

}

static void adx_encode(unsigned char *adx,const short *wav,

                       ADXChannelState *prev)

{

    int scale;

    int i;

    int s0,s1,s2,d;

    int max=0;

    int min=0;

    int data[32];



    s1 = prev->s1;

    s2 = prev->s2;

    for(i=0;i<32;i++) {

        s0 = wav[i];

        d = ((s0<<14) - SCALE1*s1 + SCALE2*s2)/BASEVOL;

        data[i]=d;

        if (max<d) max=d;

        if (min>d) min=d;

        s2 = s1;

        s1 = s0;

    }

    prev->s1 = s1;

    prev->s2 = s2;



    



    if (max==0 && min==0) {

        memset(adx,0,18);

        return;

    }



    if (max/7>-min/8) scale = max/7;

    else scale = -min/8;



    if (scale==0) scale=1;



    AV_WB16(adx, scale);



    for(i=0;i<16;i++) {

        adx[i+2] = ((data[i*2]/scale)<<4) | ((data[i*2+1]/scale)&0xf);

    }

}

        d = ((s0<<14) - SCALE1*s1 + SCALE2*s2)/BASEVOL;
static void FUNC_0(unsigned char *VAR_0,const short *VAR_1,

                       ADXChannelState *VAR_2)

{

    int VAR_3;

    int VAR_4;

    int VAR_5,VAR_6,VAR_7,VAR_8;

    int VAR_9=0;

    int VAR_10=0;

    int VAR_11[32];



    VAR_6 = VAR_2->VAR_6;

    VAR_7 = VAR_2->VAR_7;

    for(VAR_4=0;VAR_4<32;VAR_4++) {

        VAR_5 = VAR_1[VAR_4];

        VAR_8 = ((VAR_5<<14) - SCALE1*VAR_6 + SCALE2*VAR_7)/BASEVOL;

        VAR_11[VAR_4]=VAR_8;

        if (VAR_9<VAR_8) VAR_9=VAR_8;

        if (VAR_10>VAR_8) VAR_10=VAR_8;

        VAR_7 = VAR_6;

        VAR_6 = VAR_5;

    }

    VAR_2->VAR_6 = VAR_6;

    VAR_2->VAR_7 = VAR_7;



    



    if (VAR_9==0 && VAR_10==0) {

        memset(VAR_0,0,18);

        return;

    }



    if (VAR_9/7>-VAR_10/8) VAR_3 = VAR_9/7;

    else VAR_3 = -VAR_10/8;



    if (VAR_3==0) VAR_3=1;



    AV_WB16(VAR_0, VAR_3);



    for(VAR_4=0;VAR_4<16;VAR_4++) {

        VAR_0[VAR_4+2] = ((VAR_11[VAR_4*2]/VAR_3)<<4) | ((VAR_11[VAR_4*2+1]/VAR_3)&0xf);

    }

}

static void FUNC_0(unsigned char *VAR_0,const short *VAR_1,
ADXChannelState *VAR_2)
{ int VAR_3; int VAR_4; int VAR_5,VAR_6,VAR_7,VAR_8; int VAR_9=0; int VAR_10=0; int VAR_11[32]; VAR_6 = VAR_2->VAR_6; VAR_7 = VAR_2->VAR_7; for(VAR_4=0;VAR_4<32;VAR_4++) { VAR_5 = VAR_1[VAR_4]; VAR_8 = ((VAR_5<<14) - SCALE1*VAR_6 + SCALE2*VAR_7)/BASEVOL; VAR_11[VAR_4]=VAR_8; if (VAR_9<VAR_8) VAR_9=VAR_8; if (VAR_10>VAR_8) VAR_10=VAR_8; VAR_7 = VAR_6; VAR_6 = VAR_5; } VAR_2->VAR_6 = VAR_6; VAR_2->VAR_7 = VAR_7; if (VAR_9==0 && VAR_10==0) { memset(VAR_0,0,18); return; } if (VAR_9/7>-VAR_10/8) VAR_3 = VAR_9/7; else VAR_3 = -VAR_10/8; if (VAR_3==0) VAR_3=1; AV_WB16(VAR_0, VAR_3); for(VAR_4=0;VAR_4<16;VAR_4++) { VAR_0[VAR_4+2] = ((VAR_11[VAR_4*2]/VAR_3)<<4) | ((VAR_11[VAR_4*2+1]/VAR_3)&0xf); } }