UINT16 *dc_val;
INT16 *dc_val;
static void msmpeg4_encode_dc(MpegEncContext * s, int level, int n, int *dir_ptr){    int sign, code;    int pred;    UINT16 *dc_val;    pred = 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;    sign = 0;    if (level < 0) {        level = -level;        sign = 1;    }        code = level;    if (code > DC_MAX)         code = DC_MAX;    if (s->dc_table_index == 0) {        if (n < 4) {            put_bits(&s->pb, table0_dc_lum[code][1], table0_dc_lum[code][0]);        } else {            put_bits(&s->pb, table0_dc_chroma[code][1], table0_dc_chroma[code][0]);        }    } else {        if (n < 4) {            put_bits(&s->pb, table1_dc_lum[code][1], table1_dc_lum[code][0]);        } else {            put_bits(&s->pb, table1_dc_chroma[code][1], table1_dc_chroma[code][0]);        }    }            if (code == DC_MAX)        put_bits(&s->pb, 8, level);            if (level != 0) {        put_bits(&s->pb, 1, sign);    }}