]> git.sesse.net Git - mlt/commitdiff
Clamp out of range values.
authorBrian Matherly <pez4brian@yahoo.com>
Thu, 3 Apr 2014 03:37:48 +0000 (22:37 -0500)
committerBrian Matherly <pez4brian@yahoo.com>
Thu, 3 Apr 2014 03:38:15 +0000 (22:38 -0500)
Fix double constants.

src/modules/plus/filter_lift_gamma_gain.c

index 5c1f74756cd5124f02c2b7cf0087a205184cd0ba..fe3468261a8d54471c1017f911b5c1d43fcf6aa4 100644 (file)
@@ -56,25 +56,30 @@ static void refresh_lut( mlt_filter filter, mlt_frame frame )
                for( i = 0; i < 256; i++ )
                {
                        // Convert to gamma 2.2
                for( i = 0; i < 256; i++ )
                {
                        // Convert to gamma 2.2
-                       double gamma22 = pow( (double)i / 255.0, 1.0f / 2.2f );
+                       double gamma22 = pow( (double)i / 255.0, 1.0 / 2.2 );
                        double r = gamma22;
                        double g = gamma22;
                        double b = gamma22;
 
                        // Apply lift
                        double r = gamma22;
                        double g = gamma22;
                        double b = gamma22;
 
                        // Apply lift
-                       r += rlift * ( 1 - r );
-                       g += glift * ( 1 - g );
-                       b += blift * ( 1 - b );
+                       r += rlift * ( 1.0 - r );
+                       g += glift * ( 1.0 - g );
+                       b += blift * ( 1.0 - b );
 
                        // Apply gamma
 
                        // Apply gamma
-                       r = pow( r, 2.2f / rgamma );
-                       g = pow( g, 2.2f / ggamma );
-                       b = pow( b, 2.2f / bgamma );
+                       r = pow( r, 2.2 / rgamma );
+                       g = pow( g, 2.2 / ggamma );
+                       b = pow( b, 2.2 / bgamma );
 
                        // Apply gain
 
                        // Apply gain
-                       r *= pow( rgain, 1.0f / rgamma );
-                       g *= pow( ggain, 1.0f / ggamma );
-                       b *= pow( bgain, 1.0f / bgamma );
+                       r *= pow( rgain, 1.0 / rgamma );
+                       g *= pow( ggain, 1.0 / ggamma );
+                       b *= pow( bgain, 1.0 / bgamma );
+
+                       // Clamp values
+                       r = r < 0.0 ? 0.0 : r > 1.0 ? 1.0 : r;
+                       g = g < 0.0 ? 0.0 : g > 1.0 ? 1.0 : g;
+                       b = b < 0.0 ? 0.0 : b > 1.0 ? 1.0 : b;
 
                        // Update LUT
                        private->rlut[ i ] = (int)(r * 255.0);
 
                        // Update LUT
                        private->rlut[ i ] = (int)(r * 255.0);