media_core/
media.rs

1use crate::{audio::AudioFrameDescriptor, data::DataFrameDescriptor, video::VideoFrameDescriptor};
2
3#[derive(Clone, Copy, Debug, Eq, PartialEq)]
4pub enum MediaType {
5    Audio = 0,
6    Video,
7    Data,
8}
9
10#[derive(Clone, Debug)]
11pub enum FrameDescriptor {
12    Audio(AudioFrameDescriptor),
13    Video(VideoFrameDescriptor),
14    Data(DataFrameDescriptor),
15}
16
17impl FrameDescriptor {
18    pub fn media_type(&self) -> MediaType {
19        match self {
20            FrameDescriptor::Audio(_) => MediaType::Audio,
21            FrameDescriptor::Video(_) => MediaType::Video,
22            FrameDescriptor::Data(_) => MediaType::Data,
23        }
24    }
25
26    pub fn is_audio(&self) -> bool {
27        matches!(self, FrameDescriptor::Audio(_))
28    }
29
30    pub fn is_video(&self) -> bool {
31        matches!(self, FrameDescriptor::Video(_))
32    }
33
34    pub fn is_data(&self) -> bool {
35        matches!(self, FrameDescriptor::Data(_))
36    }
37}
38
39#[deprecated = "Use 'FrameDescriptor' directly"]
40pub type MediaFrameDescriptor = FrameDescriptor;