mirror of
https://github.com/RGBCube/serenity
synced 2025-06-01 03:18:11 +00: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
1 changed files with 1 additions and 13 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue