Skip to main content

VideoCodec

Enum VideoCodec 

Source
#[non_exhaustive]
pub enum VideoCodec { H264, H265, Vp9, Av1, ProRes, DnxHd, Mpeg4, }
Expand description

Video codec for encoding.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

H264

H.264 / AVC (most compatible)

§

H265

H.265 / HEVC (high compression)

§

Vp9

VP9 (WebM, royalty-free)

§

Av1

AV1 (latest, high compression, LGPL compatible)

§

ProRes

ProRes (Apple, editing)

§

DnxHd

DNxHD/DNxHR (Avid, editing)

§

Mpeg4

MPEG-4

Implementations§

Source§

impl VideoCodec

Source

pub const fn is_lgpl_compatible(self) -> bool

Check if this codec specification is LGPL compatible.

Returns true for codecs that can be used without GPL licensing.

Important: This indicates the codec family’s licensing, not the actual encoder used. H.264 and H.265 return false because their software encoders (libx264/libx265) are GPL, but hardware encoders (NVENC, QSV, etc.) are LGPL-compatible.

Use VideoEncoder::is_lgpl_compliant() to check the actual encoder selected at runtime.

§LGPL-Compatible Codecs
  • VP9 - Google’s royalty-free codec (libvpx-vp9)
  • AV1 - Next-gen royalty-free codec (libaom-av1)
  • ProRes - Apple’s professional codec
  • DNxHD - Avid’s professional codec
  • MPEG4 - ISO MPEG-4 Part 2
§GPL Codecs (require licensing for commercial use)
  • H264 - Requires MPEG LA license (when using libx264)
  • H265 - Requires MPEG LA license (when using libx265)

Note: Hardware H.264/H.265 encoders are LGPL-compatible and don’t require licensing fees.

Source

pub const fn default_extension(self) -> &'static str

Get default file extension for this codec.

Trait Implementations§

Source§

impl Clone for VideoCodec

Source§

fn clone(&self) -> VideoCodec

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 VideoCodec

Source§

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

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

impl Default for VideoCodec

Source§

fn default() -> VideoCodec

Returns the “default value” for a type. Read more
Source§

impl PartialEq for VideoCodec

Source§

fn eq(&self, other: &VideoCodec) -> 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 VideoCodec

Source§

impl Eq for VideoCodec

Source§

impl StructuralPartialEq for VideoCodec

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.