summaryrefslogtreecommitdiffstats
path: root/third_party/rust/webrtc-sdp/examples
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /third_party/rust/webrtc-sdp/examples
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--third_party/rust/webrtc-sdp/examples/file_parser.rs72
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/02.sdp7
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/03.sdp38
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/04.sdp7
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/05.sdp6
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/06.sdp12
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/07.sdp8
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/08.sdp87
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/09.sdp34
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/10.sdp13
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/11.sdp66
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/12.sdp58
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/13.sdp12
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/14.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/15.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/16.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/17.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/18.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/19.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/20.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/21.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/22.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/23.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/24.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/25.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/26.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/27.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/28.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/29.sdp8
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/30.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/31.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/32.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/33.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/34.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/35.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/36.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/37.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/38.sdp9
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/39.sdp8
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/40.sdp8
-rw-r--r--third_party/rust/webrtc-sdp/examples/sdps/41.sdp91
-rwxr-xr-xthird_party/rust/webrtc-sdp/examples/sdps/extract.sh3
42 files changed, 754 insertions, 0 deletions
diff --git a/third_party/rust/webrtc-sdp/examples/file_parser.rs b/third_party/rust/webrtc-sdp/examples/file_parser.rs
new file mode 100644
index 0000000000..48851f35f1
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/file_parser.rs
@@ -0,0 +1,72 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+use std::fs::File;
+use std::io::prelude::*;
+use std::panic;
+use std::path::Path;
+extern crate webrtc_sdp;
+
+// Takes the filename of a file that contains SDP, and optionally the trailing
+// flag --expect-failure.
+// If --expect-failure is passed, then the program will exit with a successful
+// exit code if the file fails to parse.
+fn main() {
+ let mut args = std::env::args();
+ let filename = match args.nth(1) {
+ None => {
+ eprintln!("Missing file name argument!");
+ std::process::exit(1);
+ }
+ Some(x) => x,
+ };
+
+ let path = Path::new(filename.as_str());
+ let display = path.display();
+
+ let mut file = match File::open(&path) {
+ Err(why) => panic!("Failed to open {}: {}", display, why),
+ Ok(file) => file,
+ };
+
+ let mut s = String::new();
+ match file.read_to_string(&mut s) {
+ Err(why) => panic!("Couldn't read {}: {}", display, why),
+ Ok(s) => s,
+ };
+
+ // Hook up the panic handler if it is expected to fail to parse
+ let expect_failure = if let Some(x) = args.next() {
+ if x.to_lowercase() != "--expect-failure" {
+ eprintln!("Extra arguments passed!");
+ std::process::exit(1);
+ }
+ panic::set_hook(Box::new(|_| {
+ println!("Exited with failure, as expected.");
+ std::process::exit(0);
+ }));
+ true
+ } else {
+ false
+ };
+
+ // Remove comment lines
+ let s = s
+ .lines()
+ .filter(|&l| !l.trim_start().starts_with(';'))
+ .collect::<Vec<&str>>()
+ .join("\r\n");
+
+ let res = webrtc_sdp::parse_sdp(&s, true);
+ match res {
+ Err(why) => panic!("Failed to parse SDP with error: {}", why),
+ Ok(sdp) => println!("Parsed SDP structure:\n{:#?}", sdp),
+ }
+
+ if expect_failure {
+ eprintln!("Successfully parsed SDP that was expected to fail. You may need to update the example expectations.");
+ std::process::exit(1);
+ }
+ println!("Successfully parsed SDP");
+}
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/02.sdp b/third_party/rust/webrtc-sdp/examples/sdps/02.sdp
new file mode 100644
index 0000000000..21d383d2f2
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/02.sdp
@@ -0,0 +1,7 @@
+v=0
+o=- 4294967296 2 IN IP4 127.0.0.1
+s=SIP Call
+c=IN IP4 198.51.100.7
+t=0 0
+m=video 56436 RTP/SAVPF 120
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/03.sdp b/third_party/rust/webrtc-sdp/examples/sdps/03.sdp
new file mode 100644
index 0000000000..ef0a5efd90
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/03.sdp
@@ -0,0 +1,38 @@
+; Many RTCP-FB feed back types take a parameter
+; Most of these will not parse.
+; One can experiment by commenting out individual lines.
+; Note: comment lines only work in the example parser.
+v=0
+o=- 4294967296 2 IN IP4 127.0.0.1
+s=SIP Call
+c=IN IP4 198.51.100.7
+t=0 0
+m=video 56436 RTP/SAVPF 120
+a=rtpmap:120 VP8/90000
+a=rtpmap:122 red/90000
+a=rtcp-fb:120 ack rpsi
+a=rtcp-fb:120 ack app
+a=rtcp-fb:120 ack app foo
+a=rtcp-fb:120 ack foo bar
+a=rtcp-fb:120 ack foo bar baz
+a=rtcp-fb:120 nack
+a=rtcp-fb:120 nack pli
+a=rtcp-fb:120 nack sli
+a=rtcp-fb:120 nack rpsi
+a=rtcp-fb:120 nack app
+a=rtcp-fb:120 nack app foo
+a=rtcp-fb:120 nack app foo bar
+a=rtcp-fb:120 nack foo bar baz
+a=rtcp-fb:120 trr-int 0
+a=rtcp-fb:120 trr-int 123
+a=rtcp-fb:120 goog-remb
+a=rtcp-fb:120 ccm fir
+a=rtcp-fb:120 ccm tmmbr
+a=rtcp-fb:120 ccm tstr
+a=rtcp-fb:120 ccm vbcm 123 456 789
+a=rtcp-fb:120 ccm foo
+a=rtcp-fb:120 ccm foo bar baz
+a=rtcp-fb:120 foo
+a=rtcp-fb:120 foo bar
+a=rtcp-fb:120 foo bar baz
+a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/04.sdp b/third_party/rust/webrtc-sdp/examples/sdps/04.sdp
new file mode 100644
index 0000000000..0682623c93
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/04.sdp
@@ -0,0 +1,7 @@
+v=0
+o=- 4294967296 2 IN IP4 127.0.0.1
+s=SIP Call
+t=0 0
+m=video 56436 RTP/SAVPF 120
+c=IN IP4 198.51.100.7
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/05.sdp b/third_party/rust/webrtc-sdp/examples/sdps/05.sdp
new file mode 100644
index 0000000000..043046edb5
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/05.sdp
@@ -0,0 +1,6 @@
+v=0
+o=- 4294967296 2 IN IP4 127.0.0.1
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=ice-lite
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/06.sdp b/third_party/rust/webrtc-sdp/examples/sdps/06.sdp
new file mode 100644
index 0000000000..d20cb3fc70
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/06.sdp
@@ -0,0 +1,12 @@
+v=0
+o=- 4294967296 2 IN IP4 127.0.0.1
+s=SIP Call
+c=IN IP4 198.51.100.7
+b=CT:5000
+b=FOOBAR:10
+b=AS:4
+t=0 0
+m=video 56436 RTP/SAVPF 120
+a=rtpmap:120 VP8/90000
+m=audio 12345/2 RTP/SAVPF 0
+a=rtpmap:0 PCMU/8000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/07.sdp b/third_party/rust/webrtc-sdp/examples/sdps/07.sdp
new file mode 100644
index 0000000000..882adacb1a
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/07.sdp
@@ -0,0 +1,8 @@
+v=0
+o=- 4294967296 2 IN IP4 127.0.0.1
+s=
+c=IN IP4 198.51.100.7
+t=0 0
+m=video 56436 RTP/SAVPF 120
+b=CT:1000
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/08.sdp b/third_party/rust/webrtc-sdp/examples/sdps/08.sdp
new file mode 100644
index 0000000000..5175638594
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/08.sdp
@@ -0,0 +1,87 @@
+;
+; This example fails to parse because of a mismatched fingerprint length
+;
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=ice-ufrag:4a799b2e
+a=ice-pwd:e4cc12a910f106a0a744719425510e17
+a=ice-lite
+a=ice-options:trickle foo
+a=msid-semantic:WMS stream streama
+a=msid-semantic:foo stream
+a=fingerprint:sha-256 DF:2E:AC:8A:FD:0A:8E:99:BF:5D:E8:3C:E7:FA:FB:08:3B:3C:54:1D:D7:D4:05:77:A0:72:9B:14:08:6D:0F:4C
+a=identity:eyJpZHAiOnsiZG9tYWluIjoiZXhhbXBsZS5vcmciLCJwcm90b2NvbCI6ImJvZ3VzIn0sImFzc2VydGlvbiI6IntcImlkZW50aXR5XCI6XCJib2JAZXhhbXBsZS5vcmdcIixcImNvbnRlbnRzXCI6XCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3l6XCIsXCJzaWduYXR1cmVcIjpcIjAxMDIwMzA0MDUwNlwifSJ9
+a=group:BUNDLE first second
+a=group:BUNDLE third
+a=group:LS first third
+m=audio 9 RTP/SAVPF 109 9 0 8 101
+c=IN IP4 0.0.0.0
+a=mid:first
+a=rtpmap:109 opus/48000/2
+a=ptime:20
+a=maxptime:20
+a=rtpmap:9 G722/8000
+a=rtpmap:0 PCMU/8000
+a=rtpmap:8 PCMA/8000
+a=rtpmap:101 telephone-event/8000
+a=fmtp:101 0-15,66,32-34,67
+a=ice-ufrag:00000000
+a=ice-pwd:0000000000000000000000000000000
+a=sendonly
+a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
+a=setup:actpass
+a=rtcp-mux
+a=msid:stream track
+a=candidate:0 1 UDP 2130379007 10.0.0.36 62453 typ host
+a=candidate:2 1 UDP 1694236671 24.6.134.204 62453 typ srflx raddr 10.0.0.36 rport 62453
+a=candidate:3 1 UDP 100401151 162.222.183.171 49761 typ relay raddr 162.222.183.171 rport 49761
+a=candidate:6 1 UDP 16515071 162.222.183.171 51858 typ relay raddr 162.222.183.171 rport 51858
+a=candidate:3 2 UDP 100401150 162.222.183.171 62454 typ relay raddr 162.222.183.171 rport 62454
+a=candidate:2 2 UDP 1694236670 24.6.134.204 55428 typ srflx raddr 10.0.0.36 rport 55428
+a=candidate:6 2 UDP 16515070 162.222.183.171 50340 typ relay raddr 162.222.183.171 rport 50340
+a=candidate:0 2 UDP 2130379006 10.0.0.36 55428 typ host
+a=rtcp:62454 IN IP4 162.222.183.171
+a=end-of-candidates
+a=ssrc:5150
+m=video 9 RTP/SAVPF 120 121 122 123
+c=IN IP6 ::1
+a=fingerprint:sha-1 DF:FA:FB:08:3B:3C:54:1D:D7:D4:05:77:A0:72:9B:14:08:6D:0F:4C:2E:AC:8A:FD:0A:8E:99:BF:5D:E8:3C:E7
+a=mid:second
+a=rtpmap:120 VP8/90000
+a=rtpmap:121 VP9/90000
+a=rtpmap:122 red/90000
+a=rtpmap:123 ulpfec/90000
+a=recvonly
+a=rtcp-fb:120 nack
+a=rtcp-fb:120 nack pli
+a=rtcp-fb:120 ccm fir
+a=rtcp-fb:121 nack
+a=rtcp-fb:121 nack pli
+a=rtcp-fb:121 ccm fir
+a=setup:active
+a=rtcp-mux
+a=msid:streama tracka
+a=msid:streamb trackb
+a=candidate:0 1 UDP 2130379007 10.0.0.36 59530 typ host
+a=candidate:0 2 UDP 2130379006 10.0.0.36 64378 typ host
+a=candidate:2 2 UDP 1694236670 24.6.134.204 64378 typ srflx raddr 10.0.0.36 rport 64378
+a=candidate:6 2 UDP 16515070 162.222.183.171 64941 typ relay raddr 162.222.183.171 rport 64941
+a=candidate:6 1 UDP 16515071 162.222.183.171 64800 typ relay raddr 162.222.183.171 rport 64800
+a=candidate:2 1 UDP 1694236671 24.6.134.204 59530 typ srflx raddr 10.0.0.36 rport 59530
+a=candidate:3 1 UDP 100401151 162.222.183.171 62935 typ relay raddr 162.222.183.171 rport 62935
+a=candidate:3 2 UDP 100401150 162.222.183.171 61026 typ relay raddr 162.222.183.171 rport 61026
+a=rtcp:61026
+a=end-of-candidates
+a=ssrc:1111 foo
+a=ssrc:1111 foo:bar
+a=imageattr:120 send * recv *
+m=audio 9 RTP/SAVPF 0
+a=mid:third
+a=rtpmap:0 PCMU/8000
+a=ice-lite
+a=ice-options:foo bar
+a=msid:noappdata
+a=bundle-only
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/09.sdp b/third_party/rust/webrtc-sdp/examples/sdps/09.sdp
new file mode 100644
index 0000000000..f5c4acdbd8
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/09.sdp
@@ -0,0 +1,34 @@
+v=0
+o=- 4294967296 2 IN IP4 127.0.0.1
+s=SIP Call
+c=IN IP4 198.51.100.7
+t=0 0
+m=audio 9 RTP/SAVPF 109 9 0 8 101
+c=IN IP4 0.0.0.0
+a=mid:first
+a=rtpmap:109 opus/48000/2
+a=ptime:20
+a=maxptime:20
+a=rtpmap:9 G722/8000
+a=rtpmap:0 PCMU/8000
+a=rtpmap:8 PCMA/8000
+a=rtpmap:101 telephone-event/8000
+a=fmtp:101 0-15
+a=fmtp:101 0-5.
+a=fmtp:101 0-15,66,67
+a=fmtp:101 0,1,2-4,5-15,66,67
+a=fmtp:101 5,6,7
+a=fmtp:101 0
+a=fmtp:101 1
+a=fmtp:101 123
+a=fmtp:101 0-123
+a=fmtp:101 -12
+a=fmtp:101 12-
+a=fmtp:101 1,12-,4
+a=fmtp:101 ,2,3
+a=fmtp:101 ,,,2,3
+a=fmtp:101 1,,,,,,,,3
+a=fmtp:101 1,2,3,
+a=fmtp:101 1-2-3
+a=fmtp:101 112233
+a=fmtp:101 33-2
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/10.sdp b/third_party/rust/webrtc-sdp/examples/sdps/10.sdp
new file mode 100644
index 0000000000..783c0d0048
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/10.sdp
@@ -0,0 +1,13 @@
+v=0
+o=- 4294967296 2 IN IP4 127.0.0.1
+s=SIP Call
+c=IN IP4 198.51.100.7
+t=0 0
+m=video 9 RTP/SAVPF 97 120 121 122 123
+c=IN IP6 ::1
+a=fingerprint:sha-1 DF:FA:FB:08:3B:3C:54:1D:D7:D4:05:77:A0:72:9B:14:08:6D:0F:4C
+a=rtpmap:97 H264/90000
+a=rtpmap:120 VP8/90000
+a=rtpmap:121 VP9/90000
+a=rtpmap:122 red/90000
+a=rtpmap:123 ulpfec/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/11.sdp b/third_party/rust/webrtc-sdp/examples/sdps/11.sdp
new file mode 100644
index 0000000000..a138e09ff0
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/11.sdp
@@ -0,0 +1,66 @@
+;
+; This example fails to parse because a=ice-lite is session only
+;
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=ice-ufrag:4a799b2e
+a=ice-pwd:e4cc12a910f106a0a744719425510e17
+a=ice-lite
+a=msid-semantic:WMS stream streama
+a=fingerprint:sha-256 DF:2E:AC:8A:FD:0A:8E:99:BF:5D:E8:3C:E7:FA:FB:08:3B:3C:54:1D:D7:D4:05:77:A0:72:9B:14:08:6D:0F:4C
+a=group:BUNDLE first second
+a=group:BUNDLE third
+a=group:LS first third
+m=audio 9 RTP/SAVPF 109 9 0 8 101
+c=IN IP4 0.0.0.0
+a=mid:first
+a=rtpmap:109 opus/48000/2
+a=ptime:20
+a=maxptime:20
+a=rtpmap:9 G722/8000
+a=rtpmap:0 PCMU/8000
+a=rtpmap:8 PCMA/8000
+a=rtpmap:101 telephone-event/8000
+a=fmtp:101 0-15,66,32-34,67
+a=ice-ufrag:00000000
+a=ice-pwd:0000000000000000000000000000000
+a=sendonly
+a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
+a=setup:actpass
+a=rtcp-mux
+a=msid:stream track
+a=candidate:0 1 UDP 2130379007 10.0.0.36 62453 typ host
+a=candidate:2 1 UDP 1694236671 24.6.134.204 62453 typ srflx raddr 10.0.0.36 rport 62453
+a=candidate:3 1 UDP 100401151 162.222.183.171 49761 typ relay raddr 162.222.183.171 rport 49761
+a=candidate:6 1 UDP 16515071 162.222.183.171 51858 typ relay raddr 162.222.183.171 rport 51858
+a=candidate:3 2 UDP 100401150 162.222.183.171 62454 typ relay raddr 162.222.183.171 rport 62454
+a=candidate:2 2 UDP 1694236670 24.6.134.204 55428 typ srflx raddr 10.0.0.36 rport 55428
+a=candidate:6 2 UDP 16515070 162.222.183.171 50340 typ relay raddr 162.222.183.171 rport 50340
+a=candidate:0 2 UDP 2130379006 10.0.0.36 55428 typ host
+m=video 9 RTP/SAVPF 97 98 120
+c=IN IP6 ::1
+a=mid:second
+a=rtpmap:97 H264/90000
+a=rtpmap:98 H264/90000
+a=rtpmap:120 VP8/90000
+a=recvonly
+a=setup:active
+a=rtcp-mux
+a=msid:streama tracka
+a=msid:streamb trackb
+a=candidate:0 1 UDP 2130379007 10.0.0.36 59530 typ host
+a=candidate:0 2 UDP 2130379006 10.0.0.36 64378 typ host
+a=candidate:2 2 UDP 1694236670 24.6.134.204 64378 typ srflx raddr 10.0.0.36 rport 64378
+a=candidate:6 2 UDP 16515070 162.222.183.171 64941 typ relay raddr 162.222.183.171 rport 64941
+a=candidate:6 1 UDP 16515071 162.222.183.171 64800 typ relay raddr 162.222.183.171 rport 64800
+a=candidate:2 1 UDP 1694236671 24.6.134.204 59530 typ srflx raddr 10.0.0.36 rport 59530
+a=candidate:3 1 UDP 100401151 162.222.183.171 62935 typ relay raddr 162.222.183.171 rport 62935
+a=candidate:3 2 UDP 100401150 162.222.183.171 61026 typ relay raddr 162.222.183.171 rport 61026
+m=audio 9 RTP/SAVPF 0
+a=mid:third
+a=rtpmap:0 PCMU/8000
+a=ice-lite
+a=msid:noappdata
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/12.sdp b/third_party/rust/webrtc-sdp/examples/sdps/12.sdp
new file mode 100644
index 0000000000..647de5dca8
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/12.sdp
@@ -0,0 +1,58 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 27987 0 IN IP4 0.0.0.0
+s=SIP Call
+t=0 0
+a=ice-ufrag:8a39d2ae
+a=ice-pwd:601d53aba51a318351b3ecf5ee00048f
+a=fingerprint:sha-256 30:FF:8E:2B:AC:9D:ED:70:18:10:67:C8:AE:9E:68:F3:86:53:51:B0:AC:31:B7:BE:6D:CF:A4:2E:D3:6E:B4:28
+m=audio 9 RTP/SAVPF 109 9 0 8 101
+c=IN IP4 0.0.0.0
+a=rtpmap:109 opus/48000/2
+a=ptime:20
+a=rtpmap:9 G722/8000
+a=rtpmap:0 PCMU/8000
+a=rtpmap:8 PCMA/8000
+a=rtpmap:101 telephone-event/8000
+a=fmtp:101 0-15
+a=sendrecv
+a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
+a=extmap:2/sendonly some_extension
+a=extmap:3 some_other_extension some_params some more params
+a=setup:actpass
+a=rtcp-mux
+m=video 9 RTP/SAVPF 120 126 97
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
+a=rtpmap:126 H264/90000
+a=rtpmap:97 H264/90000
+a=sendrecv
+a=rtcp-fb:120 ack rpsi
+a=rtcp-fb:120 ack app foo
+a=rtcp-fb:120 ack foo
+a=rtcp-fb:120 nack
+a=rtcp-fb:120 nack sli
+a=rtcp-fb:120 nack pli
+a=rtcp-fb:120 nack rpsi
+a=rtcp-fb:120 nack app foo
+a=rtcp-fb:120 nack foo
+a=rtcp-fb:120 ccm fir
+a=rtcp-fb:120 ccm tmmbr
+a=rtcp-fb:120 ccm tstr
+a=rtcp-fb:120 ccm vbcm
+a=rtcp-fb:120 ccm foo
+a=rtcp-fb:120 trr-int 10
+a=rtcp-fb:120 goog-remb
+a=rtcp-fb:120 foo
+a=rtcp-fb:126 nack
+a=rtcp-fb:126 nack pli
+a=rtcp-fb:126 ccm fir
+a=rtcp-fb:97 nack
+a=rtcp-fb:97 nack pli
+a=rtcp-fb:97 ccm fir
+a=rtcp-fb:* ccm tmmbr
+a=setup:actpass
+a=rtcp-mux
+m=application 9 DTLS/SCTP 5000
+c=IN IP4 0.0.0.0
+a=sctpmap:5000 webrtc-datachannel 16
+a=setup:actpass
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/13.sdp b/third_party/rust/webrtc-sdp/examples/sdps/13.sdp
new file mode 100644
index 0000000000..31c3d8d86b
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/13.sdp
@@ -0,0 +1,12 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 27987 0 IN IP4 0.0.0.0
+s=SIP Call
+t=0 0
+a=ice-ufrag:8a39d2ae
+a=ice-pwd:601d53aba51a318351b3ecf5ee00048f
+a=fingerprint:sha-256 30:FF:8E:2B:AC:9D:ED:70:18:10:67:C8:AE:9E:68:F3:86:53:51:B0:AC:31:B7:BE:6D:CF:A4:2E:D3:6E:B4:28
+m=application 9 UDP/DTLS/SCTP webrtc-datachannel
+c=IN IP4 0.0.0.0
+a=sctp-port:5000
+a=max-message-size:10000
+a=setup:actpass
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/14.sdp b/third_party/rust/webrtc-sdp/examples/sdps/14.sdp
new file mode 100644
index 0000000000..cad2a9a199
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/14.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=candidate:0 1 UDP 2130379007 10.0.0.36 62453 typ host
+m=audio 9 RTP/SAVPF 109 9 0 8 101
+c=IN IP4 0.0.0.0
+a=rtpmap:109 opus/48000/2
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/15.sdp b/third_party/rust/webrtc-sdp/examples/sdps/15.sdp
new file mode 100644
index 0000000000..d356ecaf1f
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/15.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=bundle-only
+m=audio 9 RTP/SAVPF 109 9 0 8 101
+c=IN IP4 0.0.0.0
+a=rtpmap:109 opus/48000/2
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/16.sdp b/third_party/rust/webrtc-sdp/examples/sdps/16.sdp
new file mode 100644
index 0000000000..67326a6e9a
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/16.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=fmtp:109 0-15
+m=audio 9 RTP/SAVPF 109 9 0 8 101
+c=IN IP4 0.0.0.0
+a=rtpmap:109 opus/48000/2
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/17.sdp b/third_party/rust/webrtc-sdp/examples/sdps/17.sdp
new file mode 100644
index 0000000000..0023222191
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/17.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=ice-mismatch
+m=audio 9 RTP/SAVPF 109 9 0 8 101
+c=IN IP4 0.0.0.0
+a=rtpmap:109 opus/48000/2
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/18.sdp b/third_party/rust/webrtc-sdp/examples/sdps/18.sdp
new file mode 100644
index 0000000000..3287af6413
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/18.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=imageattr:120 send * recv *
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/19.sdp b/third_party/rust/webrtc-sdp/examples/sdps/19.sdp
new file mode 100644
index 0000000000..20bb0a8058
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/19.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=label:foobar
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/20.sdp b/third_party/rust/webrtc-sdp/examples/sdps/20.sdp
new file mode 100644
index 0000000000..4d28e12a9f
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/20.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=maxptime:100
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/21.sdp b/third_party/rust/webrtc-sdp/examples/sdps/21.sdp
new file mode 100644
index 0000000000..7a2d6fa9dc
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/21.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=mid:foobar
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/22.sdp b/third_party/rust/webrtc-sdp/examples/sdps/22.sdp
new file mode 100644
index 0000000000..95e5518123
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/22.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=msid:foobar
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/23.sdp b/third_party/rust/webrtc-sdp/examples/sdps/23.sdp
new file mode 100644
index 0000000000..7722360f32
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/23.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=ptime:50
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/24.sdp b/third_party/rust/webrtc-sdp/examples/sdps/24.sdp
new file mode 100644
index 0000000000..dd13f1e143
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/24.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=remote-candidates:0 10.0.0.1 5555
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/25.sdp b/third_party/rust/webrtc-sdp/examples/sdps/25.sdp
new file mode 100644
index 0000000000..7fd8a006fb
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/25.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=rtcp:5555
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/26.sdp b/third_party/rust/webrtc-sdp/examples/sdps/26.sdp
new file mode 100644
index 0000000000..789e062766
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/26.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=rtcp-fb:120 nack
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/27.sdp b/third_party/rust/webrtc-sdp/examples/sdps/27.sdp
new file mode 100644
index 0000000000..f8201916e9
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/27.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=rtcp-mux
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/28.sdp b/third_party/rust/webrtc-sdp/examples/sdps/28.sdp
new file mode 100644
index 0000000000..11d9331b10
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/28.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=rtcp-rsize
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/29.sdp b/third_party/rust/webrtc-sdp/examples/sdps/29.sdp
new file mode 100644
index 0000000000..f34b97fe58
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/29.sdp
@@ -0,0 +1,8 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=rtpmap:120 VP8/90000
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/30.sdp b/third_party/rust/webrtc-sdp/examples/sdps/30.sdp
new file mode 100644
index 0000000000..202ea88c08
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/30.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=sctpmap:5000
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/31.sdp b/third_party/rust/webrtc-sdp/examples/sdps/31.sdp
new file mode 100644
index 0000000000..cd510e1d46
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/31.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=ssrc:5000
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/32.sdp b/third_party/rust/webrtc-sdp/examples/sdps/32.sdp
new file mode 100644
index 0000000000..4569694768
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/32.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+a=ssrc-group:FID 5000
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/33.sdp b/third_party/rust/webrtc-sdp/examples/sdps/33.sdp
new file mode 100644
index 0000000000..179e048da8
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/33.sdp
@@ -0,0 +1,9 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
+a=imageattr:flob
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/34.sdp b/third_party/rust/webrtc-sdp/examples/sdps/34.sdp
new file mode 100644
index 0000000000..39ef01206d
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/34.sdp
@@ -0,0 +1,9 @@
+v=0
+o=- 4294967296 2 IN IP4 127.0.0.1
+s=SIP Call
+c=IN IP4 198.51.100.7
+b=CT:5000
+t=0 0
+m=video 56436 RTP/SAVPF 120
+a=rtpmap:120 VP8/90000
+a=sendrecv
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/35.sdp b/third_party/rust/webrtc-sdp/examples/sdps/35.sdp
new file mode 100644
index 0000000000..39ef01206d
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/35.sdp
@@ -0,0 +1,9 @@
+v=0
+o=- 4294967296 2 IN IP4 127.0.0.1
+s=SIP Call
+c=IN IP4 198.51.100.7
+b=CT:5000
+t=0 0
+m=video 56436 RTP/SAVPF 120
+a=rtpmap:120 VP8/90000
+a=sendrecv
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/36.sdp b/third_party/rust/webrtc-sdp/examples/sdps/36.sdp
new file mode 100644
index 0000000000..39ef01206d
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/36.sdp
@@ -0,0 +1,9 @@
+v=0
+o=- 4294967296 2 IN IP4 127.0.0.1
+s=SIP Call
+c=IN IP4 198.51.100.7
+b=CT:5000
+t=0 0
+m=video 56436 RTP/SAVPF 120
+a=rtpmap:120 VP8/90000
+a=sendrecv
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/37.sdp b/third_party/rust/webrtc-sdp/examples/sdps/37.sdp
new file mode 100644
index 0000000000..f03bbaa8ef
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/37.sdp
@@ -0,0 +1,9 @@
+v=0
+o=- 4294967296 2 IN IP4 127.0.0.1
+s=SIP Call
+c=IN IP4 198.51.100.7
+b=CT:5000
+t=0 0
+m=video 56436 RTP/SAVPF 120
+a=rtpmap:120 VP8/90000
+a=recvonly
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/38.sdp b/third_party/rust/webrtc-sdp/examples/sdps/38.sdp
new file mode 100644
index 0000000000..bbe385d984
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/38.sdp
@@ -0,0 +1,9 @@
+v=0
+o=- 4294967296 2 IN IP4 127.0.0.1
+s=SIP Call
+c=IN IP4 198.51.100.7
+b=CT:5000
+t=0 0
+m=video 56436 RTP/SAVPF 120
+a=rtpmap:120 VP8/90000
+a=sendonly
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/39.sdp b/third_party/rust/webrtc-sdp/examples/sdps/39.sdp
new file mode 100644
index 0000000000..723d2abf7f
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/39.sdp
@@ -0,0 +1,8 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/40.sdp b/third_party/rust/webrtc-sdp/examples/sdps/40.sdp
new file mode 100644
index 0000000000..723d2abf7f
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/40.sdp
@@ -0,0 +1,8 @@
+v=0
+o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0
+s=SIP Call
+c=IN IP4 224.0.0.1/100/12
+t=0 0
+m=video 9 RTP/SAVPF 120
+c=IN IP4 0.0.0.0
+a=rtpmap:120 VP8/90000
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/41.sdp b/third_party/rust/webrtc-sdp/examples/sdps/41.sdp
new file mode 100644
index 0000000000..753ca5ccb4
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/41.sdp
@@ -0,0 +1,91 @@
+v=0
+o=- 1109973417102828257 2 IN IP4 127.0.0.1
+s=-
+t=0 0
+a=group:BUNDLE audio video
+a=msid-semantic: WMS 1PBxet5BYh0oYodwsvNM4k6KiO2eWCX40VIP
+m=audio 32952 UDP/TLS/RTP/SAVPF 111 103 104 0 8 107 106 105 13 126
+c=IN IP4 128.64.32.16
+a=rtcp:32952 IN IP4 128.64.32.16
+a=candidate:77142221 1 udp 2113937151 192.168.137.1 54081 typ host generation 0
+a=candidate:77142221 2 udp 2113937151 192.168.137.1 54081 typ host generation 0
+a=candidate:983072742 1 udp 2113937151 172.22.0.56 54082 typ host generation 0
+a=candidate:983072742 2 udp 2113937151 172.22.0.56 54082 typ host generation 0
+a=candidate:2245074553 1 udp 1845501695 32.64.128.1 62397 typ srflx raddr 192.168.137.1 rport 54081 generation 0
+a=candidate:2245074553 2 udp 1845501695 32.64.128.1 62397 typ srflx raddr 192.168.137.1 rport 54081 generation 0
+a=candidate:2479353907 1 udp 1845501695 32.64.128.1 54082 typ srflx raddr 172.22.0.56 rport 54082 generation 0
+a=candidate:2479353907 2 udp 1845501695 32.64.128.1 54082 typ srflx raddr 172.22.0.56 rport 54082 generation 0
+a=candidate:1243276349 1 tcp 1509957375 192.168.137.1 0 typ host generation 0
+a=candidate:1243276349 2 tcp 1509957375 192.168.137.1 0 typ host generation 0
+a=candidate:1947960086 1 tcp 1509957375 172.22.0.56 0 typ host generation 0
+a=candidate:1947960086 2 tcp 1509957375 172.22.0.56 0 typ host generation 0
+a=candidate:1808221584 1 udp 33562367 128.64.32.16 32952 typ relay raddr 32.64.128.1 rport 62398 generation 0
+a=candidate:1808221584 2 udp 33562367 128.64.32.16 32952 typ relay raddr 32.64.128.1 rport 62398 generation 0
+a=candidate:507872740 1 udp 33562367 128.64.32.16 40975 typ relay raddr 32.64.128.1 rport 54085 generation 0
+a=candidate:507872740 2 udp 33562367 128.64.32.16 40975 typ relay raddr 32.64.128.1 rport 54085 generation 0
+a=ice-ufrag:xQuJwjX3V3eMA81k
+a=ice-pwd:ZUiRmjS2GDhG140p73dAsSVP
+a=ice-options:google-ice
+a=fingerprint:sha-256 59:4A:8B:73:A7:73:53:71:88:D7:4D:58:28:0C:79:72:31:29:9B:05:37:DD:58:43:C2:D4:85:A2:B3:66:38:7A
+a=setup:active
+a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
+a=sendrecv
+a=mid:audio
+a=rtcp-mux
+a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:/U44g3ULdtapeiSg+T3n6dDLBKIjpOhb/NXAL/2b
+a=rtpmap:111 opus/48000/2
+a=rtpmap:103 ISAC/16000
+a=rtpmap:104 ISAC/32000
+a=rtpmap:0 PCMU/8000
+a=rtpmap:8 PCMA/8000
+a=rtpmap:107 CN/48000
+a=rtpmap:106 CN/32000
+a=rtpmap:105 CN/16000
+a=rtpmap:13 CN/8000
+a=rtpmap:126 telephone-event/8000
+a=maxptime:60
+a=ssrc:2271517329 cname:mKDNt7SQf6pwDlIn
+a=ssrc:2271517329 msid:1PBxet5BYh0oYodwsvNM4k6KiO2eWCX40VIP 1PBxet5BYh0oYodwsvNM4k6KiO2eWCX40VIPa0
+a=ssrc:2271517329 mslabel:1PBxet5BYh0oYodwsvNM4k6KiO2eWCX40VIP
+a=ssrc:2271517329 label:1PBxet5BYh0oYodwsvNM4k6KiO2eWCX40VIPa0
+m=video 32952 UDP/TLS/RTP/SAVPF 100 116 117
+c=IN IP4 128.64.32.16
+a=rtcp:32952 IN IP4 128.64.32.16
+a=candidate:77142221 1 udp 2113937151 192.168.137.1 54081 typ host generation 0
+a=candidate:77142221 2 udp 2113937151 192.168.137.1 54081 typ host generation 0
+a=candidate:983072742 1 udp 2113937151 172.22.0.56 54082 typ host generation 0
+a=candidate:983072742 2 udp 2113937151 172.22.0.56 54082 typ host generation 0
+a=candidate:2245074553 1 udp 1845501695 32.64.128.1 62397 typ srflx raddr 192.168.137.1 rport 54081 generation 0
+a=candidate:2245074553 2 udp 1845501695 32.64.128.1 62397 typ srflx raddr 192.168.137.1 rport 54081 generation 0
+a=candidate:2479353907 1 udp 1845501695 32.64.128.1 54082 typ srflx raddr 172.22.0.56 rport 54082 generation 0
+a=candidate:2479353907 2 udp 1845501695 32.64.128.1 54082 typ srflx raddr 172.22.0.56 rport 54082 generation 0
+a=candidate:1243276349 1 tcp 1509957375 192.168.137.1 0 typ host generation 0
+a=candidate:1243276349 2 tcp 1509957375 192.168.137.1 0 typ host generation 0
+a=candidate:1947960086 1 tcp 1509957375 172.22.0.56 0 typ host generation 0
+a=candidate:1947960086 2 tcp 1509957375 172.22.0.56 0 typ host generation 0
+a=candidate:1808221584 1 udp 33562367 128.64.32.16 32952 typ relay raddr 32.64.128.1 rport 62398 generation 0
+a=candidate:1808221584 2 udp 33562367 128.64.32.16 32952 typ relay raddr 32.64.128.1 rport 62398 generation 0
+a=candidate:507872740 1 udp 33562367 128.64.32.16 40975 typ relay raddr 32.64.128.1 rport 54085 generation 0
+a=candidate:507872740 2 udp 33562367 128.64.32.16 40975 typ relay raddr 32.64.128.1 rport 54085 generation 0
+a=ice-ufrag:xQuJwjX3V3eMA81k
+a=ice-pwd:ZUiRmjS2GDhG140p73dAsSVP
+a=ice-options:google-ice
+a=fingerprint:sha-256 59:4A:8B:73:A7:73:53:71:88:D7:4D:58:28:0C:79:72:31:29:9B:05:37:DD:58:43:C2:D4:85:A2:B3:66:38:7A
+a=setup:active
+a=extmap:2 urn:ietf:params:rtp-hdrext:toffset
+a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
+a=sendrecv
+a=mid:video
+a=rtcp-mux
+a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:/U44g3ULdtapeiSg+T3n6dDLBKIjpOhb/NXAL/2b
+a=rtpmap:100 VP8/90000
+a=rtcp-fb:100 ccm fir
+a=rtcp-fb:100 nack
+a=rtcp-fb:100 goog-remb
+a=rtpmap:116 red/90000
+a=rtpmap:117 ulpfec/90000
+a=ssrc:54724160 cname:mKDNt7SQf6pwDlIn
+a=ssrc:54724160 msid:1PBxet5BYh0oYodwsvNM4k6KiO2eWCX40VIP 1PBxet5BYh0oYodwsvNM4k6KiO2eWCX40VIPv0
+a=ssrc:54724160 mslabel:1PBxet5BYh0oYodwsvNM4k6KiO2eWCX40VIP
+a=ssrc:54724160 label:1PBxet5BYh0oYodwsvNM4k6KiO2eWCX40VIPv0
+
diff --git a/third_party/rust/webrtc-sdp/examples/sdps/extract.sh b/third_party/rust/webrtc-sdp/examples/sdps/extract.sh
new file mode 100755
index 0000000000..60f1b1c763
--- /dev/null
+++ b/third_party/rust/webrtc-sdp/examples/sdps/extract.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+grep '\"[ a-z]=[^=]*$' sdp_unittests.cpp | grep -v 'ParseSdp(kVideoSdp' | grep -v 'kVideoWithRedAndUlpfec' | grep -v 'ASSERT_NE' | grep -v 'BASE64_DTLS_HELLO' | grep -v '^\/\/' | sed 's/ParseSdp(//g' | sed 's/^[[:space:]]*//' | sed 's/+ //' | sed 's/ \/\/.*$//' | sed 's/\;$//' | sed 's/)$//' | sed 's/, false//' | sed 's/" CRLF//' | sed 's/^\"//' | sed 's/\"$//' | sed 's/\\r\\n//' | gawk -v RS='(^|\n)v=' '/./ { print "v="$0 > NR".sdp" }'