zenavif

Pure Rust AVIF image codec. Decodes and encodes AVIF images using rav1d-safe (AV1 decoder) and zenavif-parse (AVIF container parser).
What it does
- Decodes 8/10/12-bit AVIF with all chroma subsampling modes (4:2:0, 4:2:2, 4:4:4, monochrome)
- Handles alpha channels (straight and premultiplied)
- Supports full and limited color range, HDR color spaces (BT.2020, P3, etc.)
- Preserves EXIF, XMP, rotation, mirror, clean aperture, pixel aspect ratio, HDR metadata
- Decodes animated AVIF sequences with per-frame timing
- Decodes gain maps (ISO 21496-1) and depth auxiliary images from AVIF containers
- Encodes AVIF with optional gain map embedding via
GainMapConfig(requiresencodefeature) - Encodes AVIF via zenravif (optional
encodefeature) - 100% safe Rust by default. Zero
unsafein the decode path. - Cooperative cancellation via the
enoughcrate
Quick Start
use decode;
let avif_data = read.unwrap;
let image = decode.unwrap;
println!;
Custom configuration
use ;
use Unstoppable;
let config = new
.threads
.apply_grain
.frame_size_limit;
let avif_data = read.unwrap;
let image = decode_with.unwrap;
Animation
let avif_data = read.unwrap;
let animation = decode_animation.unwrap;
for frame in &animation.frames
Encoding (requires encode feature)
use ;
let image = decode.unwrap;
let encoded = encode.unwrap;
write.unwrap;
Features
| Feature | Description |
|---|---|
| (default) | Pure Rust decode via rav1d-safe. No unsafe code. |
encode |
AVIF encoding via zenravif (pure Rust) |
encode-asm |
Encoding with hand-written assembly (fastest, uses unsafe) |
encode-threading |
Multi-threaded encoding |
encode-imazen |
Encoding with zenrav1e fork extras (QM, lossless) |
unsafe-asm |
Decoding with hand-written assembly via C FFI (fastest, uses unsafe) |
zencodec |
Integration with zencodec trait hierarchy |
zennode |
Pipeline node definitions for zennode graph engine |
Building
# Default safe decoder
# With encoding
# Fast assembly decoder (uses unsafe + C FFI)
# Run tests
# Run with test vectors
Credits
This project builds on excellent work by others:
-
rav1d (BSD-2-Clause) — Pure Rust AV1 decoder (Rust port of dav1d). Provides the AV1 decoding backend via its managed safe API.
-
zenavif-parse (MIT/Apache-2.0) — AVIF container parser for extracting image items and metadata from the ISOBMFF container.
-
yuv (MIT) — YUV to RGB color conversion.
-
libavif (BSD-2-Clause) — Reference AVIF implementation used for pixel-level verification and behavioral reference.
Limitations
- The
encodefeature is not yet available from a crates.io build (zenravif path dep needs wiring).
Image tech I maintain
| State of the art codecs* | zenjpeg · zenpng · zenwebp · zengif · zenavif (rav1d-safe · zenrav1e · zenavif-parse · zenavif-serialize) · zenjxl (jxl-encoder · zenjxl-decoder) · zentiff · zenbitmaps · heic · zenraw · zenpdf · ultrahdr · mozjpeg-rs · webpx |
| Compression | zenflate · zenzop |
| Processing | zenresize · zenfilters · zenquant · zenblend |
| Metrics | zensim · fast-ssim2 · butteraugli · resamplescope-rs · codec-eval · codec-corpus |
| Pixel types & color | zenpixels · zenpixels-convert · linear-srgb · garb |
| Pipeline | zenpipe · zencodec · zencodecs · zenlayout · zennode |
| ImageResizer | ImageResizer (C#) — 24M+ NuGet downloads across all packages |
| Imageflow | Image optimization engine (Rust) — .NET · node · go — 9M+ NuGet downloads across all packages |
| Imageflow Server | The fast, safe image server (Rust+C#) — 552K+ NuGet downloads, deployed by Fortune 500s and major brands |
* as of 2026
General Rust awesomeness
archmage · magetypes · enough · whereat · zenbench · cargo-copter
And other projects · GitHub @imazen · GitHub @lilith · lib.rs/~lilith · NuGet (over 30 million downloads / 87 packages)
License
Dual-licensed: AGPL-3.0 or commercial.
I've maintained and developed open-source image server software — and the 40+ library ecosystem it depends on — full-time since 2011. Fifteen years of continual maintenance, backwards compatibility, support, and the (very rare) security patch. That kind of stability requires sustainable funding, and dual-licensing is how we make it work without venture capital or rug-pulls. Support sustainable and secure software; swap patch tuesday for patch leap-year.
Your options:
- Startup license — $1 if your company has under $1M revenue and fewer than 5 employees. Get a key →
- Commercial subscription — Governed by the Imazen Site-wide Subscription License v1.1 or later. Apache 2.0-like terms, no source-sharing requirement. Sliding scale by company size. Pricing & 60-day free trial →
- AGPL v3 — Free and open. Share your source if you distribute.
See LICENSE-COMMERCIAL for details.
AI-Generated Code Notice
Developed with AI assistance (Claude, Anthropic). Not all code manually reviewed — review critical paths before production use.