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
impl DecoderSession for VdaDecoderSession
source§fn set_output_parameters(
&mut self,
buffer_count: usize,
format: Format
) -> Result<(), VideoError>
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>
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 moresource§fn flush(&mut self) -> Result<(), VideoError>
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>
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>
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
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>
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 moresource§fn reuse_output_buffer(
&mut self,
picture_buffer_id: i32
) -> Result<(), VideoError>
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 moresource§fn read_event(&mut self) -> Result<DecoderEvent, VideoError>
fn read_event(&mut self) -> Result<DecoderEvent, VideoError>
Blocking call to read a single event from the event pipe.
Auto Trait Implementations§
impl RefUnwindSafe for VdaDecoderSession
impl !Send for VdaDecoderSession
impl !Sync for VdaDecoderSession
impl Unpin for VdaDecoderSession
impl UnwindSafe for VdaDecoderSession
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn 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>
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)
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)
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.