ffmpeg_the_third/codec/encoder/
comparison.rs

1use 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}