screencapturekit/stream/configuration/
pixel_format.rs1use core::fmt;
6use std::fmt::{Display, Formatter};
7
8use crate::utils::four_char_code::FourCharCode;
9
10#[allow(non_camel_case_types)]
23#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
24pub enum PixelFormat {
25 #[default]
27 BGRA,
28 l10r,
30 YCbCr_420v,
32 YCbCr_420f,
34 xf44,
36 RGhA,
38}
39impl Display for PixelFormat {
40 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
41 let c: FourCharCode = (*self).into();
42 write!(f, "{}", c.display())
43 }
44}
45
46impl From<PixelFormat> for FourCharCode {
47 fn from(val: PixelFormat) -> Self {
48 match val {
50 PixelFormat::BGRA => Self::from_bytes(*b"BGRA"),
51 PixelFormat::l10r => Self::from_bytes(*b"l10r"),
52 PixelFormat::YCbCr_420v => Self::from_bytes(*b"420v"),
53 PixelFormat::YCbCr_420f => Self::from_bytes(*b"420f"),
54 PixelFormat::xf44 => Self::from_bytes(*b"xf44"),
55 PixelFormat::RGhA => Self::from_bytes(*b"RGhA"),
56 }
57 }
58}
59impl From<u32> for PixelFormat {
60 fn from(value: u32) -> Self {
61 let c = FourCharCode::from_u32(value);
63 c.into()
64 }
65}
66impl From<FourCharCode> for PixelFormat {
67 fn from(val: FourCharCode) -> Self {
68 match val.display().as_str() {
69 "l10r" => Self::l10r,
70 "420v" => Self::YCbCr_420v,
71 "420f" => Self::YCbCr_420f,
72 "xf44" => Self::xf44,
73 "RGhA" => Self::RGhA,
74 _ => Self::BGRA, }
76 }
77}