pub struct NativeVideoEncodeSink { /* private fields */ }Expand description
Transactional FFmpeg video encoder and muxer.
Frames are encoded into a sibling partial file. Only a successful encoder drain and trailer write renames it to the requested destination.
Implementations§
Source§impl NativeVideoEncodeSink
impl NativeVideoEncodeSink
Sourcepub fn create(
path: impl AsRef<Path>,
config: VideoEncodeConfig,
) -> Result<Self, EncodeError>
pub fn create( path: impl AsRef<Path>, config: VideoEncodeConfig, ) -> Result<Self, EncodeError>
Creates a sink that encodes config.codec into a config.container file at path.
§Errors
Returns an adapter failure for invalid dimensions, paths, codecs, or muxers.
Sourcepub fn create_with_encoder(
path: impl AsRef<Path>,
config: VideoEncodeConfig,
encoder_name: &str,
) -> Result<Self, EncodeError>
pub fn create_with_encoder( path: impl AsRef<Path>, config: VideoEncodeConfig, encoder_name: &str, ) -> Result<Self, EncodeError>
Creates a concrete encoder selected by its FFmpeg short name.
§Errors
Returns an adapter failure when the name is unavailable, implements a different codec, or the remaining configuration is invalid.
Sourcepub fn create_with_encoder_threads(
path: impl AsRef<Path>,
config: VideoEncodeConfig,
encoder_name: Option<&str>,
software_threads: &dyn Fn() -> i64,
) -> Result<Self, EncodeError>
pub fn create_with_encoder_threads( path: impl AsRef<Path>, config: VideoEncodeConfig, encoder_name: Option<&str>, software_threads: &dyn Fn() -> i64, ) -> Result<Self, EncodeError>
Creates an encoder whose software thread count the caller decides.
software_threads is asked, at most once, only when a candidate that
runs on the CPU is opened: the caller sizes the rest of its work from
NativeVideoEncoderSelection afterwards, so a hardware candidate that
fails to open and falls through to software still gets a software
encoder’s share of the CPU.
encoder_name is the concrete encoder the caller pinned. None lets
the candidates for the codec be tried in preference order, which is
what makes the open-time fallback reachable: a caller that names an
encoder gets that one or an error.
§Errors
Returns an adapter failure when no candidate opens or the output configuration is invalid.
Sourcepub fn stage_timings(&self) -> EncodeStageTimings
pub fn stage_timings(&self) -> EncodeStageTimings
Where this sink’s time has gone so far.
Sourcepub fn selection(&self) -> &NativeVideoEncoderSelection
pub fn selection(&self) -> &NativeVideoEncoderSelection
The encoder this sink opened, and the candidates it passed over.
Sourcepub fn write_prepared_video(
&mut self,
frame: &mut Yuv420pFrameBuffer,
pts: MediaTime,
) -> Result<(), EncodeError>
pub fn write_prepared_video( &mut self, frame: &mut Yuv420pFrameBuffer, pts: MediaTime, ) -> Result<(), EncodeError>
Encodes a frame the caller already packed, without copying it.
An EncodeEvent::Video written to the sink takes engine planes and
allocates an AVFrame to copy them into, on this thread: the encode
worker, which is the saturated one. A caller that packed its own output
straight into an encoder frame hands that frame over instead.
§Errors
Returns an error for a frame sized differently from this encoder, a non-monotonic timestamp, or a codec failure.