Skip to main content

GainMapMetadata

Struct GainMapMetadata 

Source
pub struct GainMapMetadata {
    pub is_multichannel: bool,
    pub use_base_colour_space: bool,
    pub backward_direction: bool,
    pub base_hdr_headroom_n: u32,
    pub base_hdr_headroom_d: u32,
    pub alternate_hdr_headroom_n: u32,
    pub alternate_hdr_headroom_d: u32,
    pub channels: [GainMapChannel; 3],
}
Expand description

Gain map metadata from a ToneMapImage (tmap) derived image item.

Describes how to apply a gain map to convert between SDR and HDR renditions. The gain map is a separate AV1-encoded image that, combined with this metadata, allows reconstructing an HDR image from the SDR base.

See ISO 21496-1:2025 for the full specification.

Fields§

§is_multichannel: bool

If true, each RGB channel has independent gain map parameters. If false, channels[0] applies to all three channels.

§use_base_colour_space: bool

If true, the gain map is encoded in the base image’s colour space. If false, it’s in the alternate image’s colour space.

§backward_direction: bool

ISO 21496-1 backward direction flag (bit 2 of flags byte). When true, the base image is HDR and the alternate is SDR. Default false = base is SDR, alternate is HDR.

§base_hdr_headroom_n: u32

Base HDR headroom (numerator).

§base_hdr_headroom_d: u32

Base HDR headroom (denominator).

§alternate_hdr_headroom_n: u32

Alternate HDR headroom (numerator).

§alternate_hdr_headroom_d: u32

Alternate HDR headroom (denominator).

§channels: [GainMapChannel; 3]

Per-channel parameters. For single-channel mode, only index 0 is meaningful (indices 1 and 2 are copies of index 0).

Implementations§

Source§

impl GainMapMetadata

Source

pub fn parse_tmap_bytes(data: &[u8]) -> Result<Self>

Parse an ISO 21496-1 AVIF tmap item payload into a GainMapMetadata.

This is the public mirror of the internal parser. Useful for testing and for consumers who hold raw tmap payload bytes.

Source

pub fn to_bytes(&self) -> Vec<u8>

Serialize this metadata to the ISO 21496-1 AVIF tmap item payload format.

This is the inverse of the internal parse_tone_map_image function and produces the exact byte sequence expected in an AVIF tmap item. The output can be passed to zenavif_serialize::Aviffy::set_gain_map or used for byte-level roundtrip testing.

Always writes the full (non-common-denominator) wire form: inputs that were parsed from the FLAG_COMMON_DENOMINATOR compact layout are re-expanded to per-field (numerator, denominator) pairs and the compact form is NOT preserved.

version and minimum_version are always written as 0. Writer version is always emitted as 0 (we don’t claim any extensions beyond the base ISO 21496-1 spec).

Trait Implementations§

Source§

impl Clone for GainMapMetadata

Source§

fn clone(&self) -> GainMapMetadata

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for GainMapMetadata

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for GainMapMetadata

Source§

impl From<&GainMapMetadata> for GainMapParams

Source§

fn from(md: &GainMapMetadata) -> Self

Converts to this type from the input type.
Source§

impl From<&GainMapParams> for GainMapMetadata

Source§

fn from(p: &GainMapParams) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for GainMapMetadata

Source§

fn eq(&self, other: &GainMapMetadata) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for GainMapMetadata

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.