Commit 0fdc1aab authored by michael's avatar michael

cleanup


git-svn-id: file:///var/local/repositories/mplayer/trunk/postproc@7964 b3059339-0415-0410-9bf9-f77b7e298cf2
parent c56c745e
...@@ -47,10 +47,8 @@ c = checked against the other implementations (-vo md5) ...@@ -47,10 +47,8 @@ c = checked against the other implementations (-vo md5)
/* /*
TODO: TODO:
remove global/static vars
reduce the time wasted on the mem transfer reduce the time wasted on the mem transfer
unroll stuff if instructions depend too much on the prior one 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 move YScale thing to the end instead of fixing QP
write a faster and higher quality deblocking filter :) write a faster and higher quality deblocking filter :)
make the mainloop more flexible (variable number of blocks at once 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 ...@@ -69,7 +67,6 @@ try to unroll inner for(x=0 ... loop to avoid these damn if(x ... checks
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <errno.h>
#ifdef HAVE_MALLOC_H #ifdef HAVE_MALLOC_H
#include <malloc.h> #include <malloc.h>
#endif #endif
...@@ -104,15 +101,9 @@ static uint64_t __attribute__((aligned(8))) b08= 0x0808080808080808LL; ...@@ -104,15 +101,9 @@ static uint64_t __attribute__((aligned(8))) b08= 0x0808080808080808LL;
static uint64_t __attribute__((aligned(8))) b80= 0x8080808080808080LL; static uint64_t __attribute__((aligned(8))) b80= 0x8080808080808080LL;
#endif #endif
extern int divx_quality; static int verbose= 0;
static int firstTime2 = 0;
extern int verbose; static const int deringThreshold= 20;
int deringThreshold= 20;
//amount of "black" u r willing to loose to get a brightness corrected picture
double maxClippedThreshold= 0.01;
struct PPFilter{ struct PPFilter{
char *shortName; char *shortName;
...@@ -593,11 +584,21 @@ struct PPMode pp_get_mode_by_name_and_quality(char *name, int quality) ...@@ -593,11 +584,21 @@ struct PPMode pp_get_mode_by_name_and_quality(char *name, int quality)
char *p= temp; char *p= temp;
char *filterDelimiters= ",/"; char *filterDelimiters= ",/";
char *optionDelimiters= ":"; char *optionDelimiters= ":";
struct PPMode ppMode= {0,0,0,0,0,{150,200,400}}; struct PPMode ppMode;
char *filterToken; 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.flatnessThreshold= 56-16;
ppMode.maxClippedThreshold= 0.01;
strncpy(temp, name, GET_MODE_BUFFER_SIZE); strncpy(temp, name, GET_MODE_BUFFER_SIZE);
if(verbose>1) printf("pp: %s\n", name); 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) ...@@ -705,9 +706,6 @@ struct PPMode pp_get_mode_by_name_and_quality(char *name, int quality)
{ {
int o; int o;
int numOfNoises=0; int numOfNoises=0;
ppMode.maxTmpNoise[0]= 150;
ppMode.maxTmpNoise[1]= 200;
ppMode.maxTmpNoise[2]= 400;
for(o=0; options[o]!=NULL; o++) for(o=0; options[o]!=NULL; o++)
{ {
...@@ -725,9 +723,6 @@ struct PPMode pp_get_mode_by_name_and_quality(char *name, int quality) ...@@ -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) else if(filters[i].mask == V_DEBLOCK || filters[i].mask == H_DEBLOCK)
{ {
int o; int o;
ppMode.baseDcDiff=256/4;
// hFlatnessThreshold= 40;
// vFlatnessThreshold= 40;
for(o=0; options[o]!=NULL && o<2; o++) for(o=0; options[o]!=NULL && o<2; o++)
{ {
...@@ -818,32 +813,6 @@ void pp_free_context(void *vc){ ...@@ -818,32 +813,6 @@ void pp_free_context(void *vc){
free(c); 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], void pp_postprocess(uint8_t * src[3], int srcStride[3],
uint8_t * dst[3], int dstStride[3], uint8_t * dst[3], int dstStride[3],
int width, int height, int width, int height,
...@@ -889,10 +858,9 @@ for(y=0; y<mbHeight; y++){ ...@@ -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); printf("using npp filters 0x%X/0x%X\n", mode->lumMode, mode->chromMode);
firstTime2=0;
} }
postProcess(src[0], srcStride[0], dst[0], dstStride[0], postProcess(src[0], srcStride[0], dst[0], dstStride[0],
......
...@@ -68,19 +68,20 @@ char *pp_help; ...@@ -68,19 +68,20 @@ char *pp_help;
//FIXME decide if this should be exported at all //FIXME decide if this should be exported at all
typedef struct PPMode{ typedef struct PPMode{
int lumMode; //acivates filters for luminance int lumMode; // acivates filters for luminance
int chromMode; //acivates filters for chrominance int chromMode; // acivates filters for chrominance
int error; // non zero on error int error; // non zero on error
int minAllowedY; // for brigtness correction int minAllowedY; // for brigtness correction
int maxAllowedY; // for brihtness 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 baseDcDiff;
int flatnessThreshold; int flatnessThreshold;
int forcedQuant; // quantizer if FORCE_QUANT is used int forcedQuant; // quantizer if FORCE_QUANT is used
} PPMode; } PPMode;
void pp_postprocess(uint8_t * src[3], int srcStride[3], void pp_postprocess(uint8_t * src[3], int srcStride[3],
......
...@@ -2711,7 +2711,7 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int ...@@ -2711,7 +2711,7 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int
// printf("\n\n"); // printf("\n\n");
/* we allways get a completly black picture first */ /* we allways get a completly black picture first */
maxClipped= (uint64_t)(sum * maxClippedThreshold); maxClipped= (uint64_t)(sum * c.ppMode.maxClippedThreshold);
clipped= sum; clipped= sum;
for(black=255; black>0; black--) for(black=255; black>0; black--)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment