static void mp_decode_line(MotionPixelsContext *mp, GetBitContext *gb, int y)

{

    YuvPixel p;

    const int y0 = y * mp->avctx->width;

    int w, i, x = 0;



    p = mp->vpt[y];

    if (mp->changes_map[y0 + x] == 0) {

        memset(mp->gradient_scale, 1, sizeof(mp->gradient_scale));

        ++x;

    }

    while (x < mp->avctx->width) {

        w = mp->changes_map[y0 + x];

        if (w != 0) {

            if ((y & 3) == 0) {

                if (mp->changes_map[y0 + x + mp->avctx->width] < w ||

                    mp->changes_map[y0 + x + mp->avctx->width * 2] < w ||

                    mp->changes_map[y0 + x + mp->avctx->width * 3] < w) {

                    for (i = (x + 3) & ~3; i < x + w; i += 4) {

                        mp->hpt[((y / 4) * mp->avctx->width + i) / 4] = mp_get_yuv_from_rgb(mp, i, y);

                    }

                }

            }

            x += w;

            memset(mp->gradient_scale, 1, sizeof(mp->gradient_scale));

            p = mp_get_yuv_from_rgb(mp, x - 1, y);

        } else {

            p.y += mp_gradient(mp, 0, mp_get_vlc(mp, gb));


            if ((x & 3) == 0) {

                if ((y & 3) == 0) {

                    p.v += mp_gradient(mp, 1, mp_get_vlc(mp, gb));


                    p.u += mp_gradient(mp, 2, mp_get_vlc(mp, gb));


                    mp->hpt[((y / 4) * mp->avctx->width + x) / 4] = p;

                } else {

                    p.v = mp->hpt[((y / 4) * mp->avctx->width + x) / 4].v;

                    p.u = mp->hpt[((y / 4) * mp->avctx->width + x) / 4].u;

                }

            }

            mp_set_rgb_from_yuv(mp, x, y, &p);

            ++x;

        }

    }

}
static void mp_decode_line(MotionPixelsContext *mp, GetBitContext *gb, int y)

{

    YuvPixel p;

    const int y0 = y * mp->avctx->width;

    int w, i, x = 0;



    p = mp->vpt[y];

    if (mp->changes_map[y0 + x] == 0) {

        memset(mp->gradient_scale, 1, sizeof(mp->gradient_scale));

        ++x;

    }

    while (x < mp->avctx->width) {

        w = mp->changes_map[y0 + x];

        if (w != 0) {

            if ((y & 3) == 0) {

                if (mp->changes_map[y0 + x + mp->avctx->width] < w ||

                    mp->changes_map[y0 + x + mp->avctx->width * 2] < w ||

                    mp->changes_map[y0 + x + mp->avctx->width * 3] < w) {

                    for (i = (x + 3) & ~3; i < x + w; i += 4) {

                        mp->hpt[((y / 4) * mp->avctx->width + i) / 4] = mp_get_yuv_from_rgb(mp, i, y);

                    }

                }

            }

            x += w;

            memset(mp->gradient_scale, 1, sizeof(mp->gradient_scale));

            p = mp_get_yuv_from_rgb(mp, x - 1, y);

        } else {

            p.y += mp_gradient(mp, 0, mp_get_vlc(mp, gb));


            if ((x & 3) == 0) {

                if ((y & 3) == 0) {

                    p.v += mp_gradient(mp, 1, mp_get_vlc(mp, gb));


                    p.u += mp_gradient(mp, 2, mp_get_vlc(mp, gb));


                    mp->hpt[((y / 4) * mp->avctx->width + x) / 4] = p;

                } else {

                    p.v = mp->hpt[((y / 4) * mp->avctx->width + x) / 4].v;

                    p.u = mp->hpt[((y / 4) * mp->avctx->width + x) / 4].u;

                }

            }

            mp_set_rgb_from_yuv(mp, x, y, &p);

            ++x;

        }

    }

}
static void FUNC_0(MotionPixelsContext *VAR_0, GetBitContext *VAR_1, int VAR_2)

{

    YuvPixel p;

    const int VAR_3 = VAR_2 * VAR_0->avctx->width;

    int VAR_4, VAR_5, VAR_6 = 0;



    p = VAR_0->vpt[VAR_2];

    if (VAR_0->changes_map[VAR_3 + VAR_6] == 0) {

        memset(VAR_0->gradient_scale, 1, sizeof(VAR_0->gradient_scale));

        ++VAR_6;

    }

    while (VAR_6 < VAR_0->avctx->width) {

        VAR_4 = VAR_0->changes_map[VAR_3 + VAR_6];

        if (VAR_4 != 0) {

            if ((VAR_2 & 3) == 0) {

                if (VAR_0->changes_map[VAR_3 + VAR_6 + VAR_0->avctx->width] < VAR_4 ||

                    VAR_0->changes_map[VAR_3 + VAR_6 + VAR_0->avctx->width * 2] < VAR_4 ||

                    VAR_0->changes_map[VAR_3 + VAR_6 + VAR_0->avctx->width * 3] < VAR_4) {

                    for (VAR_5 = (VAR_6 + 3) & ~3; VAR_5 < VAR_6 + VAR_4; VAR_5 += 4) {

                        VAR_0->hpt[((VAR_2 / 4) * VAR_0->avctx->width + VAR_5) / 4] = mp_get_yuv_from_rgb(VAR_0, VAR_5, VAR_2);

                    }

                }

            }

            VAR_6 += VAR_4;

            memset(VAR_0->gradient_scale, 1, sizeof(VAR_0->gradient_scale));

            p = mp_get_yuv_from_rgb(VAR_0, VAR_6 - 1, VAR_2);

        } else {

            p.VAR_2 += mp_gradient(VAR_0, 0, mp_get_vlc(VAR_0, VAR_1));


            if ((VAR_6 & 3) == 0) {

                if ((VAR_2 & 3) == 0) {

                    p.v += mp_gradient(VAR_0, 1, mp_get_vlc(VAR_0, VAR_1));


                    p.u += mp_gradient(VAR_0, 2, mp_get_vlc(VAR_0, VAR_1));


                    VAR_0->hpt[((VAR_2 / 4) * VAR_0->avctx->width + VAR_6) / 4] = p;

                } else {

                    p.v = VAR_0->hpt[((VAR_2 / 4) * VAR_0->avctx->width + VAR_6) / 4].v;

                    p.u = VAR_0->hpt[((VAR_2 / 4) * VAR_0->avctx->width + VAR_6) / 4].u;

                }

            }

            mp_set_rgb_from_yuv(VAR_0, VAR_6, VAR_2, &p);

            ++VAR_6;

        }

    }

}
static void FUNC_0(MotionPixelsContext *VAR_0, GetBitContext *VAR_1, int VAR_2)
{ YuvPixel p; const int VAR_3 = VAR_2 * VAR_0->avctx->width; int VAR_4, VAR_5, VAR_6 = 0; p = VAR_0->vpt[VAR_2]; if (VAR_0->changes_map[VAR_3 + VAR_6] == 0) { memset(VAR_0->gradient_scale, 1, sizeof(VAR_0->gradient_scale)); ++VAR_6; } while (VAR_6 < VAR_0->avctx->width) { VAR_4 = VAR_0->changes_map[VAR_3 + VAR_6]; if (VAR_4 != 0) { if ((VAR_2 & 3) == 0) { if (VAR_0->changes_map[VAR_3 + VAR_6 + VAR_0->avctx->width] < VAR_4 ||
VAR_0->changes_map[VAR_3 + VAR_6 + VAR_0->avctx->width * 2] < VAR_4 ||
VAR_0->changes_map[VAR_3 + VAR_6 + VAR_0->avctx->width * 3] < VAR_4) { for (VAR_5 = (VAR_6 + 3) & ~3; VAR_5 < VAR_6 + VAR_4; VAR_5 += 4) { VAR_0->hpt[((VAR_2 / 4) * VAR_0->avctx->width + VAR_5) / 4] = mp_get_yuv_from_rgb(VAR_0, VAR_5, VAR_2); } } } VAR_6 += VAR_4; memset(VAR_0->gradient_scale, 1, sizeof(VAR_0->gradient_scale)); p = mp_get_yuv_from_rgb(VAR_0, VAR_6 - 1, VAR_2); } else { p.VAR_2 += mp_gradient(VAR_0, 0, mp_get_vlc(VAR_0, VAR_1)); if ((VAR_6 & 3) == 0) { if ((VAR_2 & 3) == 0) { p.v += mp_gradient(VAR_0, 1, mp_get_vlc(VAR_0, VAR_1)); p.u += mp_gradient(VAR_0, 2, mp_get_vlc(VAR_0, VAR_1)); VAR_0->hpt[((VAR_2 / 4) * VAR_0->avctx->width + VAR_6) / 4] = p; } else { p.v = VAR_0->hpt[((VAR_2 / 4) * VAR_0->avctx->width + VAR_6) / 4].v; p.u = VAR_0->hpt[((VAR_2 / 4) * VAR_0->avctx->width + VAR_6) / 4].u; } } mp_set_rgb_from_yuv(VAR_0, VAR_6, VAR_2, &p); ++VAR_6; } } }