pub trait EncoderSession {
    // Required methods
    fn encode(
        &mut self,
        resource: GuestResource,
        timestamp: u64,
        force_keyframe: bool
    ) -> Result<u32, VideoError>;
    fn use_output_buffer(
        &mut self,
        resource: GuestResourceHandle,
        offset: u32,
        size: u32
    ) -> Result<u32, VideoError>;
    fn flush(&mut self) -> Result<(), VideoError>;
    fn request_encoding_params_change(
        &mut self,
        bitrate: Bitrate,
        framerate: u32
    ) -> Result<(), VideoError>;
    fn event_pipe(&self) -> &dyn AsRawDescriptor;
    fn read_event(&mut self) -> Result<EncoderEvent, VideoError>;
}

Required Methods§

source

fn encode( &mut self, resource: GuestResource, timestamp: u64, force_keyframe: bool ) -> Result<u32, VideoError>

Encodes the frame provided by resource. force_keyframe forces the frame to be encoded as a keyframe. When the buffer has been successfully processed, a ProcessedInputBuffer event will be readable from the event pipe, with the same InputBufferId as returned by this function. When the corresponding encoded data is ready, ProcessedOutputBuffer events will be readable from the event pipe, with the same timestamp as provided timestamp.

source

fn use_output_buffer( &mut self, resource: GuestResourceHandle, offset: u32, size: u32 ) -> Result<u32, VideoError>

Provides an output resource to store encoded output, where offset and size define the region of memory to use. When the buffer has been filled with encoded output, a ProcessedOutputBuffer event will be readable from the event pipe, with the same OutputBufferId as returned by this function.

source

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

Requests the encoder to flush. When completed, an EncoderEvent::FlushResponse event will be readable from the event pipe.

source

fn request_encoding_params_change( &mut self, bitrate: Bitrate, framerate: u32 ) -> Result<(), VideoError>

Requests the encoder to use new encoding parameters provided by bitrate and framerate.

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 read_event(&mut self) -> Result<EncoderEvent, VideoError>

Performs a blocking read for an encoder event. This function should only be called when the file descriptor returned by event_pipe is readable.

Implementors§