Skip to main content

PixelFormatInfo

Struct PixelFormatInfo 

Source
pub struct PixelFormatInfo { /* private fields */ }
Expand description

Compile-time pixel format properties.

This struct encapsulates all format-specific knowledge in one location, providing a single source of truth for buffer size calculations, stride computation, and format category detection.

§Examples

use grafton_ndi::{PixelFormat, FormatCategory};

let info = PixelFormat::BGRA.info();
assert_eq!(info.bytes_per_pixel(), 4);
assert_eq!(info.category(), FormatCategory::Packed);

let info = PixelFormat::NV12.info();
assert_eq!(info.bytes_per_pixel(), 1);
assert_eq!(info.category(), FormatCategory::SemiPlanar420);

Implementations§

Source§

impl PixelFormatInfo

Source

pub const fn bytes_per_pixel(&self) -> u8

Get bytes per pixel for packed formats, or Y-plane bytes per pixel for planar.

Source

pub const fn category(&self) -> FormatCategory

Get the format category.

Source

pub const fn is_planar_420(&self) -> bool

Returns true if this is a planar 4:2:0 format (YV12, I420, or NV12).

Source

pub fn try_buffer_len(&self, y_stride: i32, height: i32) -> Result<usize>

Calculate total buffer size for given dimensions and stride using checked arithmetic.

§Arguments
  • y_stride - The Y-plane line stride in bytes (for planar formats) or total line stride (for packed formats)
  • height - Frame height in pixels
§Errors

Returns Error::InvalidFrame if y_stride or height is not positive, if planar 4:2:0 stride/height requirements are not met, if arithmetic overflows, or if the result exceeds the crate’s maximum video frame size.

§Format-specific calculations
  • Packed RGB/YUV (BGRA/BGRX/RGBA/RGBX/UYVY/UYVA/P216/PA16): y_stride * height
  • Planar 4:2:0 YV12/I420: requires even stride and height, then Y + U + V where:
    • Y plane: y_stride * height
    • U plane: (y_stride/2) * (height/2)
    • V plane: (y_stride/2) * (height/2)
  • Semi-planar 4:2:0 NV12: requires even height, then Y + UV where:
    • Y plane: y_stride * height
    • UV plane: y_stride * (height/2)

Trait Implementations§

Source§

impl Clone for PixelFormatInfo

Source§

fn clone(&self) -> PixelFormatInfo

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for PixelFormatInfo

Source§

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

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

impl PartialEq for PixelFormatInfo

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 Copy for PixelFormatInfo

Source§

impl Eq for PixelFormatInfo

Source§

impl StructuralPartialEq for PixelFormatInfo

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.