Skip to main content

HardwareAccel

Enum HardwareAccel 

Source
pub enum HardwareAccel {
    Auto,
    None,
    Nvdec,
    Qsv,
    Amf,
    VideoToolbox,
    Vaapi,
}
Expand description

Hardware acceleration configuration.

This enum specifies which hardware acceleration method to use for video decoding. Hardware acceleration can significantly improve decoding performance, especially for high-resolution content.

§Platform Support

ModePlatformGPU Required
NvdecWindows/LinuxNVIDIA
QsvWindows/LinuxIntel
AmfWindows/LinuxAMD
VideoToolboxmacOS/iOSAny
VaapiLinuxVarious

§Fallback Behavior

When Auto is used, the decoder will try available accelerators in order of preference and fall back to software decoding if none are available.

Variants§

§

Auto

Automatically detect and use available hardware.

The decoder will probe for available hardware accelerators and use the best one available. Falls back to software decoding if no hardware acceleration is available.

§

None

Disable hardware acceleration (CPU only).

Forces software decoding using the CPU. This may be useful for debugging, consistency, or when hardware acceleration causes issues.

§

Nvdec

NVIDIA NVDEC.

Uses NVIDIA’s dedicated video decoding hardware. Supports most common codecs including H.264, H.265, VP9, and AV1 (on newer GPUs). Requires an NVIDIA GPU with NVDEC support.

§

Qsv

Intel Quick Sync Video.

Uses Intel’s integrated GPU video engine. Available on most Intel CPUs with integrated graphics. Supports H.264, H.265, VP9, and AV1 (on newer platforms).

§

Amf

AMD Advanced Media Framework.

Uses AMD’s dedicated video decoding hardware. Available on AMD GPUs and APUs. Supports H.264, H.265, and VP9.

§

VideoToolbox

Apple VideoToolbox.

Uses Apple’s hardware video decoding on macOS and iOS. Works with both Intel and Apple Silicon Macs. Supports H.264, H.265, and ProRes.

§

Vaapi

Video Acceleration API (Linux).

A Linux-specific API that provides hardware-accelerated video decoding across different GPU vendors. Widely supported on Intel, AMD, and NVIDIA GPUs on Linux.

Implementations§

Source§

impl HardwareAccel

Source

pub const fn is_specific(&self) -> bool

Returns true if this represents an enabled hardware accelerator.

Returns false for None and Auto.

§Examples
use ff_decode::HardwareAccel;

assert!(!HardwareAccel::Auto.is_specific());
assert!(!HardwareAccel::None.is_specific());
assert!(HardwareAccel::Nvdec.is_specific());
assert!(HardwareAccel::Qsv.is_specific());
Source

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

Returns the name of the hardware accelerator.

§Examples
use ff_decode::HardwareAccel;

assert_eq!(HardwareAccel::Auto.name(), "auto");
assert_eq!(HardwareAccel::Nvdec.name(), "nvdec");
assert_eq!(HardwareAccel::VideoToolbox.name(), "videotoolbox");

Trait Implementations§

Source§

impl Clone for HardwareAccel

Source§

fn clone(&self) -> HardwareAccel

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 HardwareAccel

Source§

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

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

impl Default for HardwareAccel

Source§

fn default() -> HardwareAccel

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

impl PartialEq for HardwareAccel

Source§

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

Source§

impl Eq for HardwareAccel

Source§

impl StructuralPartialEq for HardwareAccel

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.