13#include <promeki/config.h>
14#if PROMEKI_ENABLE_CORE
18PROMEKI_NAMESPACE_BEGIN
55class AncCategory :
public TypedEnum<AncCategory> {
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"});
71 using TypedEnum<AncCategory>::TypedEnum;
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;
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};
139class AncTransport :
public TypedEnum<AncTransport> {
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"});
149 using TypedEnum<AncTransport>::TypedEnum;
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;
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};
195class AncTransmissionModel :
public TypedEnum<AncTransmissionModel> {
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)"});
202 using TypedEnum<AncTransmissionModel>::TypedEnum;
204 static const AncTransmissionModel Unsignalled;
205 static const AncTransmissionModel Lltm;
206 static const AncTransmissionModel Ctm;
209inline const AncTransmissionModel AncTransmissionModel::Unsignalled{0};
210inline const AncTransmissionModel AncTransmissionModel::Lltm{1};
211inline const AncTransmissionModel AncTransmissionModel::Ctm{2};
226class AncFidelity :
public TypedEnum<AncFidelity> {
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)"});
232 using TypedEnum<AncFidelity>::TypedEnum;
234 static const AncFidelity Default;
235 static const AncFidelity Strict;
236 static const AncFidelity Full;
239inline const AncFidelity AncFidelity::Default{0};
240inline const AncFidelity AncFidelity::Strict{1};
241inline const AncFidelity AncFidelity::Full{2};
263class AncDetailSeverity :
public TypedEnum<AncDetailSeverity> {
265 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"AncDetailSeverity",
"ANC Detail Severity", 0,
266 {
"Info", 0,
"Info"}, {
"Warning", 1,
"Warning"},
267 {
"Error", 2,
"Error"});
269 using TypedEnum<AncDetailSeverity>::TypedEnum;
271 static const AncDetailSeverity Info;
272 static const AncDetailSeverity Warning;
273 static const AncDetailSeverity Error;
276inline const AncDetailSeverity AncDetailSeverity::Info{0};
277inline const AncDetailSeverity AncDetailSeverity::Warning{1};
278inline const AncDetailSeverity AncDetailSeverity::Error{2};
295class AncChecksumPolicy :
public TypedEnum<AncChecksumPolicy> {
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"});
302 using TypedEnum<AncChecksumPolicy>::TypedEnum;
304 static const AncChecksumPolicy PreserveOrRecompute;
305 static const AncChecksumPolicy AlwaysRecompute;
306 static const AncChecksumPolicy StrictValidate;
309inline const AncChecksumPolicy AncChecksumPolicy::PreserveOrRecompute{0};
310inline const AncChecksumPolicy AncChecksumPolicy::AlwaysRecompute{1};
311inline const AncChecksumPolicy AncChecksumPolicy::StrictValidate{2};
327class AncOnUnsupported :
public TypedEnum<AncOnUnsupported> {
329 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"AncOnUnsupported",
"On Unsupported Input", 1,
330 {
"Skip", 0,
"Skip"}, {
"BestEffort", 1,
"Best Effort"},
331 {
"Fail", 2,
"Fail"});
333 using TypedEnum<AncOnUnsupported>::TypedEnum;
335 static const AncOnUnsupported Skip;
336 static const AncOnUnsupported BestEffort;
337 static const AncOnUnsupported Fail;
340inline const AncOnUnsupported AncOnUnsupported::Skip{0};
341inline const AncOnUnsupported AncOnUnsupported::BestEffort{1};
342inline const AncOnUnsupported AncOnUnsupported::Fail{2};