From 2de64a1a3788454ef2fd041249521faa3901f626 Mon Sep 17 00:00:00 2001 From: meh Date: Sat, 16 May 2015 22:40:44 +0200 Subject: [PATCH] codec/encoder/comparison: add enum --- src/codec/encoder/comparison.rs | 70 +++++++++++++++++++++++++++++++++ src/codec/encoder/mod.rs | 3 ++ 2 files changed, 73 insertions(+) create mode 100644 src/codec/encoder/comparison.rs diff --git a/src/codec/encoder/comparison.rs b/src/codec/encoder/comparison.rs new file mode 100644 index 0000000..9ce46b2 --- /dev/null +++ b/src/codec/encoder/comparison.rs @@ -0,0 +1,70 @@ +use libc::c_int; +use ffi::*; + +#[derive(Eq, PartialEq, Clone, Copy, Debug)] +pub enum Comparison { + SAD, + SSE, + SATD, + DCT, + PSNR, + BIT, + RD, + ZERO, + VSAD, + VSSE, + NSSE, + W53, + W97, + DCTMAX, + DCT264, + CHROMA, +} + +impl From for Comparison { + fn from(value: c_int) -> Comparison { + match value { + FF_CMP_SAD => Comparison::SAD, + FF_CMP_SSE => Comparison::SSE, + FF_CMP_SATD => Comparison::SATD, + FF_CMP_DCT => Comparison::DCT, + FF_CMP_PSNR => Comparison::PSNR, + FF_CMP_BIT => Comparison::BIT, + FF_CMP_RD => Comparison::RD, + FF_CMP_ZERO => Comparison::ZERO, + FF_CMP_VSAD => Comparison::VSAD, + FF_CMP_VSSE => Comparison::VSSE, + FF_CMP_NSSE => Comparison::NSSE, + FF_CMP_W53 => Comparison::W53, + FF_CMP_W97 => Comparison::W97, + FF_CMP_DCTMAX => Comparison::DCTMAX, + FF_CMP_DCT264 => Comparison::DCT264, + FF_CMP_CHROMA => Comparison::CHROMA, + + _ => Comparison::ZERO, + } + } +} + +impl Into for Comparison { + fn into(self) -> c_int { + match self { + Comparison::SAD => FF_CMP_SAD, + Comparison::SSE => FF_CMP_SSE, + Comparison::SATD => FF_CMP_SATD, + Comparison::DCT => FF_CMP_DCT, + Comparison::PSNR => FF_CMP_PSNR, + Comparison::BIT => FF_CMP_BIT, + Comparison::RD => FF_CMP_RD, + Comparison::ZERO => FF_CMP_ZERO, + Comparison::VSAD => FF_CMP_VSAD, + Comparison::VSSE => FF_CMP_VSSE, + Comparison::NSSE => FF_CMP_NSSE, + Comparison::W53 => FF_CMP_W53, + Comparison::W97 => FF_CMP_W97, + Comparison::DCTMAX => FF_CMP_DCTMAX, + Comparison::DCT264 => FF_CMP_DCT264, + Comparison::CHROMA => FF_CMP_CHROMA, + } + } +} diff --git a/src/codec/encoder/mod.rs b/src/codec/encoder/mod.rs index 16b5bcf..fc0e080 100644 --- a/src/codec/encoder/mod.rs +++ b/src/codec/encoder/mod.rs @@ -13,6 +13,9 @@ pub use self::motion_estimation::MotionEstimation; pub mod prediction; pub use self::prediction::Prediction; +pub mod comparison; +pub use self::comparison::Comparison; + use std::ffi::CString; use std::ptr; use std::ops::Deref;