From 8e3b1caccc7ec2de5cb5eaf3ecbcd868512569a3 Mon Sep 17 00:00:00 2001 From: Brian Matherly Date: Wed, 2 Apr 2014 22:37:48 -0500 Subject: [PATCH] Clamp out of range values. Fix double constants. --- src/modules/plus/filter_lift_gamma_gain.c | 25 ++++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/modules/plus/filter_lift_gamma_gain.c b/src/modules/plus/filter_lift_gamma_gain.c index 5c1f7475..fe346826 100644 --- a/src/modules/plus/filter_lift_gamma_gain.c +++ b/src/modules/plus/filter_lift_gamma_gain.c @@ -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 - 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 - 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 - 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 - 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); -- 2.39.2