1From 500b8f9510babd4e5d2d9cd35af689617946a1d9 Mon Sep 17 00:00:00 2001
2From: Michael Forney <mforney@mforney.org>
3Date: Wed, 14 Aug 2024 20:07:19 -0700
4Subject: [PATCH] Add generated ebml sources
5
6These require python to generate.
7
8$ python TOOLS/matroska.py --generate-header ebml_types.h
9$ python TOOLS/matroska.py --generate-definitions ebml_defs.inc
10---
11 ebml_defs.inc | 595 +++++++++++++++++++++++++++++++++++++++++++++
12 ebml_types.h | 658 ++++++++++++++++++++++++++++++++++++++++++++++++++
13 2 files changed, 1253 insertions(+)
14 create mode 100644 ebml_defs.inc
15 create mode 100644 ebml_types.h
16
17diff --git a/ebml_defs.inc b/ebml_defs.inc
18new file mode 100644
19index 0000000000..da65194639
20--- /dev/null
21+++ b/ebml_defs.inc
22@@ -0,0 +1,595 @@
23+// Generated by TOOLS/matroska.py, do not edit manually
24+
25+
26+E("TagDefault", tag_default, EBML_TYPE_UINT)
27+
28+E("TagString", tag_string, EBML_TYPE_STR)
29+
30+E("TagLanguageBCP47", tag_language_bcp47, EBML_TYPE_STR)
31+
32+E("TagLanguage", tag_language, EBML_TYPE_STR)
33+
34+E("TagName", tag_name, EBML_TYPE_STR)
35+
36+#define N simple_tag
37+E_S("SimpleTag", 5)
38+F(MATROSKA_ID_TAGNAME, tag_name, 0)
39+F(MATROSKA_ID_TAGLANGUAGE, tag_language, 0)
40+F(MATROSKA_ID_TAGLANGUAGEBCP47, tag_language_bcp47, 0)
41+F(MATROSKA_ID_TAGSTRING, tag_string, 0)
42+F(MATROSKA_ID_TAGDEFAULT, tag_default, 0)
43+}};
44+#undef N
45+
46+E("TargetAttachmentUID", target_attachment_uid, EBML_TYPE_UINT)
47+
48+E("TargetChapterUID", target_chapter_uid, EBML_TYPE_UINT)
49+
50+E("TargetEditionUID", target_edition_uid, EBML_TYPE_UINT)
51+
52+E("TargetTrackUID", target_track_uid, EBML_TYPE_UINT)
53+
54+E("TargetType", target_type, EBML_TYPE_STR)
55+
56+E("TargetTypeValue", target_type_value, EBML_TYPE_UINT)
57+
58+#define N targets
59+E_S("Targets", 6)
60+F(MATROSKA_ID_TARGETTYPEVALUE, target_type_value, 0)
61+F(MATROSKA_ID_TARGETTYPE, target_type, 0)
62+F(MATROSKA_ID_TARGETTRACKUID, target_track_uid, 0)
63+F(MATROSKA_ID_TARGETEDITIONUID, target_edition_uid, 0)
64+F(MATROSKA_ID_TARGETCHAPTERUID, target_chapter_uid, 0)
65+F(MATROSKA_ID_TARGETATTACHMENTUID, target_attachment_uid, 0)
66+}};
67+#undef N
68+
69+#define N tag
70+E_S("Tag", 2)
71+F(MATROSKA_ID_TARGETS, targets, 0)
72+F(MATROSKA_ID_SIMPLETAG, simple_tag, 1)
73+}};
74+#undef N
75+
76+#define N tags
77+E_S("Tags", 1)
78+F(MATROSKA_ID_TAG, tag, 1)
79+}};
80+#undef N
81+
82+E("ChapCountry", chap_country, EBML_TYPE_STR)
83+
84+E("ChapLanguageBCP47", chap_language_bcp47, EBML_TYPE_STR)
85+
86+E("ChapLanguage", chap_language, EBML_TYPE_STR)
87+
88+E("ChapString", chap_string, EBML_TYPE_STR)
89+
90+#define N chapter_display
91+E_S("ChapterDisplay", 4)
92+F(MATROSKA_ID_CHAPSTRING, chap_string, 0)
93+F(MATROSKA_ID_CHAPLANGUAGE, chap_language, 1)
94+F(MATROSKA_ID_CHAPLANGUAGEBCP47, chap_language_bcp47, 1)
95+F(MATROSKA_ID_CHAPCOUNTRY, chap_country, 1)
96+}};
97+#undef N
98+
99+E("ChapterSegmentEditionUID", chapter_segment_edition_uid, EBML_TYPE_UINT)
100+
101+E("ChapterSegmentUID", chapter_segment_uid, EBML_TYPE_BINARY)
102+
103+E("ChapterFlagEnabled", chapter_flag_enabled, EBML_TYPE_UINT)
104+
105+E("ChapterFlagHidden", chapter_flag_hidden, EBML_TYPE_UINT)
106+
107+E("ChapterTimeEnd", chapter_time_end, EBML_TYPE_UINT)
108+
109+E("ChapterTimeStart", chapter_time_start, EBML_TYPE_UINT)
110+
111+E("ChapterUID", chapter_uid, EBML_TYPE_UINT)
112+
113+#define N chapter_atom
114+E_S("ChapterAtom", 8)
115+F(MATROSKA_ID_CHAPTERUID, chapter_uid, 0)
116+F(MATROSKA_ID_CHAPTERTIMESTART, chapter_time_start, 0)
117+F(MATROSKA_ID_CHAPTERTIMEEND, chapter_time_end, 0)
118+F(MATROSKA_ID_CHAPTERFLAGHIDDEN, chapter_flag_hidden, 0)
119+F(MATROSKA_ID_CHAPTERFLAGENABLED, chapter_flag_enabled, 0)
120+F(MATROSKA_ID_CHAPTERSEGMENTUID, chapter_segment_uid, 0)
121+F(MATROSKA_ID_CHAPTERSEGMENTEDITIONUID, chapter_segment_edition_uid, 0)
122+F(MATROSKA_ID_CHAPTERDISPLAY, chapter_display, 1)
123+}};
124+#undef N
125+
126+E("EditionFlagOrdered", edition_flag_ordered, EBML_TYPE_UINT)
127+
128+E("EditionFlagDefault", edition_flag_default, EBML_TYPE_UINT)
129+
130+E("EditionFlagHidden", edition_flag_hidden, EBML_TYPE_UINT)
131+
132+E("EditionUID", edition_uid, EBML_TYPE_UINT)
133+
134+#define N edition_entry
135+E_S("EditionEntry", 5)
136+F(MATROSKA_ID_EDITIONUID, edition_uid, 0)
137+F(MATROSKA_ID_EDITIONFLAGHIDDEN, edition_flag_hidden, 0)
138+F(MATROSKA_ID_EDITIONFLAGDEFAULT, edition_flag_default, 0)
139+F(MATROSKA_ID_EDITIONFLAGORDERED, edition_flag_ordered, 0)
140+F(MATROSKA_ID_CHAPTERATOM, chapter_atom, 1)
141+}};
142+#undef N
143+
144+#define N chapters
145+E_S("Chapters", 1)
146+F(MATROSKA_ID_EDITIONENTRY, edition_entry, 1)
147+}};
148+#undef N
149+
150+E("FileUID", file_uid, EBML_TYPE_UINT)
151+
152+E("FileData", file_data, EBML_TYPE_BINARY)
153+
154+E("FileMimeType", file_mime_type, EBML_TYPE_STR)
155+
156+E("FileName", file_name, EBML_TYPE_STR)
157+
158+E("FileDescription", file_description, EBML_TYPE_STR)
159+
160+#define N attached_file
161+E_S("AttachedFile", 5)
162+F(MATROSKA_ID_FILEDESCRIPTION, file_description, 0)
163+F(MATROSKA_ID_FILENAME, file_name, 0)
164+F(MATROSKA_ID_FILEMIMETYPE, file_mime_type, 0)
165+F(MATROSKA_ID_FILEDATA, file_data, 0)
166+F(MATROSKA_ID_FILEUID, file_uid, 0)
167+}};
168+#undef N
169+
170+#define N attachments
171+E_S("Attachments", 1)
172+F(MATROSKA_ID_ATTACHEDFILE, attached_file, 1)
173+}};
174+#undef N
175+
176+E("CueDuration", cue_duration, EBML_TYPE_UINT)
177+
178+E("CueRelativePosition", cue_relative_position, EBML_TYPE_UINT)
179+
180+E("CueClusterPosition", cue_cluster_position, EBML_TYPE_UINT)
181+
182+E("CueTrack", cue_track, EBML_TYPE_UINT)
183+
184+#define N cue_track_positions
185+E_S("CueTrackPositions", 4)
186+F(MATROSKA_ID_CUETRACK, cue_track, 0)
187+F(MATROSKA_ID_CUECLUSTERPOSITION, cue_cluster_position, 0)
188+F(MATROSKA_ID_CUERELATIVEPOSITION, cue_relative_position, 0)
189+F(MATROSKA_ID_CUEDURATION, cue_duration, 0)
190+}};
191+#undef N
192+
193+E("CueTime", cue_time, EBML_TYPE_UINT)
194+
195+#define N cue_point
196+E_S("CuePoint", 2)
197+F(MATROSKA_ID_CUETIME, cue_time, 0)
198+F(MATROSKA_ID_CUETRACKPOSITIONS, cue_track_positions, 1)
199+}};
200+#undef N
201+
202+#define N cues
203+E_S("Cues", 1)
204+F(MATROSKA_ID_CUEPOINT, cue_point, 1)
205+}};
206+#undef N
207+
208+E("ContentCompSettings", content_comp_settings, EBML_TYPE_BINARY)
209+
210+E("ContentCompAlgo", content_comp_algo, EBML_TYPE_UINT)
211+
212+#define N content_compression
213+E_S("ContentCompression", 2)
214+F(MATROSKA_ID_CONTENTCOMPALGO, content_comp_algo, 0)
215+F(MATROSKA_ID_CONTENTCOMPSETTINGS, content_comp_settings, 0)
216+}};
217+#undef N
218+
219+E("ContentEncodingType", content_encoding_type, EBML_TYPE_UINT)
220+
221+E("ContentEncodingScope", content_encoding_scope, EBML_TYPE_UINT)
222+
223+E("ContentEncodingOrder", content_encoding_order, EBML_TYPE_UINT)
224+
225+#define N content_encoding
226+E_S("ContentEncoding", 4)
227+F(MATROSKA_ID_CONTENTENCODINGORDER, content_encoding_order, 0)
228+F(MATROSKA_ID_CONTENTENCODINGSCOPE, content_encoding_scope, 0)
229+F(MATROSKA_ID_CONTENTENCODINGTYPE, content_encoding_type, 0)
230+F(MATROSKA_ID_CONTENTCOMPRESSION, content_compression, 0)
231+}};
232+#undef N
233+
234+#define N content_encodings
235+E_S("ContentEncodings", 1)
236+F(MATROSKA_ID_CONTENTENCODING, content_encoding, 1)
237+}};
238+#undef N
239+
240+E("BitDepth", bit_depth, EBML_TYPE_UINT)
241+
242+E("Channels", channels, EBML_TYPE_UINT)
243+
244+E("OutputSamplingFrequency", output_sampling_frequency, EBML_TYPE_FLOAT)
245+
246+E("SamplingFrequency", sampling_frequency, EBML_TYPE_FLOAT)
247+
248+#define N audio
249+E_S("Audio", 4)
250+F(MATROSKA_ID_SAMPLINGFREQUENCY, sampling_frequency, 0)
251+F(MATROSKA_ID_OUTPUTSAMPLINGFREQUENCY, output_sampling_frequency, 0)
252+F(MATROSKA_ID_CHANNELS, channels, 0)
253+F(MATROSKA_ID_BITDEPTH, bit_depth, 0)
254+}};
255+#undef N
256+
257+E("ProjectionPoseRoll", projection_pose_roll, EBML_TYPE_FLOAT)
258+
259+E("ProjectionPosePitch", projection_pose_pitch, EBML_TYPE_FLOAT)
260+
261+E("ProjectionPoseYaw", projection_pose_yaw, EBML_TYPE_FLOAT)
262+
263+E("ProjectionPrivate", projection_private, EBML_TYPE_BINARY)
264+
265+E("ProjectionType", projection_type, EBML_TYPE_UINT)
266+
267+#define N projection
268+E_S("Projection", 5)
269+F(MATROSKA_ID_PROJECTIONTYPE, projection_type, 0)
270+F(MATROSKA_ID_PROJECTIONPRIVATE, projection_private, 0)
271+F(MATROSKA_ID_PROJECTIONPOSEYAW, projection_pose_yaw, 0)
272+F(MATROSKA_ID_PROJECTIONPOSEPITCH, projection_pose_pitch, 0)
273+F(MATROSKA_ID_PROJECTIONPOSEROLL, projection_pose_roll, 0)
274+}};
275+#undef N
276+
277+E("LuminanceMin", luminance_min, EBML_TYPE_FLOAT)
278+
279+E("LuminanceMax", luminance_max, EBML_TYPE_FLOAT)
280+
281+E("WhitePointChromaticityY", white_point_chromaticity_y, EBML_TYPE_FLOAT)
282+
283+E("WhitePointChromaticityX", white_point_chromaticity_x, EBML_TYPE_FLOAT)
284+
285+E("PrimaryBChromaticityY", primary_b_chromaticity_y, EBML_TYPE_FLOAT)
286+
287+E("PrimaryBChromaticityX", primary_b_chromaticity_x, EBML_TYPE_FLOAT)
288+
289+E("PrimaryGChromaticityY", primary_g_chromaticity_y, EBML_TYPE_FLOAT)
290+
291+E("PrimaryGChromaticityX", primary_g_chromaticity_x, EBML_TYPE_FLOAT)
292+
293+E("PrimaryRChromaticityY", primary_r_chromaticity_y, EBML_TYPE_FLOAT)
294+
295+E("PrimaryRChromaticityX", primary_r_chromaticity_x, EBML_TYPE_FLOAT)
296+
297+#define N mastering_metadata
298+E_S("MasteringMetadata", 10)
299+F(MATROSKA_ID_PRIMARYRCHROMATICITYX, primary_r_chromaticity_x, 0)
300+F(MATROSKA_ID_PRIMARYRCHROMATICITYY, primary_r_chromaticity_y, 0)
301+F(MATROSKA_ID_PRIMARYGCHROMATICITYX, primary_g_chromaticity_x, 0)
302+F(MATROSKA_ID_PRIMARYGCHROMATICITYY, primary_g_chromaticity_y, 0)
303+F(MATROSKA_ID_PRIMARYBCHROMATICITYX, primary_b_chromaticity_x, 0)
304+F(MATROSKA_ID_PRIMARYBCHROMATICITYY, primary_b_chromaticity_y, 0)
305+F(MATROSKA_ID_WHITEPOINTCHROMATICITYX, white_point_chromaticity_x, 0)
306+F(MATROSKA_ID_WHITEPOINTCHROMATICITYY, white_point_chromaticity_y, 0)
307+F(MATROSKA_ID_LUMINANCEMAX, luminance_max, 0)
308+F(MATROSKA_ID_LUMINANCEMIN, luminance_min, 0)
309+}};
310+#undef N
311+
312+E("MaxFALL", max_fall, EBML_TYPE_UINT)
313+
314+E("MaxCLL", max_cll, EBML_TYPE_UINT)
315+
316+E("Primaries", primaries, EBML_TYPE_UINT)
317+
318+E("TransferCharacteristics", transfer_characteristics, EBML_TYPE_UINT)
319+
320+E("Range", range, EBML_TYPE_UINT)
321+
322+E("ChromaSitingVert", chroma_siting_vert, EBML_TYPE_UINT)
323+
324+E("ChromaSitingHorz", chroma_siting_horz, EBML_TYPE_UINT)
325+
326+E("CbSubsamplingVert", cb_subsampling_vert, EBML_TYPE_UINT)
327+
328+E("CbSubsamplingHorz", cb_subsampling_horz, EBML_TYPE_UINT)
329+
330+E("ChromaSubsamplingVert", chroma_subsampling_vert, EBML_TYPE_UINT)
331+
332+E("ChromaSubsamplingHorz", chroma_subsampling_horz, EBML_TYPE_UINT)
333+
334+E("BitsPerChannel", bits_per_channel, EBML_TYPE_UINT)
335+
336+E("MatrixCoefficients", matrix_coefficients, EBML_TYPE_UINT)
337+
338+#define N colour
339+E_S("Colour", 14)
340+F(MATROSKA_ID_MATRIXCOEFFICIENTS, matrix_coefficients, 0)
341+F(MATROSKA_ID_BITSPERCHANNEL, bits_per_channel, 0)
342+F(MATROSKA_ID_CHROMASUBSAMPLINGHORZ, chroma_subsampling_horz, 0)
343+F(MATROSKA_ID_CHROMASUBSAMPLINGVERT, chroma_subsampling_vert, 0)
344+F(MATROSKA_ID_CBSUBSAMPLINGHORZ, cb_subsampling_horz, 0)
345+F(MATROSKA_ID_CBSUBSAMPLINGVERT, cb_subsampling_vert, 0)
346+F(MATROSKA_ID_CHROMASITINGHORZ, chroma_siting_horz, 0)
347+F(MATROSKA_ID_CHROMASITINGVERT, chroma_siting_vert, 0)
348+F(MATROSKA_ID_RANGE, range, 0)
349+F(MATROSKA_ID_TRANSFERCHARACTERISTICS, transfer_characteristics, 0)
350+F(MATROSKA_ID_PRIMARIES, primaries, 0)
351+F(MATROSKA_ID_MAXCLL, max_cll, 0)
352+F(MATROSKA_ID_MAXFALL, max_fall, 0)
353+F(MATROSKA_ID_MASTERINGMETADATA, mastering_metadata, 0)
354+}};
355+#undef N
356+
357+E("StereoMode", stereo_mode, EBML_TYPE_UINT)
358+
359+E("ColourSpace", colour_space, EBML_TYPE_BINARY)
360+
361+E("FrameRate", frame_rate, EBML_TYPE_FLOAT)
362+
363+E("PixelCropBottom", pixel_crop_bottom, EBML_TYPE_UINT)
364+
365+E("PixelCropRight", pixel_crop_right, EBML_TYPE_UINT)
366+
367+E("PixelCropLeft", pixel_crop_left, EBML_TYPE_UINT)
368+
369+E("PixelCropTop", pixel_crop_top, EBML_TYPE_UINT)
370+
371+E("DisplayUnit", display_unit, EBML_TYPE_UINT)
372+
373+E("DisplayHeight", display_height, EBML_TYPE_UINT)
374+
375+E("DisplayWidth", display_width, EBML_TYPE_UINT)
376+
377+E("PixelHeight", pixel_height, EBML_TYPE_UINT)
378+
379+E("PixelWidth", pixel_width, EBML_TYPE_UINT)
380+
381+E("FlagInterlaced", flag_interlaced, EBML_TYPE_UINT)
382+
383+#define N video
384+E_S("Video", 15)
385+F(MATROSKA_ID_FLAGINTERLACED, flag_interlaced, 0)
386+F(MATROSKA_ID_PIXELWIDTH, pixel_width, 0)
387+F(MATROSKA_ID_PIXELHEIGHT, pixel_height, 0)
388+F(MATROSKA_ID_DISPLAYWIDTH, display_width, 0)
389+F(MATROSKA_ID_DISPLAYHEIGHT, display_height, 0)
390+F(MATROSKA_ID_DISPLAYUNIT, display_unit, 0)
391+F(MATROSKA_ID_PIXELCROPTOP, pixel_crop_top, 0)
392+F(MATROSKA_ID_PIXELCROPLEFT, pixel_crop_left, 0)
393+F(MATROSKA_ID_PIXELCROPRIGHT, pixel_crop_right, 0)
394+F(MATROSKA_ID_PIXELCROPBOTTOM, pixel_crop_bottom, 0)
395+F(MATROSKA_ID_FRAMERATE, frame_rate, 0)
396+F(MATROSKA_ID_COLOURSPACE, colour_space, 0)
397+F(MATROSKA_ID_STEREOMODE, stereo_mode, 0)
398+F(MATROSKA_ID_COLOUR, colour, 0)
399+F(MATROSKA_ID_PROJECTION, projection, 0)
400+}};
401+#undef N
402+
403+E("SeekPreRoll", seek_pre_roll, EBML_TYPE_UINT)
404+
405+E("CodecDelay", codec_delay, EBML_TYPE_UINT)
406+
407+E("CodecDecodeAll", codec_decode_all, EBML_TYPE_UINT)
408+
409+E("CodecName", codec_name, EBML_TYPE_STR)
410+
411+E("CodecPrivate", codec_private, EBML_TYPE_BINARY)
412+
413+E("CodecID", codec_id, EBML_TYPE_STR)
414+
415+E("LanguageBCP47", language_bcp47, EBML_TYPE_STR)
416+
417+E("Language", language, EBML_TYPE_STR)
418+
419+E("Name", name, EBML_TYPE_STR)
420+
421+E("MaxBlockAdditionID", max_block_addition_id, EBML_TYPE_UINT)
422+
423+E("TrackTimecodeScale", track_timecode_scale, EBML_TYPE_FLOAT)
424+
425+E("DefaultDuration", default_duration, EBML_TYPE_UINT)
426+
427+E("MaxCache", max_cache, EBML_TYPE_UINT)
428+
429+E("MinCache", min_cache, EBML_TYPE_UINT)
430+
431+E("FlagLacing", flag_lacing, EBML_TYPE_UINT)
432+
433+E("FlagForced", flag_forced, EBML_TYPE_UINT)
434+
435+E("FlagDefault", flag_default, EBML_TYPE_UINT)
436+
437+E("FlagEnabled", flag_enabled, EBML_TYPE_UINT)
438+
439+E("TrackType", track_type, EBML_TYPE_UINT)
440+
441+E("TrackUID", track_uid, EBML_TYPE_UINT)
442+
443+E("TrackNumber", track_number, EBML_TYPE_UINT)
444+
445+#define N track_entry
446+E_S("TrackEntry", 24)
447+F(MATROSKA_ID_TRACKNUMBER, track_number, 0)
448+F(MATROSKA_ID_TRACKUID, track_uid, 0)
449+F(MATROSKA_ID_TRACKTYPE, track_type, 0)
450+F(MATROSKA_ID_FLAGENABLED, flag_enabled, 0)
451+F(MATROSKA_ID_FLAGDEFAULT, flag_default, 0)
452+F(MATROSKA_ID_FLAGFORCED, flag_forced, 0)
453+F(MATROSKA_ID_FLAGLACING, flag_lacing, 0)
454+F(MATROSKA_ID_MINCACHE, min_cache, 0)
455+F(MATROSKA_ID_MAXCACHE, max_cache, 0)
456+F(MATROSKA_ID_DEFAULTDURATION, default_duration, 0)
457+F(MATROSKA_ID_TRACKTIMECODESCALE, track_timecode_scale, 0)
458+F(MATROSKA_ID_MAXBLOCKADDITIONID, max_block_addition_id, 0)
459+F(MATROSKA_ID_NAME, name, 0)
460+F(MATROSKA_ID_LANGUAGE, language, 0)
461+F(MATROSKA_ID_LANGUAGEBCP47, language_bcp47, 0)
462+F(MATROSKA_ID_CODECID, codec_id, 0)
463+F(MATROSKA_ID_CODECPRIVATE, codec_private, 0)
464+F(MATROSKA_ID_CODECNAME, codec_name, 0)
465+F(MATROSKA_ID_CODECDECODEALL, codec_decode_all, 0)
466+F(MATROSKA_ID_CODECDELAY, codec_delay, 0)
467+F(MATROSKA_ID_SEEKPREROLL, seek_pre_roll, 0)
468+F(MATROSKA_ID_VIDEO, video, 0)
469+F(MATROSKA_ID_AUDIO, audio, 0)
470+F(MATROSKA_ID_CONTENTENCODINGS, content_encodings, 0)
471+}};
472+#undef N
473+
474+#define N tracks
475+E_S("Tracks", 1)
476+F(MATROSKA_ID_TRACKENTRY, track_entry, 1)
477+}};
478+#undef N
479+
480+E("SimpleBlock", simple_block, EBML_TYPE_BINARY)
481+
482+E("BlockAdditional", block_additional, EBML_TYPE_BINARY)
483+
484+E("BlockAddID", block_add_id, EBML_TYPE_UINT)
485+
486+#define N block_more
487+E_S("BlockMore", 2)
488+F(MATROSKA_ID_BLOCKADDID, block_add_id, 0)
489+F(MATROSKA_ID_BLOCKADDITIONAL, block_additional, 0)
490+}};
491+#undef N
492+
493+#define N block_additions
494+E_S("BlockAdditions", 1)
495+F(MATROSKA_ID_BLOCKMORE, block_more, 1)
496+}};
497+#undef N
498+
499+E("DiscardPadding", discard_padding, EBML_TYPE_SINT)
500+
501+E("ReferenceBlock", reference_block, EBML_TYPE_SINT)
502+
503+E("BlockDuration", block_duration, EBML_TYPE_UINT)
504+
505+E("Block", block, EBML_TYPE_BINARY)
506+
507+#define N block_group
508+E_S("BlockGroup", 5)
509+F(MATROSKA_ID_BLOCK, block, 0)
510+F(MATROSKA_ID_BLOCKDURATION, block_duration, 0)
511+F(MATROSKA_ID_REFERENCEBLOCK, reference_block, 1)
512+F(MATROSKA_ID_DISCARDPADDING, discard_padding, 0)
513+F(MATROSKA_ID_BLOCKADDITIONS, block_additions, 0)
514+}};
515+#undef N
516+
517+E("Timecode", timecode, EBML_TYPE_UINT)
518+
519+#define N cluster
520+E_S("Cluster", 3)
521+F(MATROSKA_ID_TIMECODE, timecode, 0)
522+F(MATROSKA_ID_BLOCKGROUP, block_group, 1)
523+F(MATROSKA_ID_SIMPLEBLOCK, simple_block, 1)
524+}};
525+#undef N
526+
527+E("Duration", duration, EBML_TYPE_FLOAT)
528+
529+E("WritingApp", writing_app, EBML_TYPE_STR)
530+
531+E("MuxingApp", muxing_app, EBML_TYPE_STR)
532+
533+E("Title", title, EBML_TYPE_STR)
534+
535+E("DateUTC", date_utc, EBML_TYPE_SINT)
536+
537+E("TimecodeScale", timecode_scale, EBML_TYPE_UINT)
538+
539+E("NextUID", next_uid, EBML_TYPE_BINARY)
540+
541+E("PrevUID", prev_uid, EBML_TYPE_BINARY)
542+
543+E("SegmentUID", segment_uid, EBML_TYPE_BINARY)
544+
545+#define N info
546+E_S("Info", 9)
547+F(MATROSKA_ID_SEGMENTUID, segment_uid, 0)
548+F(MATROSKA_ID_PREVUID, prev_uid, 0)
549+F(MATROSKA_ID_NEXTUID, next_uid, 0)
550+F(MATROSKA_ID_TIMECODESCALE, timecode_scale, 0)
551+F(MATROSKA_ID_DATEUTC, date_utc, 0)
552+F(MATROSKA_ID_TITLE, title, 0)
553+F(MATROSKA_ID_MUXINGAPP, muxing_app, 0)
554+F(MATROSKA_ID_WRITINGAPP, writing_app, 0)
555+F(MATROSKA_ID_DURATION, duration, 0)
556+}};
557+#undef N
558+
559+E("SeekPosition", seek_position, EBML_TYPE_UINT)
560+
561+E("SeekID", seek_id, EBML_TYPE_EBML_ID)
562+
563+#define N seek
564+E_S("Seek", 2)
565+F(MATROSKA_ID_SEEKID, seek_id, 0)
566+F(MATROSKA_ID_SEEKPOSITION, seek_position, 0)
567+}};
568+#undef N
569+
570+#define N seek_head
571+E_S("SeekHead", 1)
572+F(MATROSKA_ID_SEEK, seek, 1)
573+}};
574+#undef N
575+
576+#define N segment
577+E_S("Segment", 8)
578+F(MATROSKA_ID_SEEKHEAD, seek_head, 1)
579+F(MATROSKA_ID_INFO, info, 1)
580+F(MATROSKA_ID_CLUSTER, cluster, 1)
581+F(MATROSKA_ID_TRACKS, tracks, 1)
582+F(MATROSKA_ID_CUES, cues, 0)
583+F(MATROSKA_ID_ATTACHMENTS, attachments, 0)
584+F(MATROSKA_ID_CHAPTERS, chapters, 0)
585+F(MATROSKA_ID_TAGS, tags, 1)
586+}};
587+#undef N
588+
589+E("Void", void, EBML_TYPE_BINARY)
590+
591+E("CRC32", crc32, EBML_TYPE_BINARY)
592+
593+E("DocTypeReadVersion", doc_type_read_version, EBML_TYPE_UINT)
594+
595+E("DocTypeVersion", doc_type_version, EBML_TYPE_UINT)
596+
597+E("DocType", doc_type, EBML_TYPE_STR)
598+
599+E("EBMLMaxSizeLength", ebml_max_size_length, EBML_TYPE_UINT)
600+
601+E("EBMLMaxIDLength", ebml_max_id_length, EBML_TYPE_UINT)
602+
603+E("EBMLReadVersion", ebml_read_version, EBML_TYPE_UINT)
604+
605+E("EBMLVersion", ebml_version, EBML_TYPE_UINT)
606+
607+#define N ebml
608+E_S("EBML", 7)
609+F(EBML_ID_EBMLVERSION, ebml_version, 0)
610+F(EBML_ID_EBMLREADVERSION, ebml_read_version, 0)
611+F(EBML_ID_EBMLMAXIDLENGTH, ebml_max_id_length, 0)
612+F(EBML_ID_EBMLMAXSIZELENGTH, ebml_max_size_length, 0)
613+F(EBML_ID_DOCTYPE, doc_type, 0)
614+F(EBML_ID_DOCTYPEVERSION, doc_type_version, 0)
615+F(EBML_ID_DOCTYPEREADVERSION, doc_type_read_version, 0)
616+}};
617+#undef N
618diff --git a/ebml_types.h b/ebml_types.h
619new file mode 100644
620index 0000000000..d544694d48
621--- /dev/null
622+++ b/ebml_types.h
623@@ -0,0 +1,658 @@
624+// Generated by TOOLS/matroska.py, do not edit manually
625+
626+#define EBML_ID_EBML 0x1a45dfa3
627+#define EBML_ID_EBMLVERSION 0x4286
628+#define EBML_ID_EBMLREADVERSION 0x42f7
629+#define EBML_ID_EBMLMAXIDLENGTH 0x42f2
630+#define EBML_ID_EBMLMAXSIZELENGTH 0x42f3
631+#define EBML_ID_DOCTYPE 0x4282
632+#define EBML_ID_DOCTYPEVERSION 0x4287
633+#define EBML_ID_DOCTYPEREADVERSION 0x4285
634+#define EBML_ID_CRC32 0xbf
635+#define EBML_ID_VOID 0xec
636+#define MATROSKA_ID_SEGMENT 0x18538067
637+#define MATROSKA_ID_SEEKHEAD 0x114d9b74
638+#define MATROSKA_ID_SEEK 0x4dbb
639+#define MATROSKA_ID_SEEKID 0x53ab
640+#define MATROSKA_ID_SEEKPOSITION 0x53ac
641+#define MATROSKA_ID_INFO 0x1549a966
642+#define MATROSKA_ID_SEGMENTUID 0x73a4
643+#define MATROSKA_ID_PREVUID 0x3cb923
644+#define MATROSKA_ID_NEXTUID 0x3eb923
645+#define MATROSKA_ID_TIMECODESCALE 0x2ad7b1
646+#define MATROSKA_ID_DATEUTC 0x4461
647+#define MATROSKA_ID_TITLE 0x7ba9
648+#define MATROSKA_ID_MUXINGAPP 0x4d80
649+#define MATROSKA_ID_WRITINGAPP 0x5741
650+#define MATROSKA_ID_DURATION 0x4489
651+#define MATROSKA_ID_CLUSTER 0x1f43b675
652+#define MATROSKA_ID_TIMECODE 0xe7
653+#define MATROSKA_ID_BLOCKGROUP 0xa0
654+#define MATROSKA_ID_BLOCK 0xa1
655+#define MATROSKA_ID_BLOCKDURATION 0x9b
656+#define MATROSKA_ID_REFERENCEBLOCK 0xfb
657+#define MATROSKA_ID_DISCARDPADDING 0x75a2
658+#define MATROSKA_ID_BLOCKADDITIONS 0x75a1
659+#define MATROSKA_ID_BLOCKMORE 0xa6
660+#define MATROSKA_ID_BLOCKADDID 0xee
661+#define MATROSKA_ID_BLOCKADDITIONAL 0xa5
662+#define MATROSKA_ID_SIMPLEBLOCK 0xa3
663+#define MATROSKA_ID_TRACKS 0x1654ae6b
664+#define MATROSKA_ID_TRACKENTRY 0xae
665+#define MATROSKA_ID_TRACKNUMBER 0xd7
666+#define MATROSKA_ID_TRACKUID 0x73c5
667+#define MATROSKA_ID_TRACKTYPE 0x83
668+#define MATROSKA_ID_FLAGENABLED 0xb9
669+#define MATROSKA_ID_FLAGDEFAULT 0x88
670+#define MATROSKA_ID_FLAGFORCED 0x55aa
671+#define MATROSKA_ID_FLAGLACING 0x9c
672+#define MATROSKA_ID_MINCACHE 0x6de7
673+#define MATROSKA_ID_MAXCACHE 0x6df8
674+#define MATROSKA_ID_DEFAULTDURATION 0x23e383
675+#define MATROSKA_ID_TRACKTIMECODESCALE 0x23314f
676+#define MATROSKA_ID_MAXBLOCKADDITIONID 0x55ee
677+#define MATROSKA_ID_NAME 0x536e
678+#define MATROSKA_ID_LANGUAGE 0x22b59c
679+#define MATROSKA_ID_LANGUAGEBCP47 0x22b59d
680+#define MATROSKA_ID_CODECID 0x86
681+#define MATROSKA_ID_CODECPRIVATE 0x63a2
682+#define MATROSKA_ID_CODECNAME 0x258688
683+#define MATROSKA_ID_CODECDECODEALL 0xaa
684+#define MATROSKA_ID_CODECDELAY 0x56aa
685+#define MATROSKA_ID_SEEKPREROLL 0x56bb
686+#define MATROSKA_ID_VIDEO 0xe0
687+#define MATROSKA_ID_FLAGINTERLACED 0x9a
688+#define MATROSKA_ID_PIXELWIDTH 0xb0
689+#define MATROSKA_ID_PIXELHEIGHT 0xba
690+#define MATROSKA_ID_DISPLAYWIDTH 0x54b0
691+#define MATROSKA_ID_DISPLAYHEIGHT 0x54ba
692+#define MATROSKA_ID_DISPLAYUNIT 0x54b2
693+#define MATROSKA_ID_PIXELCROPTOP 0x54bb
694+#define MATROSKA_ID_PIXELCROPLEFT 0x54cc
695+#define MATROSKA_ID_PIXELCROPRIGHT 0x54dd
696+#define MATROSKA_ID_PIXELCROPBOTTOM 0x54aa
697+#define MATROSKA_ID_FRAMERATE 0x2383e3
698+#define MATROSKA_ID_COLOURSPACE 0x2eb524
699+#define MATROSKA_ID_STEREOMODE 0x53b8
700+#define MATROSKA_ID_COLOUR 0x55b0
701+#define MATROSKA_ID_MATRIXCOEFFICIENTS 0x55b1
702+#define MATROSKA_ID_BITSPERCHANNEL 0x55b2
703+#define MATROSKA_ID_CHROMASUBSAMPLINGHORZ 0x55b3
704+#define MATROSKA_ID_CHROMASUBSAMPLINGVERT 0x55b4
705+#define MATROSKA_ID_CBSUBSAMPLINGHORZ 0x55b5
706+#define MATROSKA_ID_CBSUBSAMPLINGVERT 0x55b6
707+#define MATROSKA_ID_CHROMASITINGHORZ 0x55b7
708+#define MATROSKA_ID_CHROMASITINGVERT 0x55b8
709+#define MATROSKA_ID_RANGE 0x55b9
710+#define MATROSKA_ID_TRANSFERCHARACTERISTICS 0x55ba
711+#define MATROSKA_ID_PRIMARIES 0x55bb
712+#define MATROSKA_ID_MAXCLL 0x55bc
713+#define MATROSKA_ID_MAXFALL 0x55bd
714+#define MATROSKA_ID_MASTERINGMETADATA 0x55d0
715+#define MATROSKA_ID_PRIMARYRCHROMATICITYX 0x55d1
716+#define MATROSKA_ID_PRIMARYRCHROMATICITYY 0x55d2
717+#define MATROSKA_ID_PRIMARYGCHROMATICITYX 0x55d3
718+#define MATROSKA_ID_PRIMARYGCHROMATICITYY 0x55d4
719+#define MATROSKA_ID_PRIMARYBCHROMATICITYX 0x55d5
720+#define MATROSKA_ID_PRIMARYBCHROMATICITYY 0x55d6
721+#define MATROSKA_ID_WHITEPOINTCHROMATICITYX 0x55d7
722+#define MATROSKA_ID_WHITEPOINTCHROMATICITYY 0x55d8
723+#define MATROSKA_ID_LUMINANCEMAX 0x55d9
724+#define MATROSKA_ID_LUMINANCEMIN 0x55da
725+#define MATROSKA_ID_PROJECTION 0x7670
726+#define MATROSKA_ID_PROJECTIONTYPE 0x7671
727+#define MATROSKA_ID_PROJECTIONPRIVATE 0x7672
728+#define MATROSKA_ID_PROJECTIONPOSEYAW 0x7673
729+#define MATROSKA_ID_PROJECTIONPOSEPITCH 0x7674
730+#define MATROSKA_ID_PROJECTIONPOSEROLL 0x7675
731+#define MATROSKA_ID_AUDIO 0xe1
732+#define MATROSKA_ID_SAMPLINGFREQUENCY 0xb5
733+#define MATROSKA_ID_OUTPUTSAMPLINGFREQUENCY 0x78b5
734+#define MATROSKA_ID_CHANNELS 0x9f
735+#define MATROSKA_ID_BITDEPTH 0x6264
736+#define MATROSKA_ID_CONTENTENCODINGS 0x6d80
737+#define MATROSKA_ID_CONTENTENCODING 0x6240
738+#define MATROSKA_ID_CONTENTENCODINGORDER 0x5031
739+#define MATROSKA_ID_CONTENTENCODINGSCOPE 0x5032
740+#define MATROSKA_ID_CONTENTENCODINGTYPE 0x5033
741+#define MATROSKA_ID_CONTENTCOMPRESSION 0x5034
742+#define MATROSKA_ID_CONTENTCOMPALGO 0x4254
743+#define MATROSKA_ID_CONTENTCOMPSETTINGS 0x4255
744+#define MATROSKA_ID_CUES 0x1c53bb6b
745+#define MATROSKA_ID_CUEPOINT 0xbb
746+#define MATROSKA_ID_CUETIME 0xb3
747+#define MATROSKA_ID_CUETRACKPOSITIONS 0xb7
748+#define MATROSKA_ID_CUETRACK 0xf7
749+#define MATROSKA_ID_CUECLUSTERPOSITION 0xf1
750+#define MATROSKA_ID_CUERELATIVEPOSITION 0xf0
751+#define MATROSKA_ID_CUEDURATION 0xb2
752+#define MATROSKA_ID_ATTACHMENTS 0x1941a469
753+#define MATROSKA_ID_ATTACHEDFILE 0x61a7
754+#define MATROSKA_ID_FILEDESCRIPTION 0x467e
755+#define MATROSKA_ID_FILENAME 0x466e
756+#define MATROSKA_ID_FILEMIMETYPE 0x4660
757+#define MATROSKA_ID_FILEDATA 0x465c
758+#define MATROSKA_ID_FILEUID 0x46ae
759+#define MATROSKA_ID_CHAPTERS 0x1043a770
760+#define MATROSKA_ID_EDITIONENTRY 0x45b9
761+#define MATROSKA_ID_EDITIONUID 0x45bc
762+#define MATROSKA_ID_EDITIONFLAGHIDDEN 0x45bd
763+#define MATROSKA_ID_EDITIONFLAGDEFAULT 0x45db
764+#define MATROSKA_ID_EDITIONFLAGORDERED 0x45dd
765+#define MATROSKA_ID_CHAPTERATOM 0xb6
766+#define MATROSKA_ID_CHAPTERUID 0x73c4
767+#define MATROSKA_ID_CHAPTERTIMESTART 0x91
768+#define MATROSKA_ID_CHAPTERTIMEEND 0x92
769+#define MATROSKA_ID_CHAPTERFLAGHIDDEN 0x98
770+#define MATROSKA_ID_CHAPTERFLAGENABLED 0x4598
771+#define MATROSKA_ID_CHAPTERSEGMENTUID 0x6e67
772+#define MATROSKA_ID_CHAPTERSEGMENTEDITIONUID 0x6ebc
773+#define MATROSKA_ID_CHAPTERDISPLAY 0x80
774+#define MATROSKA_ID_CHAPSTRING 0x85
775+#define MATROSKA_ID_CHAPLANGUAGE 0x437c
776+#define MATROSKA_ID_CHAPLANGUAGEBCP47 0x437d
777+#define MATROSKA_ID_CHAPCOUNTRY 0x437e
778+#define MATROSKA_ID_TAGS 0x1254c367
779+#define MATROSKA_ID_TAG 0x7373
780+#define MATROSKA_ID_TARGETS 0x63c0
781+#define MATROSKA_ID_TARGETTYPEVALUE 0x68ca
782+#define MATROSKA_ID_TARGETTYPE 0x63ca
783+#define MATROSKA_ID_TARGETTRACKUID 0x63c5
784+#define MATROSKA_ID_TARGETEDITIONUID 0x63c9
785+#define MATROSKA_ID_TARGETCHAPTERUID 0x63c4
786+#define MATROSKA_ID_TARGETATTACHMENTUID 0x63c6
787+#define MATROSKA_ID_SIMPLETAG 0x67c8
788+#define MATROSKA_ID_TAGNAME 0x45a3
789+#define MATROSKA_ID_TAGLANGUAGE 0x447a
790+#define MATROSKA_ID_TAGLANGUAGEBCP47 0x447b
791+#define MATROSKA_ID_TAGSTRING 0x4487
792+#define MATROSKA_ID_TAGDEFAULT 0x4484
793+
794+
795+struct ebml_simple_tag {
796+ char * tag_name;
797+ char * tag_language;
798+ char * tag_language_bcp47;
799+ char * tag_string;
800+ uint64_t tag_default;
801+
802+ int n_tag_name;
803+ int n_tag_language;
804+ int n_tag_language_bcp47;
805+ int n_tag_string;
806+ int n_tag_default;
807+};
808+
809+struct ebml_targets {
810+ uint64_t target_type_value;
811+ char * target_type;
812+ uint64_t target_track_uid;
813+ uint64_t target_edition_uid;
814+ uint64_t target_chapter_uid;
815+ uint64_t target_attachment_uid;
816+
817+ int n_target_type_value;
818+ int n_target_type;
819+ int n_target_track_uid;
820+ int n_target_edition_uid;
821+ int n_target_chapter_uid;
822+ int n_target_attachment_uid;
823+};
824+
825+struct ebml_tag {
826+ struct ebml_targets targets;
827+ struct ebml_simple_tag *simple_tag;
828+
829+ int n_targets;
830+ int n_simple_tag;
831+};
832+
833+struct ebml_tags {
834+ struct ebml_tag *tag;
835+
836+ int n_tag;
837+};
838+
839+struct ebml_chapter_display {
840+ char * chap_string;
841+ char * *chap_language;
842+ char * *chap_language_bcp47;
843+ char * *chap_country;
844+
845+ int n_chap_string;
846+ int n_chap_language;
847+ int n_chap_language_bcp47;
848+ int n_chap_country;
849+};
850+
851+struct ebml_chapter_atom {
852+ uint64_t chapter_uid;
853+ uint64_t chapter_time_start;
854+ uint64_t chapter_time_end;
855+ uint64_t chapter_flag_hidden;
856+ uint64_t chapter_flag_enabled;
857+ bstr chapter_segment_uid;
858+ uint64_t chapter_segment_edition_uid;
859+ struct ebml_chapter_display *chapter_display;
860+
861+ int n_chapter_uid;
862+ int n_chapter_time_start;
863+ int n_chapter_time_end;
864+ int n_chapter_flag_hidden;
865+ int n_chapter_flag_enabled;
866+ int n_chapter_segment_uid;
867+ int n_chapter_segment_edition_uid;
868+ int n_chapter_display;
869+};
870+
871+struct ebml_edition_entry {
872+ uint64_t edition_uid;
873+ uint64_t edition_flag_hidden;
874+ uint64_t edition_flag_default;
875+ uint64_t edition_flag_ordered;
876+ struct ebml_chapter_atom *chapter_atom;
877+
878+ int n_edition_uid;
879+ int n_edition_flag_hidden;
880+ int n_edition_flag_default;
881+ int n_edition_flag_ordered;
882+ int n_chapter_atom;
883+};
884+
885+struct ebml_chapters {
886+ struct ebml_edition_entry *edition_entry;
887+
888+ int n_edition_entry;
889+};
890+
891+struct ebml_attached_file {
892+ char * file_description;
893+ char * file_name;
894+ char * file_mime_type;
895+ bstr file_data;
896+ uint64_t file_uid;
897+
898+ int n_file_description;
899+ int n_file_name;
900+ int n_file_mime_type;
901+ int n_file_data;
902+ int n_file_uid;
903+};
904+
905+struct ebml_attachments {
906+ struct ebml_attached_file *attached_file;
907+
908+ int n_attached_file;
909+};
910+
911+struct ebml_cue_track_positions {
912+ uint64_t cue_track;
913+ uint64_t cue_cluster_position;
914+ uint64_t cue_relative_position;
915+ uint64_t cue_duration;
916+
917+ int n_cue_track;
918+ int n_cue_cluster_position;
919+ int n_cue_relative_position;
920+ int n_cue_duration;
921+};
922+
923+struct ebml_cue_point {
924+ uint64_t cue_time;
925+ struct ebml_cue_track_positions *cue_track_positions;
926+
927+ int n_cue_time;
928+ int n_cue_track_positions;
929+};
930+
931+struct ebml_cues {
932+ struct ebml_cue_point *cue_point;
933+
934+ int n_cue_point;
935+};
936+
937+struct ebml_content_compression {
938+ uint64_t content_comp_algo;
939+ bstr content_comp_settings;
940+
941+ int n_content_comp_algo;
942+ int n_content_comp_settings;
943+};
944+
945+struct ebml_content_encoding {
946+ uint64_t content_encoding_order;
947+ uint64_t content_encoding_scope;
948+ uint64_t content_encoding_type;
949+ struct ebml_content_compression content_compression;
950+
951+ int n_content_encoding_order;
952+ int n_content_encoding_scope;
953+ int n_content_encoding_type;
954+ int n_content_compression;
955+};
956+
957+struct ebml_content_encodings {
958+ struct ebml_content_encoding *content_encoding;
959+
960+ int n_content_encoding;
961+};
962+
963+struct ebml_audio {
964+ double sampling_frequency;
965+ double output_sampling_frequency;
966+ uint64_t channels;
967+ uint64_t bit_depth;
968+
969+ int n_sampling_frequency;
970+ int n_output_sampling_frequency;
971+ int n_channels;
972+ int n_bit_depth;
973+};
974+
975+struct ebml_projection {
976+ uint64_t projection_type;
977+ bstr projection_private;
978+ double projection_pose_yaw;
979+ double projection_pose_pitch;
980+ double projection_pose_roll;
981+
982+ int n_projection_type;
983+ int n_projection_private;
984+ int n_projection_pose_yaw;
985+ int n_projection_pose_pitch;
986+ int n_projection_pose_roll;
987+};
988+
989+struct ebml_mastering_metadata {
990+ double primary_r_chromaticity_x;
991+ double primary_r_chromaticity_y;
992+ double primary_g_chromaticity_x;
993+ double primary_g_chromaticity_y;
994+ double primary_b_chromaticity_x;
995+ double primary_b_chromaticity_y;
996+ double white_point_chromaticity_x;
997+ double white_point_chromaticity_y;
998+ double luminance_max;
999+ double luminance_min;
1000+
1001+ int n_primary_r_chromaticity_x;
1002+ int n_primary_r_chromaticity_y;
1003+ int n_primary_g_chromaticity_x;
1004+ int n_primary_g_chromaticity_y;
1005+ int n_primary_b_chromaticity_x;
1006+ int n_primary_b_chromaticity_y;
1007+ int n_white_point_chromaticity_x;
1008+ int n_white_point_chromaticity_y;
1009+ int n_luminance_max;
1010+ int n_luminance_min;
1011+};
1012+
1013+struct ebml_colour {
1014+ uint64_t matrix_coefficients;
1015+ uint64_t bits_per_channel;
1016+ uint64_t chroma_subsampling_horz;
1017+ uint64_t chroma_subsampling_vert;
1018+ uint64_t cb_subsampling_horz;
1019+ uint64_t cb_subsampling_vert;
1020+ uint64_t chroma_siting_horz;
1021+ uint64_t chroma_siting_vert;
1022+ uint64_t range;
1023+ uint64_t transfer_characteristics;
1024+ uint64_t primaries;
1025+ uint64_t max_cll;
1026+ uint64_t max_fall;
1027+ struct ebml_mastering_metadata mastering_metadata;
1028+
1029+ int n_matrix_coefficients;
1030+ int n_bits_per_channel;
1031+ int n_chroma_subsampling_horz;
1032+ int n_chroma_subsampling_vert;
1033+ int n_cb_subsampling_horz;
1034+ int n_cb_subsampling_vert;
1035+ int n_chroma_siting_horz;
1036+ int n_chroma_siting_vert;
1037+ int n_range;
1038+ int n_transfer_characteristics;
1039+ int n_primaries;
1040+ int n_max_cll;
1041+ int n_max_fall;
1042+ int n_mastering_metadata;
1043+};
1044+
1045+struct ebml_video {
1046+ uint64_t flag_interlaced;
1047+ uint64_t pixel_width;
1048+ uint64_t pixel_height;
1049+ uint64_t display_width;
1050+ uint64_t display_height;
1051+ uint64_t display_unit;
1052+ uint64_t pixel_crop_top;
1053+ uint64_t pixel_crop_left;
1054+ uint64_t pixel_crop_right;
1055+ uint64_t pixel_crop_bottom;
1056+ double frame_rate;
1057+ bstr colour_space;
1058+ uint64_t stereo_mode;
1059+ struct ebml_colour colour;
1060+ struct ebml_projection projection;
1061+
1062+ int n_flag_interlaced;
1063+ int n_pixel_width;
1064+ int n_pixel_height;
1065+ int n_display_width;
1066+ int n_display_height;
1067+ int n_display_unit;
1068+ int n_pixel_crop_top;
1069+ int n_pixel_crop_left;
1070+ int n_pixel_crop_right;
1071+ int n_pixel_crop_bottom;
1072+ int n_frame_rate;
1073+ int n_colour_space;
1074+ int n_stereo_mode;
1075+ int n_colour;
1076+ int n_projection;
1077+};
1078+
1079+struct ebml_track_entry {
1080+ uint64_t track_number;
1081+ uint64_t track_uid;
1082+ uint64_t track_type;
1083+ uint64_t flag_enabled;
1084+ uint64_t flag_default;
1085+ uint64_t flag_forced;
1086+ uint64_t flag_lacing;
1087+ uint64_t min_cache;
1088+ uint64_t max_cache;
1089+ uint64_t default_duration;
1090+ double track_timecode_scale;
1091+ uint64_t max_block_addition_id;
1092+ char * name;
1093+ char * language;
1094+ char * language_bcp47;
1095+ char * codec_id;
1096+ bstr codec_private;
1097+ char * codec_name;
1098+ uint64_t codec_decode_all;
1099+ uint64_t codec_delay;
1100+ uint64_t seek_pre_roll;
1101+ struct ebml_video video;
1102+ struct ebml_audio audio;
1103+ struct ebml_content_encodings content_encodings;
1104+
1105+ int n_track_number;
1106+ int n_track_uid;
1107+ int n_track_type;
1108+ int n_flag_enabled;
1109+ int n_flag_default;
1110+ int n_flag_forced;
1111+ int n_flag_lacing;
1112+ int n_min_cache;
1113+ int n_max_cache;
1114+ int n_default_duration;
1115+ int n_track_timecode_scale;
1116+ int n_max_block_addition_id;
1117+ int n_name;
1118+ int n_language;
1119+ int n_language_bcp47;
1120+ int n_codec_id;
1121+ int n_codec_private;
1122+ int n_codec_name;
1123+ int n_codec_decode_all;
1124+ int n_codec_delay;
1125+ int n_seek_pre_roll;
1126+ int n_video;
1127+ int n_audio;
1128+ int n_content_encodings;
1129+};
1130+
1131+struct ebml_tracks {
1132+ struct ebml_track_entry *track_entry;
1133+
1134+ int n_track_entry;
1135+};
1136+
1137+struct ebml_block_more {
1138+ uint64_t block_add_id;
1139+ bstr block_additional;
1140+
1141+ int n_block_add_id;
1142+ int n_block_additional;
1143+};
1144+
1145+struct ebml_block_additions {
1146+ struct ebml_block_more *block_more;
1147+
1148+ int n_block_more;
1149+};
1150+
1151+struct ebml_block_group {
1152+ bstr block;
1153+ uint64_t block_duration;
1154+ int64_t *reference_block;
1155+ int64_t discard_padding;
1156+ struct ebml_block_additions block_additions;
1157+
1158+ int n_block;
1159+ int n_block_duration;
1160+ int n_reference_block;
1161+ int n_discard_padding;
1162+ int n_block_additions;
1163+};
1164+
1165+struct ebml_cluster {
1166+ uint64_t timecode;
1167+ struct ebml_block_group *block_group;
1168+ bstr *simple_block;
1169+
1170+ int n_timecode;
1171+ int n_block_group;
1172+ int n_simple_block;
1173+};
1174+
1175+struct ebml_info {
1176+ bstr segment_uid;
1177+ bstr prev_uid;
1178+ bstr next_uid;
1179+ uint64_t timecode_scale;
1180+ int64_t date_utc;
1181+ char * title;
1182+ char * muxing_app;
1183+ char * writing_app;
1184+ double duration;
1185+
1186+ int n_segment_uid;
1187+ int n_prev_uid;
1188+ int n_next_uid;
1189+ int n_timecode_scale;
1190+ int n_date_utc;
1191+ int n_title;
1192+ int n_muxing_app;
1193+ int n_writing_app;
1194+ int n_duration;
1195+};
1196+
1197+struct ebml_seek {
1198+ uint32_t seek_id;
1199+ uint64_t seek_position;
1200+
1201+ int n_seek_id;
1202+ int n_seek_position;
1203+};
1204+
1205+struct ebml_seek_head {
1206+ struct ebml_seek *seek;
1207+
1208+ int n_seek;
1209+};
1210+
1211+struct ebml_segment {
1212+ struct ebml_seek_head *seek_head;
1213+ struct ebml_info *info;
1214+ struct ebml_cluster *cluster;
1215+ struct ebml_tracks *tracks;
1216+ struct ebml_cues cues;
1217+ struct ebml_attachments attachments;
1218+ struct ebml_chapters chapters;
1219+ struct ebml_tags *tags;
1220+
1221+ int n_seek_head;
1222+ int n_info;
1223+ int n_cluster;
1224+ int n_tracks;
1225+ int n_cues;
1226+ int n_attachments;
1227+ int n_chapters;
1228+ int n_tags;
1229+};
1230+
1231+struct ebml_ebml {
1232+ uint64_t ebml_version;
1233+ uint64_t ebml_read_version;
1234+ uint64_t ebml_max_id_length;
1235+ uint64_t ebml_max_size_length;
1236+ char * doc_type;
1237+ uint64_t doc_type_version;
1238+ uint64_t doc_type_read_version;
1239+
1240+ int n_ebml_version;
1241+ int n_ebml_read_version;
1242+ int n_ebml_max_id_length;
1243+ int n_ebml_max_size_length;
1244+ int n_doc_type;
1245+ int n_doc_type_version;
1246+ int n_doc_type_read_version;
1247+};
1248+extern const struct ebml_elem_desc ebml_ebml_desc;
1249+extern const struct ebml_elem_desc ebml_segment_desc;
1250+extern const struct ebml_elem_desc ebml_seek_head_desc;
1251+extern const struct ebml_elem_desc ebml_seek_desc;
1252+extern const struct ebml_elem_desc ebml_info_desc;
1253+extern const struct ebml_elem_desc ebml_cluster_desc;
1254+extern const struct ebml_elem_desc ebml_block_group_desc;
1255+extern const struct ebml_elem_desc ebml_block_additions_desc;
1256+extern const struct ebml_elem_desc ebml_block_more_desc;
1257+extern const struct ebml_elem_desc ebml_tracks_desc;
1258+extern const struct ebml_elem_desc ebml_track_entry_desc;
1259+extern const struct ebml_elem_desc ebml_video_desc;
1260+extern const struct ebml_elem_desc ebml_colour_desc;
1261+extern const struct ebml_elem_desc ebml_mastering_metadata_desc;
1262+extern const struct ebml_elem_desc ebml_projection_desc;
1263+extern const struct ebml_elem_desc ebml_audio_desc;
1264+extern const struct ebml_elem_desc ebml_content_encodings_desc;
1265+extern const struct ebml_elem_desc ebml_content_encoding_desc;
1266+extern const struct ebml_elem_desc ebml_content_compression_desc;
1267+extern const struct ebml_elem_desc ebml_cues_desc;
1268+extern const struct ebml_elem_desc ebml_cue_point_desc;
1269+extern const struct ebml_elem_desc ebml_cue_track_positions_desc;
1270+extern const struct ebml_elem_desc ebml_attachments_desc;
1271+extern const struct ebml_elem_desc ebml_attached_file_desc;
1272+extern const struct ebml_elem_desc ebml_chapters_desc;
1273+extern const struct ebml_elem_desc ebml_edition_entry_desc;
1274+extern const struct ebml_elem_desc ebml_chapter_atom_desc;
1275+extern const struct ebml_elem_desc ebml_chapter_display_desc;
1276+extern const struct ebml_elem_desc ebml_tags_desc;
1277+extern const struct ebml_elem_desc ebml_tag_desc;
1278+extern const struct ebml_elem_desc ebml_targets_desc;
1279+extern const struct ebml_elem_desc ebml_simple_tag_desc;
1280+
1281+#define MAX_EBML_SUBELEMENTS 24
1282--
12832.44.0
1284