1343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih/*
2343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih * Copyright (C) 2014 The Android Open Source Project
3343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih *
4343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih * Licensed under the Apache License, Version 2.0 (the "License");
5343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih * you may not use this file except in compliance with the License.
6343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih * You may obtain a copy of the License at
7343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih *
8343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih *      http://www.apache.org/licenses/LICENSE-2.0
9343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih *
10343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih * Unless required by applicable law or agreed to in writing, software
11343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih * distributed under the License is distributed on an "AS IS" BASIS,
12343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih * See the License for the specific language governing permissions and
14343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih * limitations under the License.
15343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih */
16343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih
17343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih#ifndef WEBMCONSTANTS_H_
18343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih#define WEBMCONSTANTS_H_
19343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih
20343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih#include <stdint.h>
21343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih
22343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shihnamespace webm {
23343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih
24343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shihconst int kMinEbmlVoidSize = 2;
25343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shihconst int64_t kMaxMetaSeekSize = 64;
26343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shihconst int64_t kMkvUnknownLength = 0x01ffffffffffffffl;
27343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih
28343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih// EBML element id's from http://matroska.org/technical/specs/index.html
29343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shihenum Mkv {
30343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvEbml = 0x1A45DFA3,
31343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvEbmlVersion = 0x4286,
32343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvEbmlReadVersion = 0x42F7,
33343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvEbmlMaxIdlength = 0x42F2,
34343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvEbmlMaxSizeLength = 0x42F3,
35343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvDocType = 0x4282,
36343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvDocTypeVersion = 0x4287,
37343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvDocTypeReadVersion = 0x4285,
38343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvVoid = 0xEC,
39343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSignatureSlot = 0x1B538667,
40343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSignatureAlgo = 0x7E8A,
41343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSignatureHash = 0x7E9A,
42343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSignaturePublicKey = 0x7EA5,
43343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSignature = 0x7EB5,
44343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSignatureElements = 0x7E5B,
45343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSignatureElementList = 0x7E7B,
46343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSignedElement = 0x6532,
47343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSegment = 0x18538067,
48343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSeekHead = 0x114D9B74,
49343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSeek = 0x4DBB,
50343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSeekId = 0x53AB,
51343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSeekPosition = 0x53AC,
52343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvInfo = 0x1549A966,
53343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvTimecodeScale = 0x2AD7B1,
54343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSegmentDuration = 0x4489,
55343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvDateUtc = 0x4461,
56343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvMuxingApp = 0x4D80,
57343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvWritingApp = 0x5741,
58343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvCluster = 0x1F43B675,
59343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvTimecode = 0xE7,
60343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvPrevSize = 0xAB,
61343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvBlockGroup = 0xA0,
62343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvBlock = 0xA1,
63343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvBlockAdditions = 0x75A1,
64343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvBlockMore = 0xA6,
65343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvBlockAddId = 0xEE,
66343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvBlockAdditional = 0xA5,
67343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvBlockDuration = 0x9B,
68343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvReferenceBlock = 0xFB,
69343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvLaceNumber = 0xCC,
70343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSimpleBlock = 0xA3,
71343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvTracks = 0x1654AE6B,
72343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvTrackEntry = 0xAE,
73343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvTrackNumber = 0xD7,
74343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvTrackUid = 0x73C5,
75343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvTrackType = 0x83,
76343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvFlagEnabled = 0xB9,
77343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvFlagDefault = 0x88,
78343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvFlagForced = 0x55AA,
79343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvFlagLacing = 0x9C,
80343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvDefaultDuration = 0x23E383,
81343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvMaxBlockAdditionId = 0x55EE,
82343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvName = 0x536E,
83343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvLanguage = 0x22B59C,
84343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvCodecId = 0x86,
85343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvCodecPrivate = 0x63A2,
86343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvCodecName = 0x258688,
87343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvVideo = 0xE0,
88343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvFlagInterlaced = 0x9A,
89343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvStereoMode = 0x53B8,
90343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvAlphaMode = 0x53C0,
91343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvPixelWidth = 0xB0,
92343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvPixelHeight = 0xBA,
93343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvPixelCropBottom = 0x54AA,
94343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvPixelCropTop = 0x54BB,
95343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvPixelCropLeft = 0x54CC,
96343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvPixelCropRight = 0x54DD,
97343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvDisplayWidth = 0x54B0,
98343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvDisplayHeight = 0x54BA,
99343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvDisplayUnit = 0x54B2,
100343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvAspectRatioType = 0x54B3,
101343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvFrameRate = 0x2383E3,
102343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvAudio = 0xE1,
103343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvSamplingFrequency = 0xB5,
104343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvOutputSamplingFrequency = 0x78B5,
105343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvChannels = 0x9F,
106343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvBitDepth = 0x6264,
107343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvCues = 0x1C53BB6B,
108343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvCuePoint = 0xBB,
109343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvCueTime = 0xB3,
110343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvCueTrackPositions = 0xB7,
111343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvCueTrack = 0xF7,
112343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvCueClusterPosition = 0xF1,
113343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kMkvCueBlockNumber = 0x5378
114343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih};
115343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih
116343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shihenum TrackTypes {
117343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kInvalidType = -1,
118343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kVideoType = 0x1,
119343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kAudioType = 0x2,
120343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kComplexType = 0x3,
121343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kLogoType = 0x10,
122343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kSubtitleType = 0x11,
123343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kButtonsType = 0x12,
124343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kControlType = 0x20
125343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih};
126343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih
127343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shihenum TrackNum {
128343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kVideoTrackNum = 0x1,
129343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih    kAudioTrackNum = 0x2
130343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih};
131343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih}
132343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih
133343947abc8b7c126f966fd32a0b18bff6c2cecd1Robert Shih#endif /* WEBMCONSTANTS_H_ */
134