Skip to main content

ezk_rtp/
media_type.rs

1use crate::RtpPacket;
2use ezk::{ConfigRange, MediaType, ValueRange};
3
4/// RTP Payload marker type
5#[derive(Debug)]
6pub enum Rtp {}
7
8impl MediaType for Rtp {
9    type ConfigRange = RtpConfigRange;
10    type Config = RtpConfig;
11    type FrameData = RtpPacket;
12}
13
14#[derive(Debug, Clone)]
15pub struct RtpConfigRange {
16    pub pt: ValueRange<u8>,
17}
18
19#[derive(Debug, Clone, Copy)]
20pub struct RtpConfig {
21    pub pt: u8,
22}
23
24impl ConfigRange for RtpConfigRange {
25    type Config = RtpConfig;
26
27    fn any() -> Self {
28        RtpConfigRange {
29            pt: ValueRange::range(0, 127),
30        }
31    }
32
33    fn intersect(&self, other: &Self) -> Option<Self> {
34        Some(Self {
35            pt: self.pt.intersect(&other.pt)?,
36        })
37    }
38
39    fn contains(&self, config: &Self::Config) -> bool {
40        let Self { pt } = self;
41        pt.contains(&config.pt)
42    }
43}