aboutsummaryrefslogtreecommitdiffhomepage
path: root/postproc/swscale.c
diff options
context:
space:
mode:
authorGravatar michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-02-04 00:08:54 +0000
committerGravatar michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-02-04 00:08:54 +0000
commit694c65e985db954165f96faec43bbc755ae6052b (patch)
treec87899b1a90a276b8571a8a137149a786adb2b52 /postproc/swscale.c
parentd7565fdceb7e5798bfaa41a4f627487a1731f3e3 (diff)
change sws sharpen filter a little
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17531 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'postproc/swscale.c')
-rw-r--r--postproc/swscale.c47
1 files changed, 18 insertions, 29 deletions
diff --git a/postproc/swscale.c b/postproc/swscale.c
index a836aac4af..fbdedaecd3 100644
--- a/postproc/swscale.c
+++ b/postproc/swscale.c
@@ -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));