pub struct NativeVideoEncoderProbe {Show 14 fields
pub codec: NativeVideoCodec,
pub encoder_name: String,
pub class: NativeEncoderClass,
pub hardware_accelerated: bool,
pub capability_bits: u32,
pub pixel_formats: Vec<String>,
pub hardware_configs: Vec<NativeEncoderHardwareConfig>,
pub accepts_yuv420p: bool,
pub requires_hardware_frames: bool,
pub advertised: bool,
pub minimum_size: (u32, u32),
pub software_open_error: Option<String>,
pub software_packets: u32,
pub rate_control: Vec<NativeRateControlProbe>,
}Expand description
What one registered video encoder declares, and what happened when alpha2 opened it on this machine.
Registration, advertisement and instantiation are three different claims, and only the third is the one an export depends on. This probe makes all three observable in one place, per platform, without an export.
Fields§
§codec: NativeVideoCodecLogical codec this encoder implements.
encoder_name: StringFFmpeg short name.
class: NativeEncoderClassClass taken from the encoder’s own capability bits.
hardware_accelerated: boolWhether this row runs the encoder on the GPU.
capability_bits: u32Raw AV_CODEC_CAP_* bits, so an unexpected class can be traced.
pixel_formats: Vec<String>Pixel formats the encoder declares, or empty when it declares none.
hardware_configs: Vec<NativeEncoderHardwareConfig>Hardware configurations the encoder declares.
accepts_yuv420p: boolWhether AV_PIX_FMT_YUV420P is among the declared formats.
requires_hardware_frames: boolWhether every declared format is a hardware one, so a software frame
can never be sent to it. This is what keeps h264_vulkan unadvertised.
advertised: boolWhether codec_capabilities advertises it for the YUV420P sink.
minimum_size: (u32, u32)Smallest frame the encoder accepts, as alpha2 records it.
software_open_error: Option<String>None when the encoder opened and produced at least one packet from a
software YUV420P frame; otherwise why it did not.
software_packets: u32Packets drained from that attempt.
rate_control: Vec<NativeRateControlProbe>Which rate-control mechanisms opened, and with what options.
Trait Implementations§
Source§impl Clone for NativeVideoEncoderProbe
impl Clone for NativeVideoEncoderProbe
Source§impl Debug for NativeVideoEncoderProbe
impl Debug for NativeVideoEncoderProbe
impl Eq for NativeVideoEncoderProbe
Source§impl PartialEq for NativeVideoEncoderProbe
impl PartialEq for NativeVideoEncoderProbe
impl StructuralPartialEq for NativeVideoEncoderProbe
Auto Trait Implementations§
impl Freeze for NativeVideoEncoderProbe
impl RefUnwindSafe for NativeVideoEncoderProbe
impl Send for NativeVideoEncoderProbe
impl Sync for NativeVideoEncoderProbe
impl Unpin for NativeVideoEncoderProbe
impl UnsafeUnpin for NativeVideoEncoderProbe
impl UnwindSafe for NativeVideoEncoderProbe
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.