Mercurial > mplayer.hg
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