libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
enums.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
13#include <promeki/namespace.h>
14#include <promeki/enum.h>
15
16PROMEKI_NAMESPACE_BEGIN
17
61class VideoPattern : public TypedEnum<VideoPattern> {
62 public:
63 PROMEKI_REGISTER_ENUM_TYPE("VideoPattern", 0, {"ColorBars", 0}, {"ColorBars75", 1}, {"Ramp", 2},
64 {"Grid", 3}, {"Crosshatch", 4}, {"Checkerboard", 5}, {"SolidColor", 6},
65 {"White", 7}, {"Black", 8}, {"Noise", 9}, {"ZonePlate", 10},
66 {"ColorChecker", 11}, {"SMPTE219", 12}, {"AvSync", 13}, {"MultiBurst", 14},
67 {"LimitRange", 15}, {"CircularZone", 16}, {"Alignment", 17},
68 {"SDIPathEQ", 18}, {"SDIPathPLL", 19}); // default: ColorBars
69
70 using TypedEnum<VideoPattern>::TypedEnum;
71
72 static const VideoPattern ColorBars;
73 static const VideoPattern ColorBars75;
74 static const VideoPattern Ramp;
75 static const VideoPattern Grid;
76 static const VideoPattern Crosshatch;
77 static const VideoPattern Checkerboard;
78 static const VideoPattern SolidColor;
79 static const VideoPattern White;
80 static const VideoPattern Black;
81 static const VideoPattern Noise;
82 static const VideoPattern ZonePlate;
83 static const VideoPattern ColorChecker;
84 static const VideoPattern SMPTE219;
85 static const VideoPattern AvSync;
86 static const VideoPattern MultiBurst;
87 static const VideoPattern LimitRange;
88 static const VideoPattern CircularZone;
89 static const VideoPattern Alignment;
90 static const VideoPattern SDIPathEQ;
91 static const VideoPattern SDIPathPLL;
92};
93
94inline const VideoPattern VideoPattern::ColorBars{0};
95inline const VideoPattern VideoPattern::ColorBars75{1};
96inline const VideoPattern VideoPattern::Ramp{2};
97inline const VideoPattern VideoPattern::Grid{3};
98inline const VideoPattern VideoPattern::Crosshatch{4};
99inline const VideoPattern VideoPattern::Checkerboard{5};
100inline const VideoPattern VideoPattern::SolidColor{6};
101inline const VideoPattern VideoPattern::White{7};
102inline const VideoPattern VideoPattern::Black{8};
103inline const VideoPattern VideoPattern::Noise{9};
104inline const VideoPattern VideoPattern::ZonePlate{10};
105inline const VideoPattern VideoPattern::ColorChecker{11};
106inline const VideoPattern VideoPattern::SMPTE219{12};
107inline const VideoPattern VideoPattern::AvSync{13};
108inline const VideoPattern VideoPattern::MultiBurst{14};
109inline const VideoPattern VideoPattern::LimitRange{15};
110inline const VideoPattern VideoPattern::CircularZone{16};
111inline const VideoPattern VideoPattern::Alignment{17};
112inline const VideoPattern VideoPattern::SDIPathEQ{18};
113inline const VideoPattern VideoPattern::SDIPathPLL{19};
114
122class BurnPosition : public TypedEnum<BurnPosition> {
123 public:
124 PROMEKI_REGISTER_ENUM_TYPE("BurnPosition", 4, {"TopLeft", 0}, {"TopCenter", 1}, {"TopRight", 2},
125 {"BottomLeft", 3}, {"BottomCenter", 4}, {"BottomRight", 5},
126 {"Center", 6}); // default: BottomCenter
127
128 using TypedEnum<BurnPosition>::TypedEnum;
129
130 static const BurnPosition TopLeft;
131 static const BurnPosition TopCenter;
132 static const BurnPosition TopRight;
133 static const BurnPosition BottomLeft;
134 static const BurnPosition BottomCenter;
135 static const BurnPosition BottomRight;
136 static const BurnPosition Center;
137};
138
139inline const BurnPosition BurnPosition::TopLeft{0};
140inline const BurnPosition BurnPosition::TopCenter{1};
141inline const BurnPosition BurnPosition::TopRight{2};
142inline const BurnPosition BurnPosition::BottomLeft{3};
143inline const BurnPosition BurnPosition::BottomCenter{4};
144inline const BurnPosition BurnPosition::BottomRight{5};
145inline const BurnPosition BurnPosition::Center{6};
146
156class MediaIOOpenMode : public TypedEnum<MediaIOOpenMode> {
157 public:
158 PROMEKI_REGISTER_ENUM_TYPE("MediaIOOpenMode", 0, {"Read", 0}, {"Write", 1}); // default: Read
159
160 using TypedEnum<MediaIOOpenMode>::TypedEnum;
161
162 static const MediaIOOpenMode Read;
163 static const MediaIOOpenMode Write;
164};
165
166inline const MediaIOOpenMode MediaIOOpenMode::Read{0};
167inline const MediaIOOpenMode MediaIOOpenMode::Write{1};
168
259class AudioPattern : public TypedEnum<AudioPattern> {
260 public:
261 PROMEKI_REGISTER_ENUM_TYPE("AudioPattern", 0, {"Tone", 0}, {"Silence", 1}, {"LTC", 2}, {"AvSync", 3},
262 {"SrcProbe", 4}, {"ChannelId", 5}, {"PcmMarker", 6}, {"WhiteNoise", 7},
263 {"PinkNoise", 8}, {"Chirp", 9}, {"DualTone", 10}, {"Sweep", 11},
264 {"Polarity", 12}, {"SteppedTone", 13}, {"Blits", 14}, {"EbuLineup", 15},
265 {"Dialnorm", 16}, {"Iec60958", 17}); // default: Tone
266
267 using TypedEnum<AudioPattern>::TypedEnum;
268
269 static const AudioPattern Tone;
270 static const AudioPattern Silence;
271 static const AudioPattern LTC;
272 static const AudioPattern AvSync;
273 static const AudioPattern SrcProbe;
274 static const AudioPattern ChannelId;
275 static const AudioPattern PcmMarker;
276 static const AudioPattern WhiteNoise;
277 static const AudioPattern PinkNoise;
278 static const AudioPattern Chirp;
279 static const AudioPattern DualTone;
280 static const AudioPattern Sweep;
281 static const AudioPattern Polarity;
282 static const AudioPattern SteppedTone;
283 static const AudioPattern Blits;
284 static const AudioPattern EbuLineup;
285 static const AudioPattern Dialnorm;
286 static const AudioPattern Iec60958;
287};
288
289inline const AudioPattern AudioPattern::Tone{0};
290inline const AudioPattern AudioPattern::Silence{1};
291inline const AudioPattern AudioPattern::LTC{2};
292inline const AudioPattern AudioPattern::AvSync{3};
293inline const AudioPattern AudioPattern::SrcProbe{4};
294inline const AudioPattern AudioPattern::ChannelId{5};
295inline const AudioPattern AudioPattern::PcmMarker{6};
296inline const AudioPattern AudioPattern::WhiteNoise{7};
297inline const AudioPattern AudioPattern::PinkNoise{8};
298inline const AudioPattern AudioPattern::Chirp{9};
299inline const AudioPattern AudioPattern::DualTone{10};
300inline const AudioPattern AudioPattern::Sweep{11};
301inline const AudioPattern AudioPattern::Polarity{12};
302inline const AudioPattern AudioPattern::SteppedTone{13};
303inline const AudioPattern AudioPattern::Blits{14};
304inline const AudioPattern AudioPattern::EbuLineup{15};
305inline const AudioPattern AudioPattern::Dialnorm{16};
306inline const AudioPattern AudioPattern::Iec60958{17};
307
347class AudioMarkerType : public TypedEnum<AudioMarkerType> {
348 public:
349 PROMEKI_REGISTER_ENUM_TYPE("AudioMarkerType", 0, {"Unknown", 0}, {"SilenceFill", 1},
350 {"ConcealedLoss", 2}, {"Discontinuity", 3}, {"Glitch", 4});
351
352 using TypedEnum<AudioMarkerType>::TypedEnum;
353
354 static const AudioMarkerType Unknown;
355 static const AudioMarkerType SilenceFill;
356 static const AudioMarkerType ConcealedLoss;
357 static const AudioMarkerType Discontinuity;
358 static const AudioMarkerType Glitch;
359};
360
361inline const AudioMarkerType AudioMarkerType::Unknown{0};
362inline const AudioMarkerType AudioMarkerType::SilenceFill{1};
363inline const AudioMarkerType AudioMarkerType::ConcealedLoss{2};
364inline const AudioMarkerType AudioMarkerType::Discontinuity{3};
365inline const AudioMarkerType AudioMarkerType::Glitch{4};
366
374class ChromaSubsampling : public TypedEnum<ChromaSubsampling> {
375 public:
376 PROMEKI_REGISTER_ENUM_TYPE("ChromaSubsampling", 1, {"YUV444", 0}, {"YUV422", 1},
377 {"YUV420", 2}); // default: YUV422 (RFC 2435 JPEG-over-RTP compatible)
378
379 using TypedEnum<ChromaSubsampling>::TypedEnum;
380
381 static const ChromaSubsampling YUV444;
382 static const ChromaSubsampling YUV422;
383 static const ChromaSubsampling YUV420;
384};
385
386inline const ChromaSubsampling ChromaSubsampling::YUV444{0};
387inline const ChromaSubsampling ChromaSubsampling::YUV422{1};
388inline const ChromaSubsampling ChromaSubsampling::YUV420{2};
389
404class AudioDataType : public TypedEnum<AudioDataType> {
405 public:
406 PROMEKI_REGISTER_ENUM_TYPE("AudioDataType", 1, {"Invalid", 0}, {"PCMI_Float32LE", 1},
407 {"PCMI_Float32BE", 2}, {"PCMI_S8", 3}, {"PCMI_U8", 4}, {"PCMI_S16LE", 5},
408 {"PCMI_U16LE", 6}, {"PCMI_S16BE", 7}, {"PCMI_U16BE", 8}, {"PCMI_S24LE", 9},
409 {"PCMI_U24LE", 10}, {"PCMI_S24BE", 11}, {"PCMI_U24BE", 12},
410 {"PCMI_S32LE", 13}, {"PCMI_U32LE", 14}, {"PCMI_S32BE", 15},
411 {"PCMI_U32BE", 16}); // default: PCMI_Float32LE
412
413 using TypedEnum<AudioDataType>::TypedEnum;
414
415 static const AudioDataType Invalid;
416 static const AudioDataType PCMI_Float32LE;
417 static const AudioDataType PCMI_Float32BE;
418 static const AudioDataType PCMI_S8;
419 static const AudioDataType PCMI_U8;
420 static const AudioDataType PCMI_S16LE;
421 static const AudioDataType PCMI_U16LE;
422 static const AudioDataType PCMI_S16BE;
423 static const AudioDataType PCMI_U16BE;
424 static const AudioDataType PCMI_S24LE;
425 static const AudioDataType PCMI_U24LE;
426 static const AudioDataType PCMI_S24BE;
427 static const AudioDataType PCMI_U24BE;
428 static const AudioDataType PCMI_S32LE;
429 static const AudioDataType PCMI_U32LE;
430 static const AudioDataType PCMI_S32BE;
431 static const AudioDataType PCMI_U32BE;
432};
433
434inline const AudioDataType AudioDataType::Invalid{0};
435inline const AudioDataType AudioDataType::PCMI_Float32LE{1};
436inline const AudioDataType AudioDataType::PCMI_Float32BE{2};
437inline const AudioDataType AudioDataType::PCMI_S8{3};
438inline const AudioDataType AudioDataType::PCMI_U8{4};
439inline const AudioDataType AudioDataType::PCMI_S16LE{5};
440inline const AudioDataType AudioDataType::PCMI_U16LE{6};
441inline const AudioDataType AudioDataType::PCMI_S16BE{7};
442inline const AudioDataType AudioDataType::PCMI_U16BE{8};
443inline const AudioDataType AudioDataType::PCMI_S24LE{9};
444inline const AudioDataType AudioDataType::PCMI_U24LE{10};
445inline const AudioDataType AudioDataType::PCMI_S24BE{11};
446inline const AudioDataType AudioDataType::PCMI_U24BE{12};
447inline const AudioDataType AudioDataType::PCMI_S32LE{13};
448inline const AudioDataType AudioDataType::PCMI_U32LE{14};
449inline const AudioDataType AudioDataType::PCMI_S32BE{15};
450inline const AudioDataType AudioDataType::PCMI_U32BE{16};
451
462class CscPath : public TypedEnum<CscPath> {
463 public:
464 PROMEKI_REGISTER_ENUM_TYPE("CscPath", 0, {"Optimized", 0}, {"Scalar", 1}); // default: Optimized
465
466 using TypedEnum<CscPath>::TypedEnum;
467
468 static const CscPath Optimized;
469 static const CscPath Scalar;
470};
471
472inline const CscPath CscPath::Optimized{0};
473inline const CscPath CscPath::Scalar{1};
474
490class CscToneMapping : public TypedEnum<CscToneMapping> {
491 public:
492 PROMEKI_REGISTER_ENUM_TYPE("CscToneMapping", 0, {"Auto", 0}, {"Enabled", 1}, {"Disabled", 2});
493
494 using TypedEnum<CscToneMapping>::TypedEnum;
495
496 static const CscToneMapping Auto;
497 static const CscToneMapping Enabled;
498 static const CscToneMapping Disabled;
499};
500
501inline const CscToneMapping CscToneMapping::Auto{0};
502inline const CscToneMapping CscToneMapping::Enabled{1};
503inline const CscToneMapping CscToneMapping::Disabled{2};
504
530class CscToneMapOperator : public TypedEnum<CscToneMapOperator> {
531 public:
532 PROMEKI_REGISTER_ENUM_TYPE("CscToneMapOperator", 0, {"Bt2390", 0}, {"Reinhard", 1}, {"Hable", 2},
533 {"Aces", 3}, {"Bt2446a", 4});
534
535 using TypedEnum<CscToneMapOperator>::TypedEnum;
536
537 static const CscToneMapOperator Bt2390;
538 static const CscToneMapOperator Reinhard;
539 static const CscToneMapOperator Hable;
540 static const CscToneMapOperator Aces;
541 static const CscToneMapOperator Bt2446a;
542};
543
544inline const CscToneMapOperator CscToneMapOperator::Bt2390{0};
545inline const CscToneMapOperator CscToneMapOperator::Reinhard{1};
546inline const CscToneMapOperator CscToneMapOperator::Hable{2};
547inline const CscToneMapOperator CscToneMapOperator::Aces{3};
548inline const CscToneMapOperator CscToneMapOperator::Bt2446a{4};
549
559class QuickTimeLayout : public TypedEnum<QuickTimeLayout> {
560 public:
561 PROMEKI_REGISTER_ENUM_TYPE("QuickTimeLayout", 1, {"Classic", 0},
562 {"Fragmented", 1}); // default: Fragmented
563
564 using TypedEnum<QuickTimeLayout>::TypedEnum;
565
566 static const QuickTimeLayout Classic;
567 static const QuickTimeLayout Fragmented;
568};
569
570inline const QuickTimeLayout QuickTimeLayout::Classic{0};
571inline const QuickTimeLayout QuickTimeLayout::Fragmented{1};
572
602class RtpPacingMode : public TypedEnum<RtpPacingMode> {
603 public:
604 PROMEKI_REGISTER_ENUM_TYPE("RtpPacingMode", 4, {"None", 0}, {"Userspace", 1}, {"KernelFq", 2},
605 {"TxTime", 3}, {"Auto", 4}); // default: Auto
606
607 using TypedEnum<RtpPacingMode>::TypedEnum;
608
609 static const RtpPacingMode None;
610 static const RtpPacingMode Userspace;
611 static const RtpPacingMode KernelFq;
612 static const RtpPacingMode TxTime;
613 static const RtpPacingMode Auto;
614};
615
616inline const RtpPacingMode RtpPacingMode::None{0};
617inline const RtpPacingMode RtpPacingMode::Userspace{1};
618inline const RtpPacingMode RtpPacingMode::KernelFq{2};
619inline const RtpPacingMode RtpPacingMode::TxTime{3};
620inline const RtpPacingMode RtpPacingMode::Auto{4};
621
645class RtpRefClockMode : public TypedEnum<RtpRefClockMode> {
646 public:
647 PROMEKI_REGISTER_ENUM_TYPE("RtpRefClockMode", 0, {"Auto", 0}, {"LocalMac", 1},
648 {"Ptp", 2}, {"None", 3}); // default: Auto
649
650 using TypedEnum<RtpRefClockMode>::TypedEnum;
651
652 static const RtpRefClockMode Auto;
653 static const RtpRefClockMode LocalMac;
654 static const RtpRefClockMode Ptp;
655 static const RtpRefClockMode None;
656};
657
658inline const RtpRefClockMode RtpRefClockMode::Auto{0};
659inline const RtpRefClockMode RtpRefClockMode::LocalMac{1};
660inline const RtpRefClockMode RtpRefClockMode::Ptp{2};
661inline const RtpRefClockMode RtpRefClockMode::None{3};
662
682class MetadataRtpFormat : public TypedEnum<MetadataRtpFormat> {
683 public:
684 PROMEKI_REGISTER_ENUM_TYPE("MetadataRtpFormat", 0, {"JsonMetadata", 0},
685 {"St2110_40", 1}); // default: JsonMetadata
686
687 using TypedEnum<MetadataRtpFormat>::TypedEnum;
688
689 static const MetadataRtpFormat JsonMetadata;
690 static const MetadataRtpFormat St2110_40;
691};
692
693inline const MetadataRtpFormat MetadataRtpFormat::JsonMetadata{0};
694inline const MetadataRtpFormat MetadataRtpFormat::St2110_40{1};
695
725class ByteCountStyle : public TypedEnum<ByteCountStyle> {
726 public:
727 PROMEKI_REGISTER_ENUM_TYPE("ByteCountStyle", 0, {"Metric", 0}, {"Binary", 1}); // default: Metric
728
729 using TypedEnum<ByteCountStyle>::TypedEnum;
730
731 static const ByteCountStyle Metric;
732 static const ByteCountStyle Binary;
733};
734
735inline const ByteCountStyle ByteCountStyle::Metric{0};
736inline const ByteCountStyle ByteCountStyle::Binary{1};
737
746class ImgSeqPathMode : public TypedEnum<ImgSeqPathMode> {
747 public:
748 PROMEKI_REGISTER_ENUM_TYPE("ImgSeqPathMode", 0, {"Relative", 0}, {"Absolute", 1}); // default: Relative
749
750 using TypedEnum<ImgSeqPathMode>::TypedEnum;
751
752 static const ImgSeqPathMode Relative;
753 static const ImgSeqPathMode Absolute;
754};
755
756inline const ImgSeqPathMode ImgSeqPathMode::Relative{0};
757inline const ImgSeqPathMode ImgSeqPathMode::Absolute{1};
758
795class TimecodePackFormat : public TypedEnum<TimecodePackFormat> {
796 public:
797 PROMEKI_REGISTER_ENUM_TYPE("TimecodePackFormat", 0, {"Vitc", 0}, {"Ltc", 1}); // default: Vitc
798
799 using TypedEnum<TimecodePackFormat>::TypedEnum;
800
801 static const TimecodePackFormat Vitc;
802 static const TimecodePackFormat Ltc;
803};
804
805inline const TimecodePackFormat TimecodePackFormat::Vitc{0};
806inline const TimecodePackFormat TimecodePackFormat::Ltc{1};
807
845class VideoScanMode : public TypedEnum<VideoScanMode> {
846 public:
847 PROMEKI_REGISTER_ENUM_TYPE("VideoScanMode", 0, {"Unknown", 0}, {"Progressive", 1}, {"Interlaced", 2},
848 {"InterlacedEvenFirst", 3}, {"InterlacedOddFirst", 4},
849 {"PsF", 5}); // default: Unknown
850
851 using TypedEnum<VideoScanMode>::TypedEnum;
852
853 static const VideoScanMode Unknown;
854 static const VideoScanMode Progressive;
855 static const VideoScanMode Interlaced;
856 static const VideoScanMode InterlacedEvenFirst;
857 static const VideoScanMode InterlacedOddFirst;
858 static const VideoScanMode PsF;
859
869 bool isInterlaced() const {
870 const int v = value();
871 return v == 2 /*Interlaced*/
872 || v == 3 /*InterlacedEvenFirst*/
873 || v == 4 /*InterlacedOddFirst*/;
874 }
875};
876
877inline const VideoScanMode VideoScanMode::Unknown{0};
878inline const VideoScanMode VideoScanMode::Progressive{1};
879inline const VideoScanMode VideoScanMode::Interlaced{2};
880inline const VideoScanMode VideoScanMode::InterlacedEvenFirst{3};
881inline const VideoScanMode VideoScanMode::InterlacedOddFirst{4};
882inline const VideoScanMode VideoScanMode::PsF{5};
883
903class MediaIODirection : public TypedEnum<MediaIODirection> {
904 public:
905 PROMEKI_REGISTER_ENUM_TYPE("MediaIODirection", 0, {"Source", 0}, {"Sink", 1},
906 {"Transform", 2}); // default: Source
907
908 using TypedEnum<MediaIODirection>::TypedEnum;
909
910 static const MediaIODirection Source;
911 static const MediaIODirection Sink;
912 static const MediaIODirection Transform;
913};
914
915inline const MediaIODirection MediaIODirection::Source{0};
916inline const MediaIODirection MediaIODirection::Sink{1};
917inline const MediaIODirection MediaIODirection::Transform{2};
918
944class MediaPayloadKind : public TypedEnum<MediaPayloadKind> {
945 public:
946 PROMEKI_REGISTER_ENUM_TYPE("MediaPayloadKind", 0, {"Video", 0}, {"Audio", 1}, {"Metadata", 2},
947 {"Subtitle", 3}, {"AncillaryData", 4}, {"Custom", 5}); // default: Video
948
949 using TypedEnum<MediaPayloadKind>::TypedEnum;
950
951 static const MediaPayloadKind Video;
952 static const MediaPayloadKind Audio;
953 static const MediaPayloadKind Metadata;
954 static const MediaPayloadKind Subtitle;
955 static const MediaPayloadKind AncillaryData;
956 static const MediaPayloadKind Custom;
957};
958
959inline const MediaPayloadKind MediaPayloadKind::Video{0};
960inline const MediaPayloadKind MediaPayloadKind::Audio{1};
961inline const MediaPayloadKind MediaPayloadKind::Metadata{2};
962inline const MediaPayloadKind MediaPayloadKind::Subtitle{3};
963inline const MediaPayloadKind MediaPayloadKind::AncillaryData{4};
964inline const MediaPayloadKind MediaPayloadKind::Custom{5};
965
992class FrameType : public TypedEnum<FrameType> {
993 public:
994 PROMEKI_REGISTER_ENUM_TYPE("FrameType", 0, {"Unknown", 0}, {"I", 1}, {"P", 2}, {"B", 3}, {"IDR", 4},
995 {"BRef", 5}); // default: Unknown
996
997 using TypedEnum<FrameType>::TypedEnum;
998
999 static const FrameType Unknown;
1000 static const FrameType I;
1001 static const FrameType P;
1002 static const FrameType B;
1003 static const FrameType IDR;
1004 static const FrameType BRef;
1005};
1006
1007inline const FrameType FrameType::Unknown{0};
1008inline const FrameType FrameType::I{1};
1009inline const FrameType FrameType::P{2};
1010inline const FrameType FrameType::B{3};
1011inline const FrameType FrameType::IDR{4};
1012inline const FrameType FrameType::BRef{5};
1013
1032class AudioSourceHint : public TypedEnum<AudioSourceHint> {
1033 public:
1034 PROMEKI_REGISTER_ENUM_TYPE("AudioSourceHint", 0, {"Sidecar", 0}, {"Embedded", 1}); // default: Sidecar
1035
1036 using TypedEnum<AudioSourceHint>::TypedEnum;
1037
1038 static const AudioSourceHint Sidecar;
1039 static const AudioSourceHint Embedded;
1040};
1041
1042inline const AudioSourceHint AudioSourceHint::Sidecar{0};
1043inline const AudioSourceHint AudioSourceHint::Embedded{1};
1044
1050class V4l2PowerLineMode : public TypedEnum<V4l2PowerLineMode> {
1051 public:
1052 PROMEKI_REGISTER_ENUM_TYPE("V4l2PowerLineMode", 3, {"Disabled", 0}, {"50Hz", 1}, {"60Hz", 2},
1053 {"Auto", 3}); // default: Auto
1054
1055 using TypedEnum<V4l2PowerLineMode>::TypedEnum;
1056
1057 static const V4l2PowerLineMode Disabled;
1058 static const V4l2PowerLineMode Hz50;
1059 static const V4l2PowerLineMode Hz60;
1060 static const V4l2PowerLineMode Auto;
1061};
1062
1063inline const V4l2PowerLineMode V4l2PowerLineMode::Disabled{0};
1064inline const V4l2PowerLineMode V4l2PowerLineMode::Hz50{1};
1065inline const V4l2PowerLineMode V4l2PowerLineMode::Hz60{2};
1066inline const V4l2PowerLineMode V4l2PowerLineMode::Auto{3};
1067
1073class V4l2ExposureMode : public TypedEnum<V4l2ExposureMode> {
1074 public:
1075 PROMEKI_REGISTER_ENUM_TYPE("V4l2ExposureMode", 3, {"Auto", 0}, {"Manual", 1}, {"ShutterPriority", 2},
1076 {"AperturePriority", 3}); // default: AperturePriority
1077
1078 using TypedEnum<V4l2ExposureMode>::TypedEnum;
1079
1080 static const V4l2ExposureMode Auto;
1081 static const V4l2ExposureMode Manual;
1082 static const V4l2ExposureMode ShutterPriority;
1083 static const V4l2ExposureMode AperturePriority;
1084};
1085
1086inline const V4l2ExposureMode V4l2ExposureMode::Auto{0};
1087inline const V4l2ExposureMode V4l2ExposureMode::Manual{1};
1088inline const V4l2ExposureMode V4l2ExposureMode::ShutterPriority{2};
1089inline const V4l2ExposureMode V4l2ExposureMode::AperturePriority{3};
1090
1113class SrcQuality : public TypedEnum<SrcQuality> {
1114 public:
1115 PROMEKI_REGISTER_ENUM_TYPE("SrcQuality", 1, {"SincBest", 0}, {"SincMedium", 1}, {"SincFastest", 2},
1116 {"Linear", 3}, {"ZeroOrderHold", 4}); // default: SincMedium
1117
1118 using TypedEnum<SrcQuality>::TypedEnum;
1119
1120 static const SrcQuality SincBest;
1121 static const SrcQuality SincMedium;
1122 static const SrcQuality SincFastest;
1123 static const SrcQuality Linear;
1124 static const SrcQuality ZeroOrderHold;
1125};
1126
1127inline const SrcQuality SrcQuality::SincBest{0};
1128inline const SrcQuality SrcQuality::SincMedium{1};
1129inline const SrcQuality SrcQuality::SincFastest{2};
1130inline const SrcQuality SrcQuality::Linear{3};
1131inline const SrcQuality SrcQuality::ZeroOrderHold{4};
1132
1150class ClockEpoch : public TypedEnum<ClockEpoch> {
1151 public:
1152 PROMEKI_REGISTER_ENUM_TYPE("ClockEpoch", 1, {"PerStream", 0}, {"Correlated", 1},
1153 {"Absolute", 2}); // default: Correlated
1154
1155 using TypedEnum<ClockEpoch>::TypedEnum;
1156
1157 static const ClockEpoch PerStream;
1158 static const ClockEpoch Correlated;
1159 static const ClockEpoch Absolute;
1160};
1161
1162inline const ClockEpoch ClockEpoch::PerStream{0};
1163inline const ClockEpoch ClockEpoch::Correlated{1};
1164inline const ClockEpoch ClockEpoch::Absolute{2};
1165
1176class EUI64Format : public TypedEnum<EUI64Format> {
1177 public:
1178 PROMEKI_REGISTER_ENUM_TYPE("EUI64Format", 0, {"OctetHyphen", 0}, {"OctetColon", 1},
1179 {"IPv6", 2}); // default: OctetHyphen
1180
1181 using TypedEnum<EUI64Format>::TypedEnum;
1182
1183 static const EUI64Format OctetHyphen;
1184 static const EUI64Format OctetColon;
1185 static const EUI64Format IPv6;
1186};
1187
1188inline const EUI64Format EUI64Format::OctetHyphen{0};
1189inline const EUI64Format EUI64Format::OctetColon{1};
1190inline const EUI64Format EUI64Format::IPv6{2};
1191
1229class InspectorTest : public TypedEnum<InspectorTest> {
1230 public:
1231 PROMEKI_REGISTER_ENUM_TYPE("InspectorTest", 0, {"ImageData", 0}, {"Ltc", 1}, {"AvSync", 2},
1232 {"Continuity", 3}, {"Timestamp", 4}, {"AudioSamples", 5},
1233 {"CaptureStats", 6}, {"AudioData", 7}, {"AncData", 8});
1234
1235 using TypedEnum<InspectorTest>::TypedEnum;
1236
1237 static const InspectorTest ImageData;
1238 static const InspectorTest Ltc;
1239 static const InspectorTest AvSync;
1240 static const InspectorTest Continuity;
1241 static const InspectorTest Timestamp;
1242 static const InspectorTest AudioSamples;
1243 static const InspectorTest CaptureStats;
1244 static const InspectorTest AudioData;
1245 static const InspectorTest AncData;
1246};
1247
1248inline const InspectorTest InspectorTest::ImageData{0};
1249inline const InspectorTest InspectorTest::Ltc{1};
1250inline const InspectorTest InspectorTest::AvSync{2};
1251inline const InspectorTest InspectorTest::Continuity{3};
1252inline const InspectorTest InspectorTest::Timestamp{4};
1253inline const InspectorTest InspectorTest::AudioSamples{5};
1254inline const InspectorTest InspectorTest::CaptureStats{6};
1255inline const InspectorTest InspectorTest::AudioData{7};
1256inline const InspectorTest InspectorTest::AncData{8};
1257
1282class RateControlMode : public TypedEnum<RateControlMode> {
1283 public:
1284 PROMEKI_REGISTER_ENUM_TYPE("RateControlMode", 1, {"CBR", 0}, {"VBR", 1}, {"ABR", 2},
1285 {"CQP", 3}); // default: VBR
1286
1287 using TypedEnum<RateControlMode>::TypedEnum;
1288
1289 static const RateControlMode CBR;
1290 static const RateControlMode VBR;
1291 static const RateControlMode ABR;
1292 static const RateControlMode CQP;
1293};
1294
1295inline const RateControlMode RateControlMode::CBR{0};
1296inline const RateControlMode RateControlMode::VBR{1};
1297inline const RateControlMode RateControlMode::ABR{2};
1298inline const RateControlMode RateControlMode::CQP{3};
1299
1320class VideoEncoderPreset : public TypedEnum<VideoEncoderPreset> {
1321 public:
1322 PROMEKI_REGISTER_ENUM_TYPE("VideoEncoderPreset", 2, {"UltraLowLatency", 0}, {"LowLatency", 1},
1323 {"Balanced", 2}, {"HighQuality", 3}, {"Lossless", 4}); // default: Balanced
1324
1325 using TypedEnum<VideoEncoderPreset>::TypedEnum;
1326
1327 static const VideoEncoderPreset UltraLowLatency;
1328 static const VideoEncoderPreset LowLatency;
1329 static const VideoEncoderPreset Balanced;
1330 static const VideoEncoderPreset HighQuality;
1331 static const VideoEncoderPreset Lossless;
1332};
1333
1334inline const VideoEncoderPreset VideoEncoderPreset::UltraLowLatency{0};
1335inline const VideoEncoderPreset VideoEncoderPreset::LowLatency{1};
1336inline const VideoEncoderPreset VideoEncoderPreset::Balanced{2};
1337inline const VideoEncoderPreset VideoEncoderPreset::HighQuality{3};
1338inline const VideoEncoderPreset VideoEncoderPreset::Lossless{4};
1339
1359class OpusApplication : public TypedEnum<OpusApplication> {
1360 public:
1361 PROMEKI_REGISTER_ENUM_TYPE("OpusApplication", 1, {"Voip", 0}, {"Audio", 1},
1362 {"LowDelay", 2}); // default: Audio
1363
1364 using TypedEnum<OpusApplication>::TypedEnum;
1365
1366 static const OpusApplication Voip;
1367 static const OpusApplication Audio;
1368 static const OpusApplication LowDelay;
1369};
1370
1371inline const OpusApplication OpusApplication::Voip{0};
1372inline const OpusApplication OpusApplication::Audio{1};
1373inline const OpusApplication OpusApplication::LowDelay{2};
1374
1393class VideoRange : public TypedEnum<VideoRange> {
1394 public:
1395 PROMEKI_REGISTER_ENUM_TYPE("VideoRange", 0, {"Unknown", 0}, {"Limited", 1},
1396 {"Full", 2}); // default: Unknown
1397
1398 using TypedEnum<VideoRange>::TypedEnum;
1399
1400 static const VideoRange Unknown;
1401 static const VideoRange Limited;
1402 static const VideoRange Full;
1403};
1404
1405inline const VideoRange VideoRange::Unknown{0};
1406inline const VideoRange VideoRange::Limited{1};
1407inline const VideoRange VideoRange::Full{2};
1408
1421class ColorPrimaries : public TypedEnum<ColorPrimaries> {
1422 public:
1423 // The @c Auto numeric value (255) deliberately sits
1424 // outside the 0..22 H.273 value range so it can never
1425 // collide with a spec-registered primary. Encoders
1426 // that see @c Auto resolve it by inspecting the input
1427 // PixelFormat's ColorModel at session init time.
1428 PROMEKI_REGISTER_ENUM_TYPE("ColorPrimaries", 255, {"BT709", 1}, {"Unspecified", 2}, {"BT470M", 4},
1429 {"BT470BG", 5}, {"SMPTE170M", 6}, {"SMPTE240M", 7}, {"Film", 8},
1430 {"BT2020", 9}, {"SMPTE428", 10}, {"SMPTE431", 11}, {"SMPTE432", 12},
1431 {"JEDEC_P22", 22}, {"Auto", 255}); // default: Auto
1432
1433 using TypedEnum<ColorPrimaries>::TypedEnum;
1434
1435 static const ColorPrimaries Auto;
1436 static const ColorPrimaries Unspecified;
1437 static const ColorPrimaries BT709;
1438 static const ColorPrimaries BT470M;
1439 static const ColorPrimaries BT470BG;
1440 static const ColorPrimaries SMPTE170M;
1441 static const ColorPrimaries SMPTE240M;
1442 static const ColorPrimaries Film;
1443 static const ColorPrimaries BT2020;
1444 static const ColorPrimaries SMPTE428;
1445 static const ColorPrimaries SMPTE431;
1446 static const ColorPrimaries SMPTE432;
1447 static const ColorPrimaries JEDEC_P22;
1448};
1449
1450inline const ColorPrimaries ColorPrimaries::Auto{255};
1451inline const ColorPrimaries ColorPrimaries::Unspecified{2};
1452inline const ColorPrimaries ColorPrimaries::BT709{1};
1453inline const ColorPrimaries ColorPrimaries::BT470M{4};
1454inline const ColorPrimaries ColorPrimaries::BT470BG{5};
1455inline const ColorPrimaries ColorPrimaries::SMPTE170M{6};
1456inline const ColorPrimaries ColorPrimaries::SMPTE240M{7};
1457inline const ColorPrimaries ColorPrimaries::Film{8};
1458inline const ColorPrimaries ColorPrimaries::BT2020{9};
1459inline const ColorPrimaries ColorPrimaries::SMPTE428{10};
1460inline const ColorPrimaries ColorPrimaries::SMPTE431{11};
1461inline const ColorPrimaries ColorPrimaries::SMPTE432{12};
1462inline const ColorPrimaries ColorPrimaries::JEDEC_P22{22};
1463
1473class TransferCharacteristics : public TypedEnum<TransferCharacteristics> {
1474 public:
1475 // The @c Auto numeric value (255) sits outside the
1476 // 0..18 H.273 value range. NB: auto-derivation
1477 // currently cannot pick between SDR gamma, PQ, and HLG
1478 // — the library's ColorModel doesn't distinguish HDR
1479 // transfer curves yet — so @c Auto resolves to the
1480 // SDR curve matching the primaries and callers must
1481 // set an explicit @c SMPTE2084 / @c ARIB_STD_B67 for
1482 // HDR content.
1483 PROMEKI_REGISTER_ENUM_TYPE("TransferCharacteristics", 255, {"BT709", 1}, {"Unspecified", 2},
1484 {"Gamma22", 4}, {"Gamma28", 5}, {"SMPTE170M", 6}, {"SMPTE240M", 7},
1485 {"Linear", 8}, {"Log", 9}, {"LogSqrt", 10}, {"IEC61966_2_4", 11},
1486 {"BT1361", 12}, {"SRGB", 13}, {"BT2020_10", 14}, {"BT2020_12", 15},
1487 {"SMPTE2084", 16}, {"SMPTE428", 17}, {"ARIB_STD_B67", 18},
1488 {"Auto", 255}); // default: Auto
1489
1490 using TypedEnum<TransferCharacteristics>::TypedEnum;
1491
1492 static const TransferCharacteristics Auto;
1493 static const TransferCharacteristics Unspecified;
1494 static const TransferCharacteristics BT709;
1495 static const TransferCharacteristics Gamma22;
1496 static const TransferCharacteristics Gamma28;
1497 static const TransferCharacteristics SMPTE170M;
1498 static const TransferCharacteristics SMPTE240M;
1499 static const TransferCharacteristics Linear;
1500 static const TransferCharacteristics Log;
1501 static const TransferCharacteristics LogSqrt;
1502 static const TransferCharacteristics IEC61966_2_4;
1503 static const TransferCharacteristics BT1361;
1504 static const TransferCharacteristics SRGB;
1505 static const TransferCharacteristics BT2020_10;
1506 static const TransferCharacteristics BT2020_12;
1507 static const TransferCharacteristics SMPTE2084;
1508 static const TransferCharacteristics SMPTE428;
1509 static const TransferCharacteristics ARIB_STD_B67;
1510};
1511
1512inline const TransferCharacteristics TransferCharacteristics::Auto{255};
1513inline const TransferCharacteristics TransferCharacteristics::Unspecified{2};
1514inline const TransferCharacteristics TransferCharacteristics::BT709{1};
1515inline const TransferCharacteristics TransferCharacteristics::Gamma22{4};
1516inline const TransferCharacteristics TransferCharacteristics::Gamma28{5};
1517inline const TransferCharacteristics TransferCharacteristics::SMPTE170M{6};
1518inline const TransferCharacteristics TransferCharacteristics::SMPTE240M{7};
1519inline const TransferCharacteristics TransferCharacteristics::Linear{8};
1520inline const TransferCharacteristics TransferCharacteristics::Log{9};
1521inline const TransferCharacteristics TransferCharacteristics::LogSqrt{10};
1522inline const TransferCharacteristics TransferCharacteristics::IEC61966_2_4{11};
1523inline const TransferCharacteristics TransferCharacteristics::BT1361{12};
1524inline const TransferCharacteristics TransferCharacteristics::SRGB{13};
1525inline const TransferCharacteristics TransferCharacteristics::BT2020_10{14};
1526inline const TransferCharacteristics TransferCharacteristics::BT2020_12{15};
1527inline const TransferCharacteristics TransferCharacteristics::SMPTE2084{16};
1528inline const TransferCharacteristics TransferCharacteristics::SMPTE428{17};
1529inline const TransferCharacteristics TransferCharacteristics::ARIB_STD_B67{18};
1530
1539class MatrixCoefficients : public TypedEnum<MatrixCoefficients> {
1540 public:
1541 // @c Auto (numeric 255) sits outside the 0..11 H.273
1542 // range. Encoders resolve @c Auto from the input
1543 // PixelFormat's ColorModel (RGB models → @c RGB,
1544 // YCbCr_Rec709 → @c BT709, YCbCr_Rec2020 → @c BT2020_NCL,
1545 // etc.) at session init time.
1546 PROMEKI_REGISTER_ENUM_TYPE("MatrixCoefficients", 255, {"RGB", 0}, {"BT709", 1}, {"Unspecified", 2},
1547 {"FCC", 4}, {"BT470BG", 5}, {"SMPTE170M", 6}, {"SMPTE240M", 7}, {"YCgCo", 8},
1548 {"BT2020_NCL", 9}, {"BT2020_CL", 10}, {"SMPTE2085", 11},
1549 {"Auto", 255}); // default: Auto
1550
1551 using TypedEnum<MatrixCoefficients>::TypedEnum;
1552
1553 static const MatrixCoefficients Auto;
1554 static const MatrixCoefficients Unspecified;
1555 static const MatrixCoefficients RGB;
1556 static const MatrixCoefficients BT709;
1557 static const MatrixCoefficients FCC;
1558 static const MatrixCoefficients BT470BG;
1559 static const MatrixCoefficients SMPTE170M;
1560 static const MatrixCoefficients SMPTE240M;
1561 static const MatrixCoefficients YCgCo;
1562 static const MatrixCoefficients BT2020_NCL;
1563 static const MatrixCoefficients BT2020_CL;
1564 static const MatrixCoefficients SMPTE2085;
1565};
1566
1567inline const MatrixCoefficients MatrixCoefficients::Auto{255};
1568inline const MatrixCoefficients MatrixCoefficients::Unspecified{2};
1569inline const MatrixCoefficients MatrixCoefficients::RGB{0};
1570inline const MatrixCoefficients MatrixCoefficients::BT709{1};
1571inline const MatrixCoefficients MatrixCoefficients::FCC{4};
1572inline const MatrixCoefficients MatrixCoefficients::BT470BG{5};
1573inline const MatrixCoefficients MatrixCoefficients::SMPTE170M{6};
1574inline const MatrixCoefficients MatrixCoefficients::SMPTE240M{7};
1575inline const MatrixCoefficients MatrixCoefficients::YCgCo{8};
1576inline const MatrixCoefficients MatrixCoefficients::BT2020_NCL{9};
1577inline const MatrixCoefficients MatrixCoefficients::BT2020_CL{10};
1578inline const MatrixCoefficients MatrixCoefficients::SMPTE2085{11};
1579
1595class NullPacingMode : public TypedEnum<NullPacingMode> {
1596 public:
1597 PROMEKI_REGISTER_ENUM_TYPE("NullPacingMode", 0, {"Wallclock", 0}, {"Free", 1});
1598
1599 using TypedEnum<NullPacingMode>::TypedEnum;
1600
1601 static const NullPacingMode Wallclock;
1602 static const NullPacingMode Free;
1603};
1604
1605inline const NullPacingMode NullPacingMode::Wallclock{0};
1606inline const NullPacingMode NullPacingMode::Free{1};
1607
1651class ChannelRole : public TypedEnum<ChannelRole> {
1652 public:
1653 PROMEKI_REGISTER_ENUM_TYPE("ChannelRole", 0, {"Unused", 0}, {"Mono", 1}, {"FrontLeft", 2},
1654 {"FrontRight", 3}, {"FrontCenter", 4}, {"LFE", 5}, {"BackLeft", 6},
1655 {"BackRight", 7}, {"BackCenter", 8}, {"SideLeft", 9}, {"SideRight", 10},
1656 {"FrontLeftOfCenter", 11}, {"FrontRightOfCenter", 12}, {"TopFrontLeft", 13},
1657 {"TopFrontCenter", 14}, {"TopFrontRight", 15}, {"TopBackLeft", 16},
1658 {"TopBackCenter", 17}, {"TopBackRight", 18}, {"TopCenter", 19},
1659 {"AmbisonicW", 20}, {"AmbisonicX", 21}, {"AmbisonicY", 22},
1660 {"AmbisonicZ", 23}, {"Aux0", 24}, {"Aux1", 25}, {"Aux2", 26}, {"Aux3", 27},
1661 {"Aux4", 28}, {"Aux5", 29}, {"Aux6", 30}, {"Aux7", 31});
1662
1663 using TypedEnum<ChannelRole>::TypedEnum;
1664
1665 static const ChannelRole Unused;
1666 static const ChannelRole Mono;
1667 static const ChannelRole FrontLeft;
1668 static const ChannelRole FrontRight;
1669 static const ChannelRole FrontCenter;
1670 static const ChannelRole LFE;
1671 static const ChannelRole BackLeft;
1672 static const ChannelRole BackRight;
1673 static const ChannelRole BackCenter;
1674 static const ChannelRole SideLeft;
1675 static const ChannelRole SideRight;
1676 static const ChannelRole FrontLeftOfCenter;
1677 static const ChannelRole FrontRightOfCenter;
1678 static const ChannelRole TopFrontLeft;
1679 static const ChannelRole TopFrontCenter;
1680 static const ChannelRole TopFrontRight;
1681 static const ChannelRole TopBackLeft;
1682 static const ChannelRole TopBackCenter;
1683 static const ChannelRole TopBackRight;
1684 static const ChannelRole TopCenter;
1685 static const ChannelRole AmbisonicW;
1686 static const ChannelRole AmbisonicX;
1687 static const ChannelRole AmbisonicY;
1688 static const ChannelRole AmbisonicZ;
1689 static const ChannelRole Aux0;
1690 static const ChannelRole Aux1;
1691 static const ChannelRole Aux2;
1692 static const ChannelRole Aux3;
1693 static const ChannelRole Aux4;
1694 static const ChannelRole Aux5;
1695 static const ChannelRole Aux6;
1696 static const ChannelRole Aux7;
1697};
1698
1699inline const ChannelRole ChannelRole::Unused{0};
1700inline const ChannelRole ChannelRole::Mono{1};
1701inline const ChannelRole ChannelRole::FrontLeft{2};
1702inline const ChannelRole ChannelRole::FrontRight{3};
1703inline const ChannelRole ChannelRole::FrontCenter{4};
1704inline const ChannelRole ChannelRole::LFE{5};
1705inline const ChannelRole ChannelRole::BackLeft{6};
1706inline const ChannelRole ChannelRole::BackRight{7};
1707inline const ChannelRole ChannelRole::BackCenter{8};
1708inline const ChannelRole ChannelRole::SideLeft{9};
1709inline const ChannelRole ChannelRole::SideRight{10};
1710inline const ChannelRole ChannelRole::FrontLeftOfCenter{11};
1711inline const ChannelRole ChannelRole::FrontRightOfCenter{12};
1712inline const ChannelRole ChannelRole::TopFrontLeft{13};
1713inline const ChannelRole ChannelRole::TopFrontCenter{14};
1714inline const ChannelRole ChannelRole::TopFrontRight{15};
1715inline const ChannelRole ChannelRole::TopBackLeft{16};
1716inline const ChannelRole ChannelRole::TopBackCenter{17};
1717inline const ChannelRole ChannelRole::TopBackRight{18};
1718inline const ChannelRole ChannelRole::TopCenter{19};
1719inline const ChannelRole ChannelRole::AmbisonicW{20};
1720inline const ChannelRole ChannelRole::AmbisonicX{21};
1721inline const ChannelRole ChannelRole::AmbisonicY{22};
1722inline const ChannelRole ChannelRole::AmbisonicZ{23};
1723inline const ChannelRole ChannelRole::Aux0{24};
1724inline const ChannelRole ChannelRole::Aux1{25};
1725inline const ChannelRole ChannelRole::Aux2{26};
1726inline const ChannelRole ChannelRole::Aux3{27};
1727inline const ChannelRole ChannelRole::Aux4{28};
1728inline const ChannelRole ChannelRole::Aux5{29};
1729inline const ChannelRole ChannelRole::Aux6{30};
1730inline const ChannelRole ChannelRole::Aux7{31};
1731
1746class NdiBandwidth : public TypedEnum<NdiBandwidth> {
1747 public:
1748 PROMEKI_REGISTER_ENUM_TYPE("NdiBandwidth", 0, {"Highest", 0}, {"Lowest", 1}, {"AudioOnly", 2},
1749 {"MetadataOnly", 3}); // default: Highest
1750
1751 using TypedEnum<NdiBandwidth>::TypedEnum;
1752
1753 static const NdiBandwidth Highest;
1754 static const NdiBandwidth Lowest;
1755 static const NdiBandwidth AudioOnly;
1756 static const NdiBandwidth MetadataOnly;
1757};
1758
1759inline const NdiBandwidth NdiBandwidth::Highest{0};
1760inline const NdiBandwidth NdiBandwidth::Lowest{1};
1761inline const NdiBandwidth NdiBandwidth::AudioOnly{2};
1762inline const NdiBandwidth NdiBandwidth::MetadataOnly{3};
1763
1788class NdiColorFormat : public TypedEnum<NdiColorFormat> {
1789 public:
1790 PROMEKI_REGISTER_ENUM_TYPE("NdiColorFormat", 0, {"Best", 0}, {"Fastest", 1}, {"UyvyBgra", 2},
1791 {"UyvyRgba", 3}, {"BgrxBgra", 4},
1792 {"RgbxRgba", 5}); // default: Fastest (see MediaConfig::NdiColorFormat)
1793
1794 using TypedEnum<NdiColorFormat>::TypedEnum;
1795
1796 static const NdiColorFormat Best;
1797 static const NdiColorFormat Fastest;
1798 static const NdiColorFormat UyvyBgra;
1799 static const NdiColorFormat UyvyRgba;
1800 static const NdiColorFormat BgrxBgra;
1801 static const NdiColorFormat RgbxRgba;
1802};
1803
1804inline const NdiColorFormat NdiColorFormat::Best{0};
1805inline const NdiColorFormat NdiColorFormat::Fastest{1};
1806inline const NdiColorFormat NdiColorFormat::UyvyBgra{2};
1807inline const NdiColorFormat NdiColorFormat::UyvyRgba{3};
1808inline const NdiColorFormat NdiColorFormat::BgrxBgra{4};
1809inline const NdiColorFormat NdiColorFormat::RgbxRgba{5};
1810
1832class NdiReceiveBitDepth : public TypedEnum<NdiReceiveBitDepth> {
1833 public:
1834 PROMEKI_REGISTER_ENUM_TYPE("NdiReceiveBitDepth", 0, {"Auto", 0}, {"Bits10", 10}, {"Bits12", 12},
1835 {"Bits16", 16}); // default: Auto
1836
1837 using TypedEnum<NdiReceiveBitDepth>::TypedEnum;
1838
1839 static const NdiReceiveBitDepth Auto;
1840 static const NdiReceiveBitDepth Bits10;
1841 static const NdiReceiveBitDepth Bits12;
1842 static const NdiReceiveBitDepth Bits16;
1843};
1844
1845inline const NdiReceiveBitDepth NdiReceiveBitDepth::Auto{0};
1846inline const NdiReceiveBitDepth NdiReceiveBitDepth::Bits10{10};
1847inline const NdiReceiveBitDepth NdiReceiveBitDepth::Bits12{12};
1848inline const NdiReceiveBitDepth NdiReceiveBitDepth::Bits16{16};
1849
1870class NetworkInterfaceKind : public TypedEnum<NetworkInterfaceKind> {
1871 public:
1872 PROMEKI_REGISTER_ENUM_TYPE("NetworkInterfaceKind", 0, {"Unknown", 0}, {"Ethernet", 1}, {"Wifi", 2},
1873 {"Loopback", 3}, {"Tunnel", 4}, {"Bridge", 5}, {"Vlan", 6}, {"Virtual", 7},
1874 {"Cellular", 8}, {"PointToPoint", 9}); // default: Unknown
1875
1876 using TypedEnum<NetworkInterfaceKind>::TypedEnum;
1877
1878 static const NetworkInterfaceKind Unknown;
1879 static const NetworkInterfaceKind Ethernet;
1880 static const NetworkInterfaceKind Wifi;
1881 static const NetworkInterfaceKind Loopback;
1882 static const NetworkInterfaceKind Tunnel;
1883 static const NetworkInterfaceKind Bridge;
1884 static const NetworkInterfaceKind Vlan;
1885 static const NetworkInterfaceKind Virtual;
1886 static const NetworkInterfaceKind Cellular;
1887 static const NetworkInterfaceKind PointToPoint;
1888};
1889
1890inline const NetworkInterfaceKind NetworkInterfaceKind::Unknown{0};
1891inline const NetworkInterfaceKind NetworkInterfaceKind::Ethernet{1};
1892inline const NetworkInterfaceKind NetworkInterfaceKind::Wifi{2};
1893inline const NetworkInterfaceKind NetworkInterfaceKind::Loopback{3};
1894inline const NetworkInterfaceKind NetworkInterfaceKind::Tunnel{4};
1895inline const NetworkInterfaceKind NetworkInterfaceKind::Bridge{5};
1896inline const NetworkInterfaceKind NetworkInterfaceKind::Vlan{6};
1897inline const NetworkInterfaceKind NetworkInterfaceKind::Virtual{7};
1898inline const NetworkInterfaceKind NetworkInterfaceKind::Cellular{8};
1899inline const NetworkInterfaceKind NetworkInterfaceKind::PointToPoint{9};
1900
1910class RtmpRole : public TypedEnum<RtmpRole> {
1911 public:
1912 PROMEKI_REGISTER_ENUM_TYPE("RtmpRole", 0, {"Client", 0}, {"Server", 1}); // default: Client
1913
1914 using TypedEnum<RtmpRole>::TypedEnum;
1915
1916 static const RtmpRole Client;
1917 static const RtmpRole Server;
1918};
1919
1920inline const RtmpRole RtmpRole::Client{0};
1921inline const RtmpRole RtmpRole::Server{1};
1922
1940class RtmpHandshakeMode : public TypedEnum<RtmpHandshakeMode> {
1941 public:
1942 PROMEKI_REGISTER_ENUM_TYPE("RtmpHandshakeMode", 0, {"Auto", 0}, {"Simple", 1},
1943 {"Complex", 2}); // default: Auto
1944
1945 using TypedEnum<RtmpHandshakeMode>::TypedEnum;
1946
1947 static const RtmpHandshakeMode Auto;
1948 static const RtmpHandshakeMode Simple;
1949 static const RtmpHandshakeMode Complex;
1950};
1951
1952inline const RtmpHandshakeMode RtmpHandshakeMode::Auto{0};
1953inline const RtmpHandshakeMode RtmpHandshakeMode::Simple{1};
1954inline const RtmpHandshakeMode RtmpHandshakeMode::Complex{2};
1955
1987class RtmpVideoPacing : public TypedEnum<RtmpVideoPacing> {
1988 public:
1989 PROMEKI_REGISTER_ENUM_TYPE("RtmpVideoPacing", 0, {"Internal", 0}, {"External", 1},
1990 {"None", 2}); // default: Internal
1991
1992 using TypedEnum<RtmpVideoPacing>::TypedEnum;
1993
1994 static const RtmpVideoPacing Internal;
1995 static const RtmpVideoPacing External;
1996 static const RtmpVideoPacing None;
1997};
1998
1999inline const RtmpVideoPacing RtmpVideoPacing::Internal{0};
2000inline const RtmpVideoPacing RtmpVideoPacing::External{1};
2001inline const RtmpVideoPacing RtmpVideoPacing::None{2};
2002
2035class AncCategory : public TypedEnum<AncCategory> {
2036 public:
2037 PROMEKI_REGISTER_ENUM_TYPE("AncCategory", 0, {"Unknown", 0}, {"Captions", 1}, {"Timecode", 2},
2038 {"Splice", 3}, {"Aspect", 4}, {"Hdr", 5}, {"AudioMetadata", 6},
2039 {"Display", 7}, {"Geolocation", 8}, {"PayloadId", 9},
2040 {"UserDefined", 10}, {"Subtitles", 11}, {"Klv", 12}, {"Sei", 13},
2041 {"Vbi", 14}, {"Control", 15}); // default: Unknown
2042
2043 using TypedEnum<AncCategory>::TypedEnum;
2044
2045 static const AncCategory Unknown;
2046 static const AncCategory Captions;
2047 static const AncCategory Timecode;
2048 static const AncCategory Splice;
2049 static const AncCategory Aspect;
2050 static const AncCategory Hdr;
2051 static const AncCategory AudioMetadata;
2052 static const AncCategory Display;
2053 static const AncCategory Geolocation;
2054 static const AncCategory PayloadId;
2055 static const AncCategory UserDefined;
2056 static const AncCategory Subtitles;
2057 static const AncCategory Klv;
2058 static const AncCategory Sei;
2059 static const AncCategory Vbi;
2066 static const AncCategory Control;
2067};
2068
2069inline const AncCategory AncCategory::Unknown{0};
2070inline const AncCategory AncCategory::Captions{1};
2071inline const AncCategory AncCategory::Timecode{2};
2072inline const AncCategory AncCategory::Splice{3};
2073inline const AncCategory AncCategory::Aspect{4};
2074inline const AncCategory AncCategory::Hdr{5};
2075inline const AncCategory AncCategory::AudioMetadata{6};
2076inline const AncCategory AncCategory::Display{7};
2077inline const AncCategory AncCategory::Geolocation{8};
2078inline const AncCategory AncCategory::PayloadId{9};
2079inline const AncCategory AncCategory::UserDefined{10};
2080inline const AncCategory AncCategory::Subtitles{11};
2081inline const AncCategory AncCategory::Klv{12};
2082inline const AncCategory AncCategory::Sei{13};
2083inline const AncCategory AncCategory::Vbi{14};
2084inline const AncCategory AncCategory::Control{15};
2085
2111class AncTransport : public TypedEnum<AncTransport> {
2112 public:
2113 PROMEKI_REGISTER_ENUM_TYPE("AncTransport", 0, {"Invalid", 0}, {"St291", 1}, {"NdiXml", 2},
2114 {"RtmpAmf", 3}, {"HdmiInfoFrame", 4}, {"MpegTsPrivate", 5},
2115 {"HlsSei", 6}); // default: Invalid
2116
2117 using TypedEnum<AncTransport>::TypedEnum;
2118
2119 static const AncTransport Invalid;
2120 static const AncTransport St291;
2121 static const AncTransport NdiXml;
2122 static const AncTransport RtmpAmf;
2123 static const AncTransport HdmiInfoFrame;
2124 static const AncTransport MpegTsPrivate;
2125 static const AncTransport HlsSei;
2126};
2127
2128inline const AncTransport AncTransport::Invalid{0};
2129inline const AncTransport AncTransport::St291{1};
2130inline const AncTransport AncTransport::NdiXml{2};
2131inline const AncTransport AncTransport::RtmpAmf{3};
2132inline const AncTransport AncTransport::HdmiInfoFrame{4};
2133inline const AncTransport AncTransport::MpegTsPrivate{5};
2134inline const AncTransport AncTransport::HlsSei{6};
2135
2149class AncFidelity : public TypedEnum<AncFidelity> {
2150 public:
2151 PROMEKI_REGISTER_ENUM_TYPE("AncFidelity", 0, {"Default", 0}, {"Strict", 1},
2152 {"Full", 2}); // default: Default
2153
2154 using TypedEnum<AncFidelity>::TypedEnum;
2155
2156 static const AncFidelity Default;
2157 static const AncFidelity Strict;
2158 static const AncFidelity Full;
2159};
2160
2161inline const AncFidelity AncFidelity::Default{0};
2162inline const AncFidelity AncFidelity::Strict{1};
2163inline const AncFidelity AncFidelity::Full{2};
2164
2180class AncChecksumPolicy : public TypedEnum<AncChecksumPolicy> {
2181 public:
2182 PROMEKI_REGISTER_ENUM_TYPE("AncChecksumPolicy", 0, {"PreserveOrRecompute", 0}, {"AlwaysRecompute", 1},
2183 {"StrictValidate", 2}); // default: PreserveOrRecompute
2184
2185 using TypedEnum<AncChecksumPolicy>::TypedEnum;
2186
2187 static const AncChecksumPolicy PreserveOrRecompute;
2188 static const AncChecksumPolicy AlwaysRecompute;
2189 static const AncChecksumPolicy StrictValidate;
2190};
2191
2192inline const AncChecksumPolicy AncChecksumPolicy::PreserveOrRecompute{0};
2193inline const AncChecksumPolicy AncChecksumPolicy::AlwaysRecompute{1};
2194inline const AncChecksumPolicy AncChecksumPolicy::StrictValidate{2};
2195
2210class AncOnUnsupported : public TypedEnum<AncOnUnsupported> {
2211 public:
2212 PROMEKI_REGISTER_ENUM_TYPE("AncOnUnsupported", 1, {"Skip", 0}, {"BestEffort", 1},
2213 {"Fail", 2}); // default: BestEffort
2214
2215 using TypedEnum<AncOnUnsupported>::TypedEnum;
2216
2217 static const AncOnUnsupported Skip;
2218 static const AncOnUnsupported BestEffort;
2219 static const AncOnUnsupported Fail;
2220};
2221
2222inline const AncOnUnsupported AncOnUnsupported::Skip{0};
2223inline const AncOnUnsupported AncOnUnsupported::BestEffort{1};
2224inline const AncOnUnsupported AncOnUnsupported::Fail{2};
2225
2245class SubtitleAnchor : public TypedEnum<SubtitleAnchor> {
2246 public:
2247 PROMEKI_REGISTER_ENUM_TYPE("SubtitleAnchor", 0, {"Default", 0}, {"BottomLeft", 1},
2248 {"BottomCenter", 2}, {"BottomRight", 3}, {"MiddleLeft", 4},
2249 {"MiddleCenter", 5}, {"MiddleRight", 6}, {"TopLeft", 7},
2250 {"TopCenter", 8}, {"TopRight", 9}); // default: Default
2251
2252 using TypedEnum<SubtitleAnchor>::TypedEnum;
2253
2254 static const SubtitleAnchor Default;
2255 static const SubtitleAnchor BottomLeft;
2256 static const SubtitleAnchor BottomCenter;
2257 static const SubtitleAnchor BottomRight;
2258 static const SubtitleAnchor MiddleLeft;
2259 static const SubtitleAnchor MiddleCenter;
2260 static const SubtitleAnchor MiddleRight;
2261 static const SubtitleAnchor TopLeft;
2262 static const SubtitleAnchor TopCenter;
2263 static const SubtitleAnchor TopRight;
2264};
2265
2266inline const SubtitleAnchor SubtitleAnchor::Default{0};
2267inline const SubtitleAnchor SubtitleAnchor::BottomLeft{1};
2268inline const SubtitleAnchor SubtitleAnchor::BottomCenter{2};
2269inline const SubtitleAnchor SubtitleAnchor::BottomRight{3};
2270inline const SubtitleAnchor SubtitleAnchor::MiddleLeft{4};
2271inline const SubtitleAnchor SubtitleAnchor::MiddleCenter{5};
2272inline const SubtitleAnchor SubtitleAnchor::MiddleRight{6};
2273inline const SubtitleAnchor SubtitleAnchor::TopLeft{7};
2274inline const SubtitleAnchor SubtitleAnchor::TopCenter{8};
2275inline const SubtitleAnchor SubtitleAnchor::TopRight{9};
2276
2308class SubtitleSource : public TypedEnum<SubtitleSource> {
2309 public:
2310 PROMEKI_REGISTER_ENUM_TYPE("SubtitleSource", 1, {"Metadata", 1}, {"Cea608Anc", 2},
2311 {"Cea708Anc", 3});
2312
2313 using TypedEnum<SubtitleSource>::TypedEnum;
2314
2315 static const SubtitleSource Metadata;
2316 static const SubtitleSource Cea608Anc;
2317 static const SubtitleSource Cea708Anc;
2318};
2319
2320inline const SubtitleSource SubtitleSource::Metadata{1};
2321inline const SubtitleSource SubtitleSource::Cea608Anc{2};
2322inline const SubtitleSource SubtitleSource::Cea708Anc{3};
2323
2345class CaptionMode : public TypedEnum<CaptionMode> {
2346 public:
2347 PROMEKI_REGISTER_ENUM_TYPE("CaptionMode", 0, {"Default", 0}, {"PopOn", 1}, {"PaintOn", 2},
2348 {"RollUp", 3}); // default: Default
2349
2350 using TypedEnum<CaptionMode>::TypedEnum;
2351
2352 static const CaptionMode Default;
2353 static const CaptionMode PopOn;
2354 static const CaptionMode PaintOn;
2355 static const CaptionMode RollUp;
2356};
2357
2358inline const CaptionMode CaptionMode::Default{0};
2359inline const CaptionMode CaptionMode::PopOn{1};
2360inline const CaptionMode CaptionMode::PaintOn{2};
2361inline const CaptionMode CaptionMode::RollUp{3};
2362
2372class SubtitleEdgeStyle : public TypedEnum<SubtitleEdgeStyle> {
2373 public:
2374 PROMEKI_REGISTER_ENUM_TYPE("SubtitleEdgeStyle", 0, {"None", 0}, {"Raised", 1}, {"Depressed", 2},
2375 {"Uniform", 3}, {"ShadowLeft", 4},
2376 {"ShadowRight", 5}); // default: None
2377
2378 using TypedEnum<SubtitleEdgeStyle>::TypedEnum;
2379
2380 static const SubtitleEdgeStyle None;
2381 static const SubtitleEdgeStyle Raised;
2382 static const SubtitleEdgeStyle Depressed;
2383 static const SubtitleEdgeStyle Uniform;
2384 static const SubtitleEdgeStyle ShadowLeft;
2385 static const SubtitleEdgeStyle ShadowRight;
2386};
2387
2388inline const SubtitleEdgeStyle SubtitleEdgeStyle::None{0};
2389inline const SubtitleEdgeStyle SubtitleEdgeStyle::Raised{1};
2390inline const SubtitleEdgeStyle SubtitleEdgeStyle::Depressed{2};
2391inline const SubtitleEdgeStyle SubtitleEdgeStyle::Uniform{3};
2392inline const SubtitleEdgeStyle SubtitleEdgeStyle::ShadowLeft{4};
2393inline const SubtitleEdgeStyle SubtitleEdgeStyle::ShadowRight{5};
2394
2409class SubtitleOpacity : public TypedEnum<SubtitleOpacity> {
2410 public:
2411 PROMEKI_REGISTER_ENUM_TYPE("SubtitleOpacity", 0, {"Solid", 0}, {"Flash", 1}, {"Translucent", 2},
2412 {"Transparent", 3}); // default: Solid
2413
2414 using TypedEnum<SubtitleOpacity>::TypedEnum;
2415
2416 static const SubtitleOpacity Solid;
2417 static const SubtitleOpacity Flash;
2418 static const SubtitleOpacity Translucent;
2419 static const SubtitleOpacity Transparent;
2420};
2421
2422inline const SubtitleOpacity SubtitleOpacity::Solid{0};
2423inline const SubtitleOpacity SubtitleOpacity::Flash{1};
2424inline const SubtitleOpacity SubtitleOpacity::Translucent{2};
2425inline const SubtitleOpacity SubtitleOpacity::Transparent{3};
2426
2436class SubtitleFontFace : public TypedEnum<SubtitleFontFace> {
2437 public:
2438 PROMEKI_REGISTER_ENUM_TYPE("SubtitleFontFace", 0, {"Default", 0}, {"MonoSerif", 1},
2439 {"ProportionalSerif", 2}, {"MonoSans", 3}, {"ProportionalSans", 4},
2440 {"Casual", 5}, {"Cursive", 6},
2441 {"SmallCaps", 7}); // default: Default
2442
2443 using TypedEnum<SubtitleFontFace>::TypedEnum;
2444
2445 static const SubtitleFontFace Default;
2446 static const SubtitleFontFace MonoSerif;
2447 static const SubtitleFontFace ProportionalSerif;
2448 static const SubtitleFontFace MonoSans;
2449 static const SubtitleFontFace ProportionalSans;
2450 static const SubtitleFontFace Casual;
2451 static const SubtitleFontFace Cursive;
2452 static const SubtitleFontFace SmallCaps;
2453};
2454
2455inline const SubtitleFontFace SubtitleFontFace::Default{0};
2456inline const SubtitleFontFace SubtitleFontFace::MonoSerif{1};
2457inline const SubtitleFontFace SubtitleFontFace::ProportionalSerif{2};
2458inline const SubtitleFontFace SubtitleFontFace::MonoSans{3};
2459inline const SubtitleFontFace SubtitleFontFace::ProportionalSans{4};
2460inline const SubtitleFontFace SubtitleFontFace::Casual{5};
2461inline const SubtitleFontFace SubtitleFontFace::Cursive{6};
2462inline const SubtitleFontFace SubtitleFontFace::SmallCaps{7};
2463
2485class CaptionCodec : public TypedEnum<CaptionCodec> {
2486 public:
2487 PROMEKI_REGISTER_ENUM_TYPE("CaptionCodec", 0, {"Cea608", 0}, {"Cea708", 1},
2488 {"Both", 2}); // default: Cea608
2489
2490 using TypedEnum<CaptionCodec>::TypedEnum;
2491
2492 static const CaptionCodec Cea608;
2493 static const CaptionCodec Cea708;
2494 static const CaptionCodec Both;
2495};
2496
2497inline const CaptionCodec CaptionCodec::Cea608{0};
2498inline const CaptionCodec CaptionCodec::Cea708{1};
2499inline const CaptionCodec CaptionCodec::Both{2};
2500
2520class VideoConnectorKind : public TypedEnum<VideoConnectorKind> {
2521 public:
2522 PROMEKI_REGISTER_ENUM_TYPE("VideoConnectorKind", 0, {"Auto", 0}, {"Sdi", 1}, {"Hdmi", 2},
2523 {"DisplayPort", 3}, {"Composite", 4}, {"Component", 5},
2524 {"SVideo", 6}, {"Sfp", 7}); // default: Auto
2525
2526 using TypedEnum<VideoConnectorKind>::TypedEnum;
2527
2528 static const VideoConnectorKind Auto;
2529 static const VideoConnectorKind Sdi;
2530 static const VideoConnectorKind Hdmi;
2531 static const VideoConnectorKind DisplayPort;
2532 static const VideoConnectorKind Composite;
2533 static const VideoConnectorKind Component;
2534 static const VideoConnectorKind SVideo;
2535 static const VideoConnectorKind Sfp;
2536};
2537
2538inline const VideoConnectorKind VideoConnectorKind::Auto{0};
2539inline const VideoConnectorKind VideoConnectorKind::Sdi{1};
2540inline const VideoConnectorKind VideoConnectorKind::Hdmi{2};
2541inline const VideoConnectorKind VideoConnectorKind::DisplayPort{3};
2542inline const VideoConnectorKind VideoConnectorKind::Composite{4};
2543inline const VideoConnectorKind VideoConnectorKind::Component{5};
2544inline const VideoConnectorKind VideoConnectorKind::SVideo{6};
2545inline const VideoConnectorKind VideoConnectorKind::Sfp{7};
2546
2573class SdiLinkStandard : public TypedEnum<SdiLinkStandard> {
2574 public:
2575 PROMEKI_REGISTER_ENUM_TYPE("SdiLinkStandard", 0,
2576 {"Auto", 0},
2577 {"SL_SD", 1},
2578 {"SL_HD", 2},
2579 {"DL_HD", 3},
2580 {"SL_3GA", 4},
2581 {"SL_3GB", 5},
2582 {"DL_3GB", 6},
2583 {"DL_3G", 7},
2584 {"QL_3G_SQD", 8},
2585 {"QL_3G_2SI", 9},
2586 {"SL_6G", 10},
2587 {"SL_12G", 11},
2588 {"SL_24G", 12}); // default: Auto
2589
2590 using TypedEnum<SdiLinkStandard>::TypedEnum;
2591
2592 static const SdiLinkStandard Auto;
2593 static const SdiLinkStandard SL_SD;
2594 static const SdiLinkStandard SL_HD;
2595 static const SdiLinkStandard DL_HD;
2596 static const SdiLinkStandard SL_3GA;
2597 static const SdiLinkStandard SL_3GB;
2598 static const SdiLinkStandard DL_3GB;
2599 static const SdiLinkStandard DL_3G;
2600 static const SdiLinkStandard QL_3G_SQD;
2601 static const SdiLinkStandard QL_3G_2SI;
2602 static const SdiLinkStandard SL_6G;
2603 static const SdiLinkStandard SL_12G;
2604 static const SdiLinkStandard SL_24G;
2605};
2606
2607inline const SdiLinkStandard SdiLinkStandard::Auto{0};
2608inline const SdiLinkStandard SdiLinkStandard::SL_SD{1};
2609inline const SdiLinkStandard SdiLinkStandard::SL_HD{2};
2610inline const SdiLinkStandard SdiLinkStandard::DL_HD{3};
2611inline const SdiLinkStandard SdiLinkStandard::SL_3GA{4};
2612inline const SdiLinkStandard SdiLinkStandard::SL_3GB{5};
2613inline const SdiLinkStandard SdiLinkStandard::DL_3GB{6};
2614inline const SdiLinkStandard SdiLinkStandard::DL_3G{7};
2615inline const SdiLinkStandard SdiLinkStandard::QL_3G_SQD{8};
2616inline const SdiLinkStandard SdiLinkStandard::QL_3G_2SI{9};
2617inline const SdiLinkStandard SdiLinkStandard::SL_6G{10};
2618inline const SdiLinkStandard SdiLinkStandard::SL_12G{11};
2619inline const SdiLinkStandard SdiLinkStandard::SL_24G{12};
2620
2663class SdiWireFormat : public TypedEnum<SdiWireFormat> {
2664 public:
2665 PROMEKI_REGISTER_ENUM_TYPE("SdiWireFormat", 0,
2666 {"Auto", 0},
2667 {"YCbCr_422_10", 1},
2668 {"YCbCr_422_12", 2},
2669 {"YCbCr_444_10", 3},
2670 {"YCbCr_444_12", 4},
2671 {"RGB_444_10", 5},
2672 {"RGB_444_12", 6},
2673 {"RGBA_444_10", 7}); // default: Auto
2674
2675 using TypedEnum<SdiWireFormat>::TypedEnum;
2676
2677 static const SdiWireFormat Auto;
2678 static const SdiWireFormat YCbCr_422_10;
2679 static const SdiWireFormat YCbCr_422_12;
2680 static const SdiWireFormat YCbCr_444_10;
2681 static const SdiWireFormat YCbCr_444_12;
2682 static const SdiWireFormat RGB_444_10;
2683 static const SdiWireFormat RGB_444_12;
2684 static const SdiWireFormat RGBA_444_10;
2685};
2686
2687inline const SdiWireFormat SdiWireFormat::Auto{0};
2688inline const SdiWireFormat SdiWireFormat::YCbCr_422_10{1};
2689inline const SdiWireFormat SdiWireFormat::YCbCr_422_12{2};
2690inline const SdiWireFormat SdiWireFormat::YCbCr_444_10{3};
2691inline const SdiWireFormat SdiWireFormat::YCbCr_444_12{4};
2692inline const SdiWireFormat SdiWireFormat::RGB_444_10{5};
2693inline const SdiWireFormat SdiWireFormat::RGB_444_12{6};
2694inline const SdiWireFormat SdiWireFormat::RGBA_444_10{7};
2695
2712class HdmiSpecVersion : public TypedEnum<HdmiSpecVersion> {
2713 public:
2714 PROMEKI_REGISTER_ENUM_TYPE("HdmiSpecVersion", 0,
2715 {"Auto", 0},
2716 {"Hdmi14", 1},
2717 {"Hdmi20", 2},
2718 {"Hdmi21", 3}); // default: Auto
2719
2720 using TypedEnum<HdmiSpecVersion>::TypedEnum;
2721
2722 static const HdmiSpecVersion Auto;
2723 static const HdmiSpecVersion Hdmi14;
2724 static const HdmiSpecVersion Hdmi20;
2725 static const HdmiSpecVersion Hdmi21;
2726};
2727
2728inline const HdmiSpecVersion HdmiSpecVersion::Auto{0};
2729inline const HdmiSpecVersion HdmiSpecVersion::Hdmi14{1};
2730inline const HdmiSpecVersion HdmiSpecVersion::Hdmi20{2};
2731inline const HdmiSpecVersion HdmiSpecVersion::Hdmi21{3};
2732
2753class VideoReferenceSource : public TypedEnum<VideoReferenceSource> {
2754 public:
2755 PROMEKI_REGISTER_ENUM_TYPE("VideoReferenceSource", 0,
2756 {"FreeRun", 0},
2757 {"Genlock", 1},
2758 {"External", 2},
2759 {"FromSignal", 3},
2760 {"Ptp", 4},
2761 {"Word", 5}); // default: FreeRun
2762
2763 using TypedEnum<VideoReferenceSource>::TypedEnum;
2764
2765 static const VideoReferenceSource FreeRun;
2766 static const VideoReferenceSource Genlock;
2767 static const VideoReferenceSource External;
2768 static const VideoReferenceSource FromSignal;
2769 static const VideoReferenceSource Ptp;
2770 static const VideoReferenceSource Word;
2771};
2772
2773inline const VideoReferenceSource VideoReferenceSource::FreeRun{0};
2774inline const VideoReferenceSource VideoReferenceSource::Genlock{1};
2775inline const VideoReferenceSource VideoReferenceSource::External{2};
2776inline const VideoReferenceSource VideoReferenceSource::FromSignal{3};
2777inline const VideoReferenceSource VideoReferenceSource::Ptp{4};
2778inline const VideoReferenceSource VideoReferenceSource::Word{5};
2779
2795class VideoReferenceRateFamily : public TypedEnum<VideoReferenceRateFamily> {
2796 public:
2797 PROMEKI_REGISTER_ENUM_TYPE("VideoReferenceRateFamily", 0,
2798 {"Auto", 0},
2799 {"Integer", 1},
2800 {"Fractional", 2}); // default: Auto
2801
2802 using TypedEnum<VideoReferenceRateFamily>::TypedEnum;
2803
2804 static const VideoReferenceRateFamily Auto;
2805 static const VideoReferenceRateFamily Integer;
2806 static const VideoReferenceRateFamily Fractional;
2807};
2808
2809inline const VideoReferenceRateFamily VideoReferenceRateFamily::Auto{0};
2810inline const VideoReferenceRateFamily VideoReferenceRateFamily::Integer{1};
2811inline const VideoReferenceRateFamily VideoReferenceRateFamily::Fractional{2};
2812
2815PROMEKI_NAMESPACE_END
2816
2825template <> struct std::hash<promeki::ChannelRole> {
2826 size_t operator()(const promeki::ChannelRole &v) const noexcept { return std::hash<int>()(v.value()); }
2827};
2828
2829#endif // PROMEKI_ENABLE_CORE