mirror of
https://github.com/mpv-player/mpv
synced 2024-12-28 01:52:19 +00:00
change sws sharpen filter a little
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17531 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
d7565fdceb
commit
694c65e985
@ -421,8 +421,8 @@ m_option_t scaler_filter_conf[]={
|
||||
{"cgb", &sws_chr_gblur, CONF_TYPE_FLOAT, 0, 0, 100.0, NULL},
|
||||
{"cvs", &sws_chr_vshift, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"chs", &sws_chr_hshift, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"ls", &sws_lum_sharpen, CONF_TYPE_FLOAT, 0, 0, 100.0, NULL},
|
||||
{"cs", &sws_chr_sharpen, CONF_TYPE_FLOAT, 0, 0, 100.0, NULL},
|
||||
{"ls", &sws_lum_sharpen, CONF_TYPE_FLOAT, 0, -100.0, 100.0, NULL},
|
||||
{"cs", &sws_chr_sharpen, CONF_TYPE_FLOAT, 0, -100.0, 100.0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
|
||||
|
@ -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…
Reference in New Issue
Block a user