Skip to main content

Crate rtc_sdp

Crate rtc_sdp 

Source
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: unmarshal one from a string, marshal it back, or build one up section by section.
  • MediaDescription — one m= section, with its attributes, formats and connection data.
  • extmapa=extmap header-extension declarations and the well-known extension URIs.
  • directionsendrecv/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=extmap RTP header-extension declarations and the well-known extension URIs. a=extmap RTP header-extension declarations.
util
Parsing helpers plus the codec and connection-role types shared across descriptions.