ffmpeg / libavformat / matroska.h @ 9dd94f83
History | View | Annotate | Download (7.95 KB)
1 |
/*
|
---|---|
2 |
* Matroska constants
|
3 |
* Copyright (c) 2003-2004 The ffmpeg Project
|
4 |
*
|
5 |
* This file is part of Libav.
|
6 |
*
|
7 |
* Libav is free software; you can redistribute it and/or
|
8 |
* modify it under the terms of the GNU Lesser General Public
|
9 |
* License as published by the Free Software Foundation; either
|
10 |
* version 2.1 of the License, or (at your option) any later version.
|
11 |
*
|
12 |
* Libav is distributed in the hope that it will be useful,
|
13 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15 |
* Lesser General Public License for more details.
|
16 |
*
|
17 |
* You should have received a copy of the GNU Lesser General Public
|
18 |
* License along with Libav; if not, write to the Free Software
|
19 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
*/
|
21 |
|
22 |
#ifndef AVFORMAT_MATROSKA_H
|
23 |
#define AVFORMAT_MATROSKA_H
|
24 |
|
25 |
#include "libavcodec/avcodec.h" |
26 |
#include "metadata.h" |
27 |
|
28 |
/* EBML version supported */
|
29 |
#define EBML_VERSION 1 |
30 |
|
31 |
/* top-level master-IDs */
|
32 |
#define EBML_ID_HEADER 0x1A45DFA3 |
33 |
|
34 |
/* IDs in the HEADER master */
|
35 |
#define EBML_ID_EBMLVERSION 0x4286 |
36 |
#define EBML_ID_EBMLREADVERSION 0x42F7 |
37 |
#define EBML_ID_EBMLMAXIDLENGTH 0x42F2 |
38 |
#define EBML_ID_EBMLMAXSIZELENGTH 0x42F3 |
39 |
#define EBML_ID_DOCTYPE 0x4282 |
40 |
#define EBML_ID_DOCTYPEVERSION 0x4287 |
41 |
#define EBML_ID_DOCTYPEREADVERSION 0x4285 |
42 |
|
43 |
/* general EBML types */
|
44 |
#define EBML_ID_VOID 0xEC |
45 |
#define EBML_ID_CRC32 0xBF |
46 |
|
47 |
/*
|
48 |
* Matroska element IDs, max. 32 bits
|
49 |
*/
|
50 |
|
51 |
/* toplevel segment */
|
52 |
#define MATROSKA_ID_SEGMENT 0x18538067 |
53 |
|
54 |
/* Matroska top-level master IDs */
|
55 |
#define MATROSKA_ID_INFO 0x1549A966 |
56 |
#define MATROSKA_ID_TRACKS 0x1654AE6B |
57 |
#define MATROSKA_ID_CUES 0x1C53BB6B |
58 |
#define MATROSKA_ID_TAGS 0x1254C367 |
59 |
#define MATROSKA_ID_SEEKHEAD 0x114D9B74 |
60 |
#define MATROSKA_ID_ATTACHMENTS 0x1941A469 |
61 |
#define MATROSKA_ID_CLUSTER 0x1F43B675 |
62 |
#define MATROSKA_ID_CHAPTERS 0x1043A770 |
63 |
|
64 |
/* IDs in the info master */
|
65 |
#define MATROSKA_ID_TIMECODESCALE 0x2AD7B1 |
66 |
#define MATROSKA_ID_DURATION 0x4489 |
67 |
#define MATROSKA_ID_TITLE 0x7BA9 |
68 |
#define MATROSKA_ID_WRITINGAPP 0x5741 |
69 |
#define MATROSKA_ID_MUXINGAPP 0x4D80 |
70 |
#define MATROSKA_ID_DATEUTC 0x4461 |
71 |
#define MATROSKA_ID_SEGMENTUID 0x73A4 |
72 |
|
73 |
/* ID in the tracks master */
|
74 |
#define MATROSKA_ID_TRACKENTRY 0xAE |
75 |
|
76 |
/* IDs in the trackentry master */
|
77 |
#define MATROSKA_ID_TRACKNUMBER 0xD7 |
78 |
#define MATROSKA_ID_TRACKUID 0x73C5 |
79 |
#define MATROSKA_ID_TRACKTYPE 0x83 |
80 |
#define MATROSKA_ID_TRACKAUDIO 0xE1 |
81 |
#define MATROSKA_ID_TRACKVIDEO 0xE0 |
82 |
#define MATROSKA_ID_CODECID 0x86 |
83 |
#define MATROSKA_ID_CODECPRIVATE 0x63A2 |
84 |
#define MATROSKA_ID_CODECNAME 0x258688 |
85 |
#define MATROSKA_ID_CODECINFOURL 0x3B4040 |
86 |
#define MATROSKA_ID_CODECDOWNLOADURL 0x26B240 |
87 |
#define MATROSKA_ID_CODECDECODEALL 0xAA |
88 |
#define MATROSKA_ID_TRACKNAME 0x536E |
89 |
#define MATROSKA_ID_TRACKLANGUAGE 0x22B59C |
90 |
#define MATROSKA_ID_TRACKFLAGENABLED 0xB9 |
91 |
#define MATROSKA_ID_TRACKFLAGDEFAULT 0x88 |
92 |
#define MATROSKA_ID_TRACKFLAGFORCED 0x55AA |
93 |
#define MATROSKA_ID_TRACKFLAGLACING 0x9C |
94 |
#define MATROSKA_ID_TRACKMINCACHE 0x6DE7 |
95 |
#define MATROSKA_ID_TRACKMAXCACHE 0x6DF8 |
96 |
#define MATROSKA_ID_TRACKDEFAULTDURATION 0x23E383 |
97 |
#define MATROSKA_ID_TRACKCONTENTENCODINGS 0x6D80 |
98 |
#define MATROSKA_ID_TRACKCONTENTENCODING 0x6240 |
99 |
#define MATROSKA_ID_TRACKTIMECODESCALE 0x23314F |
100 |
#define MATROSKA_ID_TRACKMAXBLKADDID 0x55EE |
101 |
|
102 |
/* IDs in the trackvideo master */
|
103 |
#define MATROSKA_ID_VIDEOFRAMERATE 0x2383E3 |
104 |
#define MATROSKA_ID_VIDEODISPLAYWIDTH 0x54B0 |
105 |
#define MATROSKA_ID_VIDEODISPLAYHEIGHT 0x54BA |
106 |
#define MATROSKA_ID_VIDEOPIXELWIDTH 0xB0 |
107 |
#define MATROSKA_ID_VIDEOPIXELHEIGHT 0xBA |
108 |
#define MATROSKA_ID_VIDEOPIXELCROPB 0x54AA |
109 |
#define MATROSKA_ID_VIDEOPIXELCROPT 0x54BB |
110 |
#define MATROSKA_ID_VIDEOPIXELCROPL 0x54CC |
111 |
#define MATROSKA_ID_VIDEOPIXELCROPR 0x54DD |
112 |
#define MATROSKA_ID_VIDEODISPLAYUNIT 0x54B2 |
113 |
#define MATROSKA_ID_VIDEOFLAGINTERLACED 0x9A |
114 |
#define MATROSKA_ID_VIDEOSTEREOMODE 0x53B9 |
115 |
#define MATROSKA_ID_VIDEOASPECTRATIO 0x54B3 |
116 |
#define MATROSKA_ID_VIDEOCOLORSPACE 0x2EB524 |
117 |
|
118 |
/* IDs in the trackaudio master */
|
119 |
#define MATROSKA_ID_AUDIOSAMPLINGFREQ 0xB5 |
120 |
#define MATROSKA_ID_AUDIOOUTSAMPLINGFREQ 0x78B5 |
121 |
|
122 |
#define MATROSKA_ID_AUDIOBITDEPTH 0x6264 |
123 |
#define MATROSKA_ID_AUDIOCHANNELS 0x9F |
124 |
|
125 |
/* IDs in the content encoding master */
|
126 |
#define MATROSKA_ID_ENCODINGORDER 0x5031 |
127 |
#define MATROSKA_ID_ENCODINGSCOPE 0x5032 |
128 |
#define MATROSKA_ID_ENCODINGTYPE 0x5033 |
129 |
#define MATROSKA_ID_ENCODINGCOMPRESSION 0x5034 |
130 |
#define MATROSKA_ID_ENCODINGCOMPALGO 0x4254 |
131 |
#define MATROSKA_ID_ENCODINGCOMPSETTINGS 0x4255 |
132 |
|
133 |
/* ID in the cues master */
|
134 |
#define MATROSKA_ID_POINTENTRY 0xBB |
135 |
|
136 |
/* IDs in the pointentry master */
|
137 |
#define MATROSKA_ID_CUETIME 0xB3 |
138 |
#define MATROSKA_ID_CUETRACKPOSITION 0xB7 |
139 |
|
140 |
/* IDs in the cuetrackposition master */
|
141 |
#define MATROSKA_ID_CUETRACK 0xF7 |
142 |
#define MATROSKA_ID_CUECLUSTERPOSITION 0xF1 |
143 |
#define MATROSKA_ID_CUEBLOCKNUMBER 0x5378 |
144 |
|
145 |
/* IDs in the tags master */
|
146 |
#define MATROSKA_ID_TAG 0x7373 |
147 |
#define MATROSKA_ID_SIMPLETAG 0x67C8 |
148 |
#define MATROSKA_ID_TAGNAME 0x45A3 |
149 |
#define MATROSKA_ID_TAGSTRING 0x4487 |
150 |
#define MATROSKA_ID_TAGLANG 0x447A |
151 |
#define MATROSKA_ID_TAGDEFAULT 0x4484 |
152 |
#define MATROSKA_ID_TAGDEFAULT_BUG 0x44B4 |
153 |
#define MATROSKA_ID_TAGTARGETS 0x63C0 |
154 |
#define MATROSKA_ID_TAGTARGETS_TYPE 0x63CA |
155 |
#define MATROSKA_ID_TAGTARGETS_TYPEVALUE 0x68CA |
156 |
#define MATROSKA_ID_TAGTARGETS_TRACKUID 0x63C5 |
157 |
#define MATROSKA_ID_TAGTARGETS_CHAPTERUID 0x63C4 |
158 |
#define MATROSKA_ID_TAGTARGETS_ATTACHUID 0x63C6 |
159 |
|
160 |
/* IDs in the seekhead master */
|
161 |
#define MATROSKA_ID_SEEKENTRY 0x4DBB |
162 |
|
163 |
/* IDs in the seekpoint master */
|
164 |
#define MATROSKA_ID_SEEKID 0x53AB |
165 |
#define MATROSKA_ID_SEEKPOSITION 0x53AC |
166 |
|
167 |
/* IDs in the cluster master */
|
168 |
#define MATROSKA_ID_CLUSTERTIMECODE 0xE7 |
169 |
#define MATROSKA_ID_CLUSTERPOSITION 0xA7 |
170 |
#define MATROSKA_ID_CLUSTERPREVSIZE 0xAB |
171 |
#define MATROSKA_ID_BLOCKGROUP 0xA0 |
172 |
#define MATROSKA_ID_SIMPLEBLOCK 0xA3 |
173 |
|
174 |
/* IDs in the blockgroup master */
|
175 |
#define MATROSKA_ID_BLOCK 0xA1 |
176 |
#define MATROSKA_ID_BLOCKDURATION 0x9B |
177 |
#define MATROSKA_ID_BLOCKREFERENCE 0xFB |
178 |
|
179 |
/* IDs in the attachments master */
|
180 |
#define MATROSKA_ID_ATTACHEDFILE 0x61A7 |
181 |
#define MATROSKA_ID_FILEDESC 0x467E |
182 |
#define MATROSKA_ID_FILENAME 0x466E |
183 |
#define MATROSKA_ID_FILEMIMETYPE 0x4660 |
184 |
#define MATROSKA_ID_FILEDATA 0x465C |
185 |
#define MATROSKA_ID_FILEUID 0x46AE |
186 |
|
187 |
/* IDs in the chapters master */
|
188 |
#define MATROSKA_ID_EDITIONENTRY 0x45B9 |
189 |
#define MATROSKA_ID_CHAPTERATOM 0xB6 |
190 |
#define MATROSKA_ID_CHAPTERTIMESTART 0x91 |
191 |
#define MATROSKA_ID_CHAPTERTIMEEND 0x92 |
192 |
#define MATROSKA_ID_CHAPTERDISPLAY 0x80 |
193 |
#define MATROSKA_ID_CHAPSTRING 0x85 |
194 |
#define MATROSKA_ID_CHAPLANG 0x437C |
195 |
#define MATROSKA_ID_EDITIONUID 0x45BC |
196 |
#define MATROSKA_ID_EDITIONFLAGHIDDEN 0x45BD |
197 |
#define MATROSKA_ID_EDITIONFLAGDEFAULT 0x45DB |
198 |
#define MATROSKA_ID_EDITIONFLAGORDERED 0x45DD |
199 |
#define MATROSKA_ID_CHAPTERUID 0x73C4 |
200 |
#define MATROSKA_ID_CHAPTERFLAGHIDDEN 0x98 |
201 |
#define MATROSKA_ID_CHAPTERFLAGENABLED 0x4598 |
202 |
#define MATROSKA_ID_CHAPTERPHYSEQUIV 0x63C3 |
203 |
|
204 |
typedef enum { |
205 |
MATROSKA_TRACK_TYPE_NONE = 0x0,
|
206 |
MATROSKA_TRACK_TYPE_VIDEO = 0x1,
|
207 |
MATROSKA_TRACK_TYPE_AUDIO = 0x2,
|
208 |
MATROSKA_TRACK_TYPE_COMPLEX = 0x3,
|
209 |
MATROSKA_TRACK_TYPE_LOGO = 0x10,
|
210 |
MATROSKA_TRACK_TYPE_SUBTITLE = 0x11,
|
211 |
MATROSKA_TRACK_TYPE_CONTROL = 0x20,
|
212 |
} MatroskaTrackType; |
213 |
|
214 |
typedef enum { |
215 |
MATROSKA_TRACK_ENCODING_COMP_ZLIB = 0,
|
216 |
MATROSKA_TRACK_ENCODING_COMP_BZLIB = 1,
|
217 |
MATROSKA_TRACK_ENCODING_COMP_LZO = 2,
|
218 |
MATROSKA_TRACK_ENCODING_COMP_HEADERSTRIP = 3,
|
219 |
} MatroskaTrackEncodingCompAlgo; |
220 |
|
221 |
/*
|
222 |
* Matroska Codec IDs, strings
|
223 |
*/
|
224 |
|
225 |
typedef struct CodecTags{ |
226 |
char str[20]; |
227 |
enum CodecID id;
|
228 |
}CodecTags; |
229 |
|
230 |
typedef struct CodecMime{ |
231 |
char str[32]; |
232 |
enum CodecID id;
|
233 |
}CodecMime; |
234 |
|
235 |
/* max. depth in the EBML tree structure */
|
236 |
#define EBML_MAX_DEPTH 16 |
237 |
|
238 |
extern const CodecTags ff_mkv_codec_tags[]; |
239 |
extern const CodecMime ff_mkv_mime_tags[]; |
240 |
extern const AVMetadataConv ff_mkv_metadata_conv[]; |
241 |
|
242 |
#endif /* AVFORMAT_MATROSKA_H */ |