1 | /// `Bt709` works for sRGB images. |
2 | #[derive (Debug, Copy, Clone, PartialEq, Eq)] |
3 | #[non_exhaustive ] |
4 | pub enum ColorPrimaries { |
5 | /// Rec.709 and sRGB |
6 | Bt709 = 1, |
7 | Unspecified = 2, |
8 | /// ITU-R BT601-6 525 |
9 | Bt601 = 6, |
10 | /// ITU-R BT2020 |
11 | Bt2020 = 9, |
12 | /// SMPTE ST 431-2. NB: "P3" images use DisplayP3 instead. |
13 | DciP3 = 11, |
14 | /// SMPTE ST 432-1 |
15 | DisplayP3 = 12, |
16 | } |
17 | |
18 | /// This controls how color data is interpreted (gamma). |
19 | /// |
20 | /// If you don't know what to do with these, pick `Srgb`. |
21 | /// |
22 | /// Reasonable options include `Bt709` (HDTV), `Bt2020_10` (Wide Gamut), `Smpte2084`, `Hlg` (HDR). |
23 | #[derive (Debug, Copy, Clone, PartialEq, Eq)] |
24 | #[non_exhaustive ] |
25 | pub enum TransferCharacteristics { |
26 | /// Rec.709. May be appropriate for conversions from video. |
27 | Bt709 = 1, |
28 | /// Don't use this for color channels. |
29 | Unspecified = 2, |
30 | /// Don't use this. Analog NTSC TV. BT.470 System M (historical) |
31 | #[deprecated (note = "This is obsolete. Please don't proliferate legacy baggage." )] |
32 | #[doc (hidden)] |
33 | Bt470M = 4, |
34 | /// Don't use this. Analog PAL TV. BT.470 System B, G (historical) |
35 | #[deprecated (note = "This is obsolete. Please don't proliferate legacy baggage." )] |
36 | #[doc (hidden)] |
37 | Bt470BG = 5, |
38 | /// ITU-R BT601-6 525. Not recommended, unless you're converting from unlabelled low-res video clips. |
39 | /// See `Bt709` and `Srgb`. |
40 | Bt601 = 6, |
41 | /// Don't use this. SMPTE 240 M. It's just a worse Rec.709. |
42 | Smpte240 = 7, |
43 | /// "Linear transfer characteristics" |
44 | Linear = 8, |
45 | /// "Logarithmic transfer characteristic (100:1 range)" |
46 | Log = 9, |
47 | /// "Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)" |
48 | LogSqrt = 10, |
49 | /// IEC 61966-2-4 |
50 | Iec61966 = 11, |
51 | /// Don't use this. Obsoleted BT.1361 extended color gamut system (historical) |
52 | #[deprecated (note = "This is obsolete. Please don't proliferate legacy baggage." )] |
53 | #[doc (hidden)] |
54 | Bt1361 = 12, |
55 | /// sRGB. This is the safe choice for encoding "standard" RGB images, especially 8-bit inputs. |
56 | Srgb = 13, |
57 | /// ITU-R BT2020 for 10-bit system. Reasonable for encoding wide gamut. |
58 | Bt2020_10 = 14, |
59 | /// ITU-R BT2020 for 12-bit system |
60 | Bt2020_12 = 15, |
61 | /// SMPTE ST 2084, ITU BT.2100 PQ |
62 | Smpte2084 = 16, |
63 | /// SMPTE ST 428. Not recommended. Overkill for images. Use `Bt2020_10` instead. |
64 | Smpte428 = 17, |
65 | /// BT.2100 HLG (Hybrid Log Gamma), ARIB STD-B67 |
66 | Hlg = 18, |
67 | } |
68 | |
69 | /// This is the format of color channels. |
70 | #[derive (Debug, Copy, Clone, PartialEq, Eq)] |
71 | #[non_exhaustive ] |
72 | pub enum MatrixCoefficients { |
73 | /// GBR (sRGB). This isn't actually good for most RGB images. Use `Bt709` for lossy and `Ycgco` for lossless. |
74 | Rgb = 0, |
75 | /// ITU-R BT1361 |
76 | Bt709 = 1, |
77 | Unspecified = 2, |
78 | /// ITU-R BT601-6 525. This matches luma in JPEG's YCbCr when used with sRGB transfer characteristics, but is a bit off for chroma. |
79 | Bt601 = 6, |
80 | Ycgco = 8, |
81 | /// ITU-R BT2020 non-constant luminance system |
82 | Bt2020Ncl = 9, |
83 | /// ITU-R BT2020 constant luminance system |
84 | Bt2020Cl = 10, |
85 | } |
86 | |