Skip to main content

ffmpeg_next/util/chroma/
location.rs

1use crate::ffi::AVChromaLocation::*;
2use crate::ffi::*;
3
4#[derive(Eq, PartialEq, Clone, Copy, Debug)]
5pub enum Location {
6    Unspecified,
7    Left,
8    Center,
9    TopLeft,
10    Top,
11    BottomLeft,
12    Bottom,
13}
14
15impl From<AVChromaLocation> for Location {
16    fn from(value: AVChromaLocation) -> Self {
17        match value {
18            AVCHROMA_LOC_UNSPECIFIED => Location::Unspecified,
19            AVCHROMA_LOC_LEFT => Location::Left,
20            AVCHROMA_LOC_CENTER => Location::Center,
21            AVCHROMA_LOC_TOPLEFT => Location::TopLeft,
22            AVCHROMA_LOC_TOP => Location::Top,
23            AVCHROMA_LOC_BOTTOMLEFT => Location::BottomLeft,
24            AVCHROMA_LOC_BOTTOM => Location::Bottom,
25            AVCHROMA_LOC_NB => Location::Unspecified,
26
27            #[cfg(feature = "non-exhaustive-enums")]
28            _ => unimplemented!(),
29        }
30    }
31}
32
33impl From<Location> for AVChromaLocation {
34    fn from(value: Location) -> AVChromaLocation {
35        match value {
36            Location::Unspecified => AVCHROMA_LOC_UNSPECIFIED,
37            Location::Left => AVCHROMA_LOC_LEFT,
38            Location::Center => AVCHROMA_LOC_CENTER,
39            Location::TopLeft => AVCHROMA_LOC_TOPLEFT,
40            Location::Top => AVCHROMA_LOC_TOP,
41            Location::BottomLeft => AVCHROMA_LOC_BOTTOMLEFT,
42            Location::Bottom => AVCHROMA_LOC_BOTTOM,
43        }
44    }
45}