From 48eb95537d776a836c0f7860008f667b6d4c1548 Mon Sep 17 00:00:00 2001 From: reimar Date: Sun, 28 Jan 2007 13:51:24 +0000 Subject: [PATCH] Fix number of rows in interlaced mode. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22042 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_gif.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libmpdemux/demux_gif.c b/libmpdemux/demux_gif.c index 4daaf5efd5..bdd8860abf 100644 --- a/libmpdemux/demux_gif.c +++ b/libmpdemux/demux_gif.c @@ -176,19 +176,23 @@ static int demux_gif_fill_buffer(demuxer_t *demuxer, demux_stream_t *ds) 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