Expand description
SDP parsing and serialization.
The Session Description Protocol (RFC 8866, superseding RFC 4566) as WebRTC uses it: offers and answers, media sections, and the attributes that carry codecs, ICE candidates, DTLS fingerprints and header-extension mappings (RFC 8285).
§Structure
SessionDescription— a whole session description:unmarshalone from a string,marshalit back, or build one up section by section.MediaDescription— onem=section, with its attributes, formats and connection data.extmap—a=extmapheader-extension declarations and the well-known extension URIs.direction—sendrecv/sendonly/recvonly/inactive.
§Example
use rtc_sdp::SessionDescription;
use std::io::Cursor;
let sdp = "v=0\r\n\
o=- 0 0 IN IP4 127.0.0.1\r\n\
s=-\r\n\
t=0 0\r\n\
m=audio 9 UDP/TLS/RTP/SAVPF 111\r\n\
a=mid:0\r\n\
a=sendrecv\r\n";
let desc = SessionDescription::unmarshal(&mut Cursor::new(sdp))?;
for media in &desc.media_descriptions {
assert_eq!(media.media_name.media, "audio");
assert_eq!(media.attribute("mid").flatten(), Some("0"));
}
// Printing it back yields valid SDP.
assert!(desc.marshal().starts_with("v=0"));This crate is deliberately a syntax layer: it parses and prints SDP faithfully and
leaves negotiation semantics (RFC 8829) to the rtc crate,
which re-exports it as rtc::sdp.
Re-exports§
pub use description::media::MediaDescription;pub use description::session::SessionDescription;
Modules§
- description
- Session and media descriptions — the
v=/m=structure of an SDP document. - direction
- Transmission direction (
sendrecv,sendonly,recvonly,inactive). - extmap
a=extmapRTP header-extension declarations and the well-known extension URIs.a=extmapRTP header-extension declarations.- util
- Parsing helpers plus the codec and connection-role types shared across descriptions.