Skip to main content

ffmpeg_next/util/
media.rs

1use crate::ffi::AVMediaType::*;
2use crate::ffi::*;
3
4#[derive(Eq, PartialEq, Clone, Copy, Debug)]
5pub enum Type {
6    Unknown,
7    Video,
8    Audio,
9    Data,
10    Subtitle,
11    Attachment,
12}
13
14impl From<AVMediaType> for Type {
15    #[inline(always)]
16    fn from(value: AVMediaType) -> Self {
17        match value {
18            AVMEDIA_TYPE_UNKNOWN => Type::Unknown,
19            AVMEDIA_TYPE_VIDEO => Type::Video,
20            AVMEDIA_TYPE_AUDIO => Type::Audio,
21            AVMEDIA_TYPE_DATA => Type::Data,
22            AVMEDIA_TYPE_SUBTITLE => Type::Subtitle,
23            AVMEDIA_TYPE_ATTACHMENT => Type::Attachment,
24            AVMEDIA_TYPE_NB => Type::Unknown,
25
26            #[cfg(feature = "non-exhaustive-enums")]
27            _ => unimplemented!(),
28        }
29    }
30}
31
32impl From<Type> for AVMediaType {
33    #[inline(always)]
34    fn from(value: Type) -> AVMediaType {
35        match value {
36            Type::Unknown => AVMEDIA_TYPE_UNKNOWN,
37            Type::Video => AVMEDIA_TYPE_VIDEO,
38            Type::Audio => AVMEDIA_TYPE_AUDIO,
39            Type::Data => AVMEDIA_TYPE_DATA,
40            Type::Subtitle => AVMEDIA_TYPE_SUBTITLE,
41            Type::Attachment => AVMEDIA_TYPE_ATTACHMENT,
42        }
43    }
44}