Skip to main content

ffmpeg_the_third/util/color/
range.rs

1use crate::ffi::*;
2use crate::utils;
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 Range {
9    Unspecified,
10    MPEG,
11    JPEG,
12}
13
14impl Range {
15    pub fn name(&self) -> Option<&'static str> {
16        if *self == Range::Unspecified {
17            return None;
18        }
19        unsafe {
20            let ptr = av_color_range_name((*self).into());
21            utils::optional_str_from_c_ptr(ptr)
22        }
23    }
24}
25
26impl From<AVColorRange> for Range {
27    fn from(value: AVColorRange) -> Self {
28        use AVColorRange as AV;
29
30        match value {
31            AV::UNSPECIFIED => Range::Unspecified,
32            AV::MPEG => Range::MPEG,
33            AV::JPEG => Range::JPEG,
34
35            AV::NB => unreachable!(),
36            _ => unimplemented!(),
37        }
38    }
39}
40
41impl From<Range> for AVColorRange {
42    fn from(value: Range) -> AVColorRange {
43        use AVColorRange as AV;
44
45        match value {
46            Range::Unspecified => AV::UNSPECIFIED,
47            Range::MPEG => AV::MPEG,
48            Range::JPEG => AV::JPEG,
49        }
50    }
51}