pub struct VdaDecoderSession {
    vda_session: Session,
    format: Option<PixelFormat>,
    timestamp_to_resource_id: BTreeMap<u32, u32>,
}

Fields§

§vda_session: Session§format: Option<PixelFormat>§timestamp_to_resource_id: BTreeMap<u32, u32>

libvda can only handle 32-bit timestamps, so we will give it the buffer ID as a timestamp and map it back to the actual timestamp using this table when a decoded frame is produced.

Trait Implementations§

source§

impl DecoderSession for VdaDecoderSession

source§

fn set_output_parameters( &mut self, buffer_count: usize, format: Format ) -> Result<(), VideoError>

Tell how many output buffers will be used for this session and which format they will carry. This method must be called after a ProvidePictureBuffers event is emitted, and before the first call to use_output_buffer().
source§

fn decode( &mut self, resource_id: u32, timestamp: u64, resource: GuestResourceHandle, offset: u32, bytes_used: u32 ) -> Result<(), VideoError>

Decode the compressed stream contained in [offset..offset+bytes_used] of the shared memory in the input resource. Read more
source§

fn flush(&mut self) -> Result<(), VideoError>

Flush the decoder device, i.e. finish processing all queued decode requests and emit frames for them. Read more
source§

fn reset(&mut self) -> Result<(), VideoError>

Reset the decoder device, i.e. cancel all pending decoding requests. Read more
source§

fn clear_output_buffers(&mut self) -> Result<(), VideoError>

Immediately release all buffers passed using use_output_buffer() and reuse_output_buffer().
source§

fn event_pipe(&self) -> &dyn AsRawDescriptor

Returns the event pipe on which the availability of events will be signaled. Note that the returned value is borrowed and only valid as long as the session is alive.
source§

fn use_output_buffer( &mut self, picture_buffer_id: i32, resource: GuestResource ) -> Result<(), VideoError>

Ask the device to use resource to store decoded frames according to its layout. picture_buffer_id is the ID of the picture that will be reproduced in PictureReady events using this buffer. Read more
source§

fn reuse_output_buffer( &mut self, picture_buffer_id: i32 ) -> Result<(), VideoError>

Ask the device to reuse an output buffer previously passed to use_output_buffer and that has previously been returned to the decoder in a PictureReady event. Read more
source§

fn read_event(&mut self) -> Result<DecoderEvent, VideoError>

Blocking call to read a single event from the event pipe.

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
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V