avif_serialize/
constants.rs

1/// `Bt709` works for sRGB images.
2#[derive(Debug, Copy, Clone, PartialEq, Eq)]
3#[non_exhaustive]
4pub 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]
25pub 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]
72pub 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}