PR #20836 opened by Ramiro Polla (ramiro) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20836 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20836.patch
384fe39623e932e68fe35af7d5b51fcd0a6c28fb introduced a regression in the range conversion offset calculation, resulting in a slight green tint. The offset being calculated was not taking into consideration a bias needed for correctly rounding the result from the multiplication stage, leading to a truncated value. Fixes issue #11646. Note this is still missing updating all fate results. >From dec7df004722525fc0ba3c8b98c7248a90a7e617 Mon Sep 17 00:00:00 2001 From: Ramiro Polla <[email protected]> Date: Tue, 4 Nov 2025 16:18:47 +0100 Subject: [PATCH] [WIP] swscale/range_convert: fix truncation bias in range conversion 384fe39623e932e68fe35af7d5b51fcd0a6c28fb introduced a regression in the range conversion offset calculation, resulting in a slight green tint. The offset being calculated was not taking into consideration a bias needed for correctly rounding the result from the multiplication stage, leading to a truncated value. Fixes issue #11646. Note this is still missing updating all fate results. --- libswscale/swscale.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index c3d64a67b8..f4c7eccac4 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -581,7 +581,8 @@ static void solve_range_convert(uint16_t src_min, uint16_t src_max, int total_shift = mult_shift + src_shift; *coeff = AV_CEIL_RSHIFT(((uint64_t) dst_range << total_shift) / src_range, src_shift); *offset = ((int64_t) dst_max << total_shift) - - ((int64_t) src_max << src_shift) * *coeff; + ((int64_t) src_max << src_shift) * *coeff + + (1U << (mult_shift - 1)); } static void init_range_convert_constants(SwsInternal *c) -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
