changeset 3832:d05cfaf5f0f2

minor brightness/contrast bugfix / moved some global vars into ppMode non mmx compilation bugfix
author michael
date Fri, 28 Dec 2001 13:56:04 +0000
parents 9926017e5efd
children dd5ae1d5ea42
files postproc/postprocess.c postproc/postprocess.h postproc/postprocess_template.c
diffstat 3 files changed, 29 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/postproc/postprocess.c	Fri Dec 28 13:28:06 2001 +0000
+++ b/postproc/postprocess.c	Fri Dec 28 13:56:04 2001 +0000
@@ -47,6 +47,7 @@
 
 /*
 TODO:
+remove global/static vars
 reduce the time wasted on the mem transfer
 implement everything in C at least (done at the moment but ...)
 unroll stuff if instructions depend too much on the prior one
@@ -153,15 +154,12 @@
 int vFlatnessThreshold= 56 - 16;
 int deringThreshold= 20;
 
-static int dcOffset= 1;
-static int dcThreshold= 3;
+static int dcOffset;
+static int dcThreshold;
 
 //amount of "black" u r willing to loose to get a brightness corrected picture
 double maxClippedThreshold= 0.01;
 
-int maxAllowedY=234;
-int minAllowedY=16;
-
 static struct PPFilter filters[]=
 {
 	{"hb", "hdeblock", 		1, 1, 3, H_DEBLOCK},
@@ -672,6 +670,7 @@
 					ppMode.minAllowedY= 16;
 					ppMode.maxAllowedY= 234;
 					for(o=0; options[o]!=NULL; o++)
+					{
 						if(  !strcmp(options[o],"fullyrange")
 						   ||!strcmp(options[o],"f"))
 						{
@@ -679,6 +678,7 @@
 							ppMode.maxAllowedY= 255;
 							numOfUnknownOptions--;
 						}
+					}
 				}
 				else if(filters[i].mask == TEMP_NOISE_FILTER)
 				{
@@ -704,6 +704,9 @@
 				else if(filters[i].mask == V_DEBLOCK || filters[i].mask == H_DEBLOCK)
 				{
 					int o;
+					ppMode.maxDcDiff=1;
+//					hFlatnessThreshold= 40;
+//					vFlatnessThreshold= 40;
 
 					for(o=0; options[o]!=NULL && o<2; o++)
 					{
@@ -712,16 +715,7 @@
 						if(tail==options[o]) break;
 
 						numOfUnknownOptions--;
-						if(o==0)
-						{
-							dcOffset= val;
-							dcThreshold= 2*val+1;
-							mmxDCOffset= 0x7F - val;
-							mmxDCThreshold= 0x7F - 2*val - 1;
-							
-							mmxDCOffset*= 0x0101010101010101LL;
-							mmxDCThreshold*= 0x0101010101010101LL;
-						}  
+						if(o==0) ppMode.maxDcDiff= val;
 						else hFlatnessThreshold=
 						     vFlatnessThreshold= val;
 					}
@@ -800,6 +794,9 @@
 	ppMode.maxTmpNoise[0]= 700;
 	ppMode.maxTmpNoise[1]= 1500;
 	ppMode.maxTmpNoise[2]= 3000;
+	ppMode.maxAllowedY= 234;
+	ppMode.minAllowedY= 16;
+	ppMode.maxDcDiff= 1;
 
 #ifdef HAVE_ODIVX_POSTPROCESS
 // Note: I could make this shit outside of this file, but it would mean one
--- a/postproc/postprocess.h	Fri Dec 28 13:28:06 2001 +0000
+++ b/postproc/postprocess.h	Fri Dec 28 13:56:04 2001 +0000
@@ -85,6 +85,8 @@
 	int maxAllowedY; // for brihtness correction
 
 	int maxTmpNoise[3]; // for Temporal Noise Reducing filter (Maximal sum of abs differences)
+	
+	int maxDcDiff; // max abs diff between pixels to be considered flat
 };
 
 struct PPFilter{
--- a/postproc/postprocess_template.c	Fri Dec 28 13:28:06 2001 +0000
+++ b/postproc/postprocess_template.c	Fri Dec 28 13:56:04 2001 +0000
@@ -2615,11 +2615,20 @@
 	long long memcpyTime=0, vertTime=0, horizTime=0, sumTime;
 	sumTime= rdtsc();
 #endif
-//mode= 0x7F;
+
+	dcOffset= ppMode->maxDcDiff;
+	dcThreshold= ppMode->maxDcDiff*2 + 1;
+
 #ifdef HAVE_MMX
 	maxTmpNoise[0]= ppMode->maxTmpNoise[0];
 	maxTmpNoise[1]= ppMode->maxTmpNoise[1];
 	maxTmpNoise[2]= ppMode->maxTmpNoise[2];
+	
+	mmxDCOffset= 0x7F - dcOffset;
+	mmxDCThreshold= 0x7F - dcThreshold;
+
+	mmxDCOffset*= 0x0101010101010101LL;
+	mmxDCThreshold*= 0x0101010101010101LL;
 #endif
 
 	if(mode & CUBIC_IPOL_DEINT_FILTER) copyAhead=16;
@@ -2662,8 +2671,8 @@
 
 		if(mode & FULL_Y_RANGE)
 		{
-			maxAllowedY=255;
-			minAllowedY=0;
+			ppMode->maxAllowedY=255;
+			ppMode->minAllowedY=0;
 		}
 	}
 
@@ -2703,14 +2712,14 @@
 			clipped-= yHistogram[white];
 		}
 
-		scale= (double)(maxAllowedY - minAllowedY) / (double)(white-black);
+		scale= (double)(ppMode->maxAllowedY - ppMode->minAllowedY) / (double)(white-black);
 
 #ifdef HAVE_MMX2
 		packedYScale= (uint16_t)(scale*256.0 + 0.5);
-		packedYOffset= (((black*packedYScale)>>8) - minAllowedY) & 0xFFFF;
+		packedYOffset= (((black*packedYScale)>>8) - ppMode->minAllowedY) & 0xFFFF;
 #else
 		packedYScale= (uint16_t)(scale*1024.0 + 0.5);
-		packedYOffset= (black - minAllowedY) & 0xFFFF;
+		packedYOffset= (black - ppMode->minAllowedY) & 0xFFFF;
 #endif
 
 		packedYOffset|= packedYOffset<<32;