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;