Skip to main content

VaapiSurface

Struct VaapiSurface 

Source
pub struct VaapiSurface { /* private fields */ }
Available on Linux only.
Expand description

VAAPI surface (VASurfaceID + VADisplay), as a newtype so the GpuResource enum carries it uniformly with the rest.

Implementations§

Source§

impl VaapiSurface

Source

pub unsafe fn try_from_raw( surface: u32, display: *mut c_void, keep_alive: Option<KeepAlive>, ) -> Result<Self, InvalidHandleError>

Wrap a VASurfaceID together with its VADisplay. Borrowing: the handle is stored non-owningly, this type has no Drop, and every obligation below extends to each Clone.

§Safety
  • display must be a live VADisplay on which vaInitialize succeeded and vaTerminate has not run. Null is rejected as InvalidHandleError::NullPointer and is not a caller obligation.
  • surface must be a VASurfaceID currently allocated on that display. It is a plain u32 index, so nothing distinguishes a stale or fabricated id from a live one — including 0, which is deliberately not rejected here because 0 is a legal VASurfaceID. Passing a destroyed surface makes the exporter’s vaExportSurfaceHandle address a recycled slot.
  • Lifetime: nothing is retained and there is no Drop. Neither vaDestroySurfaces nor vaTerminate may run while this value or any Clone of it is reachable, and the surface must not be recycled back into the decoder’s pool either — a reused id silently yields another frame’s pixels. keep_alive exists to anchor the decoder context that owns both; with None the caller carries the obligation.
  • Thread affinity: VaapiSurface is Send + Sync, but libva serialises on a per-VADisplay lock and most drivers require that a surface not be exported while the decoder is still writing it. The caller must have completed vaSyncSurface (or an equivalent fence) before handing the id over.
Source

pub fn surface(&self) -> u32

Source

pub fn display(&self) -> *mut c_void

Source

pub fn keep_alive(&self) -> Option<&KeepAlive>

Trait Implementations§

Source§

impl Clone for VaapiSurface

Source§

fn clone(&self) -> Self

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 VaapiSurface

Source§

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

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

impl Send for VaapiSurface

Source§

impl Sync for VaapiSurface

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> MaybeSend for T
where T: Send + ?Sized,

Source§

impl<T> MaybeSendSync for T
where T: Send + Sync + ?Sized,

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,