pub struct IntervalPliInterceptor<P> { /* private fields */ }Expand description
Requests a keyframe from every bound remote stream on a fixed interval.
- Sans-I/O has no clock of its own: the interval is measured from the first
Instantthe interceptor is handed, whether that arrives viahandle_readorhandle_timeout.
Implementations§
Source§impl<P> IntervalPliInterceptor<P>
impl<P> IntervalPliInterceptor<P>
Sourcepub fn force_pli(&mut self, now: Instant)
pub fn force_pli(&mut self, now: Instant)
Request a keyframe from every bound stream, now.
§Why this takes an instant, and why it is not on the trait
Ein is () for every interceptor, so there is no typed event to carry an out-of-band
request through a chain — and widening the trait for one interceptor would break every
other. So this is an inherent method, reachable while the concrete type is still in hand
(before Registry::boxed erases it). The instant is a parameter
because a sans-I/O interceptor has no clock to ask.
Sourcepub fn force_pli_for(&mut self, now: Instant, ssrcs: &[u32])
pub fn force_pli_for(&mut self, now: Instant, ssrcs: &[u32])
Request a keyframe from specific streams, now.
SSRCs that are not bound are ignored: a PLI for a stream nobody is receiving has no destination.
Sourcepub fn bound_streams(&self) -> impl Iterator<Item = u32> + '_
pub fn bound_streams(&self) -> impl Iterator<Item = u32> + '_
The streams currently being asked for keyframes.
Trait Implementations§
Source§impl<P: Interceptor> Interceptor for IntervalPliInterceptor<P>
impl<P: Interceptor> Interceptor for IntervalPliInterceptor<P>
Source§fn bind_local_stream(&mut self, info: &StreamInfo)
fn bind_local_stream(&mut self, info: &StreamInfo)
bind_local_stream lets you modify any outgoing RTP packets. It is called once for per LocalStream. The returned method
will be called once per rtp packet.
Source§fn unbind_local_stream(&mut self, info: &StreamInfo)
fn unbind_local_stream(&mut self, info: &StreamInfo)
unbind_local_stream is called when the Stream is removed. It can be used to clean up any data related to that track.
Source§fn bind_remote_stream(&mut self, info: &StreamInfo)
fn bind_remote_stream(&mut self, info: &StreamInfo)
bind_remote_stream lets you modify any incoming RTP packets. It is called once for per RemoteStream. The returned method
will be called once per rtp packet.
Source§fn unbind_remote_stream(&mut self, info: &StreamInfo)
fn unbind_remote_stream(&mut self, info: &StreamInfo)
unbind_remote_stream is called when the Stream is removed. It can be used to clean up any data related to that track.
Source§impl<P: Interceptor> Protocol<TransportMessage<Packet>, TransportMessage<Packet>, ()> for IntervalPliInterceptor<P>
impl<P: Interceptor> Protocol<TransportMessage<Packet>, TransportMessage<Packet>, ()> for IntervalPliInterceptor<P>
Source§fn handle_write(&mut self, msg: TaggedPacket) -> Result<(), Self::Error>
fn handle_write(&mut self, msg: TaggedPacket) -> Result<(), Self::Error>
Handle an outgoing write message. Read more
Source§fn handle_event(&mut self, evt: ()) -> Result<(), Self::Error>
fn handle_event(&mut self, evt: ()) -> Result<(), Self::Error>
Handle a custom event. Read more
Source§fn handle_read(&mut self, msg: TaggedPacket) -> Result<(), Self::Error>
fn handle_read(&mut self, msg: TaggedPacket) -> Result<(), Self::Error>
Handle an incoming read message. Read more
Source§fn handle_timeout(&mut self, now: Self::Time) -> Result<(), Self::Error>
fn handle_timeout(&mut self, now: Self::Time) -> Result<(), Self::Error>
Handle a timeout event. Read more
Auto Trait Implementations§
impl<P> !RefUnwindSafe for IntervalPliInterceptor<P>
impl<P> !UnwindSafe for IntervalPliInterceptor<P>
impl<P> Freeze for IntervalPliInterceptor<P>where
P: Freeze,
impl<P> Send for IntervalPliInterceptor<P>where
P: Send,
impl<P> Sync for IntervalPliInterceptor<P>where
P: Sync,
impl<P> Unpin for IntervalPliInterceptor<P>where
P: Unpin,
impl<P> UnsafeUnpin for IntervalPliInterceptor<P>where
P: UnsafeUnpin,
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