Tag Parser  7.1.0
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
matroskaid.cpp
Go to the documentation of this file.
1 #include "./matroskaid.h"
2 #include "./ebmlid.h"
3 
4 namespace TagParser {
5 
9 namespace MatroskaIds {
10 }
11 
15 namespace MatroskaTrackType {
16 }
17 
22 const char *matroskaIdName(uint32 matroskaId)
23 {
24  using namespace EbmlIds;
25  using namespace MatroskaIds;
26 
27  switch (matroskaId) {
28  // top-level IDs
29  case Header:
30  return "header";
31  case Version:
32  return "version";
33  case ReadVersion:
34  return "read version";
35  case MaxIdLength:
36  return "max id length";
37  case MaxSizeLength:
38  return "max size length";
39  case DocType:
40  return "document type";
41  case DocTypeVersion:
42  return "document version";
43  case DocTypeReadVersion:
44  return "document read version";
45  case Void:
46  return "void";
47  case Crc32:
48  return "CRC-32";
49  case Segment:
50  return "segment";
51  case SegmentInfo:
52  return "segment info";
53  case Tracks:
54  return "tracks";
55  case Cues:
56  return "cues";
57  case Tags:
58  return "tags";
59  case SeekHead:
60  return "seek head";
61  case Cluster:
62  return "cluster";
63  case Attachments:
64  return "attachments";
65  case Chapters:
66  return "chapters";
67 
68  // IDs in the SeekHead master
69  case Seek:
70  return "seek";
71 
72  // IDs in the Seek master
73  case SeekID:
74  return "seek id";
75  case SeekPosition:
76  return "seek position";
77 
78  // IDs in the SegmentInfo master
79  case TimeCodeScale:
80  return "time scale code";
81  case Duration:
82  return "duration";
83  case WrittingApp:
84  return "writing application";
85  case MuxingApp:
86  return "muxing application";
87  case DateUTC:
88  return "date UTC";
89  case SegmentUID:
90  return "unique segment ID";
91  case SegmentFileName:
92  return "segment file name";
93  case PrevUID:
94  return "previous unique id";
95  case PrevFileName:
96  return "previous file name";
97  case NexUID:
98  return "next unique ID";
99  case NextFileName:
100  return "next file name";
101  case Title:
102  return "title";
103  case SegmentFamily:
104  return "segment family";
105  case ChapterTranslate:
106  return "chapter translate";
107 
108  // IDs in ChapterTranslate master
110  return "chapter translate edition UID";
112  return "chapter translate codec";
113  case ChapterTranslateID:
114  return "chapter translate ID";
115 
116  // IDs in the Tracks master
117  case TrackEntry:
118  return "track entry";
119 
120  // IDs in the TrackEntry master
121  case TrackNumber:
122  return "track number";
123  case TrackUID:
124  return "unique track id";
125  case TrackType:
126  return "track type";
127  case TrackAudio:
128  return "audio track";
129  case TrackVideo:
130  return "video track";
131  case ContentEncodings:
132  return "content encodings";
133  case CodecID:
134  return "codec id";
135  case CodecPrivate:
136  return "codec private";
137  case CodecName:
138  return "codec name";
139  case TrackName:
140  return "track name";
141  case TrackLanguage:
142  return "track language";
143  case TrackFlagEnabled:
144  return "track enabled";
145  case TrackFlagDefault:
146  return "default track";
147  case TrackFlagForced:
148  return "forced track";
149  case TrackFlagLacing:
150  return "track lacing";
151  case MinCache:
152  return "track minimum cache";
153  case MaxCache:
154  return "track maximum cache";
155  case DefaultDuration:
156  return "track default duration";
157  case TrackTimeCodeScale:
158  return "track time code scale";
159  case MaxBlockAdditionId:
160  return "max block addition ID";
161  case AttachmentLink:
162  return "track attachment link";
163  case TrackOverlay:
164  return "track overlay";
165  case TrackTranslate:
166  return "track translate";
167  case TrackOffset:
168  return "track offset";
169  case CodecSettings:
170  return "codec settings";
171  case CodecInfoUrl:
172  return "codec info url";
173  case CodecDownloadUrl:
174  return "codec download url";
175  case CodecDecodeAll:
176  return "codec decode all";
177 
178  // IDs in the TrackTranslate master
180  return "track translate edition UID";
181  case TrackTranslateCodec:
182  return "track translate codec";
184  return "track translate ID";
185 
186  // IDs in the TrackVideo master
187  case FrameRate:
188  return "video frame rate";
189  case DisplayWidth:
190  return "video display width";
191  case DisplayHeight:
192  return "video display height";
193  case DisplayUnit:
194  return "video display unit";
195  case PixelWidth:
196  return "video pixel width";
197  case PixelHeight:
198  return "video pixel height";
199  case PixelCropBottom:
200  return "video pixel crop bottom";
201  case PixelCropTop:
202  return "video pixel crop top";
203  case PixelCropLeft:
204  return "video pixel crop left";
205  case PixelCropRight:
206  return "video pixel crop right";
207  case FlagInterlaced:
208  return "video flag interlaced";
209  case StereoMode:
210  return "video stereo mode";
211  case AspectRatioType:
212  return "video aspect ratio type";
213  case ColorSpace:
214  return "video color space";
215  case GammaValue:
216  return "video gamma value";
217 
218  // IDs in the TrackAudio master
219  case SamplingFrequency:
220  return "audio sampling frequence";
221  case BitDepth:
222  return "audio bit depth";
223  case Channels:
224  return "audio channels";
225  case ChannelsPositions:
226  return "audio channel positions";
228  return "audio output sample frequence";
229 
230  // IDs in the TrackOperation master
231  case TrackCombinePlanes:
232  return "track combine planes";
233  case TrackJoinBlocks:
234  return "track join blocks";
235 
236  // IDs in the TrackCombinePlanes master
237  case TrackPlane:
238  return "track plane";
239 
240  // IDs in the TrackPlane master
241  case TrackPlaneUID:
242  return "track plane UID";
243  case TrackPlaneType:
244  return "track plane type";
245 
246  // IDs in the TrackJoinBlocks master
247  case TrackJoinUID:
248  return "track join UID";
249 
250  // IDs in the ContentEncoding master
252  return "content encoding order";
254  return "content encoding scope";
255  case ContentEncodingType:
256  return "content encoding type";
257  case ContentCompression:
258  return "content encoding compression";
259  case ContentEncryption:
260  return "content encoding encryption";
261 
262  // IDs in the ContentEncryption master
263  case ContentEncAlgo:
264  return "content encryption algorithmus";
265  case ContentEncKeyID:
266  return "content encryption key ID";
267  case ContentSignature:
268  return "content encryption signature";
269  case ContentSigKeyID:
270  return "content encryption signature key ID";
271  case ContentSigAlgo:
272  return "content encryption signature algorithmus";
273  case ContentSigHashAlgo:
274  return "content encryption signature hash algorithmus";
275 
276  // IDs in the Tags master
277  case Tag:
278  return "tag";
279 
280  // IDs in the Tag master
281  case SimpleTag:
282  return "simple tag";
283  case Targets:
284  return "targets";
285 
286  // IDs in the SimpleTag master
287  case TagName:
288  return "tag name";
289  case TagString:
290  return "tag string";
291  case TagLanguage:
292  return "tag language";
293  case TagDefault:
294  return "tag default";
295  case TagBinary:
296  return "tag binary";
297 
298  // IDs in the Targets master
299  case TargetTypeValue:
300  return "target type value";
301  case TargetType:
302  return "target type";
303  case TagTrackUID:
304  return "tag track UID";
305  case TagEditionUID:
306  return "tag edition UID";
307  case TagChapterUID:
308  return "tag chapter UID";
309  case TagAttachmentUID:
310  return "tag attachment UID";
311 
312  // IDs in the Cues master
313  case CuePoint:
314  return "cue point";
315 
316  // IDs in the CuePoint master
317  case CueTime:
318  return "cue time";
319  case CueTrackPositions:
320  return "cue track positions";
321 
322  // IDs in the CueTrackPositions master
323  case CueTrack:
324  return "cue track";
325  case CueClusterPosition:
326  return "cue cluster position";
327  case CueRelativePosition:
328  return "cue relative position";
329  case CueDuration:
330  return "cue duration";
331  case CueBlockNumber:
332  return "cue block number";
333  case CueCodecState:
334  return "cue codec state";
335  case CueReference:
336  return "cue reference";
337 
338  // IDs in the CueReference master
339  case CueRefTime:
340  return "cue reference time";
341  case CueRefCluster:
342  return "cue reference cluster";
343  case CueRefNumber:
344  return "cue reference number";
345  case CueRefCodecState:
346  return "cue reference codec state";
347 
348  // IDs in the Attachments master
349  case AttachedFile:
350  return "attached file";
351 
352  // IDs in the AttachedFile master
353  case FileDescription:
354  return "file description";
355  case FileName:
356  return "file name";
357  case FileMimeType:
358  return "file mime type";
359  case FileData:
360  return "file data";
361  case FileUID:
362  return "file UID";
363  case FileReferral:
364  return "file referral";
365  case FileUsedStartTime:
366  return "file used start time";
367  case FileUsedEndTime:
368  return "file used end time";
369 
370  // IDs in the Chapters master
371  case EditionEntry:
372  return "edition entry";
373 
374  // IDs in the EditionEntry master
375  case EditionUID:
376  return "edition UID";
377  case EditionFlagHidden:
378  return "edition flag hidden";
379  case EditionFlagDefault:
380  return "edition flag default";
381  case EditionFlagOrdered:
382  return "edition flag ordered";
383  case ChapterAtom:
384  return "chapter atom";
385 
386  // IDs in the ChapterAtom master
387  case ChapterUID:
388  return "chapter UID";
389  case ChapterStringUID:
390  return "chapter string UID";
391  case ChapterTimeStart:
392  return "chapter time start";
393  case ChapterTimeEnd:
394  return "chapter time end";
395  case ChapterFlagHidden:
396  return "chapter flag hidden";
397  case ChapterFlagEnabled:
398  return "chapter flag enabled";
399  case ChapterSegmentUID:
400  return "chapter segment UID";
402  return "chapter segment edition UID";
404  return "chapter physical equiv";
405  case ChapterTrack:
406  return "chapter track";
407  case ChapterDisplay:
408  return "chapter display";
409  case ChapProcess:
410  return "chapter process";
411 
412  // IDs in the ChaptgerTrack master
413  case ChapterTrackNumber:
414  return "chapter track number";
415 
416  // IDs in the ChapterDisplay master
417  case ChapString:
418  return "chap string";
419  case ChapLanguage:
420  return "chap language";
421  case ChapCountry:
422  return "chap country";
423 
424  // IDs in the ChapProcess master
425  case ChapProcessCodecID:
426  return "chap process ID";
427  case ChapProcessPrivate:
428  return "chap process private";
429  case ChapProcessCommand:
430  return "chap process command";
431 
432  // IDs in the ChapProcessCommand master
433  case ChapProcessTime:
434  return "chap process time";
435  case ChapProcessData:
436  return "chap process data";
437 
438  // IDs in the Cluster master
439  case Timecode:
440  return "timecode";
441  case SilentTracks:
442  return "silent tracks";
443  case Position:
444  return "position";
445  case PrevSize:
446  return "previous size";
447  case SimpleBlock:
448  return "simple block";
449  case BlockGroup:
450  return "block group";
451  case EncryptedBlock:
452  return "encrypted block";
453 
454  // IDs in the SilentTracks master
455  case SilentTrackNumber:
456  return "silent track number";
457 
458  // IDs in the BlockGroup master
459  case Block:
460  return "block";
461  case BlockVirtual:
462  return "block virtual";
463  case BlockAdditions:
464  return "block additions";
465  case BlockDuration:
466  return "block duration";
467  case ReferencePriority:
468  return "reference priority";
469  case ReferenceBlock:
470  return "reference block";
471  case ReferenceVirtual:
472  return "reference virtual";
473  case CodecState:
474  return "codec state";
475  case DiscardPadding:
476  return "discard padding";
477  case Slices:
478  return "slices";
479  case ReferenceFrame:
480  return "reference frame";
481 
482  // IDs in the BlockAdditions master
483  case BlockMore:
484  return "block more";
485 
486  // IDs in the BlockMore master
487  case BlockAddID:
488  return "block add ID";
489  case BlockAdditional:
490  return "block additional";
491 
492  // IDs in the Slices master
493  case TimeSlice:
494  return "time slice";
495 
496  // IDs in the TimeSlice master
497  case LaceNumber:
498  return "lace number";
499  case FrameNumber:
500  return "frame number";
501  case BlockAdditionID:
502  return "block addition ID";
503  case Delay:
504  return "delay";
505  case SliceDuration:
506  return "slice duration";
507 
508  // IDs in the ReferenceFrame master
509  case ReferenceOffset:
510  return "reference offset";
511  case ReferenceTimeCode:
512  return "reference time code";
513 
514  default:
515  return "";
516  }
517 }
518 
524 {
525  using namespace EbmlIds;
526  using namespace MatroskaIds;
527  switch (matroskaId) {
528  case Header:
529  case Segment:
531  case SeekHead:
532  case SegmentInfo:
533  case Cluster:
534  case Tracks:
535  case Cues:
536  case Attachments:
537  case Chapters:
538  case Tags:
540  case Seek:
541  case SegmentUID:
542  case SegmentFileName:
543  case PrevUID:
544  case PrevFileName:
545  case NexUID:
546  case NextFileName:
547  case SegmentFamily:
548  case ChapterTranslate:
549  case TimeCodeScale:
550  case Duration:
551  case DateUTC:
552  case Title:
553  case MuxingApp:
554  case WrittingApp:
555  case Timecode:
556  case SilentTracks:
557  case Position:
558  case PrevSize:
559  case SimpleBlock:
560  case BlockGroup:
561  case EncryptedBlock:
562  case TrackEntry:
563  case CuePoint:
564  case AttachedFile:
565  case EditionEntry:
566  case Tag:
568  case SeekID:
569  case SeekPosition:
572  case ChapterTranslateID:
573  case SilentTrackNumber:
574  case BlockVirtual:
575  case BlockAdditions:
576  case BlockDuration:
577  case ReferencePriority:
578  case ReferenceBlock:
579  case ReferenceVirtual:
580  case CodecState:
581  case DiscardPadding:
582  case Slices:
583  case TrackNumber:
584  case TrackUID:
585  case TrackType:
586  case TrackFlagEnabled:
587  case TrackFlagDefault:
588  case TrackFlagForced:
589  case TrackFlagLacing:
590  case MinCache:
591  case MaxCache:
592  case DefaultDuration:
594  case TrackTimeCodeScale:
595  case TrackOffset:
596  case MaxBlockAdditionId:
597  case TrackName:
598  case TrackLanguage:
599  case CodecID:
600  case CodecPrivate:
601  case CodecName:
602  case AttachmentLink:
603  case CodecSettings:
604  case CodecInfoUrl:
605  case CodecDownloadUrl:
606  case CodecDecodeAll:
607  case TrackOverlay:
608  case CodecDelay:
609  case SeekPreRoll:
610  case TrackTranslate:
611  case TrackVideo:
612  case TrackAudio:
613  case ContentEncodings:
614  case CueTime:
615  case CueTrackPositions:
616  case FileDescription:
617  case FileName:
618  case FileMimeType:
619  case FileData:
620  case FileUID:
621  case FileReferral:
622  case FileUsedStartTime:
623  case FileUsedEndTime:
624  case EditionUID:
625  case EditionFlagHidden:
626  case EditionFlagDefault:
627  case EditionFlagOrdered:
628  case Targets:
630  case BlockMore:
631  case TimeSlice:
632  case ContentEncoding:
633  case CueTrack:
634  case CueClusterPosition:
635  case CueRelativePosition:
636  case CueDuration:
637  case CueBlockNumber:
638  case CueCodecState:
639  case CueReference:
640  case TargetTypeValue:
641  case TargetType:
642  case TagTrackUID:
643  case TagEditionUID:
644  case TagChapterUID:
645  case TagAttachmentUID:
647  case BlockAddID:
648  case BlockAdditional:
649  case LaceNumber:
650  case FrameNumber:
651  case BlockAdditionID:
652  case Delay:
653  case SliceDuration:
654  case ReferenceFrame:
655  case ReferenceOffset:
656  case ReferenceTimeCode:
657  case CueRefTime:
658  case CueRefCluster:
659  case CueRefNumber:
660  case CueRefCodecState:
662  case Void:
663  case Crc32:
665  default:
667  }
668 }
669 
670 } // namespace TagParser
TAG_PARSER_EXPORT MatroskaElementLevel matroskaIdLevel(uint32 matroskaId)
Returns the level at which elements with the specified matroskaId are supposed to occur in a Matroska...
Definition: matroskaid.cpp:523
MatroskaElementLevel
Definition: matroskaid.h:406
Contains all classes and functions of the TagInfo library.
Definition: aaccodebook.h:9
TrackType
Specifies the track type.
Definition: abstracttrack.h:28
TAG_PARSER_EXPORT const char * matroskaIdName(uint32 matroskaId)
Returns a string for the specified matroskaId if known; otherwise returns an empty string...
Definition: matroskaid.cpp:22