pub trait VideoEncoder: Send {
// Required methods
fn codec(&self) -> CodecId;
fn send_frame(&mut self, frame: &VideoFrame) -> CodecResult<()>;
fn receive_packet(&mut self) -> CodecResult<Option<EncodedPacket>>;
fn flush(&mut self) -> CodecResult<()>;
fn config(&self) -> &EncoderConfig;
}Expand description
Video encoder trait.
Implements a push-pull encoding model:
- Send raw frames with
send_frame - Receive compressed packets with
receive_packet
Required Methods§
Sourcefn send_frame(&mut self, frame: &VideoFrame) -> CodecResult<()>
fn send_frame(&mut self, frame: &VideoFrame) -> CodecResult<()>
Sourcefn receive_packet(&mut self) -> CodecResult<Option<EncodedPacket>>
fn receive_packet(&mut self) -> CodecResult<Option<EncodedPacket>>
Receive an encoded packet.
Returns Ok(None) if more frames are needed.
§Errors
Returns error if encoding fails.
Sourcefn flush(&mut self) -> CodecResult<()>
fn flush(&mut self) -> CodecResult<()>
Flush the encoder.
Call this after all frames have been sent to retrieve remaining packets.
§Errors
Returns error if flush fails.
Sourcefn config(&self) -> &EncoderConfig
fn config(&self) -> &EncoderConfig
Get encoder configuration.