13#include <promeki/config.h>
14#if PROMEKI_ENABLE_CORE
18PROMEKI_NAMESPACE_BEGIN
42class SubtitleAnchor :
public TypedEnum<SubtitleAnchor> {
44 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"SubtitleAnchor",
"Subtitle Anchor Position", 0,
45 {
"Default", 0,
"Default (Unspecified)"},
46 {
"BottomLeft", 1,
"Bottom Left"},
47 {
"BottomCenter", 2,
"Bottom Center"},
48 {
"BottomRight", 3,
"Bottom Right"},
49 {
"MiddleLeft", 4,
"Middle Left"},
50 {
"MiddleCenter", 5,
"Middle Center"},
51 {
"MiddleRight", 6,
"Middle Right"},
52 {
"TopLeft", 7,
"Top Left"},
53 {
"TopCenter", 8,
"Top Center"},
54 {
"TopRight", 9,
"Top Right"});
56 using TypedEnum<SubtitleAnchor>::TypedEnum;
58 static const SubtitleAnchor Default;
59 static const SubtitleAnchor BottomLeft;
60 static const SubtitleAnchor BottomCenter;
61 static const SubtitleAnchor BottomRight;
62 static const SubtitleAnchor MiddleLeft;
63 static const SubtitleAnchor MiddleCenter;
64 static const SubtitleAnchor MiddleRight;
65 static const SubtitleAnchor TopLeft;
66 static const SubtitleAnchor TopCenter;
67 static const SubtitleAnchor TopRight;
70inline const SubtitleAnchor SubtitleAnchor::Default{0};
71inline const SubtitleAnchor SubtitleAnchor::BottomLeft{1};
72inline const SubtitleAnchor SubtitleAnchor::BottomCenter{2};
73inline const SubtitleAnchor SubtitleAnchor::BottomRight{3};
74inline const SubtitleAnchor SubtitleAnchor::MiddleLeft{4};
75inline const SubtitleAnchor SubtitleAnchor::MiddleCenter{5};
76inline const SubtitleAnchor SubtitleAnchor::MiddleRight{6};
77inline const SubtitleAnchor SubtitleAnchor::TopLeft{7};
78inline const SubtitleAnchor SubtitleAnchor::TopCenter{8};
79inline const SubtitleAnchor SubtitleAnchor::TopRight{9};
112class SubtitleSource :
public TypedEnum<SubtitleSource> {
114 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"SubtitleSource",
"Subtitle Source", 1,
115 {
"Metadata", 1,
"Frame Metadata"},
116 {
"Cea608Anc", 2,
"CEA-608 from ANC"},
117 {
"Cea708Anc", 3,
"CEA-708 from ANC"});
119 using TypedEnum<SubtitleSource>::TypedEnum;
121 static const SubtitleSource Metadata;
122 static const SubtitleSource Cea608Anc;
123 static const SubtitleSource Cea708Anc;
126inline const SubtitleSource SubtitleSource::Metadata{1};
127inline const SubtitleSource SubtitleSource::Cea608Anc{2};
128inline const SubtitleSource SubtitleSource::Cea708Anc{3};
151class CaptionMode :
public TypedEnum<CaptionMode> {
153 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"CaptionMode",
"Caption Display Mode", 0,
154 {
"Default", 0,
"Default (Encoder Decides)"},
155 {
"PopOn", 1,
"Pop-On"},
156 {
"PaintOn", 2,
"Paint-On"},
157 {
"RollUp", 3,
"Roll-Up"});
159 using TypedEnum<CaptionMode>::TypedEnum;
161 static const CaptionMode Default;
162 static const CaptionMode PopOn;
163 static const CaptionMode PaintOn;
164 static const CaptionMode RollUp;
167inline const CaptionMode CaptionMode::Default{0};
168inline const CaptionMode CaptionMode::PopOn{1};
169inline const CaptionMode CaptionMode::PaintOn{2};
170inline const CaptionMode CaptionMode::RollUp{3};
181class SubtitleEdgeStyle :
public TypedEnum<SubtitleEdgeStyle> {
183 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"SubtitleEdgeStyle",
"Subtitle Edge Style", 0,
185 {
"Raised", 1,
"Raised"},
186 {
"Depressed", 2,
"Depressed"},
187 {
"Uniform", 3,
"Uniform"},
188 {
"ShadowLeft", 4,
"Shadow Left"},
189 {
"ShadowRight", 5,
"Shadow Right"});
191 using TypedEnum<SubtitleEdgeStyle>::TypedEnum;
193 static const SubtitleEdgeStyle None;
194 static const SubtitleEdgeStyle Raised;
195 static const SubtitleEdgeStyle Depressed;
196 static const SubtitleEdgeStyle Uniform;
197 static const SubtitleEdgeStyle ShadowLeft;
198 static const SubtitleEdgeStyle ShadowRight;
201inline const SubtitleEdgeStyle SubtitleEdgeStyle::None{0};
202inline const SubtitleEdgeStyle SubtitleEdgeStyle::Raised{1};
203inline const SubtitleEdgeStyle SubtitleEdgeStyle::Depressed{2};
204inline const SubtitleEdgeStyle SubtitleEdgeStyle::Uniform{3};
205inline const SubtitleEdgeStyle SubtitleEdgeStyle::ShadowLeft{4};
206inline const SubtitleEdgeStyle SubtitleEdgeStyle::ShadowRight{5};
222class SubtitleOpacity :
public TypedEnum<SubtitleOpacity> {
224 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"SubtitleOpacity",
"Subtitle Opacity", 0,
225 {
"Solid", 0,
"Solid (Opaque)"},
226 {
"Flash", 1,
"Flashing"},
227 {
"Translucent", 2,
"Translucent"},
228 {
"Transparent", 3,
"Transparent"});
230 using TypedEnum<SubtitleOpacity>::TypedEnum;
232 static const SubtitleOpacity Solid;
233 static const SubtitleOpacity Flash;
234 static const SubtitleOpacity Translucent;
235 static const SubtitleOpacity Transparent;
238inline const SubtitleOpacity SubtitleOpacity::Solid{0};
239inline const SubtitleOpacity SubtitleOpacity::Flash{1};
240inline const SubtitleOpacity SubtitleOpacity::Translucent{2};
241inline const SubtitleOpacity SubtitleOpacity::Transparent{3};
252class SubtitleFontFace :
public TypedEnum<SubtitleFontFace> {
254 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"SubtitleFontFace",
"Subtitle Font Face", 0,
255 {
"Default", 0,
"Default"},
256 {
"MonoSerif", 1,
"Monospaced Serif"},
257 {
"ProportionalSerif", 2,
"Proportional Serif"},
258 {
"MonoSans", 3,
"Monospaced Sans-Serif"},
259 {
"ProportionalSans", 4,
"Proportional Sans-Serif"},
260 {
"Casual", 5,
"Casual"},
261 {
"Cursive", 6,
"Cursive"},
262 {
"SmallCaps", 7,
"Small Caps"});
264 using TypedEnum<SubtitleFontFace>::TypedEnum;
266 static const SubtitleFontFace Default;
267 static const SubtitleFontFace MonoSerif;
268 static const SubtitleFontFace ProportionalSerif;
269 static const SubtitleFontFace MonoSans;
270 static const SubtitleFontFace ProportionalSans;
271 static const SubtitleFontFace Casual;
272 static const SubtitleFontFace Cursive;
273 static const SubtitleFontFace SmallCaps;
276inline const SubtitleFontFace SubtitleFontFace::Default{0};
277inline const SubtitleFontFace SubtitleFontFace::MonoSerif{1};
278inline const SubtitleFontFace SubtitleFontFace::ProportionalSerif{2};
279inline const SubtitleFontFace SubtitleFontFace::MonoSans{3};
280inline const SubtitleFontFace SubtitleFontFace::ProportionalSans{4};
281inline const SubtitleFontFace SubtitleFontFace::Casual{5};
282inline const SubtitleFontFace SubtitleFontFace::Cursive{6};
283inline const SubtitleFontFace SubtitleFontFace::SmallCaps{7};
300class SubtitlePenSize :
public TypedEnum<SubtitlePenSize> {
302 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"SubtitlePenSize",
"Subtitle Pen Size", 1,
303 {
"Small", 0,
"Small"},
304 {
"Standard", 1,
"Standard"},
305 {
"Large", 2,
"Large"});
307 using TypedEnum<SubtitlePenSize>::TypedEnum;
309 static const SubtitlePenSize Small;
310 static const SubtitlePenSize Standard;
311 static const SubtitlePenSize Large;
314inline const SubtitlePenSize SubtitlePenSize::Small{0};
315inline const SubtitlePenSize SubtitlePenSize::Standard{1};
316inline const SubtitlePenSize SubtitlePenSize::Large{2};
332class SubtitlePenOffset :
public TypedEnum<SubtitlePenOffset> {
334 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"SubtitlePenOffset",
"Subtitle Pen Offset", 1,
335 {
"Subscript", 0,
"Subscript"},
336 {
"Normal", 1,
"Normal"},
337 {
"Superscript", 2,
"Superscript"});
339 using TypedEnum<SubtitlePenOffset>::TypedEnum;
341 static const SubtitlePenOffset Subscript;
342 static const SubtitlePenOffset Normal;
343 static const SubtitlePenOffset Superscript;
346inline const SubtitlePenOffset SubtitlePenOffset::Subscript{0};
347inline const SubtitlePenOffset SubtitlePenOffset::Normal{1};
348inline const SubtitlePenOffset SubtitlePenOffset::Superscript{2};
381class SubtitleTextTag :
public TypedEnum<SubtitleTextTag> {
383 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"SubtitleTextTag",
"Subtitle Text Tag", 0,
384 {
"Dialog", 0,
"Dialog"},
385 {
"SourceId", 1,
"Speaker Identification"},
386 {
"ElectronicallyReproduced", 2,
"Electronically Reproduced Voice"},
387 {
"DialogOtherLanguage", 3,
"Dialog (Other Language)"},
388 {
"Voiceover", 4,
"Voiceover"},
389 {
"AudibleTranslation", 5,
"Audible Translation"},
390 {
"SubtitleTranslation", 6,
"Subtitle Translation"},
391 {
"VoiceDescription", 7,
"Voice Description (DVS)"},
392 {
"Lyrics", 8,
"Lyrics"},
393 {
"EffectDescription", 9,
"Sound Effect Description"},
394 {
"ScoreDescription", 10,
"Music Description"},
395 {
"Expletive", 11,
"Expletive"},
396 {
"Reserved12", 12,
"Reserved (12)"},
397 {
"Reserved13", 13,
"Reserved (13)"},
398 {
"Reserved14", 14,
"Reserved (14)"},
399 {
"NotDisplayed", 15,
"Not Displayed (Metadata)"});
401 using TypedEnum<SubtitleTextTag>::TypedEnum;
403 static const SubtitleTextTag Dialog;
404 static const SubtitleTextTag SourceId;
405 static const SubtitleTextTag ElectronicallyReproduced;
406 static const SubtitleTextTag DialogOtherLanguage;
407 static const SubtitleTextTag Voiceover;
408 static const SubtitleTextTag AudibleTranslation;
409 static const SubtitleTextTag SubtitleTranslation;
410 static const SubtitleTextTag VoiceDescription;
411 static const SubtitleTextTag Lyrics;
412 static const SubtitleTextTag EffectDescription;
413 static const SubtitleTextTag ScoreDescription;
414 static const SubtitleTextTag Expletive;
415 static const SubtitleTextTag Reserved12;
416 static const SubtitleTextTag Reserved13;
417 static const SubtitleTextTag Reserved14;
418 static const SubtitleTextTag NotDisplayed;
421inline const SubtitleTextTag SubtitleTextTag::Dialog{0};
422inline const SubtitleTextTag SubtitleTextTag::SourceId{1};
423inline const SubtitleTextTag SubtitleTextTag::ElectronicallyReproduced{2};
424inline const SubtitleTextTag SubtitleTextTag::DialogOtherLanguage{3};
425inline const SubtitleTextTag SubtitleTextTag::Voiceover{4};
426inline const SubtitleTextTag SubtitleTextTag::AudibleTranslation{5};
427inline const SubtitleTextTag SubtitleTextTag::SubtitleTranslation{6};
428inline const SubtitleTextTag SubtitleTextTag::VoiceDescription{7};
429inline const SubtitleTextTag SubtitleTextTag::Lyrics{8};
430inline const SubtitleTextTag SubtitleTextTag::EffectDescription{9};
431inline const SubtitleTextTag SubtitleTextTag::ScoreDescription{10};
432inline const SubtitleTextTag SubtitleTextTag::Expletive{11};
433inline const SubtitleTextTag SubtitleTextTag::Reserved12{12};
434inline const SubtitleTextTag SubtitleTextTag::Reserved13{13};
435inline const SubtitleTextTag SubtitleTextTag::Reserved14{14};
436inline const SubtitleTextTag SubtitleTextTag::NotDisplayed{15};
459class CaptionCodec :
public TypedEnum<CaptionCodec> {
461 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"CaptionCodec",
"Caption Codec", 0,
462 {
"Cea608", 0,
"CEA-608 (Line 21)"},
463 {
"Cea708", 1,
"CEA-708 (DTVCC)"},
464 {
"Both", 2,
"CEA-608 and CEA-708"});
466 using TypedEnum<CaptionCodec>::TypedEnum;
468 static const CaptionCodec Cea608;
469 static const CaptionCodec Cea708;
470 static const CaptionCodec Both;
473inline const CaptionCodec CaptionCodec::Cea608{0};
474inline const CaptionCodec CaptionCodec::Cea708{1};
475inline const CaptionCodec CaptionCodec::Both{2};