From b54528fa1ed49625a8988bbd9c6191f844231e47 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Thu, 1 Aug 2019 18:17:56 +0200 Subject: BrightContrast not working correctly with negative contrast followup to rB8dd95abb2ff9 (which fixed this for the Compositor node), turns out this was also wrong for the VSE modifier and in vertex color operator. - also adjust min/max for VSE modifier - also guard against division by zero Reviewers: brecht Maniphest Tasks: T67808 Differential Revision: https://developer.blender.org/D5398 --- source/blender/blenkernel/intern/seqmodifier.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source/blender/blenkernel/intern/seqmodifier.c') diff --git a/source/blender/blenkernel/intern/seqmodifier.c b/source/blender/blenkernel/intern/seqmodifier.c index cc44cd66f23..aceb8b7e4ad 100644 --- a/source/blender/blenkernel/intern/seqmodifier.c +++ b/source/blender/blenkernel/intern/seqmodifier.c @@ -545,20 +545,20 @@ static void brightcontrast_apply_threaded(int width, float brightness = data->bright / 100.0f; float contrast = data->contrast; float delta = contrast / 200.0f; - - a = 1.0f - delta * 2.0f; /* * The algorithm is by Werner D. Streidt * (http://visca.com/ffactory/archives/5-99/msg00021.html) * Extracted of OpenCV demhist.c */ if (contrast > 0) { - a = 1.0f / a; + a = 1.0f - delta * 2.0f; + a = 1.0f / max_ff(a, FLT_EPSILON); b = a * (brightness - delta); } else { delta *= -1; - b = a * (brightness + delta); + a = max_ff(1.0f - delta * 2.0f, 0.0f); + b = a * brightness + delta; } for (y = 0; y < height; y++) { -- cgit v1.2.3