diff --git a/src/lib.rs b/src/lib.rs index 20b0064..a8e7cdc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,3 +11,4 @@ pub use util::dictionary::Dictionary; pub use util::rational::Rational; pub use util::color_space::ColorSpace; pub use util::color_range::ColorRange; +pub use util::media; diff --git a/src/util/media.rs b/src/util/media.rs new file mode 100644 index 0000000..5723d06 --- /dev/null +++ b/src/util/media.rs @@ -0,0 +1,38 @@ +use ffi::*; + +#[derive(Eq, PartialEq, Clone, Copy, Debug)] +pub enum Type { + Unknown, + Video, + Audio, + Data, + Subtitle, + Attachment, +} + +impl From for Type { + fn from(value: AVMediaType) -> Self { + match value { + AVMEDIA_TYPE_UNKNOWN => Type::Unknown, + AVMEDIA_TYPE_VIDEO => Type::Video, + AVMEDIA_TYPE_AUDIO => Type::Audio, + AVMEDIA_TYPE_DATA => Type::Data, + AVMEDIA_TYPE_SUBTITLE => Type::Subtitle, + AVMEDIA_TYPE_ATTACHMENT => Type::Attachment, + AVMEDIA_TYPE_NB => Type::Unknown, + } + } +} + +impl Into for Type { + fn into(self) -> AVMediaType { + match self { + Type::Unknown => AVMEDIA_TYPE_UNKNOWN, + Type::Video => AVMEDIA_TYPE_VIDEO, + Type::Audio => AVMEDIA_TYPE_AUDIO, + Type::Data => AVMEDIA_TYPE_DATA, + Type::Subtitle => AVMEDIA_TYPE_SUBTITLE, + Type::Attachment => AVMEDIA_TYPE_ATTACHMENT, + } + } +} diff --git a/src/util/mod.rs b/src/util/mod.rs index 074511e..a68c8bc 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -1,6 +1,7 @@ pub mod dictionary; pub mod error; pub mod rational; +pub mod media; pub mod color_space; pub mod color_range;