use libblur::IeeeBinaryConvolutionMode;
use libblur::{
BlurImage, BlurImageMut, EdgeMode, EdgeMode2D, FastBlurChannels, GaussianBlurParams,
ThreadingPolicy, gaussian_blur_f32,
};
#[inline]
pub fn apply(src: &[f32], dst: &mut [f32], width: usize, height: usize, sigma: f32) {
debug_assert!(dst.len() >= width * height);
let w = width as u32;
let h = height as u32;
let src_image = BlurImage::borrow(src, w, h, FastBlurChannels::Plane);
let mut dst_image = BlurImageMut::borrow(dst, w, h, FastBlurChannels::Plane);
gaussian_blur_f32(
&src_image,
&mut dst_image,
GaussianBlurParams::new_from_sigma(sigma as f64),
EdgeMode2D::new(EdgeMode::Clamp),
ThreadingPolicy::Adaptive,
IeeeBinaryConvolutionMode::Normal,
)
.expect("[gaussian::apply] gaussian_blur_f32 failed");
}