use std::ffi::CStr; use std::str::from_utf8_unchecked; use ffi::AVColorRange::*; use ffi::*; #[derive(Eq, PartialEq, Clone, Copy, Debug)] pub enum Range { Unspecified, MPEG, JPEG, } impl Range { pub fn name(&self) -> Option<&'static str> { unsafe { let ptr = av_color_range_name((*self).into()); if ptr.is_null() { None } else { Some(from_utf8_unchecked(CStr::from_ptr(ptr).to_bytes())) } } } } impl From for Range { fn from(value: AVColorRange) -> Self { match value { AVCOL_RANGE_UNSPECIFIED => Range::Unspecified, AVCOL_RANGE_MPEG => Range::MPEG, AVCOL_RANGE_JPEG => Range::JPEG, AVCOL_RANGE_NB => Range::Unspecified, } } } impl Into for Range { fn into(self) -> AVColorRange { match self { Range::Unspecified => AVCOL_RANGE_UNSPECIFIED, Range::MPEG => AVCOL_RANGE_MPEG, Range::JPEG => AVCOL_RANGE_JPEG, } } }