1/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef WEBMCONSTANTS_H_
18#define WEBMCONSTANTS_H_
19
20#include <stdint.h>
21
22namespace webm {
23
24const int kMinEbmlVoidSize = 2;
25const int64_t kMaxMetaSeekSize = 64;
26const int64_t kMkvUnknownLength = 0x01ffffffffffffffl;
27
28// EBML element id's from http://matroska.org/technical/specs/index.html
29enum Mkv {
30    kMkvEbml = 0x1A45DFA3,
31    kMkvEbmlVersion = 0x4286,
32    kMkvEbmlReadVersion = 0x42F7,
33    kMkvEbmlMaxIdlength = 0x42F2,
34    kMkvEbmlMaxSizeLength = 0x42F3,
35    kMkvDocType = 0x4282,
36    kMkvDocTypeVersion = 0x4287,
37    kMkvDocTypeReadVersion = 0x4285,
38    kMkvVoid = 0xEC,
39    kMkvSignatureSlot = 0x1B538667,
40    kMkvSignatureAlgo = 0x7E8A,
41    kMkvSignatureHash = 0x7E9A,
42    kMkvSignaturePublicKey = 0x7EA5,
43    kMkvSignature = 0x7EB5,
44    kMkvSignatureElements = 0x7E5B,
45    kMkvSignatureElementList = 0x7E7B,
46    kMkvSignedElement = 0x6532,
47    kMkvSegment = 0x18538067,
48    kMkvSeekHead = 0x114D9B74,
49    kMkvSeek = 0x4DBB,
50    kMkvSeekId = 0x53AB,
51    kMkvSeekPosition = 0x53AC,
52    kMkvInfo = 0x1549A966,
53    kMkvTimecodeScale = 0x2AD7B1,
54    kMkvSegmentDuration = 0x4489,
55    kMkvDateUtc = 0x4461,
56    kMkvMuxingApp = 0x4D80,
57    kMkvWritingApp = 0x5741,
58    kMkvCluster = 0x1F43B675,
59    kMkvTimecode = 0xE7,
60    kMkvPrevSize = 0xAB,
61    kMkvBlockGroup = 0xA0,
62    kMkvBlock = 0xA1,
63    kMkvBlockAdditions = 0x75A1,
64    kMkvBlockMore = 0xA6,
65    kMkvBlockAddId = 0xEE,
66    kMkvBlockAdditional = 0xA5,
67    kMkvBlockDuration = 0x9B,
68    kMkvReferenceBlock = 0xFB,
69    kMkvLaceNumber = 0xCC,
70    kMkvSimpleBlock = 0xA3,
71    kMkvTracks = 0x1654AE6B,
72    kMkvTrackEntry = 0xAE,
73    kMkvTrackNumber = 0xD7,
74    kMkvTrackUid = 0x73C5,
75    kMkvTrackType = 0x83,
76    kMkvFlagEnabled = 0xB9,
77    kMkvFlagDefault = 0x88,
78    kMkvFlagForced = 0x55AA,
79    kMkvFlagLacing = 0x9C,
80    kMkvDefaultDuration = 0x23E383,
81    kMkvMaxBlockAdditionId = 0x55EE,
82    kMkvName = 0x536E,
83    kMkvLanguage = 0x22B59C,
84    kMkvCodecId = 0x86,
85    kMkvCodecPrivate = 0x63A2,
86    kMkvCodecName = 0x258688,
87    kMkvVideo = 0xE0,
88    kMkvFlagInterlaced = 0x9A,
89    kMkvStereoMode = 0x53B8,
90    kMkvAlphaMode = 0x53C0,
91    kMkvPixelWidth = 0xB0,
92    kMkvPixelHeight = 0xBA,
93    kMkvPixelCropBottom = 0x54AA,
94    kMkvPixelCropTop = 0x54BB,
95    kMkvPixelCropLeft = 0x54CC,
96    kMkvPixelCropRight = 0x54DD,
97    kMkvDisplayWidth = 0x54B0,
98    kMkvDisplayHeight = 0x54BA,
99    kMkvDisplayUnit = 0x54B2,
100    kMkvAspectRatioType = 0x54B3,
101    kMkvColour = 0x55B0,
102    kMkvMatrixCoefficients = 0x55B1,
103    kMkvRange = 0x55B9,
104    kMkvTransferCharacteristics = 0x55BA,
105    kMkvPrimaries = 0x55BB,
106    kMkvMaxCLL = 0x55BC,
107    kMkvMaxFALL = 0x55BD,
108    kMkvMasteringMetadata = 0x55D0,
109    kMkvPrimaryRChromaticityX = 0x55D1,
110    kMkvPrimaryRChromaticityY = 0x55D2,
111    kMkvPrimaryGChromaticityX = 0x55D3,
112    kMkvPrimaryGChromaticityY = 0x55D4,
113    kMkvPrimaryBChromaticityX = 0x55D5,
114    kMkvPrimaryBChromaticityY = 0x55D6,
115    kMkvWhitePointChromaticityX = 0x55D7,
116    kMkvWhitePointChromaticityY = 0x55D8,
117    kMkvLuminanceMax = 0x55D9,
118    kMkvLuminanceMin = 0x55DA,
119    kMkvFrameRate = 0x2383E3,
120    kMkvAudio = 0xE1,
121    kMkvSamplingFrequency = 0xB5,
122    kMkvOutputSamplingFrequency = 0x78B5,
123    kMkvChannels = 0x9F,
124    kMkvBitDepth = 0x6264,
125    kMkvCues = 0x1C53BB6B,
126    kMkvCuePoint = 0xBB,
127    kMkvCueTime = 0xB3,
128    kMkvCueTrackPositions = 0xB7,
129    kMkvCueTrack = 0xF7,
130    kMkvCueClusterPosition = 0xF1,
131    kMkvCueBlockNumber = 0x5378
132};
133
134enum TrackTypes {
135    kInvalidType = -1,
136    kVideoType = 0x1,
137    kAudioType = 0x2,
138    kComplexType = 0x3,
139    kLogoType = 0x10,
140    kSubtitleType = 0x11,
141    kButtonsType = 0x12,
142    kControlType = 0x20
143};
144
145enum TrackNum {
146    kVideoTrackNum = 0x1,
147    kAudioTrackNum = 0x2
148};
149}
150
151#endif /* WEBMCONSTANTS_H_ */
152