aboutsummaryrefslogtreecommitdiff
path: root/rtp/src/lib.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-07-07 01:02:10 +0200
committermetamuffin <metamuffin@disroot.org>2024-07-07 01:02:10 +0200
commit461cb3b26169562868f46311612b3a61759823ff (patch)
tree785310c352996260e763977efe4b5ff7f38eaf39 /rtp/src/lib.rs
parent5f1a995ac4d0965135a297d3c2cb8c2712765e2c (diff)
downloadsip-rs-461cb3b26169562868f46311612b3a61759823ff.tar
sip-rs-461cb3b26169562868f46311612b3a61759823ff.tar.bz2
sip-rs-461cb3b26169562868f46311612b3a61759823ff.tar.zst
sdp ser
Diffstat (limited to 'rtp/src/lib.rs')
-rw-r--r--rtp/src/lib.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/rtp/src/lib.rs b/rtp/src/lib.rs
index b28b04f..68ca10d 100644
--- a/rtp/src/lib.rs
+++ b/rtp/src/lib.rs
@@ -1,3 +1,27 @@
+pub struct RtpPacket<'a> {
+ marked: bool,
+ payload_type: u8,
+ extension: Option<(u16, &'a [u8])>,
+ payload: Option<&'a [u8]>,
+ sequence: u16,
+ timestamp: u32,
+ ssrc: u32,
+ csrc_count: u8,
+ csrcs: [u32; 15],
+}
+
+impl<'a> RtpPacket<'a> {
+ pub fn parse(packet: &'a [u8]) -> RtpPacket<'a> {
+ todo!()
+ }
+ pub fn write(&self, out: &mut Vec<u8>) {
+ out.push(self.csrc_count | (2 << 6) | 0); // TODO
+ out.push(self.payload_type | (self.marked as u8 * 0x80));
+ out.extend(self.sequence.to_be_bytes());
+ out.extend(self.timestamp.to_be_bytes());
+ out.extend(self.ssrc.to_be_bytes());
+ }
+}