static void msmpeg4_encode_dc(MpegEncContext * s, int level, int n, int *dir_ptr)

{

    int sign, code;

    int pred, extquant;

    int extrabits = 0;



    int16_t *dc_val;

    pred = ff_msmpeg4_pred_dc(s, n, &dc_val, dir_ptr);



    /* update predictor */

    if (n < 4) {

        *dc_val = level * s->y_dc_scale;

    } else {

        *dc_val = level * s->c_dc_scale;

    }



    /* do the prediction */

    level -= pred;



    if(s->msmpeg4_version<=2){

        if (n < 4) {

            put_bits(&s->pb,

                     ff_v2_dc_lum_table[level + 256][1],

                     ff_v2_dc_lum_table[level + 256][0]);

        }else{

            put_bits(&s->pb,

                     ff_v2_dc_chroma_table[level + 256][1],

                     ff_v2_dc_chroma_table[level + 256][0]);

        }

    }else{

        sign = 0;

        if (level < 0) {

            level = -level;

            sign = 1;

        }

        code = level;

        if (code > DC_MAX)

            code = DC_MAX;

        else if( s->msmpeg4_version>=6 ) {

            if( s->qscale == 1 ) {

                extquant = (level + 3) & 0x3;

                code  = ((level+3)>>2);

            } else if( s->qscale == 2 ) {

                extquant = (level + 1) & 0x1;

                code  = ((level+1)>>1);

            }

        }



        if (s->dc_table_index == 0) {

            if (n < 4) {

                put_bits(&s->pb, ff_table0_dc_lum[code][1], ff_table0_dc_lum[code][0]);

            } else {

                put_bits(&s->pb, ff_table0_dc_chroma[code][1], ff_table0_dc_chroma[code][0]);

            }

        } else {

            if (n < 4) {

                put_bits(&s->pb, ff_table1_dc_lum[code][1], ff_table1_dc_lum[code][0]);

            } else {

                put_bits(&s->pb, ff_table1_dc_chroma[code][1], ff_table1_dc_chroma[code][0]);

            }

        }



        if(s->msmpeg4_version>=6 && s->qscale<=2)

            extrabits = 3 - s->qscale;



        if (code == DC_MAX)

            put_bits(&s->pb, 8 + extrabits, level);

        else if(extrabits > 0)//== VC1 && s->qscale<=2

            put_bits(&s->pb, extrabits, extquant);



        if (level != 0) {

            put_bits(&s->pb, 1, sign);

        }

    }

}

static void msmpeg4_encode_dc(MpegEncContext * s, int level, int n, int *dir_ptr)

{

    int sign, code;

    int pred, extquant;

    int extrabits = 0;



    int16_t *dc_val;

    pred = ff_msmpeg4_pred_dc(s, n, &dc_val, dir_ptr);



    

    if (n < 4) {

        *dc_val = level * s->y_dc_scale;

    } else {

        *dc_val = level * s->c_dc_scale;

    }



    

    level -= pred;



    if(s->msmpeg4_version<=2){

        if (n < 4) {

            put_bits(&s->pb,

                     ff_v2_dc_lum_table[level + 256][1],

                     ff_v2_dc_lum_table[level + 256][0]);

        }else{

            put_bits(&s->pb,

                     ff_v2_dc_chroma_table[level + 256][1],

                     ff_v2_dc_chroma_table[level + 256][0]);

        }

    }else{

        sign = 0;

        if (level < 0) {

            level = -level;

            sign = 1;

        }

        code = level;

        if (code > DC_MAX)

            code = DC_MAX;

        else if( s->msmpeg4_version>=6 ) {

            if( s->qscale == 1 ) {

                extquant = (level + 3) & 0x3;

                code  = ((level+3)>>2);

            } else if( s->qscale == 2 ) {

                extquant = (level + 1) & 0x1;

                code  = ((level+1)>>1);

            }

        }



        if (s->dc_table_index == 0) {

            if (n < 4) {

                put_bits(&s->pb, ff_table0_dc_lum[code][1], ff_table0_dc_lum[code][0]);

            } else {

                put_bits(&s->pb, ff_table0_dc_chroma[code][1], ff_table0_dc_chroma[code][0]);

            }

        } else {

            if (n < 4) {

                put_bits(&s->pb, ff_table1_dc_lum[code][1], ff_table1_dc_lum[code][0]);

            } else {

                put_bits(&s->pb, ff_table1_dc_chroma[code][1], ff_table1_dc_chroma[code][0]);

            }

        }



        if(s->msmpeg4_version>=6 && s->qscale<=2)

            extrabits = 3 - s->qscale;



        if (code == DC_MAX)

            put_bits(&s->pb, 8 + extrabits, level);

        else if(extrabits > 0)

            put_bits(&s->pb, extrabits, extquant);



        if (level != 0) {

            put_bits(&s->pb, 1, sign);

        }

    }

}

    int pred, extquant;
static void FUNC_0(MpegEncContext * VAR_0, int VAR_1, int VAR_2, int *VAR_3)

{

    int VAR_4, VAR_5;

    int VAR_6, VAR_7;

    int VAR_8 = 0;



    int16_t *dc_val;

    VAR_6 = ff_msmpeg4_pred_dc(VAR_0, VAR_2, &dc_val, VAR_3);



    

    if (VAR_2 < 4) {

        *dc_val = VAR_1 * VAR_0->y_dc_scale;

    } else {

        *dc_val = VAR_1 * VAR_0->c_dc_scale;

    }



    

    VAR_1 -= VAR_6;



    if(VAR_0->msmpeg4_version<=2){

        if (VAR_2 < 4) {

            put_bits(&VAR_0->pb,

                     ff_v2_dc_lum_table[VAR_1 + 256][1],

                     ff_v2_dc_lum_table[VAR_1 + 256][0]);

        }else{

            put_bits(&VAR_0->pb,

                     ff_v2_dc_chroma_table[VAR_1 + 256][1],

                     ff_v2_dc_chroma_table[VAR_1 + 256][0]);

        }

    }else{

        VAR_4 = 0;

        if (VAR_1 < 0) {

            VAR_1 = -VAR_1;

            VAR_4 = 1;

        }

        VAR_5 = VAR_1;

        if (VAR_5 > DC_MAX)

            VAR_5 = DC_MAX;

        else if( VAR_0->msmpeg4_version>=6 ) {

            if( VAR_0->qscale == 1 ) {

                VAR_7 = (VAR_1 + 3) & 0x3;

                VAR_5  = ((VAR_1+3)>>2);

            } else if( VAR_0->qscale == 2 ) {

                VAR_7 = (VAR_1 + 1) & 0x1;

                VAR_5  = ((VAR_1+1)>>1);

            }

        }



        if (VAR_0->dc_table_index == 0) {

            if (VAR_2 < 4) {

                put_bits(&VAR_0->pb, ff_table0_dc_lum[VAR_5][1], ff_table0_dc_lum[VAR_5][0]);

            } else {

                put_bits(&VAR_0->pb, ff_table0_dc_chroma[VAR_5][1], ff_table0_dc_chroma[VAR_5][0]);

            }

        } else {

            if (VAR_2 < 4) {

                put_bits(&VAR_0->pb, ff_table1_dc_lum[VAR_5][1], ff_table1_dc_lum[VAR_5][0]);

            } else {

                put_bits(&VAR_0->pb, ff_table1_dc_chroma[VAR_5][1], ff_table1_dc_chroma[VAR_5][0]);

            }

        }



        if(VAR_0->msmpeg4_version>=6 && VAR_0->qscale<=2)

            VAR_8 = 3 - VAR_0->qscale;



        if (VAR_5 == DC_MAX)

            put_bits(&VAR_0->pb, 8 + VAR_8, VAR_1);

        else if(VAR_8 > 0)

            put_bits(&VAR_0->pb, VAR_8, VAR_7);



        if (VAR_1 != 0) {

            put_bits(&VAR_0->pb, 1, VAR_4);

        }

    }

}

static void FUNC_0(MpegEncContext * VAR_0, int VAR_1, int VAR_2, int *VAR_3)
{ int VAR_4, VAR_5; int VAR_6, VAR_7; int VAR_8 = 0; int16_t *dc_val; VAR_6 = ff_msmpeg4_pred_dc(VAR_0, VAR_2, &dc_val, VAR_3); if (VAR_2 < 4) { *dc_val = VAR_1 * VAR_0->y_dc_scale; } else { *dc_val = VAR_1 * VAR_0->c_dc_scale; } VAR_1 -= VAR_6; if(VAR_0->msmpeg4_version<=2){ if (VAR_2 < 4) { put_bits(&VAR_0->pb,
ff_v2_dc_lum_table[VAR_1 + 256][1],
ff_v2_dc_lum_table[VAR_1 + 256][0]); }else{ put_bits(&VAR_0->pb,
ff_v2_dc_chroma_table[VAR_1 + 256][1],
ff_v2_dc_chroma_table[VAR_1 + 256][0]); } }else{ VAR_4 = 0; if (VAR_1 < 0) { VAR_1 = -VAR_1; VAR_4 = 1; } VAR_5 = VAR_1; if (VAR_5 > DC_MAX)
VAR_5 = DC_MAX; else if( VAR_0->msmpeg4_version>=6 ) { if( VAR_0->qscale == 1 ) { VAR_7 = (VAR_1 + 3) & 0x3; VAR_5  = ((VAR_1+3)>>2); } else if( VAR_0->qscale == 2 ) { VAR_7 = (VAR_1 + 1) & 0x1; VAR_5  = ((VAR_1+1)>>1); } } if (VAR_0->dc_table_index == 0) { if (VAR_2 < 4) { put_bits(&VAR_0->pb, ff_table0_dc_lum[VAR_5][1], ff_table0_dc_lum[VAR_5][0]); } else { put_bits(&VAR_0->pb, ff_table0_dc_chroma[VAR_5][1], ff_table0_dc_chroma[VAR_5][0]); } } else { if (VAR_2 < 4) { put_bits(&VAR_0->pb, ff_table1_dc_lum[VAR_5][1], ff_table1_dc_lum[VAR_5][0]); } else { put_bits(&VAR_0->pb, ff_table1_dc_chroma[VAR_5][1], ff_table1_dc_chroma[VAR_5][0]); } } if(VAR_0->msmpeg4_version>=6 && VAR_0->qscale<=2)
VAR_8 = 3 - VAR_0->qscale; if (VAR_5 == DC_MAX)
put_bits(&VAR_0->pb, 8 + VAR_8, VAR_1); else if(VAR_8 > 0)
put_bits(&VAR_0->pb, VAR_8, VAR_7); if (VAR_1 != 0) { put_bits(&VAR_0->pb, 1, VAR_4); } } }