libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
enums_video.h
Go to the documentation of this file.
1
10#pragma once
11
12
13#include <promeki/config.h>
14#if PROMEKI_ENABLE_CORE
15#include <promeki/namespace.h>
16#include <promeki/enum.h>
17
18PROMEKI_NAMESPACE_BEGIN
19
60class VideoScanMode : public TypedEnum<VideoScanMode> {
61 public:
62 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("VideoScanMode", "Video Scan Mode", 0,
63 {"Unknown", 0, "Unknown"},
64 {"Progressive", 1, "Progressive"},
65 {"Interlaced", 2, "Interlaced (Unknown Field Order)"},
66 {"InterlacedEvenFirst", 3, "Interlaced, Even/Top Field First"},
67 {"InterlacedOddFirst", 4, "Interlaced, Odd/Bottom Field First"},
68 {"PsF", 5, "Progressive Segmented Frame (PsF)"}); // default: Unknown
69
70 using TypedEnum<VideoScanMode>::TypedEnum;
71
72 static const VideoScanMode Unknown;
73 static const VideoScanMode Progressive;
74 static const VideoScanMode Interlaced;
75 static const VideoScanMode InterlacedEvenFirst;
76 static const VideoScanMode InterlacedOddFirst;
77 static const VideoScanMode PsF;
78
88 bool isInterlaced() const {
89 const int v = value();
90 return v == 2 /*Interlaced*/
91 || v == 3 /*InterlacedEvenFirst*/
92 || v == 4 /*InterlacedOddFirst*/;
93 }
94};
95
96inline const VideoScanMode VideoScanMode::Unknown{0};
97inline const VideoScanMode VideoScanMode::Progressive{1};
98inline const VideoScanMode VideoScanMode::Interlaced{2};
99inline const VideoScanMode VideoScanMode::InterlacedEvenFirst{3};
100inline const VideoScanMode VideoScanMode::InterlacedOddFirst{4};
101inline const VideoScanMode VideoScanMode::PsF{5};
102
122class VideoConnectorKind : public TypedEnum<VideoConnectorKind> {
123 public:
124 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("VideoConnectorKind", "Video Connector Kind", 0,
125 {"Auto", 0, "Automatic"},
126 {"Sdi", 1, "SDI (BNC Coax)"},
127 {"Hdmi", 2, "HDMI (Type-A)"},
128 {"DisplayPort", 3, "DisplayPort"},
129 {"Composite", 4, "Composite (Analog)"},
130 {"Component", 5, "Component (Analog YPbPr)"},
131 {"SVideo", 6, "S-Video (Y/C)"},
132 {"Sfp", 7, "SFP/SFP+ (SDI-over-IP)"}); // default: Auto
133
134 using TypedEnum<VideoConnectorKind>::TypedEnum;
135
136 static const VideoConnectorKind Auto;
137 static const VideoConnectorKind Sdi;
138 static const VideoConnectorKind Hdmi;
139 static const VideoConnectorKind DisplayPort;
140 static const VideoConnectorKind Composite;
141 static const VideoConnectorKind Component;
142 static const VideoConnectorKind SVideo;
143 static const VideoConnectorKind Sfp;
144};
145
146inline const VideoConnectorKind VideoConnectorKind::Auto{0};
147inline const VideoConnectorKind VideoConnectorKind::Sdi{1};
148inline const VideoConnectorKind VideoConnectorKind::Hdmi{2};
149inline const VideoConnectorKind VideoConnectorKind::DisplayPort{3};
150inline const VideoConnectorKind VideoConnectorKind::Composite{4};
151inline const VideoConnectorKind VideoConnectorKind::Component{5};
152inline const VideoConnectorKind VideoConnectorKind::SVideo{6};
153inline const VideoConnectorKind VideoConnectorKind::Sfp{7};
154
181class SdiLinkStandard : public TypedEnum<SdiLinkStandard> {
182 public:
183 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("SdiLinkStandard", "SDI Link Standard", 0,
184 {"Auto", 0, "Automatic"},
185 {"SL_SD", 1, "Single-Link SD-SDI (ST 259)"},
186 {"SL_HD", 2, "Single-Link HD-SDI (ST 292)"},
187 {"DL_HD", 3, "Dual-Link HD-SDI (ST 372)"},
188 {"SL_3GA", 4, "Single-Link 3G-SDI Level A (ST 425-1)"},
189 {"SL_3GB", 5, "Single-Link 3G-SDI Level B (ST 425-1)"},
190 {"DL_3GB", 6, "Dual-Link 3G-SDI Level B"},
191 {"DL_3G", 7, "Dual-Link 3G-SDI (ST 425-2)"},
192 {"QL_3G_SQD", 8, "Quad-Link 3G-SDI, Square Division (ST 425-3)"},
193 {"QL_3G_2SI", 9, "Quad-Link 3G-SDI, 2-Sample Interleave (ST 425-5)"},
194 {"SL_6G", 10, "Single-Link 6G-SDI (ST 2081)"},
195 {"SL_12G", 11, "Single-Link 12G-SDI (ST 2082)"},
196 {"SL_24G", 12, "Single-Link 24G-SDI (ST 2083)"}); // default: Auto
197
198 using TypedEnum<SdiLinkStandard>::TypedEnum;
199
200 static const SdiLinkStandard Auto;
201 static const SdiLinkStandard SL_SD;
202 static const SdiLinkStandard SL_HD;
203 static const SdiLinkStandard DL_HD;
204 static const SdiLinkStandard SL_3GA;
205 static const SdiLinkStandard SL_3GB;
206 static const SdiLinkStandard DL_3GB;
207 static const SdiLinkStandard DL_3G;
208 static const SdiLinkStandard QL_3G_SQD;
209 static const SdiLinkStandard QL_3G_2SI;
210 static const SdiLinkStandard SL_6G;
211 static const SdiLinkStandard SL_12G;
212 static const SdiLinkStandard SL_24G;
213};
214
215inline const SdiLinkStandard SdiLinkStandard::Auto{0};
216inline const SdiLinkStandard SdiLinkStandard::SL_SD{1};
217inline const SdiLinkStandard SdiLinkStandard::SL_HD{2};
218inline const SdiLinkStandard SdiLinkStandard::DL_HD{3};
219inline const SdiLinkStandard SdiLinkStandard::SL_3GA{4};
220inline const SdiLinkStandard SdiLinkStandard::SL_3GB{5};
221inline const SdiLinkStandard SdiLinkStandard::DL_3GB{6};
222inline const SdiLinkStandard SdiLinkStandard::DL_3G{7};
223inline const SdiLinkStandard SdiLinkStandard::QL_3G_SQD{8};
224inline const SdiLinkStandard SdiLinkStandard::QL_3G_2SI{9};
225inline const SdiLinkStandard SdiLinkStandard::SL_6G{10};
226inline const SdiLinkStandard SdiLinkStandard::SL_12G{11};
227inline const SdiLinkStandard SdiLinkStandard::SL_24G{12};
228
271class SdiWireFormat : public TypedEnum<SdiWireFormat> {
272 public:
273 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("SdiWireFormat", "SDI Wire Format", 0,
274 {"Auto", 0, "Automatic"},
275 {"YCbCr_422_10", 1, "Y'CbCr 4:2:2, 10-bit"},
276 {"YCbCr_422_12", 2, "Y'CbCr 4:2:2, 12-bit"},
277 {"YCbCr_444_10", 3, "Y'CbCr 4:4:4, 10-bit"},
278 {"YCbCr_444_12", 4, "Y'CbCr 4:4:4, 12-bit"},
279 {"RGB_444_10", 5, "R'G'B' 4:4:4, 10-bit"},
280 {"RGB_444_12", 6, "R'G'B' 4:4:4, 12-bit"},
281 {"RGBA_444_10", 7, "R'G'B'A' 4:4:4:4, 10-bit"}); // default: Auto
282
283 using TypedEnum<SdiWireFormat>::TypedEnum;
284
285 static const SdiWireFormat Auto;
286 static const SdiWireFormat YCbCr_422_10;
287 static const SdiWireFormat YCbCr_422_12;
288 static const SdiWireFormat YCbCr_444_10;
289 static const SdiWireFormat YCbCr_444_12;
290 static const SdiWireFormat RGB_444_10;
291 static const SdiWireFormat RGB_444_12;
292 static const SdiWireFormat RGBA_444_10;
293};
294
295inline const SdiWireFormat SdiWireFormat::Auto{0};
296inline const SdiWireFormat SdiWireFormat::YCbCr_422_10{1};
297inline const SdiWireFormat SdiWireFormat::YCbCr_422_12{2};
298inline const SdiWireFormat SdiWireFormat::YCbCr_444_10{3};
299inline const SdiWireFormat SdiWireFormat::YCbCr_444_12{4};
300inline const SdiWireFormat SdiWireFormat::RGB_444_10{5};
301inline const SdiWireFormat SdiWireFormat::RGB_444_12{6};
302inline const SdiWireFormat SdiWireFormat::RGBA_444_10{7};
303
335class VpidSampling : public TypedEnum<VpidSampling> {
336 public:
337 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("VpidSampling", "VPID Sampling Structure", 16,
338 {"Unknown", 16, "Unknown / Reserved"},
339 {"YCbCr_422", 0x0, "Y'CbCr 4:2:2"},
340 {"YCbCr_444", 0x1, "Y'CbCr 4:4:4"},
341 {"RGB_444", 0x2, "R'G'B' 4:4:4"},
342 {"YCbCr_420", 0x3, "Y'CbCr 4:2:0"},
343 {"YCbCrA_4224", 0x4, "Y'CbCr+A 4:2:2:4"},
344 {"YCbCrA_4444", 0x5, "Y'CbCr+A 4:4:4:4"},
345 {"RGBA_4444", 0x6, "R'G'B'+A 4:4:4:4"},
346 {"ST2048_2_FS", 0x7, "SMPTE ST 2048-2 FS"},
347 {"YCbCrD_4224", 0x8, "Y'CbCr+D 4:2:2:4"},
348 {"YCbCrD_4444", 0x9, "Y'CbCr+D 4:4:4:4"},
349 {"RGBD_4444", 0xA, "R'G'B'+D 4:4:4:4"},
350 {"XYZ_444", 0xE, "X'Y'Z' 4:4:4"}); // default: Unknown
351
352 using TypedEnum<VpidSampling>::TypedEnum;
353
354 static const VpidSampling Unknown;
355 static const VpidSampling YCbCr_422;
356 static const VpidSampling YCbCr_444;
357 static const VpidSampling RGB_444;
358 static const VpidSampling YCbCr_420;
359 static const VpidSampling YCbCrA_4224;
360 static const VpidSampling YCbCrA_4444;
361 static const VpidSampling RGBA_4444;
362 static const VpidSampling ST2048_2_FS;
363 static const VpidSampling YCbCrD_4224;
364 static const VpidSampling YCbCrD_4444;
365 static const VpidSampling RGBD_4444;
366 static const VpidSampling XYZ_444;
367};
368
369inline const VpidSampling VpidSampling::Unknown{16};
370inline const VpidSampling VpidSampling::YCbCr_422{0x0};
371inline const VpidSampling VpidSampling::YCbCr_444{0x1};
372inline const VpidSampling VpidSampling::RGB_444{0x2};
373inline const VpidSampling VpidSampling::YCbCr_420{0x3};
374inline const VpidSampling VpidSampling::YCbCrA_4224{0x4};
375inline const VpidSampling VpidSampling::YCbCrA_4444{0x5};
376inline const VpidSampling VpidSampling::RGBA_4444{0x6};
377inline const VpidSampling VpidSampling::ST2048_2_FS{0x7};
378inline const VpidSampling VpidSampling::YCbCrD_4224{0x8};
379inline const VpidSampling VpidSampling::YCbCrD_4444{0x9};
380inline const VpidSampling VpidSampling::RGBD_4444{0xA};
381inline const VpidSampling VpidSampling::XYZ_444{0xE};
382
399class HdmiSpecVersion : public TypedEnum<HdmiSpecVersion> {
400 public:
401 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("HdmiSpecVersion", "HDMI Specification Version", 0,
402 {"Auto", 0, "Automatic (EDID)"},
403 {"Hdmi14", 1, "HDMI 1.4b"},
404 {"Hdmi20", 2, "HDMI 2.0/2.0b"},
405 {"Hdmi21", 3, "HDMI 2.1"}); // default: Auto
406
407 using TypedEnum<HdmiSpecVersion>::TypedEnum;
408
409 static const HdmiSpecVersion Auto;
410 static const HdmiSpecVersion Hdmi14;
411 static const HdmiSpecVersion Hdmi20;
412 static const HdmiSpecVersion Hdmi21;
413};
414
415inline const HdmiSpecVersion HdmiSpecVersion::Auto{0};
416inline const HdmiSpecVersion HdmiSpecVersion::Hdmi14{1};
417inline const HdmiSpecVersion HdmiSpecVersion::Hdmi20{2};
418inline const HdmiSpecVersion HdmiSpecVersion::Hdmi21{3};
419
440class VideoReferenceSource : public TypedEnum<VideoReferenceSource> {
441 public:
442 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("VideoReferenceSource", "Video Reference Source", 0,
443 {"FreeRun", 0, "Free Run (Internal)"},
444 {"Genlock", 1, "Genlock (Black Burst / Tri-Level)"},
445 {"External", 2, "External Reference"},
446 {"FromSignal", 3, "Lock to Input Signal"},
447 {"Ptp", 4, "PTP Grandmaster (IEEE 1588)"},
448 {"Word", 5, "Word Clock"}); // default: FreeRun
449
450 using TypedEnum<VideoReferenceSource>::TypedEnum;
451
452 static const VideoReferenceSource FreeRun;
453 static const VideoReferenceSource Genlock;
454 static const VideoReferenceSource External;
455 static const VideoReferenceSource FromSignal;
456 static const VideoReferenceSource Ptp;
457 static const VideoReferenceSource Word;
458};
459
460inline const VideoReferenceSource VideoReferenceSource::FreeRun{0};
461inline const VideoReferenceSource VideoReferenceSource::Genlock{1};
462inline const VideoReferenceSource VideoReferenceSource::External{2};
463inline const VideoReferenceSource VideoReferenceSource::FromSignal{3};
464inline const VideoReferenceSource VideoReferenceSource::Ptp{4};
465inline const VideoReferenceSource VideoReferenceSource::Word{5};
466
482class VideoReferenceRateFamily : public TypedEnum<VideoReferenceRateFamily> {
483 public:
484 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("VideoReferenceRateFamily", "Video Reference Rate Family", 0,
485 {"Auto", 0, "Automatic"},
486 {"Integer", 1, "Integer Rate (148.5 MHz)"},
487 {"Fractional", 2, "NTSC Fractional (148.5/1.001 MHz)"}); // default: Auto
488
489 using TypedEnum<VideoReferenceRateFamily>::TypedEnum;
490
491 static const VideoReferenceRateFamily Auto;
492 static const VideoReferenceRateFamily Integer;
493 static const VideoReferenceRateFamily Fractional;
494};
495
496inline const VideoReferenceRateFamily VideoReferenceRateFamily::Auto{0};
497inline const VideoReferenceRateFamily VideoReferenceRateFamily::Integer{1};
498inline const VideoReferenceRateFamily VideoReferenceRateFamily::Fractional{2};
499
502PROMEKI_NAMESPACE_END
503
504#endif // PROMEKI_ENABLE_CORE