pub struct IntervalPliInterceptor { /* private fields */ }Expand description
Requests a keyframe from every bound remote stream on a fixed interval.
§Where this belongs in the chain
It only generates, and what it generates is RTCP, so its position is fixed by nothing except being on the application side of the pacer — as everything that generates is, so that what it produces is still metered on its way out.
Sans-I/O has no clock of its own, so the interval is measured from the first Instant the
interceptor is handed, whether that arrives via handle_read or handle_timeout.
Implementations§
Source§impl IntervalPliInterceptor
impl IntervalPliInterceptor
Sourcepub fn new(interval: Duration) -> Self
pub fn new(interval: Duration) -> Self
A generator asking every bound stream for a keyframe every interval.
A zero interval disables periodic requests entirely, matching upstream, which creates no ticker when its interval is not positive.
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 Default for IntervalPliInterceptor
impl Default for IntervalPliInterceptor
Source§impl Interceptor for IntervalPliInterceptor
impl Interceptor for IntervalPliInterceptor
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§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§impl Protocol<TransportMessage<AttributedPacket>, TransportMessage<AttributedPacket>, ()> for IntervalPliInterceptor
impl Protocol<TransportMessage<AttributedPacket>, TransportMessage<AttributedPacket>, ()> for IntervalPliInterceptor
Source§type Rout = TransportMessage<AttributedPacket>
type Rout = TransportMessage<AttributedPacket>
Output read message type Read more
Source§type Wout = TransportMessage<AttributedPacket>
type Wout = TransportMessage<AttributedPacket>
Output write message type 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_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 poll_write(&mut self) -> Option<TaggedPacket>
fn poll_write(&mut self) -> Option<TaggedPacket>
Poll for a processed write message. Read more
Source§fn handle_timeout(&mut self, now: Instant) -> Result<(), Error>
fn handle_timeout(&mut self, now: Instant) -> Result<(), Error>
Handle a timeout event. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for IntervalPliInterceptor
impl !UnwindSafe for IntervalPliInterceptor
impl Freeze for IntervalPliInterceptor
impl Send for IntervalPliInterceptor
impl Sync for IntervalPliInterceptor
impl Unpin for IntervalPliInterceptor
impl UnsafeUnpin for IntervalPliInterceptor
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