1use ffi::*;
2use libc::c_int;
3
4#[derive(Eq, PartialEq, Clone, Copy, Debug)]
5pub enum Comparison {
6 SAD,
7 SSE,
8 SATD,
9 DCT,
10 PSNR,
11 BIT,
12 RD,
13 ZERO,
14 VSAD,
15 VSSE,
16 NSSE,
17 W53,
18 W97,
19 DCTMAX,
20 DCT264,
21 CHROMA,
22}
23
24impl From<c_int> for Comparison {
25 fn from(value: c_int) -> Comparison {
26 match value {
27 FF_CMP_SAD: i32 => Comparison::SAD,
28 FF_CMP_SSE: i32 => Comparison::SSE,
29 FF_CMP_SATD: i32 => Comparison::SATD,
30 FF_CMP_DCT: i32 => Comparison::DCT,
31 FF_CMP_PSNR: i32 => Comparison::PSNR,
32 FF_CMP_BIT: i32 => Comparison::BIT,
33 FF_CMP_RD: i32 => Comparison::RD,
34 FF_CMP_ZERO: i32 => Comparison::ZERO,
35 FF_CMP_VSAD: i32 => Comparison::VSAD,
36 FF_CMP_VSSE: i32 => Comparison::VSSE,
37 FF_CMP_NSSE: i32 => Comparison::NSSE,
38 FF_CMP_W53: i32 => Comparison::W53,
39 FF_CMP_W97: i32 => Comparison::W97,
40 FF_CMP_DCTMAX: i32 => Comparison::DCTMAX,
41 FF_CMP_DCT264: i32 => Comparison::DCT264,
42 FF_CMP_CHROMA: i32 => Comparison::CHROMA,
43
44 _ => Comparison::ZERO,
45 }
46 }
47}
48
49impl From<Comparison> for c_int {
50 fn from(value: Comparison) -> c_int {
51 match value {
52 Comparison::SAD => FF_CMP_SAD,
53 Comparison::SSE => FF_CMP_SSE,
54 Comparison::SATD => FF_CMP_SATD,
55 Comparison::DCT => FF_CMP_DCT,
56 Comparison::PSNR => FF_CMP_PSNR,
57 Comparison::BIT => FF_CMP_BIT,
58 Comparison::RD => FF_CMP_RD,
59 Comparison::ZERO => FF_CMP_ZERO,
60 Comparison::VSAD => FF_CMP_VSAD,
61 Comparison::VSSE => FF_CMP_VSSE,
62 Comparison::NSSE => FF_CMP_NSSE,
63 Comparison::W53 => FF_CMP_W53,
64 Comparison::W97 => FF_CMP_W97,
65 Comparison::DCTMAX => FF_CMP_DCTMAX,
66 Comparison::DCT264 => FF_CMP_DCT264,
67 Comparison::CHROMA => FF_CMP_CHROMA,
68 }
69 }
70}
71