Coverage Report

Created: 2025-08-25 07:17

/src/vlc/contrib/x86_64-unknown-linux-gnu/include/matroska/KaxSemantic.h
Line
Count
Source (jump to first uncovered line)
1
/**********************************************************************
2
**  DO NOT EDIT, GENERATED WITH DATA2LIB
3
**  https://github.com/Matroska-Org/foundation-source/tree/master/spectool
4
**
5
**  libmatroska : parse Matroska files, see https://www.matroska.org/
6
**
7
**  Copyright (c) 2002-2022, Matroska (non-profit organisation)
8
**  All rights reserved.
9
**
10
** This file is part of libmatroska.
11
**
12
** This library is free software; you can redistribute it and/or
13
** modify it under the terms of the GNU Lesser General Public
14
** License as published by the Free Software Foundation; either
15
** version 2.1 of the License, or (at your option) any later version.
16
**
17
** This library is distributed in the hope that it will be useful,
18
** but WITHOUT ANY WARRANTY; without even the implied warranty of
19
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20
** Lesser General Public License for more details.
21
**
22
** You should have received a copy of the GNU Lesser General Public
23
** License along with this library; if not, write to the Free Software
24
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
25
**
26
** See http://www.gnu.org/licenses/lgpl-2.1.html for LGPL licensing information.**
27
** Contact license@matroska.org if any conditions of this licensing are
28
** not clear to you.
29
**
30
**********************************************************************/
31
32
33
#ifndef LIBMATROSKA_SEMANTIC_H
34
#define LIBMATROSKA_SEMANTIC_H
35
36
#include "matroska/KaxTypes.h"
37
#include "ebml/EbmlUInteger.h"
38
#include "ebml/EbmlSInteger.h"
39
#include "ebml/EbmlDate.h"
40
#include "ebml/EbmlFloat.h"
41
#include "ebml/EbmlString.h"
42
#include "ebml/EbmlUnicodeString.h"
43
#include "ebml/EbmlBinary.h"
44
#include "ebml/EbmlMaster.h"
45
#include "matroska/KaxDefines.h"
46
47
using namespace libebml;
48
49
namespace libmatroska {
50
DECLARE_MKX_BINARY (KaxSeekID)
51
public:
52
0
  bool ValidateSize() const override {return IsFiniteSize() && GetSize() <= 4;}
53
};
54
55
DECLARE_MKX_UINTEGER(KaxSeekPosition)
56
};
57
58
DECLARE_MKX_MASTER(KaxInfo)
59
};
60
61
DECLARE_MKX_BINARY (KaxSegmentUID)
62
#if defined(HAVE_EBML2) || defined(HAS_EBML2)
63
public:
64
  KaxSegmentUID(EBML_DEF_CONS EBML_DEF_SEP EBML_EXTRA_PARAM);
65
#endif
66
public:
67
10
  bool ValidateSize() const override {return IsFiniteSize() && GetSize() == 16;}
68
};
69
70
DECLARE_MKX_UNISTRING(KaxSegmentFilename)
71
};
72
73
DECLARE_MKX_UNISTRING(KaxPrevFilename)
74
};
75
76
DECLARE_MKX_UNISTRING(KaxNextFilename)
77
};
78
79
DECLARE_MKX_BINARY (KaxSegmentFamily)
80
public:
81
0
  bool ValidateSize() const override {return IsFiniteSize() && GetSize() == 16;}
82
};
83
84
DECLARE_MKX_MASTER(KaxChapterTranslate)
85
};
86
87
DECLARE_MKX_BINARY (KaxChapterTranslateID)
88
};
89
90
DECLARE_MKX_UINTEGER(KaxChapterTranslateCodec)
91
};
92
93
DECLARE_MKX_UINTEGER(KaxChapterTranslateEditionUID)
94
};
95
96
DECLARE_MKX_UINTEGER(KaxTimecodeScale)
97
};
98
99
DECLARE_MKX_FLOAT(KaxDuration)
100
};
101
102
DECLARE_MKX_DATE    (KaxDateUTC)
103
};
104
105
DECLARE_MKX_UNISTRING(KaxTitle)
106
};
107
108
DECLARE_MKX_UNISTRING(KaxMuxingApp)
109
};
110
111
DECLARE_MKX_UNISTRING(KaxWritingApp)
112
};
113
114
DECLARE_MKX_UINTEGER(KaxClusterTimecode)
115
};
116
117
DECLARE_MKX_MASTER(KaxClusterSilentTracks)
118
public:
119
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
120
};
121
122
DECLARE_MKX_UINTEGER(KaxClusterSilentTrackNumber)
123
public:
124
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
125
};
126
127
DECLARE_MKX_UINTEGER(KaxClusterPosition)
128
};
129
130
DECLARE_MKX_UINTEGER(KaxClusterPrevSize)
131
};
132
133
DECLARE_MKX_MASTER(KaxBlockAdditions)
134
};
135
136
DECLARE_MKX_MASTER(KaxBlockMore)
137
};
138
139
DECLARE_MKX_BINARY (KaxBlockAdditional)
140
};
141
142
DECLARE_MKX_UINTEGER(KaxBlockAddID)
143
};
144
145
DECLARE_MKX_UINTEGER(KaxBlockDuration)
146
};
147
148
DECLARE_MKX_UINTEGER(KaxReferencePriority)
149
};
150
151
DECLARE_MKX_SINTEGER(KaxReferenceVirtual)
152
public:
153
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
154
};
155
156
DECLARE_MKX_BINARY (KaxCodecState)
157
};
158
159
DECLARE_MKX_SINTEGER(KaxDiscardPadding)
160
};
161
162
DECLARE_MKX_MASTER(KaxSlices)
163
public:
164
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
165
};
166
167
DECLARE_MKX_MASTER(KaxTimeSlice)
168
public:
169
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
170
};
171
172
DECLARE_MKX_UINTEGER(KaxSliceLaceNumber)
173
public:
174
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
175
};
176
177
DECLARE_MKX_UINTEGER(KaxSliceFrameNumber)
178
public:
179
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
180
};
181
182
DECLARE_MKX_UINTEGER(KaxSliceBlockAddID)
183
public:
184
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
185
};
186
187
DECLARE_MKX_UINTEGER(KaxSliceDelay)
188
public:
189
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
190
};
191
192
DECLARE_MKX_UINTEGER(KaxSliceDuration)
193
public:
194
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
195
};
196
197
DECLARE_MKX_MASTER(KaxReferenceFrame)
198
public:
199
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
200
};
201
202
DECLARE_MKX_UINTEGER(KaxReferenceOffset)
203
public:
204
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
205
};
206
207
DECLARE_MKX_UINTEGER(KaxReferenceTimeCode)
208
public:
209
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
210
};
211
212
DECLARE_MKX_BINARY (KaxEncryptedBlock)
213
public:
214
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
215
};
216
217
DECLARE_MKX_MASTER(KaxTracks)
218
};
219
220
DECLARE_MKX_UINTEGER(KaxTrackNumber)
221
};
222
223
DECLARE_MKX_UINTEGER(KaxTrackUID)
224
};
225
226
DECLARE_MKX_UINTEGER(KaxTrackType)
227
};
228
229
DECLARE_MKX_UINTEGER(KaxTrackFlagEnabled)
230
};
231
232
DECLARE_MKX_UINTEGER(KaxTrackFlagDefault)
233
};
234
235
DECLARE_MKX_UINTEGER(KaxTrackFlagForced)
236
};
237
238
DECLARE_MKX_UINTEGER(KaxFlagHearingImpaired)
239
};
240
241
DECLARE_MKX_UINTEGER(KaxFlagVisualImpaired)
242
};
243
244
DECLARE_MKX_UINTEGER(KaxFlagTextDescriptions)
245
};
246
247
DECLARE_MKX_UINTEGER(KaxFlagOriginal)
248
};
249
250
DECLARE_MKX_UINTEGER(KaxFlagCommentary)
251
};
252
253
DECLARE_MKX_UINTEGER(KaxTrackFlagLacing)
254
};
255
256
DECLARE_MKX_UINTEGER(KaxTrackMinCache)
257
};
258
259
DECLARE_MKX_UINTEGER(KaxTrackMaxCache)
260
};
261
262
DECLARE_MKX_UINTEGER(KaxTrackDefaultDuration)
263
};
264
265
DECLARE_MKX_UINTEGER(KaxTrackDefaultDecodedFieldDuration)
266
};
267
268
DECLARE_MKX_FLOAT(KaxTrackTimecodeScale)
269
public:
270
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
271
};
272
273
DECLARE_MKX_SINTEGER(KaxTrackOffset)
274
public:
275
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
276
};
277
278
DECLARE_MKX_UINTEGER(KaxMaxBlockAdditionID)
279
};
280
281
DECLARE_MKX_MASTER(KaxBlockAdditionMapping)
282
};
283
284
DECLARE_MKX_UINTEGER(KaxBlockAddIDValue)
285
};
286
287
DECLARE_MKX_STRING(KaxBlockAddIDName)
288
};
289
290
DECLARE_MKX_UINTEGER(KaxBlockAddIDType)
291
};
292
293
DECLARE_MKX_BINARY (KaxBlockAddIDExtraData)
294
};
295
296
DECLARE_MKX_UNISTRING(KaxTrackName)
297
};
298
299
DECLARE_MKX_STRING(KaxTrackLanguage)
300
};
301
302
DECLARE_MKX_STRING(KaxLanguageIETF)
303
};
304
305
DECLARE_MKX_STRING(KaxCodecID)
306
};
307
308
DECLARE_MKX_BINARY (KaxCodecPrivate)
309
};
310
311
DECLARE_MKX_UNISTRING(KaxCodecName)
312
};
313
314
DECLARE_MKX_UINTEGER(KaxTrackAttachmentLink)
315
public:
316
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
317
};
318
319
DECLARE_MKX_UNISTRING(KaxCodecSettings)
320
public:
321
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
322
};
323
324
DECLARE_MKX_STRING(KaxCodecInfoURL)
325
public:
326
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
327
};
328
329
DECLARE_MKX_STRING(KaxCodecDownloadURL)
330
public:
331
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
332
};
333
334
DECLARE_MKX_UINTEGER(KaxCodecDecodeAll)
335
public:
336
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
337
};
338
339
DECLARE_MKX_UINTEGER(KaxTrackOverlay)
340
};
341
342
DECLARE_MKX_UINTEGER(KaxCodecDelay)
343
};
344
345
DECLARE_MKX_UINTEGER(KaxSeekPreRoll)
346
};
347
348
DECLARE_MKX_MASTER(KaxTrackTranslate)
349
};
350
351
DECLARE_MKX_BINARY (KaxTrackTranslateTrackID)
352
};
353
354
DECLARE_MKX_UINTEGER(KaxTrackTranslateCodec)
355
};
356
357
DECLARE_MKX_UINTEGER(KaxTrackTranslateEditionUID)
358
};
359
360
DECLARE_MKX_MASTER(KaxTrackVideo)
361
};
362
363
DECLARE_MKX_UINTEGER(KaxVideoFlagInterlaced)
364
};
365
366
DECLARE_MKX_UINTEGER(KaxVideoFieldOrder)
367
};
368
369
DECLARE_MKX_UINTEGER(KaxVideoStereoMode)
370
};
371
372
DECLARE_MKX_UINTEGER(KaxVideoAlphaMode)
373
};
374
375
DECLARE_MKX_UINTEGER(KaxOldStereoMode)
376
public:
377
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
378
};
379
380
DECLARE_MKX_UINTEGER(KaxVideoPixelWidth)
381
};
382
383
DECLARE_MKX_UINTEGER(KaxVideoPixelHeight)
384
};
385
386
DECLARE_MKX_UINTEGER(KaxVideoPixelCropBottom)
387
};
388
389
DECLARE_MKX_UINTEGER(KaxVideoPixelCropTop)
390
};
391
392
DECLARE_MKX_UINTEGER(KaxVideoPixelCropLeft)
393
};
394
395
DECLARE_MKX_UINTEGER(KaxVideoPixelCropRight)
396
};
397
398
DECLARE_MKX_UINTEGER(KaxVideoDisplayWidth)
399
};
400
401
DECLARE_MKX_UINTEGER(KaxVideoDisplayHeight)
402
};
403
404
DECLARE_MKX_UINTEGER(KaxVideoDisplayUnit)
405
};
406
407
DECLARE_MKX_UINTEGER(KaxVideoAspectRatio)
408
public:
409
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
410
};
411
412
DECLARE_MKX_BINARY (KaxVideoColourSpace)
413
public:
414
0
  bool ValidateSize() const override {return IsFiniteSize() && GetSize() == 4;}
415
};
416
417
DECLARE_MKX_FLOAT(KaxVideoGamma)
418
public:
419
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
420
};
421
422
DECLARE_MKX_FLOAT(KaxVideoFrameRate)
423
public:
424
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
425
};
426
427
DECLARE_MKX_MASTER(KaxVideoColour)
428
};
429
430
DECLARE_MKX_UINTEGER(KaxVideoColourMatrix)
431
};
432
433
DECLARE_MKX_UINTEGER(KaxVideoBitsPerChannel)
434
};
435
436
DECLARE_MKX_UINTEGER(KaxVideoChromaSubsampHorz)
437
};
438
439
DECLARE_MKX_UINTEGER(KaxVideoChromaSubsampVert)
440
};
441
442
DECLARE_MKX_UINTEGER(KaxVideoCbSubsampHorz)
443
};
444
445
DECLARE_MKX_UINTEGER(KaxVideoCbSubsampVert)
446
};
447
448
DECLARE_MKX_UINTEGER(KaxVideoChromaSitHorz)
449
};
450
451
DECLARE_MKX_UINTEGER(KaxVideoChromaSitVert)
452
};
453
454
DECLARE_MKX_UINTEGER(KaxVideoColourRange)
455
};
456
457
DECLARE_MKX_UINTEGER(KaxVideoColourTransferCharacter)
458
};
459
460
DECLARE_MKX_UINTEGER(KaxVideoColourPrimaries)
461
};
462
463
DECLARE_MKX_UINTEGER(KaxVideoColourMaxCLL)
464
};
465
466
DECLARE_MKX_UINTEGER(KaxVideoColourMaxFALL)
467
};
468
469
DECLARE_MKX_MASTER(KaxVideoColourMasterMeta)
470
};
471
472
DECLARE_MKX_FLOAT(KaxVideoRChromaX)
473
};
474
475
DECLARE_MKX_FLOAT(KaxVideoRChromaY)
476
};
477
478
DECLARE_MKX_FLOAT(KaxVideoGChromaX)
479
};
480
481
DECLARE_MKX_FLOAT(KaxVideoGChromaY)
482
};
483
484
DECLARE_MKX_FLOAT(KaxVideoBChromaX)
485
};
486
487
DECLARE_MKX_FLOAT(KaxVideoBChromaY)
488
};
489
490
DECLARE_MKX_FLOAT(KaxVideoWhitePointChromaX)
491
};
492
493
DECLARE_MKX_FLOAT(KaxVideoWhitePointChromaY)
494
};
495
496
DECLARE_MKX_FLOAT(KaxVideoLuminanceMax)
497
};
498
499
DECLARE_MKX_FLOAT(KaxVideoLuminanceMin)
500
};
501
502
DECLARE_MKX_MASTER(KaxVideoProjection)
503
};
504
505
DECLARE_MKX_UINTEGER(KaxVideoProjectionType)
506
};
507
508
DECLARE_MKX_BINARY (KaxVideoProjectionPrivate)
509
};
510
511
DECLARE_MKX_FLOAT(KaxVideoProjectionPoseYaw)
512
};
513
514
DECLARE_MKX_FLOAT(KaxVideoProjectionPosePitch)
515
};
516
517
DECLARE_MKX_FLOAT(KaxVideoProjectionPoseRoll)
518
};
519
520
DECLARE_MKX_MASTER(KaxTrackAudio)
521
};
522
523
DECLARE_MKX_FLOAT(KaxAudioSamplingFreq)
524
};
525
526
DECLARE_MKX_FLOAT(KaxAudioOutputSamplingFreq)
527
};
528
529
DECLARE_MKX_UINTEGER(KaxAudioChannels)
530
};
531
532
DECLARE_MKX_BINARY (KaxAudioPosition)
533
public:
534
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
535
};
536
537
DECLARE_MKX_UINTEGER(KaxAudioBitDepth)
538
};
539
540
DECLARE_MKX_UINTEGER(KaxEmphasis)
541
};
542
543
DECLARE_MKX_MASTER(KaxTrackOperation)
544
};
545
546
DECLARE_MKX_MASTER(KaxTrackCombinePlanes)
547
};
548
549
DECLARE_MKX_MASTER(KaxTrackPlane)
550
};
551
552
DECLARE_MKX_UINTEGER(KaxTrackPlaneUID)
553
};
554
555
DECLARE_MKX_UINTEGER(KaxTrackPlaneType)
556
};
557
558
DECLARE_MKX_MASTER(KaxTrackJoinBlocks)
559
};
560
561
DECLARE_MKX_UINTEGER(KaxTrackJoinUID)
562
};
563
564
DECLARE_MKX_UINTEGER(KaxTrickTrackUID)
565
public:
566
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
567
};
568
569
DECLARE_MKX_BINARY (KaxTrickTrackSegmentUID)
570
public:
571
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
572
0
  bool ValidateSize() const override {return IsFiniteSize() && GetSize() == 16;}
573
};
574
575
DECLARE_MKX_UINTEGER(KaxTrickTrackFlag)
576
public:
577
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
578
};
579
580
DECLARE_MKX_UINTEGER(KaxTrickMasterTrackUID)
581
public:
582
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
583
};
584
585
DECLARE_MKX_BINARY (KaxTrickMasterTrackSegmentUID)
586
public:
587
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
588
0
  bool ValidateSize() const override {return IsFiniteSize() && GetSize() == 16;}
589
};
590
591
DECLARE_MKX_MASTER(KaxContentEncodings)
592
};
593
594
DECLARE_MKX_MASTER(KaxContentEncoding)
595
};
596
597
DECLARE_MKX_UINTEGER(KaxContentEncodingOrder)
598
};
599
600
DECLARE_MKX_UINTEGER(KaxContentEncodingScope)
601
};
602
603
DECLARE_MKX_UINTEGER(KaxContentEncodingType)
604
};
605
606
DECLARE_MKX_MASTER(KaxContentCompression)
607
};
608
609
DECLARE_MKX_UINTEGER(KaxContentCompAlgo)
610
};
611
612
DECLARE_MKX_BINARY (KaxContentCompSettings)
613
};
614
615
DECLARE_MKX_MASTER(KaxContentEncryption)
616
};
617
618
DECLARE_MKX_UINTEGER(KaxContentEncAlgo)
619
};
620
621
DECLARE_MKX_BINARY (KaxContentEncKeyID)
622
};
623
624
DECLARE_MKX_MASTER(KaxContentEncAESSettings)
625
};
626
627
DECLARE_MKX_UINTEGER(KaxAESSettingsCipherMode)
628
};
629
630
DECLARE_MKX_BINARY (KaxContentSignature)
631
public:
632
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
633
};
634
635
DECLARE_MKX_BINARY (KaxContentSigKeyID)
636
public:
637
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
638
};
639
640
DECLARE_MKX_UINTEGER(KaxContentSigAlgo)
641
public:
642
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
643
};
644
645
DECLARE_MKX_UINTEGER(KaxContentSigHashAlgo)
646
public:
647
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
648
};
649
650
DECLARE_MKX_UINTEGER(KaxCueTime)
651
};
652
653
DECLARE_MKX_UINTEGER(KaxCueTrack)
654
};
655
656
DECLARE_MKX_UINTEGER(KaxCueClusterPosition)
657
};
658
659
DECLARE_MKX_UINTEGER(KaxCueRelativePosition)
660
};
661
662
DECLARE_MKX_UINTEGER(KaxCueDuration)
663
};
664
665
DECLARE_MKX_UINTEGER(KaxCueBlockNumber)
666
};
667
668
DECLARE_MKX_UINTEGER(KaxCueCodecState)
669
};
670
671
DECLARE_MKX_UINTEGER(KaxCueRefTime)
672
};
673
674
DECLARE_MKX_UINTEGER(KaxCueRefCluster)
675
public:
676
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
677
};
678
679
DECLARE_MKX_UINTEGER(KaxCueRefNumber)
680
public:
681
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
682
};
683
684
DECLARE_MKX_UINTEGER(KaxCueRefCodecState)
685
public:
686
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
687
};
688
689
DECLARE_MKX_MASTER(KaxAttachments)
690
};
691
692
DECLARE_MKX_MASTER(KaxAttached)
693
};
694
695
DECLARE_MKX_UNISTRING(KaxFileDescription)
696
};
697
698
DECLARE_MKX_UNISTRING(KaxFileName)
699
};
700
701
DECLARE_MKX_STRING(KaxMimeType)
702
};
703
704
DECLARE_MKX_BINARY (KaxFileData)
705
};
706
707
DECLARE_MKX_UINTEGER(KaxFileUID)
708
};
709
710
DECLARE_MKX_BINARY (KaxFileReferral)
711
public:
712
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
713
};
714
715
DECLARE_MKX_UINTEGER(KaxFileUsedStartTime)
716
public:
717
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
718
};
719
720
DECLARE_MKX_UINTEGER(KaxFileUsedEndTime)
721
public:
722
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
723
};
724
725
DECLARE_MKX_MASTER(KaxChapters)
726
};
727
728
DECLARE_MKX_MASTER(KaxEditionEntry)
729
};
730
731
DECLARE_MKX_UINTEGER(KaxEditionUID)
732
};
733
734
DECLARE_MKX_UINTEGER(KaxEditionFlagHidden)
735
};
736
737
DECLARE_MKX_UINTEGER(KaxEditionFlagDefault)
738
};
739
740
DECLARE_MKX_UINTEGER(KaxEditionFlagOrdered)
741
};
742
743
DECLARE_MKX_MASTER(KaxEditionDisplay)
744
};
745
746
DECLARE_MKX_UNISTRING(KaxEditionString)
747
};
748
749
DECLARE_MKX_STRING(KaxEditionLanguageIETF)
750
};
751
752
DECLARE_MKX_MASTER(KaxChapterAtom)
753
};
754
755
DECLARE_MKX_UINTEGER(KaxChapterUID)
756
};
757
758
DECLARE_MKX_UNISTRING(KaxChapterStringUID)
759
};
760
761
DECLARE_MKX_UINTEGER(KaxChapterTimeStart)
762
};
763
764
DECLARE_MKX_UINTEGER(KaxChapterTimeEnd)
765
};
766
767
DECLARE_MKX_UINTEGER(KaxChapterFlagHidden)
768
};
769
770
DECLARE_MKX_UINTEGER(KaxChapterFlagEnabled)
771
};
772
773
DECLARE_MKX_BINARY (KaxChapterSegmentUID)
774
public:
775
0
  bool ValidateSize() const override {return IsFiniteSize() && GetSize() == 16;}
776
};
777
778
DECLARE_MKX_UINTEGER(KaxChapterSkipType)
779
};
780
781
DECLARE_MKX_UINTEGER(KaxChapterSegmentEditionUID)
782
};
783
784
DECLARE_MKX_UINTEGER(KaxChapterPhysicalEquiv)
785
};
786
787
DECLARE_MKX_MASTER(KaxChapterTrack)
788
};
789
790
DECLARE_MKX_UINTEGER(KaxChapterTrackNumber)
791
};
792
793
DECLARE_MKX_MASTER(KaxChapterDisplay)
794
};
795
796
DECLARE_MKX_UNISTRING(KaxChapterString)
797
};
798
799
DECLARE_MKX_STRING(KaxChapterLanguage)
800
};
801
802
DECLARE_MKX_STRING(KaxChapLanguageIETF)
803
};
804
805
DECLARE_MKX_STRING(KaxChapterCountry)
806
};
807
808
DECLARE_MKX_MASTER(KaxChapterProcess)
809
};
810
811
DECLARE_MKX_UINTEGER(KaxChapterProcessCodecID)
812
};
813
814
DECLARE_MKX_BINARY (KaxChapterProcessPrivate)
815
};
816
817
DECLARE_MKX_MASTER(KaxChapterProcessCommand)
818
};
819
820
DECLARE_MKX_UINTEGER(KaxChapterProcessTime)
821
};
822
823
DECLARE_MKX_BINARY (KaxChapterProcessData)
824
};
825
826
DECLARE_MKX_MASTER(KaxTags)
827
};
828
829
DECLARE_MKX_MASTER(KaxTag)
830
};
831
832
DECLARE_MKX_MASTER(KaxTagTargets)
833
};
834
835
DECLARE_MKX_UINTEGER(KaxTagTargetTypeValue)
836
};
837
838
DECLARE_MKX_STRING(KaxTagTargetType)
839
};
840
841
DECLARE_MKX_UINTEGER(KaxTagTrackUID)
842
};
843
844
DECLARE_MKX_UINTEGER(KaxTagEditionUID)
845
};
846
847
DECLARE_MKX_UINTEGER(KaxTagChapterUID)
848
};
849
850
DECLARE_MKX_UINTEGER(KaxTagAttachmentUID)
851
};
852
853
DECLARE_MKX_MASTER(KaxTagSimple)
854
};
855
856
DECLARE_MKX_UNISTRING(KaxTagName)
857
};
858
859
DECLARE_MKX_STRING(KaxTagLangue)
860
};
861
862
DECLARE_MKX_STRING(KaxTagLanguageIETF)
863
};
864
865
DECLARE_MKX_UINTEGER(KaxTagDefault)
866
};
867
868
DECLARE_MKX_UINTEGER(KaxTagDefaultBogus)
869
public:
870
  filepos_t RenderData(IOCallback & output, bool bForceRender, bool bSaveDefault) override;
871
};
872
873
DECLARE_MKX_UNISTRING(KaxTagString)
874
};
875
876
DECLARE_MKX_BINARY (KaxTagBinary)
877
};
878
879
/**
880
 *The `TrackType` defines the type of each frame found in the Track.
881
The value **SHOULD** be stored on 1 octet.
882
 */
883
typedef enum {
884
  MATROSKA_TRACK_TYPE_VIDEO            = 0x1, // An image.
885
  MATROSKA_TRACK_TYPE_AUDIO            = 0x2, // Audio samples.
886
  MATROSKA_TRACK_TYPE_COMPLEX          = 0x3, // A mix of different other TrackType. The codec needs to define how the `Matroska Player` should interpret such data.
887
  MATROSKA_TRACK_TYPE_LOGO             = 0x10, // An image to be rendered over the video track(s).
888
  MATROSKA_TRACK_TYPE_SUBTITLE         = 0x11, // Subtitle or closed caption data to be rendered over the video track(s).
889
  MATROSKA_TRACK_TYPE_BUTTONS          = 0x12, // Interactive button(s) to be rendered over the video track(s).
890
  MATROSKA_TRACK_TYPE_CONTROL          = 0x20, // Metadata used to control the player of the `Matroska Player`.
891
  MATROSKA_TRACK_TYPE_METADATA         = 0x21, // Timed metadata that can be passed on to the `Matroska Player`.
892
} MatroskaTrackType;
893
894
/**
895
 *The compression algorithm used.
896
 */
897
typedef enum {
898
  MATROSKA_TRACK_ENCODING_COMP_NONE             = -1,
899
  MATROSKA_TRACK_ENCODING_COMP_ZLIB             = 0, // zlib compression [@!RFC1950].
900
  MATROSKA_TRACK_ENCODING_COMP_BZLIB            = 1, // bzip2 compression [@!BZIP2], **SHOULD NOT** be used; see usage notes.
901
  MATROSKA_TRACK_ENCODING_COMP_LZO1X            = 2, // Lempel-Ziv-Oberhumer compression [@!LZO], **SHOULD NOT** be used; see usage notes.
902
  MATROSKA_TRACK_ENCODING_COMP_HEADERSTRIP      = 3, // Octets in `ContentCompSettings` ((#contentcompsettings-element)) have been stripped from each frame.
903
} MatroskaTrackEncodingCompAlgo;
904
905
/**
906
 *This `ChapterTranslate` applies to this chapter codec of the given chapter edition(s); see (#chapprocesscodecid-element).
907
 */
908
typedef enum {
909
  MATROSKA_CHAPTERTRANSLATECODEC_MATROSKA_SCRIPT  = 0, // Chapter commands using the Matroska Script codec.
910
  MATROSKA_CHAPTERTRANSLATECODEC_DVD_MENU         = 1, // Chapter commands using the DVD-like codec.
911
} MatroskaChapterTranslateCodec;
912
913
/**
914
 *This `TrackTranslate` applies to this chapter codec of the given chapter edition(s); see (#chapprocesscodecid-element).
915
 */
916
typedef enum {
917
  MATROSKA_TRACKTRANSLATECODEC_MATROSKA_SCRIPT  = 0, // Chapter commands using the Matroska Script codec.
918
  MATROSKA_TRACKTRANSLATECODEC_DVD_MENU         = 1, // Chapter commands using the DVD-like codec.
919
} MatroskaTrackTranslateCodec;
920
921
/**
922
 *Specify whether the video frames in this track are interlaced or not.
923
 */
924
typedef enum {
925
  MATROSKA_VIDEO_FLAGINTERLACED_UNDETERMINED     = 0, // Unknown status.
926
  MATROSKA_VIDEO_FLAGINTERLACED_INTERLACED       = 1, // Interlaced frames.
927
  MATROSKA_VIDEO_FLAGINTERLACED_PROGRESSIVE      = 2, // No interlacing.
928
} MatroskaVideoFlagInterlaced;
929
930
/**
931
 *Specify the field ordering of video frames in this track.
932
 */
933
typedef enum {
934
  MATROSKA_VIDEO_FIELDORDER_PROGRESSIVE      = 0, // Interlaced frames.
935
  MATROSKA_VIDEO_FIELDORDER_TOPFIELDFIRST    = 1, // Top field displayed first. Top field stored first.
936
  MATROSKA_VIDEO_FIELDORDER_UNDETERMINED     = 2, // Unknown field order.
937
  MATROSKA_VIDEO_FIELDORDER_BOTTOMFIELDFIRST = 6, // Bottom field displayed first. Bottom field stored first.
938
  MATROSKA_VIDEO_FIELDORDER_BOTTOMFIELDSWAPPED = 9, // Top field displayed first. Fields are interleaved in storage with the top line of the top field stored first.
939
  MATROSKA_VIDEO_FIELDORDER_TOPFIELDSWAPPED  = 14, // Bottom field displayed first. Fields are interleaved in storage with the top line of the top field stored first.
940
} MatroskaVideoFieldOrder;
941
942
/**
943
 *Stereo-3D video mode. There are some more details in (#multi-planar-and-3d-videos).
944
 */
945
typedef enum {
946
  MATROSKA_VIDEO_STEREO_MONO             = 0,
947
  MATROSKA_VIDEO_STEREO_LEFT_RIGHT       = 1,
948
  MATROSKA_VIDEO_STEREO_BOTTOM_TOP       = 2,
949
  MATROSKA_VIDEO_STEREO_TOP_BOTTOM       = 3,
950
  MATROSKA_VIDEO_STEREO_CHECKBOARD_RL    = 4,
951
  MATROSKA_VIDEO_STEREO_CHECKBOARD_LR    = 5,
952
  MATROSKA_VIDEO_STEREO_ROW_INTERLEAVED_RL = 6,
953
  MATROSKA_VIDEO_STEREO_ROW_INTERLEAVED_LR = 7,
954
  MATROSKA_VIDEO_STEREO_COL_INTERLEAVED_RL = 8,
955
  MATROSKA_VIDEO_STEREO_COL_INTERLEAVED_LR = 9,
956
  MATROSKA_VIDEO_STEREO_ANAGLYPH_CYAN_RED = 10,
957
  MATROSKA_VIDEO_STEREO_RIGHT_LEFT       = 11,
958
  MATROSKA_VIDEO_STEREO_ANAGLYPH_GREEN_MAG = 12,
959
  MATROSKA_VIDEO_STEREO_BOTH_EYES_BLOCK_LR = 13,
960
  MATROSKA_VIDEO_STEREO_BOTH_EYES_BLOCK_RL = 14,
961
} MatroskaVideoStereoMode;
962
963
/**
964
 *Indicate whether the BlockAdditional Element with BlockAddID of "1" contains Alpha data, as defined by to the Codec Mapping for the `CodecID`.
965
Undefined values **SHOULD NOT** be used as the behavior of known implementations is different (considered either as 0 or 1).
966
 */
967
typedef enum {
968
  MATROSKA_VIDEO_ALPHAMODE_NONE             = 0, // The BlockAdditional Element with BlockAddID of "1" does not exist or **SHOULD NOT** be considered as containing such data.
969
  MATROSKA_VIDEO_ALPHAMODE_PRESENT          = 1, // The BlockAdditional Element with BlockAddID of "1" contains alpha channel data.
970
} MatroskaVideoAlphaMode;
971
972
/**
973
 *Bogus StereoMode value used in old versions of libmatroska.
974
 */
975
typedef enum {
976
  MATROSKA_VIDEO_OLDSTEREOMODE_MONO             = 0,
977
  MATROSKA_VIDEO_OLDSTEREOMODE_RIGHT_EYE        = 1,
978
  MATROSKA_VIDEO_OLDSTEREOMODE_LEFT_EYE         = 2,
979
  MATROSKA_VIDEO_OLDSTEREOMODE_BOTH_EYES        = 3,
980
} MatroskaVideoOldStereoMode;
981
982
/**
983
 *How DisplayWidth & DisplayHeight are interpreted.
984
 */
985
typedef enum {
986
  MATROSKA_DISPLAY_UNIT_PIXELS           = 0,
987
  MATROSKA_DISPLAY_UNIT_CENTIMETERS      = 1,
988
  MATROSKA_DISPLAY_UNIT_INCHES           = 2,
989
  MATROSKA_DISPLAY_UNIT_DISPLAYASPECTRATIO = 3,
990
  MATROSKA_DISPLAY_UNIT_UNKNOWN          = 4,
991
} MatroskaVideoDisplayUnit;
992
993
/**
994
 *Specify the possible modifications to the aspect ratio.
995
 */
996
typedef enum {
997
  MATROSKA_VIDEO_ASPECTRATIOTYPE_FREE_RESIZING    = 0,
998
  MATROSKA_VIDEO_ASPECTRATIOTYPE_KEEP_ASPECT_RATIO = 1,
999
  MATROSKA_VIDEO_ASPECTRATIOTYPE_FIXED            = 2,
1000
} MatroskaVideoAspectRatioType;
1001
1002
/**
1003
 *The Matrix Coefficients of the video used to derive luma and chroma values from red, green, and blue color primaries.
1004
For clarity, the value and meanings for MatrixCoefficients are adopted from Table 4 of ISO/IEC 23001-8:2016 or ITU-T H.273.
1005
 */
1006
typedef enum {
1007
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_IDENTITY         = 0,
1008
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_BT709            = 1,
1009
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_UNSPECIFIED      = 2,
1010
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_RESERVED         = 3,
1011
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_US_FCC_73_682    = 4,
1012
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_BT470BG          = 5,
1013
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_SMPTE_170M       = 6,
1014
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_SMPTE_240M       = 7,
1015
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_YCOCG            = 8,
1016
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_BT2020_NCL       = 9,
1017
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_BT2020_CL        = 10,
1018
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_SMPTE_2085       = 11,
1019
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_CHROMA_DERIVED_NCL = 12,
1020
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_CHROMA_DERIVED_CL = 13,
1021
  MATROSKA_VIDEO_MATRIXCOEFFICIENTS_ITU_R_BT_2100_0  = 14,
1022
} MatroskaVideoMatrixCoefficients;
1023
1024
/**
1025
 *How chroma is subsampled horizontally.
1026
 */
1027
typedef enum {
1028
  MATROSKA_VIDEO_CHROMASITINGHORZ_UNSPECIFIED      = 0,
1029
  MATROSKA_VIDEO_CHROMASITINGHORZ_LEFT             = 1,
1030
  MATROSKA_VIDEO_CHROMASITINGHORZ_HALF             = 2,
1031
} MatroskaColourChromaSitingHorz;
1032
1033
/**
1034
 *How chroma is subsampled vertically.
1035
 */
1036
typedef enum {
1037
  MATROSKA_VIDEO_CHROMASITINGVERT_UNSPECIFIED      = 0,
1038
  MATROSKA_VIDEO_CHROMASITINGVERT_TOP              = 1,
1039
  MATROSKA_VIDEO_CHROMASITINGVERT_HALF             = 2,
1040
} MatroskaColourChromaSitingVert;
1041
1042
/**
1043
 *Clipping of the color ranges.
1044
 */
1045
typedef enum {
1046
  MATROSKA_VIDEO_RANGE_UNSPECIFIED      = 0,
1047
  MATROSKA_VIDEO_RANGE_BROADCAST_RANGE  = 1,
1048
  MATROSKA_VIDEO_RANGE_FULL_RANGE       = 2,
1049
  MATROSKA_VIDEO_RANGE_DEFINED_BY_MATRIXCOEFFICIENTS = 3,
1050
} MatroskaVideoRange;
1051
1052
/**
1053
 *The transfer characteristics of the video. For clarity,
1054
the value and meanings for TransferCharacteristics are adopted from Table 3 of ISO/IEC 23091-4 or ITU-T H.273.
1055
 */
1056
typedef enum {
1057
  MATROSKA_TRANSFER_RESERVED         = 0,
1058
  MATROSKA_TRANSFER_BT709            = 1,
1059
  MATROSKA_TRANSFER_UNSPECIFIED      = 2,
1060
  MATROSKA_TRANSFER_RESERVED2        = 3,
1061
  MATROSKA_TRANSFER_GAMMA22          = 4,
1062
  MATROSKA_TRANSFER_GAMMA28          = 5,
1063
  MATROSKA_TRANSFER_SMPTE_170M       = 6,
1064
  MATROSKA_TRANSFER_SMPTE_240M       = 7,
1065
  MATROSKA_TRANSFER_LINEAR           = 8,
1066
  MATROSKA_TRANSFER_LOG              = 9,
1067
  MATROSKA_TRANSFER_LOG_SQRT         = 10,
1068
  MATROSKA_TRANSFER_IEC_61966_2_4    = 11,
1069
  MATROSKA_TRANSFER_BT1361_ECG       = 12,
1070
  MATROSKA_TRANSFER_IEC_61966_2_1    = 13,
1071
  MATROSKA_TRANSFER_BT2020_10_BIT    = 14,
1072
  MATROSKA_TRANSFER_BT2020_12_BIT    = 15,
1073
  MATROSKA_TRANSFER_BT2100_PQ        = 16,
1074
  MATROSKA_TRANSFER_SMPTE_428_1      = 17,
1075
  MATROSKA_TRANSFER_ARIB_STD_B67     = 18,
1076
} MatroskaVideoTransferCharacteristics;
1077
1078
/**
1079
 *The colour primaries of the video. For clarity,
1080
the value and meanings for Primaries are adopted from Table 2 of ISO/IEC 23091-4 or ITU-T H.273.
1081
 */
1082
typedef enum {
1083
  MATROSKA_VIDEO_PRIMARIES_RESERVED         = 0,
1084
  MATROSKA_VIDEO_PRIMARIES_BT709            = 1,
1085
  MATROSKA_VIDEO_PRIMARIES_UNSPECIFIED      = 2,
1086
  MATROSKA_VIDEO_PRIMARIES_RESERVED2        = 3,
1087
  MATROSKA_VIDEO_PRIMARIES_BT470M           = 4,
1088
  MATROSKA_VIDEO_PRIMARIES_BT470BG          = 5,
1089
  MATROSKA_VIDEO_PRIMARIES_BT601_525        = 6,
1090
  MATROSKA_VIDEO_PRIMARIES_SMPTE_240M       = 7,
1091
  MATROSKA_VIDEO_PRIMARIES_FILM             = 8,
1092
  MATROSKA_VIDEO_PRIMARIES_BT2020           = 9,
1093
  MATROSKA_VIDEO_PRIMARIES_SMPTE_428_1      = 10,
1094
  MATROSKA_VIDEO_PRIMARIES_SMPTE_RP_432_2   = 11,
1095
  MATROSKA_VIDEO_PRIMARIES_SMPTE_EG_432_2   = 12,
1096
  MATROSKA_VIDEO_PRIMARIES_JEDEC_P22        = 22,
1097
} MatroskaVideoPrimaries;
1098
1099
/**
1100
 *Describes the projection used for this video track.
1101
 */
1102
typedef enum {
1103
  MATROSKA_VIDEO_PROJECTIONTYPE_RECTANGULAR      = 0,
1104
  MATROSKA_VIDEO_PROJECTIONTYPE_EQUIRECTANGULAR  = 1,
1105
  MATROSKA_VIDEO_PROJECTIONTYPE_CUBEMAP          = 2,
1106
  MATROSKA_VIDEO_PROJECTIONTYPE_MESH             = 3,
1107
} MatroskaVideoProjectionType;
1108
1109
/**
1110
 *Audio emphasis applied on audio samples. The player **MUST** apply the inverse emphasis to get the proper audio samples.
1111
 */
1112
typedef enum {
1113
  MATROSKA_EMPHASIS_NO_EMPHASIS      = 0,
1114
  MATROSKA_EMPHASIS_CD_AUDIO         = 1, // First order filter with zero point at 50 microseconds and a pole at 15 microseconds. Also found on DVD Audio and MPEG audio.
1115
  MATROSKA_EMPHASIS_RESERVED         = 2,
1116
  MATROSKA_EMPHASIS_CCIT_J_17        = 3, // Defined in [@!ITU-J.17].
1117
  MATROSKA_EMPHASIS_FM_50            = 4, // FM Radio in Europe. RC Filter with a time constant of 50 microseconds.
1118
  MATROSKA_EMPHASIS_FM_75            = 5, // FM Radio in the USA. RC Filter with a time constant of 75 microseconds.
1119
  MATROSKA_EMPHASIS_PHONO_RIAA       = 10, // Phono filter with time constants of t1=3180, t2=318 and t3=75 microseconds. [@!NAB1964]
1120
  MATROSKA_EMPHASIS_PHONO_IEC_N78    = 11, // Phono filter with time constants of t1=3180, t2=450 and t3=50 microseconds.
1121
  MATROSKA_EMPHASIS_PHONO_TELDEC     = 12, // Phono filter with time constants of t1=3180, t2=318 and t3=50 microseconds.
1122
  MATROSKA_EMPHASIS_PHONO_EMI        = 13, // Phono filter with time constants of t1=2500, t2=500 and t3=70 microseconds.
1123
  MATROSKA_EMPHASIS_PHONO_COLUMBIA_LP = 14, // Phono filter with time constants of t1=1590, t2=318 and t3=100 microseconds.
1124
  MATROSKA_EMPHASIS_PHONO_LONDON     = 15, // Phono filter with time constants of t1=1590, t2=318 and t3=50 microseconds.
1125
  MATROSKA_EMPHASIS_PHONO_NARTB      = 16, // Phono filter with time constants of t1=3180, t2=318 and t3=100 microseconds.
1126
} MatroskaAudioEmphasis;
1127
1128
/**
1129
 *The kind of plane this track corresponds to.
1130
 */
1131
typedef enum {
1132
  MATROSKA_TRACKPLANETYPE_LEFT_EYE         = 0,
1133
  MATROSKA_TRACKPLANETYPE_RIGHT_EYE        = 1,
1134
  MATROSKA_TRACKPLANETYPE_BACKGROUND       = 2,
1135
} MatroskaTrackPlaneType;
1136
1137
/**
1138
 *A bit field that describes which Elements have been modified in this way.
1139
Values (big-endian) can be OR'ed.
1140
 */
1141
typedef enum {
1142
  MATROSKA_CONTENTENCODINGSCOPE_BLOCK            = 1, // All frame contents, excluding lacing data.
1143
  MATROSKA_CONTENTENCODINGSCOPE_PRIVATE          = 2, // The track's private data.
1144
  MATROSKA_CONTENTENCODINGSCOPE_NEXT             = 4, // The next ContentEncoding (next `ContentEncodingOrder`. Either the data inside `ContentCompression` and/or `ContentEncryption`).
1145
} MatroskaContentEncodingScope;
1146
1147
/**
1148
 *A value describing what kind of transformation is applied.
1149
 */
1150
typedef enum {
1151
  MATROSKA_CONTENTENCODINGTYPE_COMPRESSION      = 0,
1152
  MATROSKA_CONTENTENCODINGTYPE_ENCRYPTION       = 1,
1153
} MatroskaContentEncodingType;
1154
1155
/**
1156
 *The encryption algorithm used.
1157
 */
1158
typedef enum {
1159
  MATROSKA_CONTENTENCALGO_NOT_ENCRYPTED    = 0, // The data are not encrypted.
1160
  MATROSKA_CONTENTENCALGO_DES              = 1, // Data Encryption Standard (DES) [@!FIPS.46-3].
1161
  MATROSKA_CONTENTENCALGO_3DES             = 2, // Triple Data Encryption Algorithm [@!SP.800-67].
1162
  MATROSKA_CONTENTENCALGO_TWOFISH          = 3, // Twofish Encryption Algorithm [@!Twofish].
1163
  MATROSKA_CONTENTENCALGO_BLOWFISH         = 4, // Blowfish Encryption Algorithm [@!Blowfish].
1164
  MATROSKA_CONTENTENCALGO_AES              = 5, // Advanced Encryption Standard (AES) [@!FIPS.197].
1165
} MatroskaContentEncodingAlgo;
1166
1167
/**
1168
 *The AES cipher mode used in the encryption.
1169
 */
1170
typedef enum {
1171
  MATROSKA_AESSETTINGSCIPHERMODE_AES_CTR          = 1, // Counter [@!SP.800-38A].
1172
  MATROSKA_AESSETTINGSCIPHERMODE_AES_CBC          = 2, // Cipher Block Chaining [@!SP.800-38A].
1173
} MatroskaAESSettingsCipherMode;
1174
1175
/**
1176
 *The algorithm used for the signature.
1177
 */
1178
typedef enum {
1179
  MATROSKA_CONTENTSIGALGO_NOT_SIGNED       = 0,
1180
  MATROSKA_CONTENTSIGALGO_RSA              = 1,
1181
} MatroskaContentSignatureAlgo;
1182
1183
/**
1184
 *The hash algorithm used for the signature.
1185
 */
1186
typedef enum {
1187
  MATROSKA_CONTENTSIGHASHALGO_NOT_SIGNED       = 0,
1188
  MATROSKA_CONTENTSIGHASHALGO_SHA1_160         = 1,
1189
  MATROSKA_CONTENTSIGHASHALGO_MD5              = 2,
1190
} MatroskaContentSigHashAlgo;
1191
1192
/**
1193
 *Indicate what type of content the ChapterAtom contains and might be skipped. It can be used to automatically skip content based on the type.
1194
If a `ChapterAtom` is inside a `ChapterAtom` that has a `ChapterSkipType` set, it **MUST NOT** have a `ChapterSkipType` or have a `ChapterSkipType` with the same value as it's parent `ChapterAtom`.
1195
If the `ChapterAtom` doesn't contain a `ChapterTimeEnd`, the value of the `ChapterSkipType` is only valid until the next `ChapterAtom` with a `ChapterSkipType` value or the end of the file.
1196
    
1197
 */
1198
typedef enum {
1199
  MATROSKA_CHAPTERSKIPTYPE_NO_SKIPPING      = 0, // Content which should not be skipped.
1200
  MATROSKA_CHAPTERSKIPTYPE_OPENING_CREDITS  = 1, // Credits usually found at the beginning of the content.
1201
  MATROSKA_CHAPTERSKIPTYPE_END_CREDITS      = 2, // Credits usually found at the end of the content.
1202
  MATROSKA_CHAPTERSKIPTYPE_RECAP            = 3, // Recap of previous episodes of the content, usually found around the beginning.
1203
  MATROSKA_CHAPTERSKIPTYPE_NEXT_PREVIEW     = 4, // Preview of the next episode of the content, usually found around the end. It may contain spoilers the user wants to avoid.
1204
  MATROSKA_CHAPTERSKIPTYPE_PREVIEW          = 5, // Preview of the current episode of the content, usually found around the beginning. It may contain spoilers the user want to avoid.
1205
  MATROSKA_CHAPTERSKIPTYPE_ADVERTISEMENT    = 6, // Advertisement within the content.
1206
} MatroskaChapterSkipType;
1207
1208
/**
1209
 *Defines when the process command **SHOULD** be handled
1210
 */
1211
typedef enum {
1212
  MATROSKA_CHAPPROCESSTIME_DURING           = 0,
1213
  MATROSKA_CHAPPROCESSTIME_BEFORE           = 1,
1214
  MATROSKA_CHAPPROCESSTIME_AFTER            = 2,
1215
} MatroskaChapterProcessTime;
1216
1217
/**
1218
 *A number to indicate the logical level of the target.
1219
 */
1220
typedef enum {
1221
  MATROSKA_TARGET_TYPE_COLLECTION       = 70, // The highest hierarchical level that tags can describe.
1222
  MATROSKA_TARGET_TYPE_EDITION          = 60, // A list of lower levels grouped together.
1223
  MATROSKA_TARGET_TYPE_ALBUM            = 50, // The most common grouping level of music and video (equals to an episode for TV series).
1224
  MATROSKA_TARGET_TYPE_PART             = 40, // When an album or episode has different logical parts.
1225
  MATROSKA_TARGET_TYPE_TRACK            = 30, // The common parts of an album or movie.
1226
  MATROSKA_TARGET_TYPE_SUBTRACK         = 20, // Corresponds to parts of a track for audio (like a movement).
1227
  MATROSKA_TARGET_TYPE_SHOT             = 10, // The lowest hierarchy found in music or movies.
1228
} MatroskaTargetTypeValue;
1229
1230
1231
} // namespace libmatroska
1232
1233
#endif // LIBMATROSKA_SEMANTIC_H