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