static int decode_init(AVCodecContext * avctx)

{

    MPADecodeContext *s = avctx->priv_data;

    static int init=0;

    int i, j, k;



#if defined(USE_HIGHPRECISION) && defined(CONFIG_AUDIO_NONSHORT)

    avctx->sample_fmt= SAMPLE_FMT_S32;

#else

    avctx->sample_fmt= SAMPLE_FMT_S16;

#endif



    if(avctx->antialias_algo != FF_AA_FLOAT)

        s->compute_antialias= compute_antialias_integer;

    else

        s->compute_antialias= compute_antialias_float;



    if (!init && !avctx->parse_only) {

        /* scale factors table for layer 1/2 */

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

            int shift, mod;

            /* 1.0 (i = 3) is normalized to 2 ^ FRAC_BITS */

            shift = (i / 3);

            mod = i % 3;

            scale_factor_modshift[i] = mod | (shift << 2);

        }



        /* scale factor multiply for layer 1 */

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

            int n, norm;

            n = i + 2;

            norm = ((int64_t_C(1) << n) * FRAC_ONE) / ((1 << n) - 1);

            scale_factor_mult[i][0] = MULL(FIXR(1.0 * 2.0), norm);

            scale_factor_mult[i][1] = MULL(FIXR(0.7937005259 * 2.0), norm);

            scale_factor_mult[i][2] = MULL(FIXR(0.6299605249 * 2.0), norm);

            dprintf("%d: norm=%x s=%x %x %x\n",

                    i, norm,

                    scale_factor_mult[i][0],

                    scale_factor_mult[i][1],

                    scale_factor_mult[i][2]);

        }



        ff_mpa_synth_init(window);



        /* huffman decode tables */

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

            const HuffTable *h = &mpa_huff_tables[i];

            int xsize, x, y;

            unsigned int n;

            uint8_t tmp_bits [256];

            uint16_t tmp_codes[256];



            memset(tmp_bits , 0, sizeof(tmp_bits ));

            memset(tmp_codes, 0, sizeof(tmp_codes));



            xsize = h->xsize;

            n = xsize * xsize;



            j = 0;

            for(x=0;x<xsize;x++) {

                for(y=0;y<xsize;y++){

                    tmp_bits [(x << 4) | y]= h->bits [j  ];

                    tmp_codes[(x << 4) | y]= h->codes[j++];

                }

            }



            /* XXX: fail test */

            init_vlc(&huff_vlc[i], 7, 256,

                     tmp_bits, 1, 1, tmp_codes, 2, 2, 1);

        }

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

            init_vlc(&huff_quad_vlc[i], i == 0 ? 7 : 4, 16,

                     mpa_quad_bits[i], 1, 1, mpa_quad_codes[i], 1, 1, 1);

        }



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

            k = 0;

            for(j=0;j<22;j++) {

                band_index_long[i][j] = k;

                k += band_size_long[i][j];

            }

            band_index_long[i][22] = k;

        }



        /* compute n ^ (4/3) and store it in mantissa/exp format */

        table_4_3_exp= av_mallocz_static(TABLE_4_3_SIZE * sizeof(table_4_3_exp[0]));

        if(!table_4_3_exp)

            return -1;

        table_4_3_value= av_mallocz_static(TABLE_4_3_SIZE * sizeof(table_4_3_value[0]));

        if(!table_4_3_value)

            return -1;



        int_pow_init();

        for(i=1;i<TABLE_4_3_SIZE;i++) {

            double f, fm;

            int e, m;

            f = pow((double)(i/4), 4.0 / 3.0) * pow(2, (i&3)*0.25);

            fm = frexp(f, &e);

            m = (uint32_t)(fm*(1LL<<31) + 0.5);

            e+= FRAC_BITS - 31 + 5;



            /* normalized to FRAC_BITS */

            table_4_3_value[i] = m;

//            av_log(NULL, AV_LOG_DEBUG, "%d %d %f\n", i, m, pow((double)i, 4.0 / 3.0));

            table_4_3_exp[i] = -e;

        }

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

            int exponent= (i>>4)-400;

            double f= pow(i&15, 4.0 / 3.0) * pow(2, exponent*0.25 + FRAC_BITS + 5);

            expval_table[exponent+400][i&15]= lrintf(f);

            if((i&15)==1)

                exp_table[exponent+400]= lrintf(f);

        }



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

            float f;

            int v;

            if (i != 6) {

                f = tan((double)i * M_PI / 12.0);

                v = FIXR(f / (1.0 + f));

            } else {

                v = FIXR(1.0);

            }

            is_table[0][i] = v;

            is_table[1][6 - i] = v;

        }

        /* invalid values */

        for(i=7;i<16;i++)

            is_table[0][i] = is_table[1][i] = 0.0;



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

            double f;

            int e, k;



            for(j=0;j<2;j++) {

                e = -(j + 1) * ((i + 1) >> 1);

                f = pow(2.0, e / 4.0);

                k = i & 1;

                is_table_lsf[j][k ^ 1][i] = FIXR(f);

                is_table_lsf[j][k][i] = FIXR(1.0);

                dprintf("is_table_lsf %d %d: %x %x\n",

                        i, j, is_table_lsf[j][0][i], is_table_lsf[j][1][i]);

            }

        }



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

            float ci, cs, ca;

            ci = ci_table[i];

            cs = 1.0 / sqrt(1.0 + ci * ci);

            ca = cs * ci;

            csa_table[i][0] = FIXHR(cs/4);

            csa_table[i][1] = FIXHR(ca/4);

            csa_table[i][2] = FIXHR(ca/4) + FIXHR(cs/4);

            csa_table[i][3] = FIXHR(ca/4) - FIXHR(cs/4);

            csa_table_float[i][0] = cs;

            csa_table_float[i][1] = ca;

            csa_table_float[i][2] = ca + cs;

            csa_table_float[i][3] = ca - cs;

//            printf("%d %d %d %d\n", FIX(cs), FIX(cs-1), FIX(ca), FIX(cs)-FIX(ca));

//            av_log(NULL, AV_LOG_DEBUG,"%f %f %f %f\n", cs, ca, ca+cs, ca-cs);

        }



        /* compute mdct windows */

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

            for(j=0; j<4; j++){

                double d;



                if(j==2 && i%3 != 1)

                    continue;



                d= sin(M_PI * (i + 0.5) / 36.0);

                if(j==1){

                    if     (i>=30) d= 0;

                    else if(i>=24) d= sin(M_PI * (i - 18 + 0.5) / 12.0);

                    else if(i>=18) d= 1;

                }else if(j==3){

                    if     (i<  6) d= 0;

                    else if(i< 12) d= sin(M_PI * (i -  6 + 0.5) / 12.0);

                    else if(i< 18) d= 1;

                }

                //merge last stage of imdct into the window coefficients

                d*= 0.5 / cos(M_PI*(2*i + 19)/72);



                if(j==2)

                    mdct_win[j][i/3] = FIXHR((d / (1<<5)));

                else

                    mdct_win[j][i  ] = FIXHR((d / (1<<5)));

//                av_log(NULL, AV_LOG_DEBUG, "%2d %d %f\n", i,j,d / (1<<5));

            }

        }



        /* NOTE: we do frequency inversion adter the MDCT by changing

           the sign of the right window coefs */

        for(j=0;j<4;j++) {

            for(i=0;i<36;i+=2) {

                mdct_win[j + 4][i] = mdct_win[j][i];

                mdct_win[j + 4][i + 1] = -mdct_win[j][i + 1];

            }

        }



#if defined(DEBUG)

        for(j=0;j<8;j++) {

            av_log(avctx, AV_LOG_DEBUG, "win%d=\n", j);

            for(i=0;i<36;i++)

                av_log(avctx, AV_LOG_DEBUG, "%f, ", (double)mdct_win[j][i] / FRAC_ONE);

            av_log(avctx, AV_LOG_DEBUG, "\n");

        }

#endif

        init = 1;

    }



    s->inbuf_index = 0;

    s->inbuf = &s->inbuf1[s->inbuf_index][BACKSTEP_SIZE];

    s->inbuf_ptr = s->inbuf;

#ifdef DEBUG

    s->frame_count = 0;

#endif

    if (avctx->codec_id == CODEC_ID_MP3ADU)

        s->adu_mode = 1;

    return 0;

}

static int decode_init(AVCodecContext * avctx)

{

    MPADecodeContext *s = avctx->priv_data;

    static int init=0;

    int i, j, k;



#if defined(USE_HIGHPRECISION) && defined(CONFIG_AUDIO_NONSHORT)

    avctx->sample_fmt= SAMPLE_FMT_S32;

#else

    avctx->sample_fmt= SAMPLE_FMT_S16;

#endif



    if(avctx->antialias_algo != FF_AA_FLOAT)

        s->compute_antialias= compute_antialias_integer;

    else

        s->compute_antialias= compute_antialias_float;



    if (!init && !avctx->parse_only) {

        

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

            int shift, mod;

            

            shift = (i / 3);

            mod = i % 3;

            scale_factor_modshift[i] = mod | (shift << 2);

        }



        

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

            int n, norm;

            n = i + 2;

            norm = ((int64_t_C(1) << n) * FRAC_ONE) / ((1 << n) - 1);

            scale_factor_mult[i][0] = MULL(FIXR(1.0 * 2.0), norm);

            scale_factor_mult[i][1] = MULL(FIXR(0.7937005259 * 2.0), norm);

            scale_factor_mult[i][2] = MULL(FIXR(0.6299605249 * 2.0), norm);

            dprintf("%d: norm=%x s=%x %x %x\n",

                    i, norm,

                    scale_factor_mult[i][0],

                    scale_factor_mult[i][1],

                    scale_factor_mult[i][2]);

        }



        ff_mpa_synth_init(window);



        

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

            const HuffTable *h = &mpa_huff_tables[i];

            int xsize, x, y;

            unsigned int n;

            uint8_t tmp_bits [256];

            uint16_t tmp_codes[256];



            memset(tmp_bits , 0, sizeof(tmp_bits ));

            memset(tmp_codes, 0, sizeof(tmp_codes));



            xsize = h->xsize;

            n = xsize * xsize;



            j = 0;

            for(x=0;x<xsize;x++) {

                for(y=0;y<xsize;y++){

                    tmp_bits [(x << 4) | y]= h->bits [j  ];

                    tmp_codes[(x << 4) | y]= h->codes[j++];

                }

            }



            

            init_vlc(&huff_vlc[i], 7, 256,

                     tmp_bits, 1, 1, tmp_codes, 2, 2, 1);

        }

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

            init_vlc(&huff_quad_vlc[i], i == 0 ? 7 : 4, 16,

                     mpa_quad_bits[i], 1, 1, mpa_quad_codes[i], 1, 1, 1);

        }



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

            k = 0;

            for(j=0;j<22;j++) {

                band_index_long[i][j] = k;

                k += band_size_long[i][j];

            }

            band_index_long[i][22] = k;

        }



        

        table_4_3_exp= av_mallocz_static(TABLE_4_3_SIZE * sizeof(table_4_3_exp[0]));

        if(!table_4_3_exp)

            return -1;

        table_4_3_value= av_mallocz_static(TABLE_4_3_SIZE * sizeof(table_4_3_value[0]));

        if(!table_4_3_value)

            return -1;



        int_pow_init();

        for(i=1;i<TABLE_4_3_SIZE;i++) {

            double f, fm;

            int e, m;

            f = pow((double)(i/4), 4.0 / 3.0) * pow(2, (i&3)*0.25);

            fm = frexp(f, &e);

            m = (uint32_t)(fm*(1LL<<31) + 0.5);

            e+= FRAC_BITS - 31 + 5;



            

            table_4_3_value[i] = m;



            table_4_3_exp[i] = -e;

        }

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

            int exponent= (i>>4)-400;

            double f= pow(i&15, 4.0 / 3.0) * pow(2, exponent*0.25 + FRAC_BITS + 5);

            expval_table[exponent+400][i&15]= lrintf(f);

            if((i&15)==1)

                exp_table[exponent+400]= lrintf(f);

        }



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

            float f;

            int v;

            if (i != 6) {

                f = tan((double)i * M_PI / 12.0);

                v = FIXR(f / (1.0 + f));

            } else {

                v = FIXR(1.0);

            }

            is_table[0][i] = v;

            is_table[1][6 - i] = v;

        }

        

        for(i=7;i<16;i++)

            is_table[0][i] = is_table[1][i] = 0.0;



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

            double f;

            int e, k;



            for(j=0;j<2;j++) {

                e = -(j + 1) * ((i + 1) >> 1);

                f = pow(2.0, e / 4.0);

                k = i & 1;

                is_table_lsf[j][k ^ 1][i] = FIXR(f);

                is_table_lsf[j][k][i] = FIXR(1.0);

                dprintf("is_table_lsf %d %d: %x %x\n",

                        i, j, is_table_lsf[j][0][i], is_table_lsf[j][1][i]);

            }

        }



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

            float ci, cs, ca;

            ci = ci_table[i];

            cs = 1.0 / sqrt(1.0 + ci * ci);

            ca = cs * ci;

            csa_table[i][0] = FIXHR(cs/4);

            csa_table[i][1] = FIXHR(ca/4);

            csa_table[i][2] = FIXHR(ca/4) + FIXHR(cs/4);

            csa_table[i][3] = FIXHR(ca/4) - FIXHR(cs/4);

            csa_table_float[i][0] = cs;

            csa_table_float[i][1] = ca;

            csa_table_float[i][2] = ca + cs;

            csa_table_float[i][3] = ca - cs;





        }



        

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

            for(j=0; j<4; j++){

                double d;



                if(j==2 && i%3 != 1)

                    continue;



                d= sin(M_PI * (i + 0.5) / 36.0);

                if(j==1){

                    if     (i>=30) d= 0;

                    else if(i>=24) d= sin(M_PI * (i - 18 + 0.5) / 12.0);

                    else if(i>=18) d= 1;

                }else if(j==3){

                    if     (i<  6) d= 0;

                    else if(i< 12) d= sin(M_PI * (i -  6 + 0.5) / 12.0);

                    else if(i< 18) d= 1;

                }

                

                d*= 0.5 / cos(M_PI*(2*i + 19)/72);



                if(j==2)

                    mdct_win[j][i/3] = FIXHR((d / (1<<5)));

                else

                    mdct_win[j][i  ] = FIXHR((d / (1<<5)));



            }

        }



        



        for(j=0;j<4;j++) {

            for(i=0;i<36;i+=2) {

                mdct_win[j + 4][i] = mdct_win[j][i];

                mdct_win[j + 4][i + 1] = -mdct_win[j][i + 1];

            }

        }



#if defined(DEBUG)

        for(j=0;j<8;j++) {

            av_log(avctx, AV_LOG_DEBUG, "win%d=\n", j);

            for(i=0;i<36;i++)

                av_log(avctx, AV_LOG_DEBUG, "%f, ", (double)mdct_win[j][i] / FRAC_ONE);

            av_log(avctx, AV_LOG_DEBUG, "\n");

        }

#endif

        init = 1;

    }



    s->inbuf_index = 0;

    s->inbuf = &s->inbuf1[s->inbuf_index][BACKSTEP_SIZE];

    s->inbuf_ptr = s->inbuf;

#ifdef DEBUG

    s->frame_count = 0;

#endif

    if (avctx->codec_id == CODEC_ID_MP3ADU)

        s->adu_mode = 1;

    return 0;

}

static int FUNC_0(AVCodecContext * VAR_0)

{

    MPADecodeContext *s = VAR_0->priv_data;

    static int VAR_1=0;

    int VAR_2, VAR_3, VAR_17;



#if defined(USE_HIGHPRECISION) && defined(CONFIG_AUDIO_NONSHORT)

    VAR_0->sample_fmt= SAMPLE_FMT_S32;

#else

    VAR_0->sample_fmt= SAMPLE_FMT_S16;

#endif



    if(VAR_0->antialias_algo != FF_AA_FLOAT)

        s->compute_antialias= compute_antialias_integer;

    else

        s->compute_antialias= compute_antialias_float;



    if (!VAR_1 && !VAR_0->parse_only) {

        

        for(VAR_2=0;VAR_2<64;VAR_2++) {

            int VAR_5, VAR_6;

            

            VAR_5 = (VAR_2 / 3);

            VAR_6 = VAR_2 % 3;

            scale_factor_modshift[VAR_2] = VAR_6 | (VAR_5 << 2);

        }



        

        for(VAR_2=0;VAR_2<15;VAR_2++) {

            int VAR_13, VAR_8;

            VAR_13 = VAR_2 + 2;

            VAR_8 = ((int64_t_C(1) << VAR_13) * FRAC_ONE) / ((1 << VAR_13) - 1);

            scale_factor_mult[VAR_2][0] = MULL(FIXR(1.0 * 2.0), VAR_8);

            scale_factor_mult[VAR_2][1] = MULL(FIXR(0.7937005259 * 2.0), VAR_8);

            scale_factor_mult[VAR_2][2] = MULL(FIXR(0.6299605249 * 2.0), VAR_8);

            dprintf("%VAR_20: VAR_8=%VAR_11 s=%VAR_11 %VAR_11 %VAR_11\VAR_13",

                    VAR_2, VAR_8,

                    scale_factor_mult[VAR_2][0],

                    scale_factor_mult[VAR_2][1],

                    scale_factor_mult[VAR_2][2]);

        }



        ff_mpa_synth_init(window);



        

        for(VAR_2=1;VAR_2<16;VAR_2++) {

            const HuffTable *VAR_9 = &mpa_huff_tables[VAR_2];

            int VAR_10, VAR_11, VAR_12;

            unsigned int VAR_13;

            uint8_t tmp_bits [256];

            uint16_t tmp_codes[256];



            memset(tmp_bits , 0, sizeof(tmp_bits ));

            memset(tmp_codes, 0, sizeof(tmp_codes));



            VAR_10 = VAR_9->VAR_10;

            VAR_13 = VAR_10 * VAR_10;



            VAR_3 = 0;

            for(VAR_11=0;VAR_11<VAR_10;VAR_11++) {

                for(VAR_12=0;VAR_12<VAR_10;VAR_12++){

                    tmp_bits [(VAR_11 << 4) | VAR_12]= VAR_9->bits [VAR_3  ];

                    tmp_codes[(VAR_11 << 4) | VAR_12]= VAR_9->codes[VAR_3++];

                }

            }



            

            init_vlc(&huff_vlc[VAR_2], 7, 256,

                     tmp_bits, 1, 1, tmp_codes, 2, 2, 1);

        }

        for(VAR_2=0;VAR_2<2;VAR_2++) {

            init_vlc(&huff_quad_vlc[VAR_2], VAR_2 == 0 ? 7 : 4, 16,

                     mpa_quad_bits[VAR_2], 1, 1, mpa_quad_codes[VAR_2], 1, 1, 1);

        }



        for(VAR_2=0;VAR_2<9;VAR_2++) {

            VAR_17 = 0;

            for(VAR_3=0;VAR_3<22;VAR_3++) {

                band_index_long[VAR_2][VAR_3] = VAR_17;

                VAR_17 += band_size_long[VAR_2][VAR_3];

            }

            band_index_long[VAR_2][22] = VAR_17;

        }



        

        table_4_3_exp= av_mallocz_static(TABLE_4_3_SIZE * sizeof(table_4_3_exp[0]));

        if(!table_4_3_exp)

            return -1;

        table_4_3_value= av_mallocz_static(TABLE_4_3_SIZE * sizeof(table_4_3_value[0]));

        if(!table_4_3_value)

            return -1;



        int_pow_init();

        for(VAR_2=1;VAR_2<TABLE_4_3_SIZE;VAR_2++) {

            double VAR_16, fm;

            int VAR_16, m;

            VAR_16 = pow((double)(VAR_2/4), 4.0 / 3.0) * pow(2, (VAR_2&3)*0.25);

            fm = frexp(VAR_16, &VAR_16);

            m = (uint32_t)(fm*(1LL<<31) + 0.5);

            VAR_16+= FRAC_BITS - 31 + 5;



            

            table_4_3_value[VAR_2] = m;



            table_4_3_exp[VAR_2] = -VAR_16;

        }

        for(VAR_2=0; VAR_2<512*16; VAR_2++){

            int VAR_13= (VAR_2>>4)-400;

            double VAR_16= pow(VAR_2&15, 4.0 / 3.0) * pow(2, VAR_13*0.25 + FRAC_BITS + 5);

            expval_table[VAR_13+400][VAR_2&15]= lrintf(VAR_16);

            if((VAR_2&15)==1)

                exp_table[VAR_13+400]= lrintf(VAR_16);

        }



        for(VAR_2=0;VAR_2<7;VAR_2++) {

            float VAR_16;

            int VAR_15;

            if (VAR_2 != 6) {

                VAR_16 = tan((double)VAR_2 * M_PI / 12.0);

                VAR_15 = FIXR(VAR_16 / (1.0 + VAR_16));

            } else {

                VAR_15 = FIXR(1.0);

            }

            is_table[0][VAR_2] = VAR_15;

            is_table[1][6 - VAR_2] = VAR_15;

        }

        

        for(VAR_2=7;VAR_2<16;VAR_2++)

            is_table[0][VAR_2] = is_table[1][VAR_2] = 0.0;



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

            double VAR_16;

            int VAR_16, VAR_17;



            for(VAR_3=0;VAR_3<2;VAR_3++) {

                VAR_16 = -(VAR_3 + 1) * ((VAR_2 + 1) >> 1);

                VAR_16 = pow(2.0, VAR_16 / 4.0);

                VAR_17 = VAR_2 & 1;

                is_table_lsf[VAR_3][VAR_17 ^ 1][VAR_2] = FIXR(VAR_16);

                is_table_lsf[VAR_3][VAR_17][VAR_2] = FIXR(1.0);

                dprintf("is_table_lsf %VAR_20 %VAR_20: %VAR_11 %VAR_11\VAR_13",

                        VAR_2, VAR_3, is_table_lsf[VAR_3][0][VAR_2], is_table_lsf[VAR_3][1][VAR_2]);

            }

        }



        for(VAR_2=0;VAR_2<8;VAR_2++) {

            float VAR_17, VAR_18, VAR_19;

            VAR_17 = ci_table[VAR_2];

            VAR_18 = 1.0 / sqrt(1.0 + VAR_17 * VAR_17);

            VAR_19 = VAR_18 * VAR_17;

            csa_table[VAR_2][0] = FIXHR(VAR_18/4);

            csa_table[VAR_2][1] = FIXHR(VAR_19/4);

            csa_table[VAR_2][2] = FIXHR(VAR_19/4) + FIXHR(VAR_18/4);

            csa_table[VAR_2][3] = FIXHR(VAR_19/4) - FIXHR(VAR_18/4);

            csa_table_float[VAR_2][0] = VAR_18;

            csa_table_float[VAR_2][1] = VAR_19;

            csa_table_float[VAR_2][2] = VAR_19 + VAR_18;

            csa_table_float[VAR_2][3] = VAR_19 - VAR_18;





        }



        

        for(VAR_2=0;VAR_2<36;VAR_2++) {

            for(VAR_3=0; VAR_3<4; VAR_3++){

                double VAR_20;



                if(VAR_3==2 && VAR_2%3 != 1)

                    continue;



                VAR_20= sin(M_PI * (VAR_2 + 0.5) / 36.0);

                if(VAR_3==1){

                    if     (VAR_2>=30) VAR_20= 0;

                    else if(VAR_2>=24) VAR_20= sin(M_PI * (VAR_2 - 18 + 0.5) / 12.0);

                    else if(VAR_2>=18) VAR_20= 1;

                }else if(VAR_3==3){

                    if     (VAR_2<  6) VAR_20= 0;

                    else if(VAR_2< 12) VAR_20= sin(M_PI * (VAR_2 -  6 + 0.5) / 12.0);

                    else if(VAR_2< 18) VAR_20= 1;

                }

                

                VAR_20*= 0.5 / cos(M_PI*(2*VAR_2 + 19)/72);



                if(VAR_3==2)

                    mdct_win[VAR_3][VAR_2/3] = FIXHR((VAR_20 / (1<<5)));

                else

                    mdct_win[VAR_3][VAR_2  ] = FIXHR((VAR_20 / (1<<5)));



            }

        }



        



        for(VAR_3=0;VAR_3<4;VAR_3++) {

            for(VAR_2=0;VAR_2<36;VAR_2+=2) {

                mdct_win[VAR_3 + 4][VAR_2] = mdct_win[VAR_3][VAR_2];

                mdct_win[VAR_3 + 4][VAR_2 + 1] = -mdct_win[VAR_3][VAR_2 + 1];

            }

        }



#if defined(DEBUG)

        for(VAR_3=0;VAR_3<8;VAR_3++) {

            av_log(VAR_0, AV_LOG_DEBUG, "win%VAR_20=\VAR_13", VAR_3);

            for(VAR_2=0;VAR_2<36;VAR_2++)

                av_log(VAR_0, AV_LOG_DEBUG, "%VAR_16, ", (double)mdct_win[VAR_3][VAR_2] / FRAC_ONE);

            av_log(VAR_0, AV_LOG_DEBUG, "\VAR_13");

        }

#endif

        VAR_1 = 1;

    }



    s->inbuf_index = 0;

    s->inbuf = &s->inbuf1[s->inbuf_index][BACKSTEP_SIZE];

    s->inbuf_ptr = s->inbuf;

#ifdef DEBUG

    s->frame_count = 0;

#endif

    if (VAR_0->codec_id == CODEC_ID_MP3ADU)

        s->adu_mode = 1;

    return 0;

}

static int FUNC_0(AVCodecContext * VAR_0)
{ MPADecodeContext *s = VAR_0->priv_data; static int VAR_1=0; int VAR_2, VAR_3, VAR_17; #if defined(USE_HIGHPRECISION) && defined(CONFIG_AUDIO_NONSHORT)
VAR_0->sample_fmt= SAMPLE_FMT_S32; #else
VAR_0->sample_fmt= SAMPLE_FMT_S16; #endif
if(VAR_0->antialias_algo != FF_AA_FLOAT)
s->compute_antialias= compute_antialias_integer; else
s->compute_antialias= compute_antialias_float; if (!VAR_1 && !VAR_0->parse_only) { for(VAR_2=0;VAR_2<64;VAR_2++) { int VAR_5, VAR_6; VAR_5 = (VAR_2 / 3); VAR_6 = VAR_2 % 3; scale_factor_modshift[VAR_2] = VAR_6 | (VAR_5 << 2); } for(VAR_2=0;VAR_2<15;VAR_2++) { int VAR_13, VAR_8; VAR_13 = VAR_2 + 2; VAR_8 = ((int64_t_C(1) << VAR_13) * FRAC_ONE) / ((1 << VAR_13) - 1); scale_factor_mult[VAR_2][0] = MULL(FIXR(1.0 * 2.0), VAR_8); scale_factor_mult[VAR_2][1] = MULL(FIXR(0.7937005259 * 2.0), VAR_8); scale_factor_mult[VAR_2][2] = MULL(FIXR(0.6299605249 * 2.0), VAR_8); dprintf("%VAR_20: VAR_8=%VAR_11 s=%VAR_11 %VAR_11 %VAR_11\VAR_13",
VAR_2, VAR_8,
scale_factor_mult[VAR_2][0],
scale_factor_mult[VAR_2][1],
scale_factor_mult[VAR_2][2]); } ff_mpa_synth_init(window); for(VAR_2=1;VAR_2<16;VAR_2++) { const HuffTable *VAR_9 = &mpa_huff_tables[VAR_2]; int VAR_10, VAR_11, VAR_12; unsigned int VAR_13; uint8_t tmp_bits [256]; uint16_t tmp_codes[256]; memset(tmp_bits , 0, sizeof(tmp_bits )); memset(tmp_codes, 0, sizeof(tmp_codes)); VAR_10 = VAR_9->VAR_10; VAR_13 = VAR_10 * VAR_10; VAR_3 = 0; for(VAR_11=0;VAR_11<VAR_10;VAR_11++) { for(VAR_12=0;VAR_12<VAR_10;VAR_12++){ tmp_bits [(VAR_11 << 4) | VAR_12]= VAR_9->bits [VAR_3  ]; tmp_codes[(VAR_11 << 4) | VAR_12]= VAR_9->codes[VAR_3++]; } } init_vlc(&huff_vlc[VAR_2], 7, 256,
tmp_bits, 1, 1, tmp_codes, 2, 2, 1); } for(VAR_2=0;VAR_2<2;VAR_2++) { init_vlc(&huff_quad_vlc[VAR_2], VAR_2 == 0 ? 7 : 4, 16,
mpa_quad_bits[VAR_2], 1, 1, mpa_quad_codes[VAR_2], 1, 1, 1); } for(VAR_2=0;VAR_2<9;VAR_2++) { VAR_17 = 0; for(VAR_3=0;VAR_3<22;VAR_3++) { band_index_long[VAR_2][VAR_3] = VAR_17; VAR_17 += band_size_long[VAR_2][VAR_3]; } band_index_long[VAR_2][22] = VAR_17; } table_4_3_exp= av_mallocz_static(TABLE_4_3_SIZE * sizeof(table_4_3_exp[0])); if(!table_4_3_exp)
return -1; table_4_3_value= av_mallocz_static(TABLE_4_3_SIZE * sizeof(table_4_3_value[0])); if(!table_4_3_value)
return -1; int_pow_init(); for(VAR_2=1;VAR_2<TABLE_4_3_SIZE;VAR_2++) { double VAR_16, fm; int VAR_16, m; VAR_16 = pow((double)(VAR_2/4), 4.0 / 3.0) * pow(2, (VAR_2&3)*0.25); fm = frexp(VAR_16, &VAR_16); m = (uint32_t)(fm*(1LL<<31) + 0.5); VAR_16+= FRAC_BITS - 31 + 5; table_4_3_value[VAR_2] = m; table_4_3_exp[VAR_2] = -VAR_16; } for(VAR_2=0; VAR_2<512*16; VAR_2++){ int VAR_13= (VAR_2>>4)-400; double VAR_16= pow(VAR_2&15, 4.0 / 3.0) * pow(2, VAR_13*0.25 + FRAC_BITS + 5); expval_table[VAR_13+400][VAR_2&15]= lrintf(VAR_16); if((VAR_2&15)==1)
exp_table[VAR_13+400]= lrintf(VAR_16); } for(VAR_2=0;VAR_2<7;VAR_2++) { float VAR_16; int VAR_15; if (VAR_2 != 6) { VAR_16 = tan((double)VAR_2 * M_PI / 12.0); VAR_15 = FIXR(VAR_16 / (1.0 + VAR_16)); } else { VAR_15 = FIXR(1.0); } is_table[0][VAR_2] = VAR_15; is_table[1][6 - VAR_2] = VAR_15; } for(VAR_2=7;VAR_2<16;VAR_2++) is_table[0][VAR_2] = is_table[1][VAR_2] = 0.0; for(VAR_2=0;VAR_2<16;VAR_2++) { double VAR_16; int VAR_16, VAR_17; for(VAR_3=0;VAR_3<2;VAR_3++) { VAR_16 = -(VAR_3 + 1) * ((VAR_2 + 1) >> 1); VAR_16 = pow(2.0, VAR_16 / 4.0); VAR_17 = VAR_2 & 1; is_table_lsf[VAR_3][VAR_17 ^ 1][VAR_2] = FIXR(VAR_16); is_table_lsf[VAR_3][VAR_17][VAR_2] = FIXR(1.0); dprintf("is_table_lsf %VAR_20 %VAR_20: %VAR_11 %VAR_11\VAR_13",
VAR_2, VAR_3, is_table_lsf[VAR_3][0][VAR_2], is_table_lsf[VAR_3][1][VAR_2]); } } for(VAR_2=0;VAR_2<8;VAR_2++) { float VAR_17, VAR_18, VAR_19; VAR_17 = ci_table[VAR_2]; VAR_18 = 1.0 / sqrt(1.0 + VAR_17 * VAR_17); VAR_19 = VAR_18 * VAR_17; csa_table[VAR_2][0] = FIXHR(VAR_18/4); csa_table[VAR_2][1] = FIXHR(VAR_19/4); csa_table[VAR_2][2] = FIXHR(VAR_19/4) + FIXHR(VAR_18/4); csa_table[VAR_2][3] = FIXHR(VAR_19/4) - FIXHR(VAR_18/4); csa_table_float[VAR_2][0] = VAR_18; csa_table_float[VAR_2][1] = VAR_19; csa_table_float[VAR_2][2] = VAR_19 + VAR_18; csa_table_float[VAR_2][3] = VAR_19 - VAR_18; } for(VAR_2=0;VAR_2<36;VAR_2++) { for(VAR_3=0; VAR_3<4; VAR_3++){ double VAR_20; if(VAR_3==2 && VAR_2%3 != 1)
continue; VAR_20= sin(M_PI * (VAR_2 + 0.5) / 36.0); if(VAR_3==1){ if     (VAR_2>=30) VAR_20= 0; else if(VAR_2>=24) VAR_20= sin(M_PI * (VAR_2 - 18 + 0.5) / 12.0); else if(VAR_2>=18) VAR_20= 1; }else if(VAR_3==3){ if     (VAR_2<  6) VAR_20= 0; else if(VAR_2< 12) VAR_20= sin(M_PI * (VAR_2 -  6 + 0.5) / 12.0); else if(VAR_2< 18) VAR_20= 1; } VAR_20*= 0.5 / cos(M_PI*(2*VAR_2 + 19)/72); if(VAR_3==2)
mdct_win[VAR_3][VAR_2/3] = FIXHR((VAR_20 / (1<<5))); else
mdct_win[VAR_3][VAR_2  ] = FIXHR((VAR_20 / (1<<5))); } } for(VAR_3=0;VAR_3<4;VAR_3++) { for(VAR_2=0;VAR_2<36;VAR_2+=2) { mdct_win[VAR_3 + 4][VAR_2] = mdct_win[VAR_3][VAR_2]; mdct_win[VAR_3 + 4][VAR_2 + 1] = -mdct_win[VAR_3][VAR_2 + 1]; } } #if defined(DEBUG)
for(VAR_3=0;VAR_3<8;VAR_3++) { av_log(VAR_0, AV_LOG_DEBUG, "win%VAR_20=\VAR_13", VAR_3); for(VAR_2=0;VAR_2<36;VAR_2++) av_log(VAR_0, AV_LOG_DEBUG, "%VAR_16, ", (double)mdct_win[VAR_3][VAR_2] / FRAC_ONE); av_log(VAR_0, AV_LOG_DEBUG, "\VAR_13"); } #endif
VAR_1 = 1; } s->inbuf_index = 0; s->inbuf = &s->inbuf1[s->inbuf_index][BACKSTEP_SIZE]; s->inbuf_ptr = s->inbuf; #ifdef DEBUG
s->frame_count = 0; #endif
if (VAR_0->codec_id == CODEC_ID_MP3ADU)
s->adu_mode = 1; return 0; }