1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//! `iqa` provides a single, ergonomic API over the patchwork of visual
//! quality assessment metrics available in the Rust ecosystem.
//!
//! Every metric consumes the same [`Image<F>`](Image) type, parameterized by a
//! [`PixelFormat`] marker. The format fixes an image's color space, channel
//! layout, and bit depth at the type level, and a metric requires its two
//! inputs to share one format. Comparing images that differ in any of those
//! properties — a classic source of meaningless scores — is therefore a
//! compile error, not a silent surprise. Only a dimension mismatch, which
//! cannot be known at compile time, remains a runtime error.
//!
//! Decoding external image formats into an [`Image`] is out of scope: callers
//! build one directly from a sample buffer via [`Image::srgb8`] and friends.
//!
//! # Features
//!
//! Each metric is gated behind a Cargo feature:
//!
//! - `psnr` *(default)* — peak signal-to-noise ratio, a native implementation.
//! - `ssim` *(default)* — structural similarity index (SSIM), a native
//! implementation.
//! - `ssimulacra2` *(default)* — SSIMULACRA2, bound via FFI to the vendored
//! C++ reference. Enabling it requires the `third_party/` git submodules and
//! a C++ toolchain; see the project README.
//! - `butteraugli` *(default)* — Butteraugli, bound via FFI to libjxl's
//! vendored C++. Shares the same native build as `ssimulacra2`.
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;