Skip to main content

Crate sipx_rtp

Crate sipx_rtp 

Source
Expand description

RTP and RTCP (RFC 3550).

Two things here earn their tests. The sequence number is 16 bits and wraps every twenty-odd minutes at speech packet rates, so the wrap is an ordinary event and any comparison that uses < is wrong. And the jitter buffer trades latency for order: packets arrive late, early, twice or not at all, and audio needs them evenly spaced.

Packet parsing rejects rather than guesses. A decoder that reads a malformed packet optimistically plays header bytes as audio, which is heard as a loud click.

§Stability

sipx is pre-1.0, so neither word below means frozen. 1.0.0 is what freezes an API, and its predicates are in docs/roadmap.md. Until then:

  • Supported — meant to be depended on. Breaking changes get a CHANGELOG.md entry saying what to do instead. New enum variants and new struct fields may still appear in a minor release, so a downstream match should carry a _ arm.
  • Experimental — may change shape or be removed without a migration note. Depend on it only if you are prepared to follow it.

Supported. RTP, RTCP, the jitter buffer, quality statistics, SRTP and RFC 4733 DTMF are all reachable from a call and exercised by it.

Re-exports§

pub use dtmf::Digit;
pub use dtmf::Event as DtmfEvent;
pub use dtmf::Receiver as DtmfReceiver;
pub use jitter::JitterBuffer;
pub use packet::HEADER_LEN;
pub use packet::Packet;
pub use packet::RtpError;
pub use packet::sequence_distance;
pub use packet::sequence_is_newer;
pub use quality::Quality;
pub use quality::ntp_now;
pub use quality::round_trip;
pub use rtcp::ReceiverReport;
pub use rtcp::ReportBlock;
pub use rtcp::Rtcp;
pub use rtcp::RtcpError;
pub use rtcp::Sdes;
pub use rtcp::SdesChunk;
pub use rtcp::SdesItem;
pub use rtcp::SenderReport;
pub use rtcp::StreamStats;
pub use srtp::Context as SrtpContext;
pub use srtp::SrtpError;

Modules§

dtmf
DTMF as named telephone events (RFC 4733).
jitter
A jitter buffer.
packet
RTP packets (RFC 3550 §5.1).
quality
What a call actually sounded like: loss, jitter, round-trip time, and an estimate of how bad that combination was.
rtcp
RTCP sender and receiver reports (RFC 3550 §6.4).
srtp
SRTP (RFC 3711): the default transform, AES-128 counter mode with HMAC-SHA1.