13#include <promeki/config.h>
14#if PROMEKI_ENABLE_CORE
18PROMEKI_NAMESPACE_BEGIN
32class MediaIOOpenMode :
public TypedEnum<MediaIOOpenMode> {
34 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"MediaIOOpenMode",
"Open Mode", 0,
35 {
"Read", 0,
"Read"}, {
"Write", 1,
"Write"});
37 using TypedEnum<MediaIOOpenMode>::TypedEnum;
39 static const MediaIOOpenMode Read;
40 static const MediaIOOpenMode Write;
43inline const MediaIOOpenMode MediaIOOpenMode::Read{0};
44inline const MediaIOOpenMode MediaIOOpenMode::Write{1};
65class MediaIODirection :
public TypedEnum<MediaIODirection> {
67 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"MediaIODirection",
"MediaIO Direction", 0,
68 {
"Source", 0,
"Source"}, {
"Sink", 1,
"Sink"},
69 {
"Transform", 2,
"Transform"});
71 using TypedEnum<MediaIODirection>::TypedEnum;
73 static const MediaIODirection Source;
74 static const MediaIODirection Sink;
75 static const MediaIODirection Transform;
78inline const MediaIODirection MediaIODirection::Source{0};
79inline const MediaIODirection MediaIODirection::Sink{1};
80inline const MediaIODirection MediaIODirection::Transform{2};
107class MediaPayloadKind :
public TypedEnum<MediaPayloadKind> {
109 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"MediaPayloadKind",
"Payload Kind", 0,
110 {
"Video", 0,
"Video"}, {
"Audio", 1,
"Audio"},
111 {
"Metadata", 2,
"Timed Metadata"}, {
"Subtitle", 3,
"Subtitle / Caption"},
112 {
"AncillaryData", 4,
"Ancillary Data"},
113 {
"Custom", 5,
"Custom"});
115 using TypedEnum<MediaPayloadKind>::TypedEnum;
117 static const MediaPayloadKind Video;
118 static const MediaPayloadKind Audio;
119 static const MediaPayloadKind Metadata;
120 static const MediaPayloadKind Subtitle;
121 static const MediaPayloadKind AncillaryData;
122 static const MediaPayloadKind Custom;
125inline const MediaPayloadKind MediaPayloadKind::Video{0};
126inline const MediaPayloadKind MediaPayloadKind::Audio{1};
127inline const MediaPayloadKind MediaPayloadKind::Metadata{2};
128inline const MediaPayloadKind MediaPayloadKind::Subtitle{3};
129inline const MediaPayloadKind MediaPayloadKind::AncillaryData{4};
130inline const MediaPayloadKind MediaPayloadKind::Custom{5};
158class FrameType :
public TypedEnum<FrameType> {
160 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"FrameType",
"Frame Type", 0,
161 {
"Unknown", 0,
"Unknown"}, {
"I", 1,
"Intra (I)"},
162 {
"P", 2,
"Predicted (P)"}, {
"B", 3,
"Bidirectional (B)"},
163 {
"IDR", 4,
"Instantaneous Decoder Refresh (IDR)"},
164 {
"BRef", 5,
"Referenced B-Frame"});
166 using TypedEnum<FrameType>::TypedEnum;
168 static const FrameType Unknown;
169 static const FrameType I;
170 static const FrameType P;
171 static const FrameType B;
172 static const FrameType IDR;
173 static const FrameType BRef;
176inline const FrameType FrameType::Unknown{0};
177inline const FrameType FrameType::I{1};
178inline const FrameType FrameType::P{2};
179inline const FrameType FrameType::B{3};
180inline const FrameType FrameType::IDR{4};
181inline const FrameType FrameType::BRef{5};
192class QuickTimeLayout :
public TypedEnum<QuickTimeLayout> {
194 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"QuickTimeLayout",
"QuickTime Layout", 1,
195 {
"Classic", 0,
"Classic (Single moov)"},
196 {
"Fragmented", 1,
"Fragmented (moof / mdat)"});
198 using TypedEnum<QuickTimeLayout>::TypedEnum;
200 static const QuickTimeLayout Classic;
201 static const QuickTimeLayout Fragmented;
204inline const QuickTimeLayout QuickTimeLayout::Classic{0};
205inline const QuickTimeLayout QuickTimeLayout::Fragmented{1};
226class QuickTimeCaptionReadPolicy :
public TypedEnum<QuickTimeCaptionReadPolicy> {
228 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"QuickTimeCaptionReadPolicy",
"QuickTime Caption Read Policy", 0,
229 {
"Auto", 0,
"Auto (merge c608 only if ANC has no captions)"},
230 {
"VancOnly", 1,
"VANC only (ignore the c608 track)"},
231 {
"CaptionTrackOnly", 2,
"Caption track only (c608 is the caption source)"});
233 using TypedEnum<QuickTimeCaptionReadPolicy>::TypedEnum;
235 static const QuickTimeCaptionReadPolicy Auto;
236 static const QuickTimeCaptionReadPolicy VancOnly;
237 static const QuickTimeCaptionReadPolicy CaptionTrackOnly;
240inline const QuickTimeCaptionReadPolicy QuickTimeCaptionReadPolicy::Auto{0};
241inline const QuickTimeCaptionReadPolicy QuickTimeCaptionReadPolicy::VancOnly{1};
242inline const QuickTimeCaptionReadPolicy QuickTimeCaptionReadPolicy::CaptionTrackOnly{2};
259class MpegTsAacFraming :
public TypedEnum<MpegTsAacFraming> {
261 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"MpegTsAacFraming",
"MPEG-TS AAC Framing", 0,
262 {
"Adts", 0,
"ADTS (stream_type 0x0F)"},
263 {
"Latm", 1,
"LATM (stream_type 0x11)"});
265 using TypedEnum<MpegTsAacFraming>::TypedEnum;
267 static const MpegTsAacFraming Adts;
268 static const MpegTsAacFraming Latm;
271inline const MpegTsAacFraming MpegTsAacFraming::Adts{0};
272inline const MpegTsAacFraming MpegTsAacFraming::Latm{1};
282class ImgSeqPathMode :
public TypedEnum<ImgSeqPathMode> {
284 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"ImgSeqPathMode",
"Image Sequence Path Mode", 0,
285 {
"Relative", 0,
"Relative Path"},
286 {
"Absolute", 1,
"Absolute Path"});
288 using TypedEnum<ImgSeqPathMode>::TypedEnum;
290 static const ImgSeqPathMode Relative;
291 static const ImgSeqPathMode Absolute;
294inline const ImgSeqPathMode ImgSeqPathMode::Relative{0};
295inline const ImgSeqPathMode ImgSeqPathMode::Absolute{1};
311class SrtVideoPacing :
public TypedEnum<SrtVideoPacing> {
313 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"SrtVideoPacing",
"SRT Video Pacing", 0,
314 {
"Internal", 0,
"Internal Wall Clock"},
315 {
"External", 1,
"External Clock"},
316 {
"None", 2,
"None (Unpaced)"});
318 using TypedEnum<SrtVideoPacing>::TypedEnum;
320 static const SrtVideoPacing Internal;
321 static const SrtVideoPacing External;
322 static const SrtVideoPacing None;
325inline const SrtVideoPacing SrtVideoPacing::Internal{0};
326inline const SrtVideoPacing SrtVideoPacing::External{1};
327inline const SrtVideoPacing SrtVideoPacing::None{2};
340class SrtMode :
public TypedEnum<SrtMode> {
342 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"SrtMode",
"SRT Mode", 0,
343 {
"Caller", 0,
"Caller (dial out)"},
344 {
"Listener", 1,
"Listener (accept one peer)"},
345 {
"Rendezvous", 2,
"Rendezvous (peer-to-peer)"});
347 using TypedEnum<SrtMode>::TypedEnum;
349 static const SrtMode Caller;
350 static const SrtMode Listener;
351 static const SrtMode Rendezvous;
354inline const SrtMode SrtMode::Caller{0};
355inline const SrtMode SrtMode::Listener{1};
356inline const SrtMode SrtMode::Rendezvous{2};