changeset 3771:a14b3a600b81

new -pp options stuff (-npp ...) see line527@postproc/postprocess.c ;) for the documentation of the format
author michael
date Wed, 26 Dec 2001 19:45:49 +0000
parents 4f1a99fb9d9a
children f9d9f6ab79f4
files cfg-common.h cfg-mencoder.h cfg-mplayer.h postproc/postprocess.c postproc/postprocess.h
diffstat 5 files changed, 50 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/cfg-common.h	Wed Dec 26 16:34:06 2001 +0000
+++ b/cfg-common.h	Wed Dec 26 19:45:49 2001 +0000
@@ -77,6 +77,7 @@
 	{"divxq", "Option -divxq has been renamed to -pp (postprocessing), use -pp !\n",
             CONF_TYPE_PRINT, 0, 0, 0},
 	{"pp", &divx_quality, CONF_TYPE_INT, CONF_MIN, 0, 63},
+	{"npp", readPPOpt, CONF_TYPE_FUNC_PARAM, 0, 0, 0},
 #ifdef HAVE_ODIVX_POSTPROCESS
         {"oldpp", &use_old_pp, CONF_TYPE_FLAG, 0, 0, 1},
 #else
--- a/cfg-mencoder.h	Wed Dec 26 16:34:06 2001 +0000
+++ b/cfg-mencoder.h	Wed Dec 26 19:45:49 2001 +0000
@@ -12,6 +12,7 @@
 #endif
 
 extern int sws_flags;
+extern int readPPOpt(void *, char *arg);
 
 #ifdef HAVE_DIVX4ENCORE
 struct config divx4opts_conf[]={
--- a/cfg-mplayer.h	Wed Dec 26 16:34:06 2001 +0000
+++ b/cfg-mplayer.h	Wed Dec 26 19:45:49 2001 +0000
@@ -89,6 +89,8 @@
 };
 
 extern int sws_flags;
+extern int readPPOpt(void *conf, char *arg);
+
 
 /*
  * CONF_TYPE_FUNC_FULL :
--- a/postproc/postprocess.c	Wed Dec 26 16:34:06 2001 +0000
+++ b/postproc/postprocess.c	Wed Dec 26 19:45:49 2001 +0000
@@ -143,6 +143,12 @@
 static uint64_t packedYScale=	0x0100010001000100LL;
 #endif
 
+extern int divx_quality;
+int newPPFlag=0; //is set if -npp is used
+struct PPMode gPPMode[GET_PP_QUALITY_MAX+1];
+
+extern int verbose;
+
 int hFlatnessThreshold= 56 - 16;
 int vFlatnessThreshold= 56 - 16;
 int deringThreshold= 20;
@@ -565,7 +571,7 @@
 
 	strncpy(temp, name, GET_MODE_BUFFER_SIZE);
 
-	printf("%s\n", name);
+	if(verbose) printf("%s\n", name);
 
 	for(;;){
 		char *filterName;
@@ -582,7 +588,7 @@
 		if(filterToken == NULL) break;
 		p+= strlen(filterToken) + 1; // p points to next filterToken
 		filterName= strtok(filterToken, optionDelimiters);
-		printf("%s::%s\n", filterToken, filterName);
+		if(verbose) printf("%s::%s\n", filterToken, filterName);
 
 		if(*filterName == '-')
 		{
@@ -594,7 +600,7 @@
 			option= strtok(NULL, optionDelimiters);
 			if(option == NULL) break;
 
-			printf("%s\n", option);
+			if(verbose) printf(" option: %s\n", option);
 			if(!strcmp("autoq", option) || !strcmp("a", option)) q= quality;
 			else if(!strcmp("nochrom", option) || !strcmp("y", option)) chrom=0;
 			else if(!strcmp("chrom", option) || !strcmp("c", option)) chrom=1;
@@ -700,11 +706,34 @@
 	if(ppMode.chromMode & DERING) ppMode.oldMode |= PP_DERING_C;
 #endif
 
+	if(verbose) printf("lumMode=%X, chromMode=%X\n", ppMode.lumMode, ppMode.chromMode);
 	return ppMode;
 }
 
 /**
+ * Check and load the -npp part of the cmd line
+ */
+int readPPOpt(void *conf, char *arg)
+{
+	int quality;
+	for(quality=0; quality<GET_PP_QUALITY_MAX+1; quality++)
+	{
+		gPPMode[quality]= getPPModeByNameAndQuality(arg, quality);
+
+		if(gPPMode[quality].error) return -1;
+	}
+	newPPFlag=1;
+
+// it shouldnt matter what we set divx_quality to as long as its not 0 
+// (we dont use it if newPPFlag is set)
+	divx_quality=1; 
+	return 1;
+}
+
+/**
  * Obsolete, dont use it, use postprocess2() instead
+ * this will check newPPFlag automatically and use postprocess2 if it is set
+ * mode = quality if newPPFlag
  */
 void  postprocess(unsigned char * src[], int src_stride,
                  unsigned char * dst[], int dst_stride,
@@ -714,20 +743,17 @@
 {
 	struct PPMode ppMode;
 	static QP_STORE_T zeroArray[2048/8];
-/*
-	static int qual=0;
 
-	ppMode= getPPModeByNameAndQuality("fast,default,-hdeblock,-vdeblock,tmpnoise:150:200:300", qual);
-	printf("OK\n");
-	qual++;
-	qual%=7;
-	printf("\n%X %X %X %X :%d: %d %d %d\n", ppMode.lumMode, ppMode.chromMode, ppMode.oldMode, ppMode.error,
-		qual, ppMode.maxTmpNoise[0], ppMode.maxTmpNoise[1], ppMode.maxTmpNoise[2]);
-	postprocess2(src, src_stride, dst, dst_stride,
-                 horizontal_size, vertical_size, QP_store, QP_stride, &ppMode);
+	if(newPPFlag)
+	{
+		ppMode= gPPMode[mode];
+		
+		postprocess2(src, src_stride, dst, dst_stride,
+			horizontal_size, vertical_size, QP_store, QP_stride, &ppMode);
 
-	return;
-*/
+		return;
+	}
+	
 	if(QP_store==NULL)
 	{
 		QP_store= zeroArray;
@@ -844,6 +870,7 @@
 
 /**
  * gets the mode flags for a given quality (larger values mean slower but better postprocessing)
+ * with -npp it simply returns quality 
  * 0 <= quality <= 6
  */
 int getPpModeForQuality(int quality){
@@ -880,7 +907,8 @@
 	};
 	if(use_old_pp) return odivx_modes[quality];
 #endif
-	return modes[quality];
+	if(newPPFlag)	return quality;
+	else		return modes[quality];
 }
 
 
--- a/postproc/postprocess.h	Wed Dec 26 16:34:06 2001 +0000
+++ b/postproc/postprocess.h	Wed Dec 26 19:45:49 2001 +0000
@@ -114,4 +114,6 @@
 // name is the stuff after "-pp" on the command line
 struct PPMode getPpModeByNameAndQuality(char *name, int quality);
 
+int readPPOpt(void *conf, char *arg);
+
 #endif