diff --git a/src/lib.rs b/src/lib.rs index 1990978..17e37ce 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,6 +12,7 @@ pub use util::rational::Rational; pub use util::color_space::ColorSpace; pub use util::color_range::ColorRange; pub use util::media; +pub use util::picture; pub use util::frame::{self, Frame}; pub mod format; diff --git a/src/util/mod.rs b/src/util/mod.rs index 7956afd..e425861 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -2,6 +2,7 @@ pub mod dictionary; pub mod error; pub mod rational; pub mod media; +pub mod picture; pub mod color_space; pub mod color_range; pub mod sample_format; diff --git a/src/util/picture.rs b/src/util/picture.rs new file mode 100644 index 0000000..0e5b96e --- /dev/null +++ b/src/util/picture.rs @@ -0,0 +1,43 @@ +use ffi::*; + +#[derive(Eq, PartialEq, Clone, Copy, Debug)] +pub enum Type { + None, + I, + P, + B, + S, + SI, + SP, + BI +} + +impl From for Type { + fn from(value: AVPictureType) -> Type { + match value { + AV_PICTURE_TYPE_NONE => Type::None, + AV_PICTURE_TYPE_I => Type::I, + AV_PICTURE_TYPE_P => Type::P, + AV_PICTURE_TYPE_B => Type::B, + AV_PICTURE_TYPE_S => Type::S, + AV_PICTURE_TYPE_SI => Type::SI, + AV_PICTURE_TYPE_SP => Type::SP, + AV_PICTURE_TYPE_BI => Type::BI + } + } +} + +impl Into for Type { + fn into(self) -> AVPictureType { + match self { + Type::None => AV_PICTURE_TYPE_NONE, + Type::I => AV_PICTURE_TYPE_I, + Type::P => AV_PICTURE_TYPE_P, + Type::B => AV_PICTURE_TYPE_B, + Type::S => AV_PICTURE_TYPE_S, + Type::SI => AV_PICTURE_TYPE_SI, + Type::SP => AV_PICTURE_TYPE_SP, + Type::BI => AV_PICTURE_TYPE_BI + } + } +}