13#include <promeki/config.h>
14#if PROMEKI_ENABLE_CORE
18PROMEKI_NAMESPACE_BEGIN
35class St2110Sampling :
public TypedEnum<St2110Sampling> {
37 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"St2110Sampling",
"ST 2110-20 Sampling", 0,
38 {
"Invalid", 0,
"Invalid"},
39 {
"YCbCr444", 1,
"YCbCr 4:4:4"}, {
"YCbCr422", 2,
"YCbCr 4:2:2"}, {
"YCbCr420", 3,
"YCbCr 4:2:0"},
40 {
"CLYCbCr444", 4,
"Constant-Luminance YCbCr 4:4:4"}, {
"CLYCbCr422", 5,
"Constant-Luminance YCbCr 4:2:2"}, {
"CLYCbCr420", 6,
"Constant-Luminance YCbCr 4:2:0"},
41 {
"ICtCp444", 7,
"ICtCp 4:4:4"}, {
"ICtCp422", 8,
"ICtCp 4:2:2"}, {
"ICtCp420", 9,
"ICtCp 4:2:0"},
42 {
"Rgb", 10,
"RGB"}, {
"Xyz", 11,
"XYZ"},
43 {
"Key", 12,
"Key (Alpha)"});
45 using TypedEnum<St2110Sampling>::TypedEnum;
47 static const St2110Sampling Invalid;
48 static const St2110Sampling YCbCr444;
49 static const St2110Sampling YCbCr422;
50 static const St2110Sampling YCbCr420;
51 static const St2110Sampling CLYCbCr444;
52 static const St2110Sampling CLYCbCr422;
53 static const St2110Sampling CLYCbCr420;
54 static const St2110Sampling ICtCp444;
55 static const St2110Sampling ICtCp422;
56 static const St2110Sampling ICtCp420;
57 static const St2110Sampling Rgb;
58 static const St2110Sampling Xyz;
59 static const St2110Sampling Key;
62inline const St2110Sampling St2110Sampling::Invalid{0};
63inline const St2110Sampling St2110Sampling::YCbCr444{1};
64inline const St2110Sampling St2110Sampling::YCbCr422{2};
65inline const St2110Sampling St2110Sampling::YCbCr420{3};
66inline const St2110Sampling St2110Sampling::CLYCbCr444{4};
67inline const St2110Sampling St2110Sampling::CLYCbCr422{5};
68inline const St2110Sampling St2110Sampling::CLYCbCr420{6};
69inline const St2110Sampling St2110Sampling::ICtCp444{7};
70inline const St2110Sampling St2110Sampling::ICtCp422{8};
71inline const St2110Sampling St2110Sampling::ICtCp420{9};
72inline const St2110Sampling St2110Sampling::Rgb{10};
73inline const St2110Sampling St2110Sampling::Xyz{11};
74inline const St2110Sampling St2110Sampling::Key{12};
85class St2110Depth :
public TypedEnum<St2110Depth> {
87 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"St2110Depth",
"ST 2110-20 Bit Depth", 0,
88 {
"Invalid", 0,
"Invalid"},
89 {
"Bits8", 1,
"8-bit"}, {
"Bits10", 2,
"10-bit"}, {
"Bits12", 3,
"12-bit"}, {
"Bits16", 4,
"16-bit"},
90 {
"Bits16f", 5,
"16-bit Float"});
92 using TypedEnum<St2110Depth>::TypedEnum;
94 static const St2110Depth Invalid;
95 static const St2110Depth Bits8;
96 static const St2110Depth Bits10;
97 static const St2110Depth Bits12;
98 static const St2110Depth Bits16;
99 static const St2110Depth Bits16f;
102inline const St2110Depth St2110Depth::Invalid{0};
103inline const St2110Depth St2110Depth::Bits8{1};
104inline const St2110Depth St2110Depth::Bits10{2};
105inline const St2110Depth St2110Depth::Bits12{3};
106inline const St2110Depth St2110Depth::Bits16{4};
107inline const St2110Depth St2110Depth::Bits16f{5};
116class St2110Colorimetry :
public TypedEnum<St2110Colorimetry> {
118 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"St2110Colorimetry",
"ST 2110-20 Colorimetry", 0,
119 {
"Invalid", 0,
"Invalid"},
120 {
"Bt601", 1,
"ITU-R BT.601"}, {
"Bt709", 2,
"ITU-R BT.709"}, {
"Bt2020", 3,
"ITU-R BT.2020"}, {
"Bt2100", 4,
"ITU-R BT.2100"},
121 {
"St2065_1", 5,
"SMPTE ST 2065-1 (ACES)"}, {
"St2065_3", 6,
"SMPTE ST 2065-3 (ADX)"}, {
"Unspecified", 7,
"Unspecified"},
122 {
"Xyz", 8,
"CIE XYZ"}, {
"Alpha", 9,
"Alpha (Key)"});
124 using TypedEnum<St2110Colorimetry>::TypedEnum;
126 static const St2110Colorimetry Invalid;
127 static const St2110Colorimetry Bt601;
128 static const St2110Colorimetry Bt709;
129 static const St2110Colorimetry Bt2020;
130 static const St2110Colorimetry Bt2100;
131 static const St2110Colorimetry St2065_1;
132 static const St2110Colorimetry St2065_3;
133 static const St2110Colorimetry Unspecified;
134 static const St2110Colorimetry Xyz;
135 static const St2110Colorimetry Alpha;
138inline const St2110Colorimetry St2110Colorimetry::Invalid{0};
139inline const St2110Colorimetry St2110Colorimetry::Bt601{1};
140inline const St2110Colorimetry St2110Colorimetry::Bt709{2};
141inline const St2110Colorimetry St2110Colorimetry::Bt2020{3};
142inline const St2110Colorimetry St2110Colorimetry::Bt2100{4};
143inline const St2110Colorimetry St2110Colorimetry::St2065_1{5};
144inline const St2110Colorimetry St2110Colorimetry::St2065_3{6};
145inline const St2110Colorimetry St2110Colorimetry::Unspecified{7};
146inline const St2110Colorimetry St2110Colorimetry::Xyz{8};
147inline const St2110Colorimetry St2110Colorimetry::Alpha{9};
159class St2110Tcs :
public TypedEnum<St2110Tcs> {
161 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"St2110Tcs",
"ST 2110-20 Transfer Characteristic System (TCS)", 1,
162 {
"Invalid", 0,
"Invalid"},
163 {
"Sdr", 1,
"Standard Dynamic Range (SDR)"}, {
"Pq", 2,
"Perceptual Quantizer (PQ)"}, {
"Hlg", 3,
"Hybrid Log-Gamma (HLG)"}, {
"Linear", 4,
"Linear"},
164 {
"Bt2100LinPq", 5,
"BT.2100 Linear (PQ Reference)"}, {
"Bt2100LinHlg", 6,
"BT.2100 Linear (HLG Reference)"},
165 {
"St2065_1", 7,
"SMPTE ST 2065-1 (ACES)"}, {
"St428_1", 8,
"SMPTE ST 428-1 (DCDM)"},
166 {
"Density", 9,
"Density"}, {
"St2115LogS3", 10,
"SMPTE ST 2115 Log S3"},
167 {
"Unspecified", 11,
"Unspecified"});
169 using TypedEnum<St2110Tcs>::TypedEnum;
171 static const St2110Tcs Invalid;
172 static const St2110Tcs Sdr;
173 static const St2110Tcs Pq;
174 static const St2110Tcs Hlg;
175 static const St2110Tcs Linear;
176 static const St2110Tcs Bt2100LinPq;
177 static const St2110Tcs Bt2100LinHlg;
178 static const St2110Tcs St2065_1;
179 static const St2110Tcs St428_1;
180 static const St2110Tcs Density;
181 static const St2110Tcs St2115LogS3;
182 static const St2110Tcs Unspecified;
185inline const St2110Tcs St2110Tcs::Invalid{0};
186inline const St2110Tcs St2110Tcs::Sdr{1};
187inline const St2110Tcs St2110Tcs::Pq{2};
188inline const St2110Tcs St2110Tcs::Hlg{3};
189inline const St2110Tcs St2110Tcs::Linear{4};
190inline const St2110Tcs St2110Tcs::Bt2100LinPq{5};
191inline const St2110Tcs St2110Tcs::Bt2100LinHlg{6};
192inline const St2110Tcs St2110Tcs::St2065_1{7};
193inline const St2110Tcs St2110Tcs::St428_1{8};
194inline const St2110Tcs St2110Tcs::Density{9};
195inline const St2110Tcs St2110Tcs::St2115LogS3{10};
196inline const St2110Tcs St2110Tcs::Unspecified{11};
207class St2110Range :
public TypedEnum<St2110Range> {
209 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"St2110Range",
"ST 2110-20 Quantization Range", 1,
210 {
"Invalid", 0,
"Invalid"},
211 {
"Narrow", 1,
"Narrow Range"}, {
"Full", 2,
"Full Range"},
212 {
"FullProtect", 3,
"Full Range (Protected)"});
214 using TypedEnum<St2110Range>::TypedEnum;
216 static const St2110Range Invalid;
217 static const St2110Range Narrow;
218 static const St2110Range Full;
219 static const St2110Range FullProtect;
222inline const St2110Range St2110Range::Invalid{0};
223inline const St2110Range St2110Range::Narrow{1};
224inline const St2110Range St2110Range::Full{2};
225inline const St2110Range St2110Range::FullProtect{3};
236class St2110PackingMode :
public TypedEnum<St2110PackingMode> {
238 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"St2110PackingMode",
"ST 2110-20 Packing Mode", 1,
239 {
"Invalid", 0,
"Invalid"},
240 {
"Gpm", 1,
"General Packing Mode (GPM)"},
241 {
"Bpm", 2,
"Block Packing Mode (BPM)"});
243 using TypedEnum<St2110PackingMode>::TypedEnum;
245 static const St2110PackingMode Invalid;
246 static const St2110PackingMode Gpm;
247 static const St2110PackingMode Bpm;
250inline const St2110PackingMode St2110PackingMode::Invalid{0};
251inline const St2110PackingMode St2110PackingMode::Gpm{1};
252inline const St2110PackingMode St2110PackingMode::Bpm{2};