libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
enums_anc.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
55class AncCategory : public TypedEnum<AncCategory> {
56 public:
57 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("AncCategory", "Ancillary Data Category", 0,
58 {"Unknown", 0, "Unknown"}, {"Captions", 1, "Closed Captions"},
59 {"Timecode", 2, "Timecode (ATC LTC / VITC)"},
60 {"Splice", 3, "Splice Markers (SCTE-104 / 35)"},
61 {"Aspect", 4, "Aspect / AFD"}, {"Hdr", 5, "HDR Metadata"},
62 {"AudioMetadata", 6, "Audio Metadata"},
63 {"Display", 7, "Display Hints"},
64 {"Geolocation", 8, "Geolocation (MISB KLV)"},
65 {"PayloadId", 9, "Payload Identifier (SMPTE ST 352)"},
66 {"UserDefined", 10, "User Defined"}, {"Subtitles", 11, "Subtitles (RDD 8 / OP-47)"},
67 {"Klv", 12, "KLV Metadata (SMPTE ST 336)"}, {"Sei", 13, "SEI User Data"},
68 {"Vbi", 14, "VBI / Line-21 (ST 2031)"},
69 {"Control", 15, "Control / Management"}); // default: Unknown
70
71 using TypedEnum<AncCategory>::TypedEnum;
72
73 static const AncCategory Unknown;
74 static const AncCategory Captions;
75 static const AncCategory Timecode;
76 static const AncCategory Splice;
77 static const AncCategory Aspect;
78 static const AncCategory Hdr;
79 static const AncCategory AudioMetadata;
80 static const AncCategory Display;
81 static const AncCategory Geolocation;
82 static const AncCategory PayloadId;
83 static const AncCategory UserDefined;
84 static const AncCategory Subtitles;
85 static const AncCategory Klv;
86 static const AncCategory Sei;
87 static const AncCategory Vbi;
94 static const AncCategory Control;
95};
96
97inline const AncCategory AncCategory::Unknown{0};
98inline const AncCategory AncCategory::Captions{1};
99inline const AncCategory AncCategory::Timecode{2};
100inline const AncCategory AncCategory::Splice{3};
101inline const AncCategory AncCategory::Aspect{4};
102inline const AncCategory AncCategory::Hdr{5};
103inline const AncCategory AncCategory::AudioMetadata{6};
104inline const AncCategory AncCategory::Display{7};
105inline const AncCategory AncCategory::Geolocation{8};
106inline const AncCategory AncCategory::PayloadId{9};
107inline const AncCategory AncCategory::UserDefined{10};
108inline const AncCategory AncCategory::Subtitles{11};
109inline const AncCategory AncCategory::Klv{12};
110inline const AncCategory AncCategory::Sei{13};
111inline const AncCategory AncCategory::Vbi{14};
112inline const AncCategory AncCategory::Control{15};
113
139class AncTransport : public TypedEnum<AncTransport> {
140 public:
141 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("AncTransport", "Ancillary Data Transport", 0,
142 {"Invalid", 0, "Invalid"}, {"St291", 1, "SMPTE ST 291 Packet"},
143 {"NdiXml", 2, "NDI Metadata (XML)"},
144 {"RtmpAmf", 3, "RTMP AMF0 Script Tag"},
145 {"HdmiInfoFrame", 4, "HDMI InfoFrame"},
146 {"MpegTsPrivate", 5, "MPEG-TS Private Section"},
147 {"HlsSei", 6, "HLS SEI User Data"}); // default: Invalid
148
149 using TypedEnum<AncTransport>::TypedEnum;
150
151 static const AncTransport Invalid;
152 static const AncTransport St291;
153 static const AncTransport NdiXml;
154 static const AncTransport RtmpAmf;
155 static const AncTransport HdmiInfoFrame;
156 static const AncTransport MpegTsPrivate;
157 static const AncTransport HlsSei;
158};
159
160inline const AncTransport AncTransport::Invalid{0};
161inline const AncTransport AncTransport::St291{1};
162inline const AncTransport AncTransport::NdiXml{2};
163inline const AncTransport AncTransport::RtmpAmf{3};
164inline const AncTransport AncTransport::HdmiInfoFrame{4};
165inline const AncTransport AncTransport::MpegTsPrivate{5};
166inline const AncTransport AncTransport::HlsSei{6};
167
195class AncTransmissionModel : public TypedEnum<AncTransmissionModel> {
196 public:
197 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("AncTransmissionModel", "ST 2110-40 Transmission Model", 0,
198 {"Unsignalled", 0, "Unsignalled"},
199 {"Lltm", 1, "Low-Latency Transmission Model (LLTM)"},
200 {"Ctm", 2, "Compatible Transmission Model (CTM)"}); // default: Unsignalled
201
202 using TypedEnum<AncTransmissionModel>::TypedEnum;
203
204 static const AncTransmissionModel Unsignalled;
205 static const AncTransmissionModel Lltm;
206 static const AncTransmissionModel Ctm;
207};
208
209inline const AncTransmissionModel AncTransmissionModel::Unsignalled{0};
210inline const AncTransmissionModel AncTransmissionModel::Lltm{1};
211inline const AncTransmissionModel AncTransmissionModel::Ctm{2};
212
226class AncFidelity : public TypedEnum<AncFidelity> {
227 public:
228 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("AncFidelity", "Translator Output Fidelity", 0,
229 {"Default", 0, "Default"}, {"Strict", 1, "Strict (Minimal Fields)"},
230 {"Full", 2, "Full (All Optional Fields)"}); // default: Default
231
232 using TypedEnum<AncFidelity>::TypedEnum;
233
234 static const AncFidelity Default;
235 static const AncFidelity Strict;
236 static const AncFidelity Full;
237};
238
239inline const AncFidelity AncFidelity::Default{0};
240inline const AncFidelity AncFidelity::Strict{1};
241inline const AncFidelity AncFidelity::Full{2};
242
263class AncDetailSeverity : public TypedEnum<AncDetailSeverity> {
264 public:
265 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("AncDetailSeverity", "ANC Detail Severity", 0,
266 {"Info", 0, "Info"}, {"Warning", 1, "Warning"},
267 {"Error", 2, "Error"}); // default: Info
268
269 using TypedEnum<AncDetailSeverity>::TypedEnum;
270
271 static const AncDetailSeverity Info;
272 static const AncDetailSeverity Warning;
273 static const AncDetailSeverity Error;
274};
275
276inline const AncDetailSeverity AncDetailSeverity::Info{0};
277inline const AncDetailSeverity AncDetailSeverity::Warning{1};
278inline const AncDetailSeverity AncDetailSeverity::Error{2};
279
295class AncChecksumPolicy : public TypedEnum<AncChecksumPolicy> {
296 public:
297 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("AncChecksumPolicy", "Checksum Policy", 0,
298 {"PreserveOrRecompute", 0, "Preserve or Recompute"},
299 {"AlwaysRecompute", 1, "Always Recompute"},
300 {"StrictValidate", 2, "Strict Validate"}); // default: PreserveOrRecompute
301
302 using TypedEnum<AncChecksumPolicy>::TypedEnum;
303
304 static const AncChecksumPolicy PreserveOrRecompute;
305 static const AncChecksumPolicy AlwaysRecompute;
306 static const AncChecksumPolicy StrictValidate;
307};
308
309inline const AncChecksumPolicy AncChecksumPolicy::PreserveOrRecompute{0};
310inline const AncChecksumPolicy AncChecksumPolicy::AlwaysRecompute{1};
311inline const AncChecksumPolicy AncChecksumPolicy::StrictValidate{2};
312
327class AncOnUnsupported : public TypedEnum<AncOnUnsupported> {
328 public:
329 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("AncOnUnsupported", "On Unsupported Input", 1,
330 {"Skip", 0, "Skip"}, {"BestEffort", 1, "Best Effort"},
331 {"Fail", 2, "Fail"}); // default: BestEffort
332
333 using TypedEnum<AncOnUnsupported>::TypedEnum;
334
335 static const AncOnUnsupported Skip;
336 static const AncOnUnsupported BestEffort;
337 static const AncOnUnsupported Fail;
338};
339
340inline const AncOnUnsupported AncOnUnsupported::Skip{0};
341inline const AncOnUnsupported AncOnUnsupported::BestEffort{1};
342inline const AncOnUnsupported AncOnUnsupported::Fail{2};
343
346PROMEKI_NAMESPACE_END
347
348#endif // PROMEKI_ENABLE_CORE