From 34223faf304e598366d3e3fedd20544c47a94c6f Mon Sep 17 00:00:00 2001 From: "Sergey \"Shnatsel\" Davidoff" Date: Fri, 20 Dec 2024 21:25:19 +0000 Subject: [PATCH] Faster alpha blending (#123) --- src/alpha_blending.rs | 128 ++++++++++++++++++ src/extended.rs | 30 +--- src/lib.rs | 1 + .../reference/animated/random_lossless-2.png | Bin 12289 -> 12227 bytes .../reference/animated/random_lossless-3.png | Bin 12289 -> 12227 bytes 5 files changed, 131 insertions(+), 28 deletions(-) create mode 100644 src/alpha_blending.rs diff --git a/src/alpha_blending.rs b/src/alpha_blending.rs new file mode 100644 index 0000000..b2ea508 --- /dev/null +++ b/src/alpha_blending.rs @@ -0,0 +1,128 @@ +//! Optimized alpha blending routines based on libwebp +//! +//! https://github.com/webmproject/libwebp/blob/e4f7a9f0c7c9fbfae1568bc7fa5c94b989b50872/src/demux/anim_decode.c#L215-L267 + +fn channel_shift(i: u32) -> u32 { + i * 8 +} + +/// Blend a single channel of `src` over `dst`, given their alpha channel values. +/// `src` and `dst` are assumed to be NOT pre-multiplied by alpha. +fn blend_channel_nonpremult( + src: u32, + src_a: u8, + dst: u32, + dst_a: u8, + scale: u32, + shift: u32, +) -> u8 { + let src_channel = ((src >> shift) & 0xff) as u8; + let dst_channel = ((dst >> shift) & 0xff) as u8; + let blend_unscaled = (src_channel as u32 * src_a as u32) + (dst_channel as u32 * dst_a as u32); + debug_assert!(u64::from(blend_unscaled) < (1u64 << 32) / scale as u64); + ((blend_unscaled * scale) >> channel_shift(3)) as u8 +} + +/// Blend `src` over `dst` assuming they are NOT pre-multiplied by alpha. +fn blend_pixel_nonpremult(src: u32, dst: u32) -> u32 { + let src_a = ((src >> channel_shift(3)) & 0xff) as u8; + + if src_a == 0 { + dst + } else { + let dst_a = ((dst >> channel_shift(3)) & 0xff) as u8; + // Approximate integer arithmetic for: dst_factor_a = (dst_a * (255 - src_a)) / 255 + // libwebp used the following formula here: + //let dst_factor_a = (dst_a as u32 * (256 - src_a as u32)) >> 8; + // however, we've found that we can use a more precise approximation without losing performance: + let dst_factor_a = div_by_255(dst_a as u32 * (255 - src_a as u32)); + let blend_a = src_a as u32 + dst_factor_a; + let scale = (1u32 << 24) / blend_a; + + let blend_r = + blend_channel_nonpremult(src, src_a, dst, dst_factor_a as u8, scale, channel_shift(0)); + let blend_g = + blend_channel_nonpremult(src, src_a, dst, dst_factor_a as u8, scale, channel_shift(1)); + let blend_b = + blend_channel_nonpremult(src, src_a, dst, dst_factor_a as u8, scale, channel_shift(2)); + debug_assert!(src_a as u32 + dst_factor_a < 256); + + ((blend_r as u32) << channel_shift(0)) + | ((blend_g as u32) << channel_shift(1)) + | ((blend_b as u32) << channel_shift(2)) + | (blend_a << channel_shift(3)) + } +} + +pub(crate) fn do_alpha_blending(buffer: [u8; 4], canvas: [u8; 4]) -> [u8; 4] { + // The original C code contained different shift functions for different endianness, + // but they didn't work when ported to Rust directly (and probably didn't work in C either). + // So instead we reverse the order of bytes on big-endian here, at the interface. + // `from_le_bytes` is a no-op on little endian (most systems) and a cheap shuffle on big endian. + blend_pixel_nonpremult(u32::from_le_bytes(buffer), u32::from_le_bytes(canvas)).to_le_bytes() +} + +/// Divides by 255, rounding to nearest (as opposed to down, like regular integer division does). +/// TODO: cannot output 256, so the output is effecitively u8. Plumb that through the code. +// +// Sources: +// https://arxiv.org/pdf/2202.02864 +// https://github.com/image-rs/image-webp/issues/119#issuecomment-2544007820 +#[inline] +fn div_by_255(v: u32) -> u32 { + (((v + 0x80) >> 8) + v + 0x80) >> 8 +} + +#[cfg(test)] +mod tests { + use super::*; + + fn do_alpha_blending_reference(buffer: [u8; 4], canvas: [u8; 4]) -> [u8; 4] { + let canvas_alpha = f64::from(canvas[3]); + let buffer_alpha = f64::from(buffer[3]); + let blend_alpha_f64 = buffer_alpha + canvas_alpha * (1.0 - buffer_alpha / 255.0); + //value should be between 0 and 255, this truncates the fractional part + let blend_alpha: u8 = blend_alpha_f64 as u8; + + let blend_rgb: [u8; 3] = if blend_alpha == 0 { + [0, 0, 0] + } else { + let mut rgb = [0u8; 3]; + for i in 0..3 { + let canvas_f64 = f64::from(canvas[i]); + let buffer_f64 = f64::from(buffer[i]); + + let val = (buffer_f64 * buffer_alpha + + canvas_f64 * canvas_alpha * (1.0 - buffer_alpha / 255.0)) + / blend_alpha_f64; + //value should be between 0 and 255, this truncates the fractional part + rgb[i] = val as u8; + } + + rgb + }; + + [blend_rgb[0], blend_rgb[1], blend_rgb[2], blend_alpha] + } + + #[test] + #[ignore] // takes too long to run on CI. Run this locally when changing the function. + fn alpha_blending_optimization() { + for r1 in 0..u8::MAX { + for a1 in 11..u8::MAX { + for r2 in 0..u8::MAX { + for a2 in 11..u8::MAX { + let opt = do_alpha_blending([r1, 0, 0, a1], [r2, 0, 0, a2]); + let slow = do_alpha_blending_reference([r1, 0, 0, a1], [r2, 0, 0, a2]); + // libwebp doesn't do exact blending and so we don't either + for (o, s) in opt.iter().zip(slow.iter()) { + if o.abs_diff(*s) > 3 { + panic!("Mismatch in results! opt: {opt:?}, slow: {slow:?}, blended values: [{r1}, 0, 0, {a1}], [{r2}, 0, 0, {a2}]"); + } + } + } + } + } + } + } +} diff --git a/src/extended.rs b/src/extended.rs index b54d414..ce8e761 100644 --- a/src/extended.rs +++ b/src/extended.rs @@ -3,6 +3,8 @@ use crate::decoder::DecodingError; use byteorder_lite::ReadBytesExt; use std::io::{BufRead, Read}; +use crate::alpha_blending::do_alpha_blending; + #[derive(Debug, Clone)] pub(crate) struct WebPExtendedInfo { pub(crate) alpha: bool, @@ -143,34 +145,6 @@ pub(crate) fn composite_frame( } } -fn do_alpha_blending(buffer: [u8; 4], canvas: [u8; 4]) -> [u8; 4] { - let canvas_alpha = f64::from(canvas[3]); - let buffer_alpha = f64::from(buffer[3]); - let blend_alpha_f64 = buffer_alpha + canvas_alpha * (1.0 - buffer_alpha / 255.0); - //value should be between 0 and 255, this truncates the fractional part - let blend_alpha: u8 = blend_alpha_f64 as u8; - - let blend_rgb: [u8; 3] = if blend_alpha == 0 { - [0, 0, 0] - } else { - let mut rgb = [0u8; 3]; - for i in 0..3 { - let canvas_f64 = f64::from(canvas[i]); - let buffer_f64 = f64::from(buffer[i]); - - let val = (buffer_f64 * buffer_alpha - + canvas_f64 * canvas_alpha * (1.0 - buffer_alpha / 255.0)) - / blend_alpha_f64; - //value should be between 0 and 255, this truncates the fractional part - rgb[i] = val as u8; - } - - rgb - }; - - [blend_rgb[0], blend_rgb[1], blend_rgb[2], blend_alpha] -} - pub(crate) fn get_alpha_predictor( x: usize, y: usize, diff --git a/src/lib.rs b/src/lib.rs index a4dd4b4..93edeb1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,6 +12,7 @@ extern crate test; pub use self::decoder::{DecodingError, LoopCount, WebPDecoder}; pub use self::encoder::{ColorType, EncoderParams, EncodingError, WebPEncoder}; +mod alpha_blending; mod decoder; mod encoder; mod extended; diff --git a/tests/reference/animated/random_lossless-2.png b/tests/reference/animated/random_lossless-2.png index b200211aee8e57a6c41995fd266343f11748c01f..b1afdc072f049b9328f99f5e910c49bf3767c055 100644 GIT binary patch literal 12227 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 b$=kewcf4QBT&AKr00000NkvXXu0mjf%Ho4T