From 3540bd7af543587be1bf3f58b21f25697c4a76d6 Mon Sep 17 00:00:00 2001 From: reimar Date: Mon, 1 Feb 2010 19:14:01 +0000 Subject: Fix -vf tfields=1 so it does not read out of bounds or leave parts of the output frame uninitialized. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30483 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/vf_tfields.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'libmpcodecs') diff --git a/libmpcodecs/vf_tfields.c b/libmpcodecs/vf_tfields.c index 851d3f24da..b4768e2060 100644 --- a/libmpcodecs/vf_tfields.c +++ b/libmpcodecs/vf_tfields.c @@ -43,13 +43,16 @@ static void deint(unsigned char *dest, int ds, unsigned char *src, int ss, int w int x, y; src += ss; dest += ds; + h--; if (field) { + fast_memcpy(dest - ds, src - ss, w); src += ss; dest += ds; - h -= 2; + h--; } - for (y=h/2; y; y--) { - for (x=0; x 0; y--) { + dest[0] = src[0]; + for (x=1; x src[x]) && (src[x+ss] > src[x]))) { //dest[x] = (src[x+ss] + src[x-ss])>>1; @@ -59,9 +62,12 @@ static void deint(unsigned char *dest, int ds, unsigned char *src, int ss, int w } else dest[x] = src[x]; } + dest[w-1] = src[w-1]; dest += ds<<1; src += ss<<1; } + if (h & 1) + fast_memcpy(dest, src, w); } #if HAVE_AMD3DNOW -- cgit v1.2.3