changeset 26006:ac00f0e343df

vf_sab mirrors coefficients past the edge of the picture instead of cropping: if (iy<0) iy= -iy; if(iy>=h) iy= h-iy-1; This produces -1,-2,-3... as it goes further past the end of an image, which crashes. Change this to h-1,h-2,h-3.. to avoid the crash. patch by Alexander Strange, astrange ithinksw com
author diego
date Wed, 20 Feb 2008 08:24:26 +0000
parents 620976e4f865
children 429c8f64b810
files libmpcodecs/vf_sab.c
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/vf_sab.c	Wed Feb 20 08:20:49 2008 +0000
+++ b/libmpcodecs/vf_sab.c	Wed Feb 20 08:24:26 2008 +0000
@@ -203,7 +203,7 @@
 					int dx;
 					int iy= y+dy - radius;
 					if     (iy<0)  iy=  -iy;
-					else if(iy>=h) iy= h-iy-1;
+					else if(iy>=h) iy= h+h-iy-1;
 
 					for(dx=0; dx<radius*2+1; dx++){
 						const int ix= x+dx - radius;
@@ -220,13 +220,13 @@
 					int dx;
 					int iy= y+dy - radius;
 					if     (iy<0)  iy=  -iy;
-					else if(iy>=h) iy= h-iy-1;
+					else if(iy>=h) iy= h+h-iy-1;
 
 					for(dx=0; dx<radius*2+1; dx++){
 						int ix= x+dx - radius;
 						int factor;
 						if     (ix<0)  ix=  -ix;
-						else if(ix>=w) ix= w-ix-1;
+						else if(ix>=w) ix= w+w-ix-1;
 
 						factor= f.colorDiffCoeff[256+preVal - f.preFilterBuf[ix + iy*f.preFilterStride] ]
 							*f.distCoeff[dx + dy*f.distStride];