From ff490720135b7b3d2e7e33cce8f6bc843e4333ab Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michaelni@gmx.at>
Date: Wed, 15 Oct 2003 12:08:31 +0000
Subject: [PATCH] dither scaling coefficients so they add up to 1.0

Originally committed as revision 11124 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc
---
 postproc/swscale.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/postproc/swscale.c b/postproc/swscale.c
index e911a6467db..d46e6167dcb 100644
--- a/postproc/swscale.c
+++ b/postproc/swscale.c
@@ -1084,8 +1084,10 @@ static inline void initFilter(int16_t **outFilter, int16_t **filterPos, int *out
 	for(i=0; i<dstW; i++)
 	{
 		int j;
+		double error=0;
 		double sum=0;
 		double scale= one;
+
 		for(j=0; j<filterSize; j++)
 		{
 			sum+= filter[i*filterSize + j];
@@ -1093,7 +1095,10 @@ static inline void initFilter(int16_t **outFilter, int16_t **filterPos, int *out
 		scale/= sum;
 		for(j=0; j<*outFilterSize; j++)
 		{
-			(*outFilter)[i*(*outFilterSize) + j]= (int)(filter[i*filterSize + j]*scale + 0.5);
+			double v= filter[i*filterSize + j]*scale + error;
+			int intV= floor(v + 0.5);
+			(*outFilter)[i*(*outFilterSize) + j]= intV;
+			error = v - intV;
 		}
 	}
 	
-- 
GitLab