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§
sourcefn encode(
&mut self,
resource: GuestResource,
timestamp: u64,
force_keyframe: bool
) -> Result<u32, VideoError>
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
.
sourcefn use_output_buffer(
&mut self,
resource: GuestResourceHandle,
offset: u32,
size: u32
) -> Result<u32, VideoError>
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.
sourcefn flush(&mut self) -> Result<(), VideoError>
fn flush(&mut self) -> Result<(), VideoError>
Requests the encoder to flush. When completed, an EncoderEvent::FlushResponse
event will
be readable from the event pipe.
sourcefn request_encoding_params_change(
&mut self,
bitrate: Bitrate,
framerate: u32
) -> Result<(), VideoError>
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
.
sourcefn 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.
sourcefn read_event(&mut self) -> Result<EncoderEvent, VideoError>
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.