pub struct SwChromaKey { /* private fields */ }Expand description
Keys a solid background color out of a decoded BGRA frame into alpha —
the software half of this crate’s chroma-key support, the GPU-resident
other half being D3d11ChromaKey. A Filter:
receives via Sink, pushes the keyed frame on through its own (single)
src pad.
Expects BGRA input — the same format crate::elements::SwVideoCompositor/
D3d11VideoCompositor layers already use, so the
typical placement is right between a Scaler (converting a decoder’s
YUV output to BGRA) and a compositor’s add_source. RGB channels pass
through unchanged; only alpha is written.
Implementations§
Source§impl SwChromaKey
impl SwChromaKey
Sourcepub fn new(name: impl Into<String>, options: ChromaKeyOptions) -> Self
pub fn new(name: impl Into<String>, options: ChromaKeyOptions) -> Self
Creates a software chroma-key filter with fixed keying parameters.
Trait Implementations§
Source§impl Element for SwChromaKey
impl Element for SwChromaKey
Source§fn name(&self) -> Arc<str> ⓘ
fn name(&self) -> Arc<str> ⓘ
Returns a cheap clone (refcount bump, not a deep copy) of this
element’s name —
crate::bus::BusEvent stores names as
Arc<str> for exactly this reason: a hot path like
crate::queue::Queue posting BusEvent::Dropped once per
overflowed buffer shouldn’t pay for a fresh heap allocation every
time it wants to report which element it is.Source§fn element_type(&self) -> ElementType
fn element_type(&self) -> ElementType
See
ElementType.Source§fn pp_log(&self) -> &PpLog
fn pp_log(&self) -> &PpLog
This element’s identity for
crate::bus::Bus::post — same
id/name as Element::name, just already wrapped as the
crate::pp_log::PpLog its pp_info!/pp_warn!/pp_error! macros need. A
stored private field, not built fresh per call, for the same reason
name() returns a cheap Arc<str> clone instead of a fresh String
— see its own docs.Source§fn pp_log_mut(&mut self) -> &mut PpLog
fn pp_log_mut(&mut self) -> &mut PpLog
Mutable access to the same field
Element::pp_log reads — used by
crate::pipeline::ChainBuilder to stamp the owning
crate::pipeline::Pipeline’s id onto every element that
passes through it, via element_pp_log. Not meant to be called
from anywhere else.Source§fn graph_id(&self) -> Option<ElementId>
fn graph_id(&self) -> Option<ElementId>
A pre-reserved graph identity for elements that expose dynamic
attachment handles. Most elements receive an ID from
ChainBuilder and keep the default None implementation.Source§fn attach_context(&mut self, _context: &Arc<Context>)
fn attach_context(&mut self, _context: &Arc<Context>)
Hands this element the pipeline it is being wired into, at the moment
and for the reason
Element::pp_log_mut hands it the pipeline’s
identity: the clock, the playback clock and the bus are the
pipeline’s to give, not the caller’s to choose. Read moreSource§impl Sink for SwChromaKey
impl Sink for SwChromaKey
Source§fn input_contract(&self) -> InputContract
fn input_contract(&self) -> InputContract
Keys pixel by pixel on the CPU; the GPU counterpart is D3d11ChromaKey.
Source§fn consume(&mut self, buf: MediaBuffer) -> Result<()>
fn consume(&mut self, buf: MediaBuffer) -> Result<()>
Processes one buffer synchronously on the caller’s thread. Read more
Source§fn control(&mut self, msg: ControlMsg) -> Result<()>
fn control(&mut self, msg: ControlMsg) -> Result<()>
Reacts to a
ControlMsg (pause/resume/stop) and, for anything
with a downstream of its own, forwards it on — same shape as
consume, just a separate channel from MediaBuffer so it can
reach every element (not just ones that already know how to
interpret a data buffer) and, at a crate::queue::Queue, jump
ahead of whatever data is backed up instead of waiting behind it.
No default: every Sink has to consciously decide what this means
for it, rather than silently dropping it.Source§fn ready_consume(&mut self) -> bool
fn ready_consume(&mut self) -> bool
Returns whether calling
Self::consume can make progress now. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for SwChromaKey
impl !Sync for SwChromaKey
impl !UnwindSafe for SwChromaKey
impl Freeze for SwChromaKey
impl Send for SwChromaKey
impl Unpin for SwChromaKey
impl UnsafeUnpin for SwChromaKey
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
Mutably borrows from an owned value. Read more