ffmpeg_the_third/util/color/
range.rs1use 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}