aboutsummaryrefslogtreecommitdiff
path: root/rtp/src/lib.rs
blob: 68ca10d57faf1ed6dcfa5127d04f585210f7feec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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());
    }
}