Struct devices::virtio::video::EosBufferManager   
source · struct EosBufferManager {
    stream_id: u32,
    eos_buffer: Option<u32>,
    client_awaits_eos: bool,
    responses: Vec<VideoEvtResponseType>,
}Expand description
Manages the zero-length, EOS-marked buffer signaling the end of a stream.
Both the decoder and encoder need to signal end-of-stream events using a zero-sized buffer
marked with the VIRTIO_VIDEO_BUFFER_FLAG_EOS flag. This struct allows to keep a buffer aside
for that purpose.
TODO(b/149725148): Remove this when libvda supports buffer flags.
Fields§
§stream_id: u32§eos_buffer: Option<u32>§client_awaits_eos: bool§responses: Vec<VideoEvtResponseType>Implementations§
source§impl EosBufferManager
 
impl EosBufferManager
sourcefn try_reserve_eos_buffer(&mut self, buffer_id: u32) -> bool
 
fn try_reserve_eos_buffer(&mut self, buffer_id: u32) -> bool
Attempt to reserve buffer buffer_id for use as EOS buffer.
This method should be called by the output buffer queueing code of the device. It returns
true if the buffer has been kept aside for EOS, false otherwise (which means another
buffer is already kept aside for EOS). If true is returned, the client must not use the
buffer for any other purpose.
sourcefn try_complete_eos(
    &mut self,
    responses: Vec<VideoEvtResponseType>,
) -> Option<Vec<VideoEvtResponseType>>
 
fn try_complete_eos( &mut self, responses: Vec<VideoEvtResponseType>, ) -> Option<Vec<VideoEvtResponseType>>
Attempt to complete an EOS event using the previously reserved buffer, if available.
responses is a vector of responses to be sent to the driver along with the EOS buffer. If
an EOS buffer has been made available using the try_reserve_eos_buffer method, then this
method returns the responses vector with the EOS buffer dequeue appended in first
position.
If no EOS buffer is available, then the contents of responses is put aside, and will be
returned the next time this method is called with an EOS buffer available. When this
happens, client_awaits_eos will be set to true, and the client can check this member and
call this method again right after queuing the next buffer to obtain the EOS response as
soon as is possible.
Auto Trait Implementations§
impl Freeze for EosBufferManager
impl RefUnwindSafe for EosBufferManager
impl Send for EosBufferManager
impl Sync for EosBufferManager
impl Unpin for EosBufferManager
impl UnwindSafe for EosBufferManager
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
§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>
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>
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)
&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)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.