[Mplayer-cvslog] CVS: main/libmpcodecs vf_eq2.c,1.7,1.8

Michael Niedermayer CVS michael at mplayerhq.hu
Sun Oct 19 01:03:00 CEST 2003


Update of /cvsroot/mplayer/main/libmpcodecs
In directory mail:/var/tmp.root/cvs-serv21913

Modified Files:
	vf_eq2.c 
Log Message:
gamma weight patch by (Alexander Stege <mplayer at legale-software dot com>)


Index: vf_eq2.c
===================================================================
RCS file: /cvsroot/mplayer/main/libmpcodecs/vf_eq2.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- vf_eq2.c	17 Oct 2003 17:15:38 -0000	1.7
+++ vf_eq2.c	18 Oct 2003 23:02:30 -0000	1.8
@@ -43,6 +43,7 @@
   double        c;
   double        b;
   double        g;
+  double        w;
 } eq2_param_t;
 
 typedef struct vf_priv_s {
@@ -53,6 +54,7 @@
   double        saturation;
 
   double        gamma;
+  double        gamma_weight;
   double        rgamma;
   double        ggamma;
   double        bgamma;
@@ -68,8 +70,11 @@
 {
   unsigned i;
   double   g, v;
+  double   lw, gw;
 
   g = par->g;
+  gw = par->w;
+  lw = 1.0 - gw;
 
   if ((g < 0.001) || (g > 1000.0)) {
     g = 1.0;
@@ -85,7 +90,7 @@
       par->lut[i] = 0;
     }
     else {
-      v = pow (v, g);
+      v = v*lw + pow(v, g)*gw;
 
       if (v >= 1.0) {
         par->lut[i] = 255;
@@ -320,6 +325,7 @@
   eq2->param[0].g = eq2->gamma * eq2->ggamma;
   eq2->param[1].g = sqrt (eq2->bgamma / eq2->ggamma);
   eq2->param[2].g = sqrt (eq2->rgamma / eq2->ggamma);
+  eq2->param[0].w = eq2->param[1].w = eq2->param[2].w = eq2->gamma_weight;
 
   eq2->param[0].lut_clean = 0;
   eq2->param[1].lut_clean = 0;
@@ -434,7 +440,7 @@
 {
   unsigned i;
   vf_eq2_t *eq2;
-  double   par[7];
+  double   par[8];
 
   vf->control = control;
   vf->query_format = query_format;
@@ -461,6 +467,7 @@
   eq2->saturation = 1.0;
 
   eq2->gamma = 1.0;
+  eq2->gamma_weight = 1.0;
   eq2->rgamma = 1.0;
   eq2->ggamma = 1.0;
   eq2->bgamma = 1.0;
@@ -473,11 +480,12 @@
     par[4] = 1.0;
     par[5] = 1.0;
     par[6] = 1.0;
+    par[7] = 1.0;
 #ifdef USE_SETLOCALE
     setlocale (LC_NUMERIC, "C");
 #endif
-    sscanf (args, "%lf:%lf:%lf:%lf:%lf:%lf:%lf",
-      par, par + 1, par + 2, par + 3, par + 4, par + 5, par + 6
+    sscanf (args, "%lf:%lf:%lf:%lf:%lf:%lf:%lf:%lf",
+      par, par + 1, par + 2, par + 3, par + 4, par + 5, par + 6, par + 7
     );
 #ifdef USE_SETLOCALE
     setlocale (LC_NUMERIC, "");
@@ -486,6 +494,7 @@
     eq2->rgamma = par[4];
     eq2->ggamma = par[5];
     eq2->bgamma = par[6];
+    eq2->gamma_weight = par[7];
 
     set_gamma (eq2, par[0]);
     set_contrast (eq2, par[1]);



More information about the MPlayer-cvslog mailing list