diff --git a/src/codec/encoder/decision.rs b/src/codec/encoder/decision.rs new file mode 100644 index 0000000..d4384cb --- /dev/null +++ b/src/codec/encoder/decision.rs @@ -0,0 +1,31 @@ +use libc::c_int; +use ffi::*; + +#[derive(Eq, PartialEq, Clone, Copy, Debug)] +pub enum Decision { + Simple, + Bits, + RateDistortion, +} + +impl From for Decision { + fn from(value: c_int) -> Decision { + match value { + FF_MB_DECISION_SIMPLE => Decision::Simple, + FF_MB_DECISION_BITS => Decision::Bits, + FF_MB_DECISION_RD => Decision::RateDistortion, + + _ => Decision::Simple, + } + } +} + +impl Into for Decision { + fn into(self) -> c_int { + match self { + Decision::Simple => FF_MB_DECISION_SIMPLE, + Decision::Bits => FF_MB_DECISION_BITS, + Decision::RateDistortion => FF_MB_DECISION_RD, + } + } +} diff --git a/src/codec/encoder/mod.rs b/src/codec/encoder/mod.rs index fc0e080..a08007b 100644 --- a/src/codec/encoder/mod.rs +++ b/src/codec/encoder/mod.rs @@ -16,6 +16,9 @@ pub use self::prediction::Prediction; pub mod comparison; pub use self::comparison::Comparison; +pub mod decision; +pub use self::decision::Decision; + use std::ffi::CString; use std::ptr; use std::ops::Deref;