[Mplayer-cvslog] CVS: main/postproc postprocess_template.c,1.54,1.55

Michael Niedermayer michael at mplayer.dev.hu
Mon Jan 28 23:38:28 CET 2002


Update of /cvsroot/mplayer/main/postproc
In directory mplayer:/var/tmp.root/cvs-serv15656

Modified Files:
	postprocess_template.c 
Log Message:
minor QP bugfix


Index: postprocess_template.c
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/postprocess_template.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- postprocess_template.c	19 Jan 2002 16:56:35 -0000	1.54
+++ postprocess_template.c	28 Jan 2002 22:38:15 -0000	1.55
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2001 Michael Niedermayer (michaelni at gmx.at)
+    Copyright (C) 2001-2002 Michael Niedermayer (michaelni at gmx.at)
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -2587,7 +2587,7 @@
 	   after watching a black picture for 5 hours*/
 	static uint64_t *yHistogram= NULL;
 	int black=0, white=255; // blackest black and whitest white in the picture
-	int QPCorrecture= 256;
+	int QPCorrecture= 256*256;
 
 	/* Temporary buffers for handling the last row(s) */
 	static uint8_t *tempDst= NULL;
@@ -2615,7 +2615,6 @@
 	long long memcpyTime=0, vertTime=0, horizTime=0, sumTime;
 	sumTime= rdtsc();
 #endif
-
 	dcOffset= ppMode->maxDcDiff;
 	dcThreshold= ppMode->maxDcDiff*2 + 1;
 
@@ -2727,16 +2726,17 @@
 
 		packedYScale|= packedYScale<<32;
 		packedYScale|= packedYScale<<16;
+		
+		if(mode & LEVEL_FIX)	QPCorrecture= (int)(scale*256*256 + 0.5);
+		else			QPCorrecture= 256*256;
 	}
 	else
 	{
 		packedYScale= 0x0100010001000100LL;
 		packedYOffset= 0;
+		QPCorrecture= 256*256;
 	}
 
-	if(mode & LEVEL_FIX)	QPCorrecture= packedYScale &0xFFFF;
-	else			QPCorrecture= 256;
-
 	/* copy & deinterlace first row of blocks */
 	y=-BLOCK_SIZE;
 	{
@@ -2819,8 +2819,8 @@
 #endif
 #ifdef ARCH_X86
 		int *QPptr= isColor ? &QPs[(y>>3)*QPStride] :&QPs[(y>>4)*QPStride];
-		int QPDelta= isColor ? 1<<(32-3) : 1<<(32-4);
-		int QPFrac= QPDelta;
+		int QPDelta= isColor ? (-1) : 1<<31;
+		int QPFrac= 1<<30;
 #endif
 		int QP=0;
 		/* can we mess with a 8x16 block from srcBlock/dstBlock downwards and 1 line upwards
@@ -2875,7 +2875,7 @@
 #endif
 			if(!isColor)
 			{
-				QP= (QP* QPCorrecture)>>8;
+				QP= (QP* QPCorrecture + 256*128)>>16;
 				yHistogram[ srcBlock[srcStride*12 + 4] ]++;
 			}
 #ifdef HAVE_MMX




More information about the MPlayer-cvslog mailing list