diff --git a/src/codec/encoder/mod.rs b/src/codec/encoder/mod.rs index e298383..f4de7ea 100644 --- a/src/codec/encoder/mod.rs +++ b/src/codec/encoder/mod.rs @@ -7,6 +7,9 @@ pub use self::audio::Audio; pub mod subtitle; pub use self::subtitle::Subtitle; +pub mod motion_estimation; +pub use self::motion_estimation::MotionEstimation; + use std::ffi::CString; use std::ptr; use std::ops::Deref; diff --git a/src/codec/encoder/motion_estimation.rs b/src/codec/encoder/motion_estimation.rs new file mode 100644 index 0000000..7fc47fe --- /dev/null +++ b/src/codec/encoder/motion_estimation.rs @@ -0,0 +1,51 @@ +use libc::c_int; + +#[derive(Eq, PartialEq, Clone, Copy, Debug)] +pub enum MotionEstimation { + Zero, + Full, + Log, + Phods, + Epzs, + X1, + Hex, + Umh, + Iter, + Tesa, +} + +impl From for MotionEstimation { + fn from(value: c_int) -> MotionEstimation { + match value { + 1 => MotionEstimation::Zero, + 2 => MotionEstimation::Full, + 3 => MotionEstimation::Log, + 4 => MotionEstimation::Phods, + 5 => MotionEstimation::Epzs, + 6 => MotionEstimation::X1, + 7 => MotionEstimation::Hex, + 8 => MotionEstimation::Umh, + 9 => MotionEstimation::Iter, + 10 => MotionEstimation::Tesa, + + _ => MotionEstimation::Zero + } + } +} + +impl Into for MotionEstimation { + fn into(self) -> c_int { + match self { + MotionEstimation::Zero => 1, + MotionEstimation::Full => 2, + MotionEstimation::Log => 3, + MotionEstimation::Phods => 4, + MotionEstimation::Epzs => 5, + MotionEstimation::X1 => 6, + MotionEstimation::Hex => 7, + MotionEstimation::Umh => 8, + MotionEstimation::Iter => 9, + MotionEstimation::Tesa => 10 + } + } +}