pub struct AvifData {Show 23 fields
pub primary_item: TryVec<u8>,
pub alpha_item: Option<TryVec<u8>>,
pub premultiplied_alpha: bool,
pub grid_config: Option<GridConfig>,
pub grid_tiles: TryVec<TryVec<u8>>,
pub animation: Option<AnimationConfig>,
pub av1_config: Option<AV1Config>,
pub color_info: Option<ColorInformation>,
pub rotation: Option<ImageRotation>,
pub mirror: Option<ImageMirror>,
pub clean_aperture: Option<CleanAperture>,
pub pixel_aspect_ratio: Option<PixelAspectRatio>,
pub content_light_level: Option<ContentLightLevel>,
pub mastering_display: Option<MasteringDisplayColourVolume>,
pub content_colour_volume: Option<ContentColourVolume>,
pub ambient_viewing: Option<AmbientViewingEnvironment>,
pub operating_point: Option<OperatingPointSelector>,
pub layer_selector: Option<LayerSelector>,
pub layered_image_indexing: Option<AV1LayeredImageIndexing>,
pub exif: Option<TryVec<u8>>,
pub xmp: Option<TryVec<u8>>,
pub major_brand: [u8; 4],
pub compatible_brands: Vec<[u8; 4]>,
}AvifParser for zero-copy parsing insteadFields§
§primary_item: TryVec<u8>AvifParser for zero-copy parsing insteadAV1 data for the color channels.
The collected data indicated by the pitm box, See ISO 14496-12:2015 § 8.11.4
alpha_item: Option<TryVec<u8>>AvifParser for zero-copy parsing insteadAV1 data for alpha channel.
Associated alpha channel for the primary item, if any
premultiplied_alpha: boolAvifParser for zero-copy parsing insteadIf true, divide RGB values by the alpha value.
See prem in MIAF § 7.3.5.2
grid_config: Option<GridConfig>AvifParser for zero-copy parsing insteadGrid configuration for tiled images.
If present, the image is a grid and grid_tiles contains the tile data.
Grid layout is determined either from an explicit ImageGrid property box or
calculated from ispe (Image Spatial Extents) properties.
§Example
#[allow(deprecated)]
use std::fs::File;
#[allow(deprecated)]
let data = zenavif_parse::read_avif(&mut File::open("image.avif")?)?;
if let Some(grid) = data.grid_config {
println!("Grid: {}×{} tiles", grid.rows, grid.columns);
println!("Output: {}×{}", grid.output_width, grid.output_height);
println!("Tile count: {}", data.grid_tiles.len());
}grid_tiles: TryVec<TryVec<u8>>AvifParser for zero-copy parsing insteadAV1 payloads for grid image tiles.
Empty for non-grid images. For grid images, contains one entry per tile.
Tile ordering: Tiles are guaranteed to be in the correct order for grid assembly, sorted by their dimgIdx (reference index). This is row-major order: tiles in the first row from left to right, then the second row, etc.
animation: Option<AnimationConfig>AvifParser for zero-copy parsing insteadAnimation configuration (for animated AVIF with avis brand)
When present, primary_item contains the first frame
av1_config: Option<AV1Config>AvifParser for zero-copy parsing insteadAV1 codec configuration from the container’s av1C property.
color_info: Option<ColorInformation>AvifParser for zero-copy parsing insteadColour information from the container’s colr property.
rotation: Option<ImageRotation>AvifParser for zero-copy parsing insteadImage rotation from the container’s irot property.
mirror: Option<ImageMirror>AvifParser for zero-copy parsing insteadImage mirror from the container’s imir property.
clean_aperture: Option<CleanAperture>AvifParser for zero-copy parsing insteadClean aperture (crop) from the container’s clap property.
pixel_aspect_ratio: Option<PixelAspectRatio>AvifParser for zero-copy parsing insteadPixel aspect ratio from the container’s pasp property.
content_light_level: Option<ContentLightLevel>AvifParser for zero-copy parsing insteadContent light level from the container’s clli property.
mastering_display: Option<MasteringDisplayColourVolume>AvifParser for zero-copy parsing insteadMastering display colour volume from the container’s mdcv property.
content_colour_volume: Option<ContentColourVolume>AvifParser for zero-copy parsing insteadContent colour volume from the container’s cclv property.
ambient_viewing: Option<AmbientViewingEnvironment>AvifParser for zero-copy parsing insteadAmbient viewing environment from the container’s amve property.
operating_point: Option<OperatingPointSelector>AvifParser for zero-copy parsing insteadOperating point selector from the container’s a1op property.
layer_selector: Option<LayerSelector>AvifParser for zero-copy parsing insteadLayer selector from the container’s lsel property.
layered_image_indexing: Option<AV1LayeredImageIndexing>AvifParser for zero-copy parsing insteadAV1 layered image indexing from the container’s a1lx property.
exif: Option<TryVec<u8>>AvifParser for zero-copy parsing insteadEXIF metadata from a cdsc-linked Exif item.
Raw EXIF data (TIFF header onwards), with the 4-byte AVIF offset prefix stripped.
xmp: Option<TryVec<u8>>AvifParser for zero-copy parsing insteadXMP metadata from a cdsc-linked mime item.
Raw XMP/XML data as UTF-8.
major_brand: [u8; 4]AvifParser for zero-copy parsing insteadMajor brand from the ftyp box (e.g., *b"avif" or *b"avis").
compatible_brands: Vec<[u8; 4]>AvifParser for zero-copy parsing insteadCompatible brands from the ftyp box.
Implementations§
Source§impl AvifData
impl AvifData
pub fn from_reader<R: Read>(reader: &mut R) -> Result<Self>
AvifParser::from_reader() insteadSourcepub fn primary_item_metadata(&self) -> Result<AV1Metadata>
pub fn primary_item_metadata(&self) -> Result<AV1Metadata>
Parses AV1 data to get basic properties of the opaque channel
Sourcepub fn alpha_item_metadata(&self) -> Result<Option<AV1Metadata>>
pub fn alpha_item_metadata(&self) -> Result<Option<AV1Metadata>>
Parses AV1 data to get basic properties about the alpha channel, if any