static void draw_line(uint8_t *buf, int sx, int sy, int ex, int ey,

                      int w, int h, int stride, int color)

{

    int x, y, fr, f;



    sx = av_clip(sx, 0, w - 1);

    sy = av_clip(sy, 0, h - 1);

    ex = av_clip(ex, 0, w - 1);

    ey = av_clip(ey, 0, h - 1);



    buf[sy * stride + sx] += color;



    if (FFABS(ex - sx) > FFABS(ey - sy)) {

        if (sx > ex) {

            FFSWAP(int, sx, ex);

            FFSWAP(int, sy, ey);

        }

        buf += sx + sy * stride;

        ex  -= sx;

        f    = ((ey - sy) << 16) / ex;

        for (x = 0; x = ex; x++) {

            y  = (x * f) >> 16;

            fr = (x * f) & 0xFFFF;

            buf[y * stride + x]       += (color * (0x10000 - fr)) >> 16;

            buf[(y + 1) * stride + x] += (color *            fr ) >> 16;

        }

    } else {

        if (sy > ey) {

            FFSWAP(int, sx, ex);

            FFSWAP(int, sy, ey);

        }

        buf += sx + sy * stride;

        ey  -= sy;

        if (ey)

            f  = ((ex - sx) << 16) / ey;

        else

            f = 0;

        for (y = 0; y = ey; y++) {

            x  = (y * f) >> 16;

            fr = (y * f) & 0xFFFF;

            buf[y * stride + x]     += (color * (0x10000 - fr)) >> 16;

            buf[y * stride + x + 1] += (color *            fr ) >> 16;

        }

    }

}

static void draw_line(uint8_t *buf, int sx, int sy, int ex, int ey,

                      int w, int h, int stride, int color)

{

    int x, y, fr, f;



    sx = av_clip(sx, 0, w - 1);

    sy = av_clip(sy, 0, h - 1);

    ex = av_clip(ex, 0, w - 1);

    ey = av_clip(ey, 0, h - 1);



    buf[sy * stride + sx] += color;



    if (FFABS(ex - sx) > FFABS(ey - sy)) {

        if (sx > ex) {

            FFSWAP(int, sx, ex);

            FFSWAP(int, sy, ey);

        }

        buf += sx + sy * stride;

        ex  -= sx;

        f    = ((ey - sy) << 16) / ex;

        for (x = 0; x = ex; x++) {

            y  = (x * f) >> 16;

            fr = (x * f) & 0xFFFF;

            buf[y * stride + x]       += (color * (0x10000 - fr)) >> 16;

            buf[(y + 1) * stride + x] += (color *            fr ) >> 16;

        }

    } else {

        if (sy > ey) {

            FFSWAP(int, sx, ex);

            FFSWAP(int, sy, ey);

        }

        buf += sx + sy * stride;

        ey  -= sy;

        if (ey)

            f  = ((ex - sx) << 16) / ey;

        else

            f = 0;

        for (y = 0; y = ey; y++) {

            x  = (y * f) >> 16;

            fr = (y * f) & 0xFFFF;

            buf[y * stride + x]     += (color * (0x10000 - fr)) >> 16;

            buf[y * stride + x + 1] += (color *            fr ) >> 16;

        }

    }

}

static void FUNC_0(uint8_t *VAR_0, int VAR_1, int VAR_2, int VAR_3, int VAR_4,

                      int VAR_5, int VAR_6, int VAR_7, int VAR_8)

{

    int VAR_9, VAR_10, VAR_11, VAR_12;



    VAR_1 = av_clip(VAR_1, 0, VAR_5 - 1);

    VAR_2 = av_clip(VAR_2, 0, VAR_6 - 1);

    VAR_3 = av_clip(VAR_3, 0, VAR_5 - 1);

    VAR_4 = av_clip(VAR_4, 0, VAR_6 - 1);



    VAR_0[VAR_2 * VAR_7 + VAR_1] += VAR_8;



    if (FFABS(VAR_3 - VAR_1) > FFABS(VAR_4 - VAR_2)) {

        if (VAR_1 > VAR_3) {

            FFSWAP(int, VAR_1, VAR_3);

            FFSWAP(int, VAR_2, VAR_4);

        }

        VAR_0 += VAR_1 + VAR_2 * VAR_7;

        VAR_3  -= VAR_1;

        VAR_12    = ((VAR_4 - VAR_2) << 16) / VAR_3;

        for (VAR_9 = 0; VAR_9 = VAR_3; VAR_9++) {

            VAR_10  = (VAR_9 * VAR_12) >> 16;

            VAR_11 = (VAR_9 * VAR_12) & 0xFFFF;

            VAR_0[VAR_10 * VAR_7 + VAR_9]       += (VAR_8 * (0x10000 - VAR_11)) >> 16;

            VAR_0[(VAR_10 + 1) * VAR_7 + VAR_9] += (VAR_8 *            VAR_11 ) >> 16;

        }

    } else {

        if (VAR_2 > VAR_4) {

            FFSWAP(int, VAR_1, VAR_3);

            FFSWAP(int, VAR_2, VAR_4);

        }

        VAR_0 += VAR_1 + VAR_2 * VAR_7;

        VAR_4  -= VAR_2;

        if (VAR_4)

            VAR_12  = ((VAR_3 - VAR_1) << 16) / VAR_4;

        else

            VAR_12 = 0;

        for (VAR_10 = 0; VAR_10 = VAR_4; VAR_10++) {

            VAR_9  = (VAR_10 * VAR_12) >> 16;

            VAR_11 = (VAR_10 * VAR_12) & 0xFFFF;

            VAR_0[VAR_10 * VAR_7 + VAR_9]     += (VAR_8 * (0x10000 - VAR_11)) >> 16;

            VAR_0[VAR_10 * VAR_7 + VAR_9 + 1] += (VAR_8 *            VAR_11 ) >> 16;

        }

    }

}

static void FUNC_0(uint8_t *VAR_0, int VAR_1, int VAR_2, int VAR_3, int VAR_4,
int VAR_5, int VAR_6, int VAR_7, int VAR_8)
{ int VAR_9, VAR_10, VAR_11, VAR_12; VAR_1 = av_clip(VAR_1, 0, VAR_5 - 1); VAR_2 = av_clip(VAR_2, 0, VAR_6 - 1); VAR_3 = av_clip(VAR_3, 0, VAR_5 - 1); VAR_4 = av_clip(VAR_4, 0, VAR_6 - 1); VAR_0[VAR_2 * VAR_7 + VAR_1] += VAR_8; if (FFABS(VAR_3 - VAR_1) > FFABS(VAR_4 - VAR_2)) { if (VAR_1 > VAR_3) { FFSWAP(int, VAR_1, VAR_3); FFSWAP(int, VAR_2, VAR_4); } VAR_0 += VAR_1 + VAR_2 * VAR_7; VAR_3  -= VAR_1; VAR_12    = ((VAR_4 - VAR_2) << 16) / VAR_3; for (VAR_9 = 0; VAR_9 = VAR_3; VAR_9++) { VAR_10  = (VAR_9 * VAR_12) >> 16; VAR_11 = (VAR_9 * VAR_12) & 0xFFFF; VAR_0[VAR_10 * VAR_7 + VAR_9]       += (VAR_8 * (0x10000 - VAR_11)) >> 16; VAR_0[(VAR_10 + 1) * VAR_7 + VAR_9] += (VAR_8 *            VAR_11 ) >> 16; } } else { if (VAR_2 > VAR_4) { FFSWAP(int, VAR_1, VAR_3); FFSWAP(int, VAR_2, VAR_4); } VAR_0 += VAR_1 + VAR_2 * VAR_7; VAR_4  -= VAR_2; if (VAR_4)
VAR_12  = ((VAR_3 - VAR_1) << 16) / VAR_4; else
VAR_12 = 0; for (VAR_10 = 0; VAR_10 = VAR_4; VAR_10++) { VAR_9  = (VAR_10 * VAR_12) >> 16; VAR_11 = (VAR_10 * VAR_12) & 0xFFFF; VAR_0[VAR_10 * VAR_7 + VAR_9]     += (VAR_8 * (0x10000 - VAR_11)) >> 16; VAR_0[VAR_10 * VAR_7 + VAR_9 + 1] += (VAR_8 *            VAR_11 ) >> 16; } } }