summaryrefslogtreecommitdiffstats
path: root/postproc
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-10-29 20:12:24 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-10-29 20:12:24 +0000
commitde382c1b8c5b393963f9abc4c4f781f6f311c759 (patch)
treeca5010490331d6e4489e199e7b143705fd3aefa7 /postproc
parentf5929b0a598ef0da8f002f6814b34f19368cf1fe (diff)
downloadmpv-de382c1b8c5b393963f9abc4c4f781f6f311c759.tar.bz2
mpv-de382c1b8c5b393963f9abc4c4f781f6f311c759.tar.xz
cleanup
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7964 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'postproc')
-rw-r--r--postproc/postprocess.c62
-rw-r--r--postproc/postprocess.h15
-rw-r--r--postproc/postprocess_template.c2
3 files changed, 24 insertions, 55 deletions
diff --git a/postproc/postprocess.c b/postproc/postprocess.c
index f3914ecdc7..a3d2ed36bb 100644
--- a/postproc/postprocess.c
+++ b/postproc/postprocess.c
@@ -47,10 +47,8 @@ c = checked against the other implementations (-vo md5)
/*
TODO:
-remove global/static vars
reduce the time wasted on the mem transfer
unroll stuff if instructions depend too much on the prior one
-we use 8x8 blocks for the horizontal filters, opendivx seems to use 8x4?
move YScale thing to the end instead of fixing QP
write a faster and higher quality deblocking filter :)
make the mainloop more flexible (variable number of blocks at once
@@ -69,7 +67,6 @@ try to unroll inner for(x=0 ... loop to avoid these damn if(x ... checks
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <errno.h>
#ifdef HAVE_MALLOC_H
#include <malloc.h>
#endif
@@ -104,15 +101,9 @@ static uint64_t __attribute__((aligned(8))) b08= 0x0808080808080808LL;
static uint64_t __attribute__((aligned(8))) b80= 0x8080808080808080LL;
#endif
-extern int divx_quality;
-static int firstTime2 = 0;
+static int verbose= 0;
-extern int verbose;
-
-int deringThreshold= 20;
-
-//amount of "black" u r willing to loose to get a brightness corrected picture
-double maxClippedThreshold= 0.01;
+static const int deringThreshold= 20;
struct PPFilter{
char *shortName;
@@ -593,11 +584,21 @@ struct PPMode pp_get_mode_by_name_and_quality(char *name, int quality)
char *p= temp;
char *filterDelimiters= ",/";
char *optionDelimiters= ":";
- struct PPMode ppMode= {0,0,0,0,0,{150,200,400}};
+ struct PPMode ppMode;
char *filterToken;
+ ppMode.lumMode= 0;
+ ppMode.chromMode= 0;
+ ppMode.maxTmpNoise[0]= 700;
+ ppMode.maxTmpNoise[1]= 1500;
+ ppMode.maxTmpNoise[2]= 3000;
+ ppMode.maxAllowedY= 234;
+ ppMode.minAllowedY= 16;
+ ppMode.baseDcDiff= 256/4;
+ ppMode.flatnessThreshold=40;
ppMode.flatnessThreshold= 56-16;
-
+ ppMode.maxClippedThreshold= 0.01;
+
strncpy(temp, name, GET_MODE_BUFFER_SIZE);
if(verbose>1) printf("pp: %s\n", name);
@@ -705,9 +706,6 @@ struct PPMode pp_get_mode_by_name_and_quality(char *name, int quality)
{
int o;
int numOfNoises=0;
- ppMode.maxTmpNoise[0]= 150;
- ppMode.maxTmpNoise[1]= 200;
- ppMode.maxTmpNoise[2]= 400;
for(o=0; options[o]!=NULL; o++)
{
@@ -725,9 +723,6 @@ struct PPMode pp_get_mode_by_name_and_quality(char *name, int quality)
else if(filters[i].mask == V_DEBLOCK || filters[i].mask == H_DEBLOCK)
{
int o;
- ppMode.baseDcDiff=256/4;
-// hFlatnessThreshold= 40;
-// vFlatnessThreshold= 40;
for(o=0; options[o]!=NULL && o<2; o++)
{
@@ -818,32 +813,6 @@ void pp_free_context(void *vc){
free(c);
}
-//FIXME move this shit away from here
-int readPPOpt(void *conf, char *arg)
-{
- int val;
-
- if(arg == NULL)
- return -2; // ERR_MISSING_PARAM
- errno = 0;
- val = (int)strtol(arg,NULL,0);
- if(errno != 0)
- return -4; // What about include cfgparser.h and use ERR_* defines */
- if(val < 0)
- return -3; // ERR_OUT_OF_RANGE
-
- divx_quality = val;
- firstTime2 = 1;
-
- return 1;
-}
-
-void revertPPOpt(void *conf, char* opt)
-{
- divx_quality=0;
-}
-
-
void pp_postprocess(uint8_t * src[3], int srcStride[3],
uint8_t * dst[3], int dstStride[3],
int width, int height,
@@ -889,10 +858,9 @@ for(y=0; y<mbHeight; y++){
}
}
- if(firstTime2 && verbose)
+ if(verbose>2)
{
printf("using npp filters 0x%X/0x%X\n", mode->lumMode, mode->chromMode);
- firstTime2=0;
}
postProcess(src[0], srcStride[0], dst[0], dstStride[0],
diff --git a/postproc/postprocess.h b/postproc/postprocess.h
index 6cfa039231..79eb9387c8 100644
--- a/postproc/postprocess.h
+++ b/postproc/postprocess.h
@@ -68,19 +68,20 @@ char *pp_help;
//FIXME decide if this should be exported at all
typedef struct PPMode{
- int lumMode; //acivates filters for luminance
- int chromMode; //acivates filters for chrominance
- int error; // non zero on error
+ int lumMode; // acivates filters for luminance
+ int chromMode; // acivates filters for chrominance
+ int error; // non zero on error
- int minAllowedY; // for brigtness correction
- int maxAllowedY; // for brihtness correction
+ int minAllowedY; // for brigtness correction
+ int maxAllowedY; // for brihtness correction
+ float maxClippedThreshold; // amount of "black" u r willing to loose to get a brightness corrected picture
- int maxTmpNoise[3]; // for Temporal Noise Reducing filter (Maximal sum of abs differences)
+ int maxTmpNoise[3]; // for Temporal Noise Reducing filter (Maximal sum of abs differences)
int baseDcDiff;
int flatnessThreshold;
- int forcedQuant; // quantizer if FORCE_QUANT is used
+ int forcedQuant; // quantizer if FORCE_QUANT is used
} PPMode;
void pp_postprocess(uint8_t * src[3], int srcStride[3],
diff --git a/postproc/postprocess_template.c b/postproc/postprocess_template.c
index beea9604f5..d9cdb658c0 100644
--- a/postproc/postprocess_template.c
+++ b/postproc/postprocess_template.c
@@ -2711,7 +2711,7 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int
// printf("\n\n");
/* we allways get a completly black picture first */
- maxClipped= (uint64_t)(sum * maxClippedThreshold);
+ maxClipped= (uint64_t)(sum * c.ppMode.maxClippedThreshold);
clipped= sum;
for(black=255; black>0; black--)