pub struct DecodeConfig {
pub peak_memory_limit: Option<u64>,
pub total_megapixels_limit: Option<u32>,
pub max_animation_frames: Option<u32>,
pub max_grid_tiles: Option<u32>,
pub lenient: bool,
}Expand description
Configuration for parsing AVIF files with resource limits and validation options
Provides fine-grained control over resource consumption during AVIF parsing, allowing defensive parsing against malicious or malformed files.
Resource limits are checked before allocations occur, preventing out-of-memory conditions from malicious files that claim unrealistic dimensions or counts.
§Examples
use zenavif_parse::DecodeConfig;
// Default limits (suitable for most apps)
let config = DecodeConfig::default();
// Strict limits for untrusted input
let config = DecodeConfig::default()
.with_peak_memory_limit(100_000_000) // 100MB
.with_total_megapixels_limit(64) // 64MP max
.with_max_animation_frames(100); // 100 frames
// No limits (backwards compatible with read_avif)
let config = DecodeConfig::unlimited();Fields§
§peak_memory_limit: Option<u64>Maximum peak heap memory usage in bytes. Default: 1GB (1,000,000,000 bytes)
total_megapixels_limit: Option<u32>Maximum total megapixels for grid images. Default: 512 megapixels
max_animation_frames: Option<u32>Maximum number of animation frames. Default: 10,000 frames
max_grid_tiles: Option<u32>Maximum number of grid tiles. Default: 1,000 tiles
lenient: boolEnable lenient parsing mode. Default: false (strict validation)
Implementations§
Source§impl DecodeConfig
impl DecodeConfig
Sourcepub fn unlimited() -> Self
pub fn unlimited() -> Self
Create a configuration with no resource limits.
Equivalent to the behavior of read_avif() before resource limits were added.
Sourcepub fn with_peak_memory_limit(self, bytes: u64) -> Self
pub fn with_peak_memory_limit(self, bytes: u64) -> Self
Set the peak memory limit in bytes
Sourcepub fn with_total_megapixels_limit(self, megapixels: u32) -> Self
pub fn with_total_megapixels_limit(self, megapixels: u32) -> Self
Set the total megapixels limit for grid images
Sourcepub fn with_max_animation_frames(self, frames: u32) -> Self
pub fn with_max_animation_frames(self, frames: u32) -> Self
Set the maximum animation frame count
Sourcepub fn with_max_grid_tiles(self, tiles: u32) -> Self
pub fn with_max_grid_tiles(self, tiles: u32) -> Self
Set the maximum grid tile count
Trait Implementations§
Source§impl Clone for DecodeConfig
impl Clone for DecodeConfig
Source§fn clone(&self) -> DecodeConfig
fn clone(&self) -> DecodeConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more