mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-20 17:58:18 +03:00
LibGfx: Use PNG::paeth_predictor() in png decoding path
Increases code reuse between encoder and decoder a tiny bit. No behavior change. (We should use the vectorized version in the future! But first, we should learn to do the prediction in-place.)
This commit is contained in:
parent
2763fb45f7
commit
6b2c60404d
Notes:
sideshowbarker
2024-07-17 00:49:59 +09:00
Author: https://github.com/nico Commit: https://github.com/SerenityOS/serenity/commit/6b2c60404d Pull-request: https://github.com/SerenityOS/serenity/pull/21966
@ -325,19 +325,7 @@ static void unfilter_scanline(PNG::FilterType filter, Bytes scanline_data, Reado
|
||||
u8 left = (i < bytes_per_complete_pixel) ? 0 : scanline_data[i - bytes_per_complete_pixel];
|
||||
u8 above = previous_scanlines_data[i];
|
||||
u8 upper_left = (i < bytes_per_complete_pixel) ? 0 : previous_scanlines_data[i - bytes_per_complete_pixel];
|
||||
i32 predictor = left + above - upper_left;
|
||||
u32 predictor_left = abs(predictor - left);
|
||||
u32 predictor_above = abs(predictor - above);
|
||||
u32 predictor_upper_left = abs(predictor - upper_left);
|
||||
u8 nearest;
|
||||
if (predictor_left <= predictor_above && predictor_left <= predictor_upper_left) {
|
||||
nearest = left;
|
||||
} else if (predictor_above <= predictor_upper_left) {
|
||||
nearest = above;
|
||||
} else {
|
||||
nearest = upper_left;
|
||||
}
|
||||
scanline_data[i] += nearest;
|
||||
scanline_data[i] += PNG::paeth_predictor(left, above, upper_left);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user