X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmodules%2Fplus%2Ffilter_lift_gamma_gain.c;h=fe3468261a8d54471c1017f911b5c1d43fcf6aa4;hb=8e3b1caccc7ec2de5cb5eaf3ecbcd868512569a3;hp=5c1f74756cd5124f02c2b7cf0087a205184cd0ba;hpb=38504d6c04b6fc6f942d511b468ba316e6fa8058;p=mlt 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);