libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
enums_mediaio.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
32class MediaIOOpenMode : public TypedEnum<MediaIOOpenMode> {
33 public:
34 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("MediaIOOpenMode", "Open Mode", 0,
35 {"Read", 0, "Read"}, {"Write", 1, "Write"}); // default: Read
36
37 using TypedEnum<MediaIOOpenMode>::TypedEnum;
38
39 static const MediaIOOpenMode Read;
40 static const MediaIOOpenMode Write;
41};
42
43inline const MediaIOOpenMode MediaIOOpenMode::Read{0};
44inline const MediaIOOpenMode MediaIOOpenMode::Write{1};
45
65class MediaIODirection : public TypedEnum<MediaIODirection> {
66 public:
67 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("MediaIODirection", "MediaIO Direction", 0,
68 {"Source", 0, "Source"}, {"Sink", 1, "Sink"},
69 {"Transform", 2, "Transform"}); // default: Source
70
71 using TypedEnum<MediaIODirection>::TypedEnum;
72
73 static const MediaIODirection Source;
74 static const MediaIODirection Sink;
75 static const MediaIODirection Transform;
76};
77
78inline const MediaIODirection MediaIODirection::Source{0};
79inline const MediaIODirection MediaIODirection::Sink{1};
80inline const MediaIODirection MediaIODirection::Transform{2};
81
107class MediaPayloadKind : public TypedEnum<MediaPayloadKind> {
108 public:
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"}); // default: Video
114
115 using TypedEnum<MediaPayloadKind>::TypedEnum;
116
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;
123};
124
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};
131
158class FrameType : public TypedEnum<FrameType> {
159 public:
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"}); // default: Unknown
165
166 using TypedEnum<FrameType>::TypedEnum;
167
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;
174};
175
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};
182
192class QuickTimeLayout : public TypedEnum<QuickTimeLayout> {
193 public:
194 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("QuickTimeLayout", "QuickTime Layout", 1,
195 {"Classic", 0, "Classic (Single moov)"},
196 {"Fragmented", 1, "Fragmented (moof / mdat)"}); // default: Fragmented
197
198 using TypedEnum<QuickTimeLayout>::TypedEnum;
199
200 static const QuickTimeLayout Classic;
201 static const QuickTimeLayout Fragmented;
202};
203
204inline const QuickTimeLayout QuickTimeLayout::Classic{0};
205inline const QuickTimeLayout QuickTimeLayout::Fragmented{1};
206
226class QuickTimeCaptionReadPolicy : public TypedEnum<QuickTimeCaptionReadPolicy> {
227 public:
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)"});
232
233 using TypedEnum<QuickTimeCaptionReadPolicy>::TypedEnum;
234
235 static const QuickTimeCaptionReadPolicy Auto;
236 static const QuickTimeCaptionReadPolicy VancOnly;
237 static const QuickTimeCaptionReadPolicy CaptionTrackOnly;
238};
239
240inline const QuickTimeCaptionReadPolicy QuickTimeCaptionReadPolicy::Auto{0};
241inline const QuickTimeCaptionReadPolicy QuickTimeCaptionReadPolicy::VancOnly{1};
242inline const QuickTimeCaptionReadPolicy QuickTimeCaptionReadPolicy::CaptionTrackOnly{2};
243
259class MpegTsAacFraming : public TypedEnum<MpegTsAacFraming> {
260 public:
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)"}); // default: Adts
264
265 using TypedEnum<MpegTsAacFraming>::TypedEnum;
266
267 static const MpegTsAacFraming Adts;
268 static const MpegTsAacFraming Latm;
269};
270
271inline const MpegTsAacFraming MpegTsAacFraming::Adts{0};
272inline const MpegTsAacFraming MpegTsAacFraming::Latm{1};
273
282class ImgSeqPathMode : public TypedEnum<ImgSeqPathMode> {
283 public:
284 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("ImgSeqPathMode", "Image Sequence Path Mode", 0,
285 {"Relative", 0, "Relative Path"},
286 {"Absolute", 1, "Absolute Path"}); // default: Relative
287
288 using TypedEnum<ImgSeqPathMode>::TypedEnum;
289
290 static const ImgSeqPathMode Relative;
291 static const ImgSeqPathMode Absolute;
292};
293
294inline const ImgSeqPathMode ImgSeqPathMode::Relative{0};
295inline const ImgSeqPathMode ImgSeqPathMode::Absolute{1};
296
311class SrtVideoPacing : public TypedEnum<SrtVideoPacing> {
312 public:
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)"}); // default: Internal
317
318 using TypedEnum<SrtVideoPacing>::TypedEnum;
319
320 static const SrtVideoPacing Internal;
321 static const SrtVideoPacing External;
322 static const SrtVideoPacing None;
323};
324
325inline const SrtVideoPacing SrtVideoPacing::Internal{0};
326inline const SrtVideoPacing SrtVideoPacing::External{1};
327inline const SrtVideoPacing SrtVideoPacing::None{2};
328
340class SrtMode : public TypedEnum<SrtMode> {
341 public:
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)"}); // default: Caller
346
347 using TypedEnum<SrtMode>::TypedEnum;
348
349 static const SrtMode Caller;
350 static const SrtMode Listener;
351 static const SrtMode Rendezvous;
352};
353
354inline const SrtMode SrtMode::Caller{0};
355inline const SrtMode SrtMode::Listener{1};
356inline const SrtMode SrtMode::Rendezvous{2};
357
360PROMEKI_NAMESPACE_END
361
362#endif // PROMEKI_ENABLE_CORE