# HG changeset patch # User reimar # Date 1169992284 0 # Node ID 4139d35bf255bbc01e2c08c2725ac87e683599d5 # Parent 3fba002aa79a40cf402d01d2697f3c27eed180d0 Fix number of rows in interlaced mode. diff -r 3fba002aa79a -r 4139d35bf255 libmpdemux/demux_gif.c --- a/libmpdemux/demux_gif.c Sun Jan 28 12:49:44 2007 +0000 +++ b/libmpdemux/demux_gif.c Sun Jan 28 13:51:24 2007 +0000 @@ -176,19 +176,23 @@ if (gif->Image.Interlace) { uint8_t *s = buf; - memcpy_transp_pic(dest, s, w, h >> 3, + int ih = (h - 0 + 7) >> 3; + memcpy_transp_pic(dest, s, w, ih, priv->w << 3, gif->Image.Width, transparency, transparent_col); - s += (h >> 3) * w; - memcpy_transp_pic(dest + (priv->w << 2), s, w, h >> 3, + s += ih * w; + ih = (h - 4 + 7) >> 3; + memcpy_transp_pic(dest + (priv->w << 2), s, w, ih, priv->w << 3, gif->Image.Width, transparency, transparent_col); - s += (h >> 3) * w; - memcpy_transp_pic(dest + (priv->w << 1), s, w, h >> 2, + s += ih * w; + ih = (h - 2 + 3) >> 2; + memcpy_transp_pic(dest + (priv->w << 1), s, w, ih, priv->w << 2, gif->Image.Width, transparency, transparent_col); - s += (h >> 2) * w; - memcpy_transp_pic(dest + priv->w, s, w, h >> 1, + s += ih * w; + ih = (h - 1 + 1) >> 1; + memcpy_transp_pic(dest + priv->w, s, w, ih, priv->w << 1, gif->Image.Width, transparency, transparent_col); } else