codec/encoder/comparison: add enum

This commit is contained in:
meh
2015-05-16 22:40:44 +02:00
parent 457bffbeb2
commit 2de64a1a37
2 changed files with 73 additions and 0 deletions

View File

@ -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<c_int> 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<c_int> 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,
}
}
}

View File

@ -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;