Browse Source

change sws sharpen filter a little

Originally committed as revision 17531 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc
tags/v0.5
Michael Niedermayer 19 years ago
parent
commit
2e728364d3
1 changed files with 18 additions and 29 deletions
  1. +18
    -29
      postproc/swscale.c

+ 18
- 29
postproc/swscale.c View File

@@ -2346,24 +2346,20 @@ SwsFilter *sws_getDefaultFilter(float lumaGBlur, float chromaGBlur,
}

if(chromaSharpen!=0.0){
SwsVector *g= sws_getConstVec(-1.0, 3);
SwsVector *id= sws_getConstVec(10.0/chromaSharpen, 1);
g->coeff[1]=2.0;
sws_addVec(id, g);
sws_convVec(filter->chrH, id);
sws_convVec(filter->chrV, id);
sws_freeVec(g);
SwsVector *id= sws_getIdentityVec();
sws_scaleVec(filter->chrH, -chromaSharpen);
sws_scaleVec(filter->chrV, -chromaSharpen);
sws_addVec(filter->chrH, id);
sws_addVec(filter->chrV, id);
sws_freeVec(id);
}

if(lumaSharpen!=0.0){
SwsVector *g= sws_getConstVec(-1.0, 3);
SwsVector *id= sws_getConstVec(10.0/lumaSharpen, 1);
g->coeff[1]=2.0;
sws_addVec(id, g);
sws_convVec(filter->lumH, id);
sws_convVec(filter->lumV, id);
sws_freeVec(g);
SwsVector *id= sws_getIdentityVec();
sws_scaleVec(filter->lumH, -lumaSharpen);
sws_scaleVec(filter->lumV, -lumaSharpen);
sws_addVec(filter->lumH, id);
sws_addVec(filter->lumV, id);
sws_freeVec(id);
}

@@ -2425,28 +2421,17 @@ SwsVector *sws_getConstVec(double c, int length){


SwsVector *sws_getIdentityVec(void){
double *coeff= memalign(sizeof(double), sizeof(double));
SwsVector *vec= malloc(sizeof(SwsVector));
coeff[0]= 1.0;

vec->coeff= coeff;
vec->length= 1;

return vec;
return sws_getConstVec(1.0, 1);
}

void sws_normalizeVec(SwsVector *a, double height){
double sws_dcVec(SwsVector *a){
int i;
double sum=0;
double inv;
double sum=0;

for(i=0; i<a->length; i++)
sum+= a->coeff[i];

inv= height/sum;

for(i=0; i<a->length; i++)
a->coeff[i]*= inv;
return sum;
}

void sws_scaleVec(SwsVector *a, double scalar){
@@ -2456,6 +2441,10 @@ void sws_scaleVec(SwsVector *a, double scalar){
a->coeff[i]*= scalar;
}

void sws_normalizeVec(SwsVector *a, double height){
sws_scaleVec(a, height/sws_dcVec(a));
}

static SwsVector *sws_getConvVec(SwsVector *a, SwsVector *b){
int length= a->length + b->length - 1;
double *coeff= memalign(sizeof(double), length*sizeof(double));


Loading…
Cancel
Save