1use crate::ChromaSampling;
4
5#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
7pub enum AnnexAPixelFormat {
8 Known(AnnexAPixelFormatDescriptor),
10 Unknown([u8; 16]),
12}
13
14#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
16pub enum AnnexAPixelFamily {
17 Luma,
18 Rgb,
19 Rgbe,
20 Cmyk { direct: bool },
21 Yuv(ChromaSampling),
22 NComponent,
23}
24
25#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
27pub enum AnnexANumericKind {
28 Unsigned,
29 FixedPoint,
30 Float,
31}
32
33#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
35pub enum AnnexABitDepth {
36 Bit1,
37 U8,
38 U10,
39 U16,
40 I16,
41 F16,
42 I32,
43 F32,
44 Rgb555,
45 Rgb565,
46 Rgb101010,
47}
48
49#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
51pub enum AnnexAChannelOrder {
52 Luma,
53 Rgb,
54 Rgbx,
56 Bgr,
57 Bgrx,
59 Rgba,
60 Bgra,
61 Cmyk,
62 Yuv,
63 Rgbe,
64 Components,
65 PackedBgr,
66}
67
68#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
70pub struct AnnexAPixelFormatDescriptor {
71 pub family: AnnexAPixelFamily,
72 pub channels: u8,
74 pub alpha: bool,
75 pub premultiplied_alpha: bool,
76 pub bit_depth: AnnexABitDepth,
77 pub numeric: AnnexANumericKind,
78 pub order: AnnexAChannelOrder,
79}