Files
oasis-linux-mirror/pkg/mpv/patch/0001-Add-generated-ebml-sources.patch
2024-08-15 01:09:25 -07:00

1285 lines
41 KiB
Diff

From 500b8f9510babd4e5d2d9cd35af689617946a1d9 Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Wed, 14 Aug 2024 20:07:19 -0700
Subject: [PATCH] Add generated ebml sources
These require python to generate.
$ python TOOLS/matroska.py --generate-header ebml_types.h
$ python TOOLS/matroska.py --generate-definitions ebml_defs.inc
---
ebml_defs.inc | 595 +++++++++++++++++++++++++++++++++++++++++++++
ebml_types.h | 658 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 1253 insertions(+)
create mode 100644 ebml_defs.inc
create mode 100644 ebml_types.h
diff --git a/ebml_defs.inc b/ebml_defs.inc
new file mode 100644
index 0000000000..da65194639
--- /dev/null
+++ b/ebml_defs.inc
@@ -0,0 +1,595 @@
+// Generated by TOOLS/matroska.py, do not edit manually
+
+
+E("TagDefault", tag_default, EBML_TYPE_UINT)
+
+E("TagString", tag_string, EBML_TYPE_STR)
+
+E("TagLanguageBCP47", tag_language_bcp47, EBML_TYPE_STR)
+
+E("TagLanguage", tag_language, EBML_TYPE_STR)
+
+E("TagName", tag_name, EBML_TYPE_STR)
+
+#define N simple_tag
+E_S("SimpleTag", 5)
+F(MATROSKA_ID_TAGNAME, tag_name, 0)
+F(MATROSKA_ID_TAGLANGUAGE, tag_language, 0)
+F(MATROSKA_ID_TAGLANGUAGEBCP47, tag_language_bcp47, 0)
+F(MATROSKA_ID_TAGSTRING, tag_string, 0)
+F(MATROSKA_ID_TAGDEFAULT, tag_default, 0)
+}};
+#undef N
+
+E("TargetAttachmentUID", target_attachment_uid, EBML_TYPE_UINT)
+
+E("TargetChapterUID", target_chapter_uid, EBML_TYPE_UINT)
+
+E("TargetEditionUID", target_edition_uid, EBML_TYPE_UINT)
+
+E("TargetTrackUID", target_track_uid, EBML_TYPE_UINT)
+
+E("TargetType", target_type, EBML_TYPE_STR)
+
+E("TargetTypeValue", target_type_value, EBML_TYPE_UINT)
+
+#define N targets
+E_S("Targets", 6)
+F(MATROSKA_ID_TARGETTYPEVALUE, target_type_value, 0)
+F(MATROSKA_ID_TARGETTYPE, target_type, 0)
+F(MATROSKA_ID_TARGETTRACKUID, target_track_uid, 0)
+F(MATROSKA_ID_TARGETEDITIONUID, target_edition_uid, 0)
+F(MATROSKA_ID_TARGETCHAPTERUID, target_chapter_uid, 0)
+F(MATROSKA_ID_TARGETATTACHMENTUID, target_attachment_uid, 0)
+}};
+#undef N
+
+#define N tag
+E_S("Tag", 2)
+F(MATROSKA_ID_TARGETS, targets, 0)
+F(MATROSKA_ID_SIMPLETAG, simple_tag, 1)
+}};
+#undef N
+
+#define N tags
+E_S("Tags", 1)
+F(MATROSKA_ID_TAG, tag, 1)
+}};
+#undef N
+
+E("ChapCountry", chap_country, EBML_TYPE_STR)
+
+E("ChapLanguageBCP47", chap_language_bcp47, EBML_TYPE_STR)
+
+E("ChapLanguage", chap_language, EBML_TYPE_STR)
+
+E("ChapString", chap_string, EBML_TYPE_STR)
+
+#define N chapter_display
+E_S("ChapterDisplay", 4)
+F(MATROSKA_ID_CHAPSTRING, chap_string, 0)
+F(MATROSKA_ID_CHAPLANGUAGE, chap_language, 1)
+F(MATROSKA_ID_CHAPLANGUAGEBCP47, chap_language_bcp47, 1)
+F(MATROSKA_ID_CHAPCOUNTRY, chap_country, 1)
+}};
+#undef N
+
+E("ChapterSegmentEditionUID", chapter_segment_edition_uid, EBML_TYPE_UINT)
+
+E("ChapterSegmentUID", chapter_segment_uid, EBML_TYPE_BINARY)
+
+E("ChapterFlagEnabled", chapter_flag_enabled, EBML_TYPE_UINT)
+
+E("ChapterFlagHidden", chapter_flag_hidden, EBML_TYPE_UINT)
+
+E("ChapterTimeEnd", chapter_time_end, EBML_TYPE_UINT)
+
+E("ChapterTimeStart", chapter_time_start, EBML_TYPE_UINT)
+
+E("ChapterUID", chapter_uid, EBML_TYPE_UINT)
+
+#define N chapter_atom
+E_S("ChapterAtom", 8)
+F(MATROSKA_ID_CHAPTERUID, chapter_uid, 0)
+F(MATROSKA_ID_CHAPTERTIMESTART, chapter_time_start, 0)
+F(MATROSKA_ID_CHAPTERTIMEEND, chapter_time_end, 0)
+F(MATROSKA_ID_CHAPTERFLAGHIDDEN, chapter_flag_hidden, 0)
+F(MATROSKA_ID_CHAPTERFLAGENABLED, chapter_flag_enabled, 0)
+F(MATROSKA_ID_CHAPTERSEGMENTUID, chapter_segment_uid, 0)
+F(MATROSKA_ID_CHAPTERSEGMENTEDITIONUID, chapter_segment_edition_uid, 0)
+F(MATROSKA_ID_CHAPTERDISPLAY, chapter_display, 1)
+}};
+#undef N
+
+E("EditionFlagOrdered", edition_flag_ordered, EBML_TYPE_UINT)
+
+E("EditionFlagDefault", edition_flag_default, EBML_TYPE_UINT)
+
+E("EditionFlagHidden", edition_flag_hidden, EBML_TYPE_UINT)
+
+E("EditionUID", edition_uid, EBML_TYPE_UINT)
+
+#define N edition_entry
+E_S("EditionEntry", 5)
+F(MATROSKA_ID_EDITIONUID, edition_uid, 0)
+F(MATROSKA_ID_EDITIONFLAGHIDDEN, edition_flag_hidden, 0)
+F(MATROSKA_ID_EDITIONFLAGDEFAULT, edition_flag_default, 0)
+F(MATROSKA_ID_EDITIONFLAGORDERED, edition_flag_ordered, 0)
+F(MATROSKA_ID_CHAPTERATOM, chapter_atom, 1)
+}};
+#undef N
+
+#define N chapters
+E_S("Chapters", 1)
+F(MATROSKA_ID_EDITIONENTRY, edition_entry, 1)
+}};
+#undef N
+
+E("FileUID", file_uid, EBML_TYPE_UINT)
+
+E("FileData", file_data, EBML_TYPE_BINARY)
+
+E("FileMimeType", file_mime_type, EBML_TYPE_STR)
+
+E("FileName", file_name, EBML_TYPE_STR)
+
+E("FileDescription", file_description, EBML_TYPE_STR)
+
+#define N attached_file
+E_S("AttachedFile", 5)
+F(MATROSKA_ID_FILEDESCRIPTION, file_description, 0)
+F(MATROSKA_ID_FILENAME, file_name, 0)
+F(MATROSKA_ID_FILEMIMETYPE, file_mime_type, 0)
+F(MATROSKA_ID_FILEDATA, file_data, 0)
+F(MATROSKA_ID_FILEUID, file_uid, 0)
+}};
+#undef N
+
+#define N attachments
+E_S("Attachments", 1)
+F(MATROSKA_ID_ATTACHEDFILE, attached_file, 1)
+}};
+#undef N
+
+E("CueDuration", cue_duration, EBML_TYPE_UINT)
+
+E("CueRelativePosition", cue_relative_position, EBML_TYPE_UINT)
+
+E("CueClusterPosition", cue_cluster_position, EBML_TYPE_UINT)
+
+E("CueTrack", cue_track, EBML_TYPE_UINT)
+
+#define N cue_track_positions
+E_S("CueTrackPositions", 4)
+F(MATROSKA_ID_CUETRACK, cue_track, 0)
+F(MATROSKA_ID_CUECLUSTERPOSITION, cue_cluster_position, 0)
+F(MATROSKA_ID_CUERELATIVEPOSITION, cue_relative_position, 0)
+F(MATROSKA_ID_CUEDURATION, cue_duration, 0)
+}};
+#undef N
+
+E("CueTime", cue_time, EBML_TYPE_UINT)
+
+#define N cue_point
+E_S("CuePoint", 2)
+F(MATROSKA_ID_CUETIME, cue_time, 0)
+F(MATROSKA_ID_CUETRACKPOSITIONS, cue_track_positions, 1)
+}};
+#undef N
+
+#define N cues
+E_S("Cues", 1)
+F(MATROSKA_ID_CUEPOINT, cue_point, 1)
+}};
+#undef N
+
+E("ContentCompSettings", content_comp_settings, EBML_TYPE_BINARY)
+
+E("ContentCompAlgo", content_comp_algo, EBML_TYPE_UINT)
+
+#define N content_compression
+E_S("ContentCompression", 2)
+F(MATROSKA_ID_CONTENTCOMPALGO, content_comp_algo, 0)
+F(MATROSKA_ID_CONTENTCOMPSETTINGS, content_comp_settings, 0)
+}};
+#undef N
+
+E("ContentEncodingType", content_encoding_type, EBML_TYPE_UINT)
+
+E("ContentEncodingScope", content_encoding_scope, EBML_TYPE_UINT)
+
+E("ContentEncodingOrder", content_encoding_order, EBML_TYPE_UINT)
+
+#define N content_encoding
+E_S("ContentEncoding", 4)
+F(MATROSKA_ID_CONTENTENCODINGORDER, content_encoding_order, 0)
+F(MATROSKA_ID_CONTENTENCODINGSCOPE, content_encoding_scope, 0)
+F(MATROSKA_ID_CONTENTENCODINGTYPE, content_encoding_type, 0)
+F(MATROSKA_ID_CONTENTCOMPRESSION, content_compression, 0)
+}};
+#undef N
+
+#define N content_encodings
+E_S("ContentEncodings", 1)
+F(MATROSKA_ID_CONTENTENCODING, content_encoding, 1)
+}};
+#undef N
+
+E("BitDepth", bit_depth, EBML_TYPE_UINT)
+
+E("Channels", channels, EBML_TYPE_UINT)
+
+E("OutputSamplingFrequency", output_sampling_frequency, EBML_TYPE_FLOAT)
+
+E("SamplingFrequency", sampling_frequency, EBML_TYPE_FLOAT)
+
+#define N audio
+E_S("Audio", 4)
+F(MATROSKA_ID_SAMPLINGFREQUENCY, sampling_frequency, 0)
+F(MATROSKA_ID_OUTPUTSAMPLINGFREQUENCY, output_sampling_frequency, 0)
+F(MATROSKA_ID_CHANNELS, channels, 0)
+F(MATROSKA_ID_BITDEPTH, bit_depth, 0)
+}};
+#undef N
+
+E("ProjectionPoseRoll", projection_pose_roll, EBML_TYPE_FLOAT)
+
+E("ProjectionPosePitch", projection_pose_pitch, EBML_TYPE_FLOAT)
+
+E("ProjectionPoseYaw", projection_pose_yaw, EBML_TYPE_FLOAT)
+
+E("ProjectionPrivate", projection_private, EBML_TYPE_BINARY)
+
+E("ProjectionType", projection_type, EBML_TYPE_UINT)
+
+#define N projection
+E_S("Projection", 5)
+F(MATROSKA_ID_PROJECTIONTYPE, projection_type, 0)
+F(MATROSKA_ID_PROJECTIONPRIVATE, projection_private, 0)
+F(MATROSKA_ID_PROJECTIONPOSEYAW, projection_pose_yaw, 0)
+F(MATROSKA_ID_PROJECTIONPOSEPITCH, projection_pose_pitch, 0)
+F(MATROSKA_ID_PROJECTIONPOSEROLL, projection_pose_roll, 0)
+}};
+#undef N
+
+E("LuminanceMin", luminance_min, EBML_TYPE_FLOAT)
+
+E("LuminanceMax", luminance_max, EBML_TYPE_FLOAT)
+
+E("WhitePointChromaticityY", white_point_chromaticity_y, EBML_TYPE_FLOAT)
+
+E("WhitePointChromaticityX", white_point_chromaticity_x, EBML_TYPE_FLOAT)
+
+E("PrimaryBChromaticityY", primary_b_chromaticity_y, EBML_TYPE_FLOAT)
+
+E("PrimaryBChromaticityX", primary_b_chromaticity_x, EBML_TYPE_FLOAT)
+
+E("PrimaryGChromaticityY", primary_g_chromaticity_y, EBML_TYPE_FLOAT)
+
+E("PrimaryGChromaticityX", primary_g_chromaticity_x, EBML_TYPE_FLOAT)
+
+E("PrimaryRChromaticityY", primary_r_chromaticity_y, EBML_TYPE_FLOAT)
+
+E("PrimaryRChromaticityX", primary_r_chromaticity_x, EBML_TYPE_FLOAT)
+
+#define N mastering_metadata
+E_S("MasteringMetadata", 10)
+F(MATROSKA_ID_PRIMARYRCHROMATICITYX, primary_r_chromaticity_x, 0)
+F(MATROSKA_ID_PRIMARYRCHROMATICITYY, primary_r_chromaticity_y, 0)
+F(MATROSKA_ID_PRIMARYGCHROMATICITYX, primary_g_chromaticity_x, 0)
+F(MATROSKA_ID_PRIMARYGCHROMATICITYY, primary_g_chromaticity_y, 0)
+F(MATROSKA_ID_PRIMARYBCHROMATICITYX, primary_b_chromaticity_x, 0)
+F(MATROSKA_ID_PRIMARYBCHROMATICITYY, primary_b_chromaticity_y, 0)
+F(MATROSKA_ID_WHITEPOINTCHROMATICITYX, white_point_chromaticity_x, 0)
+F(MATROSKA_ID_WHITEPOINTCHROMATICITYY, white_point_chromaticity_y, 0)
+F(MATROSKA_ID_LUMINANCEMAX, luminance_max, 0)
+F(MATROSKA_ID_LUMINANCEMIN, luminance_min, 0)
+}};
+#undef N
+
+E("MaxFALL", max_fall, EBML_TYPE_UINT)
+
+E("MaxCLL", max_cll, EBML_TYPE_UINT)
+
+E("Primaries", primaries, EBML_TYPE_UINT)
+
+E("TransferCharacteristics", transfer_characteristics, EBML_TYPE_UINT)
+
+E("Range", range, EBML_TYPE_UINT)
+
+E("ChromaSitingVert", chroma_siting_vert, EBML_TYPE_UINT)
+
+E("ChromaSitingHorz", chroma_siting_horz, EBML_TYPE_UINT)
+
+E("CbSubsamplingVert", cb_subsampling_vert, EBML_TYPE_UINT)
+
+E("CbSubsamplingHorz", cb_subsampling_horz, EBML_TYPE_UINT)
+
+E("ChromaSubsamplingVert", chroma_subsampling_vert, EBML_TYPE_UINT)
+
+E("ChromaSubsamplingHorz", chroma_subsampling_horz, EBML_TYPE_UINT)
+
+E("BitsPerChannel", bits_per_channel, EBML_TYPE_UINT)
+
+E("MatrixCoefficients", matrix_coefficients, EBML_TYPE_UINT)
+
+#define N colour
+E_S("Colour", 14)
+F(MATROSKA_ID_MATRIXCOEFFICIENTS, matrix_coefficients, 0)
+F(MATROSKA_ID_BITSPERCHANNEL, bits_per_channel, 0)
+F(MATROSKA_ID_CHROMASUBSAMPLINGHORZ, chroma_subsampling_horz, 0)
+F(MATROSKA_ID_CHROMASUBSAMPLINGVERT, chroma_subsampling_vert, 0)
+F(MATROSKA_ID_CBSUBSAMPLINGHORZ, cb_subsampling_horz, 0)
+F(MATROSKA_ID_CBSUBSAMPLINGVERT, cb_subsampling_vert, 0)
+F(MATROSKA_ID_CHROMASITINGHORZ, chroma_siting_horz, 0)
+F(MATROSKA_ID_CHROMASITINGVERT, chroma_siting_vert, 0)
+F(MATROSKA_ID_RANGE, range, 0)
+F(MATROSKA_ID_TRANSFERCHARACTERISTICS, transfer_characteristics, 0)
+F(MATROSKA_ID_PRIMARIES, primaries, 0)
+F(MATROSKA_ID_MAXCLL, max_cll, 0)
+F(MATROSKA_ID_MAXFALL, max_fall, 0)
+F(MATROSKA_ID_MASTERINGMETADATA, mastering_metadata, 0)
+}};
+#undef N
+
+E("StereoMode", stereo_mode, EBML_TYPE_UINT)
+
+E("ColourSpace", colour_space, EBML_TYPE_BINARY)
+
+E("FrameRate", frame_rate, EBML_TYPE_FLOAT)
+
+E("PixelCropBottom", pixel_crop_bottom, EBML_TYPE_UINT)
+
+E("PixelCropRight", pixel_crop_right, EBML_TYPE_UINT)
+
+E("PixelCropLeft", pixel_crop_left, EBML_TYPE_UINT)
+
+E("PixelCropTop", pixel_crop_top, EBML_TYPE_UINT)
+
+E("DisplayUnit", display_unit, EBML_TYPE_UINT)
+
+E("DisplayHeight", display_height, EBML_TYPE_UINT)
+
+E("DisplayWidth", display_width, EBML_TYPE_UINT)
+
+E("PixelHeight", pixel_height, EBML_TYPE_UINT)
+
+E("PixelWidth", pixel_width, EBML_TYPE_UINT)
+
+E("FlagInterlaced", flag_interlaced, EBML_TYPE_UINT)
+
+#define N video
+E_S("Video", 15)
+F(MATROSKA_ID_FLAGINTERLACED, flag_interlaced, 0)
+F(MATROSKA_ID_PIXELWIDTH, pixel_width, 0)
+F(MATROSKA_ID_PIXELHEIGHT, pixel_height, 0)
+F(MATROSKA_ID_DISPLAYWIDTH, display_width, 0)
+F(MATROSKA_ID_DISPLAYHEIGHT, display_height, 0)
+F(MATROSKA_ID_DISPLAYUNIT, display_unit, 0)
+F(MATROSKA_ID_PIXELCROPTOP, pixel_crop_top, 0)
+F(MATROSKA_ID_PIXELCROPLEFT, pixel_crop_left, 0)
+F(MATROSKA_ID_PIXELCROPRIGHT, pixel_crop_right, 0)
+F(MATROSKA_ID_PIXELCROPBOTTOM, pixel_crop_bottom, 0)
+F(MATROSKA_ID_FRAMERATE, frame_rate, 0)
+F(MATROSKA_ID_COLOURSPACE, colour_space, 0)
+F(MATROSKA_ID_STEREOMODE, stereo_mode, 0)
+F(MATROSKA_ID_COLOUR, colour, 0)
+F(MATROSKA_ID_PROJECTION, projection, 0)
+}};
+#undef N
+
+E("SeekPreRoll", seek_pre_roll, EBML_TYPE_UINT)
+
+E("CodecDelay", codec_delay, EBML_TYPE_UINT)
+
+E("CodecDecodeAll", codec_decode_all, EBML_TYPE_UINT)
+
+E("CodecName", codec_name, EBML_TYPE_STR)
+
+E("CodecPrivate", codec_private, EBML_TYPE_BINARY)
+
+E("CodecID", codec_id, EBML_TYPE_STR)
+
+E("LanguageBCP47", language_bcp47, EBML_TYPE_STR)
+
+E("Language", language, EBML_TYPE_STR)
+
+E("Name", name, EBML_TYPE_STR)
+
+E("MaxBlockAdditionID", max_block_addition_id, EBML_TYPE_UINT)
+
+E("TrackTimecodeScale", track_timecode_scale, EBML_TYPE_FLOAT)
+
+E("DefaultDuration", default_duration, EBML_TYPE_UINT)
+
+E("MaxCache", max_cache, EBML_TYPE_UINT)
+
+E("MinCache", min_cache, EBML_TYPE_UINT)
+
+E("FlagLacing", flag_lacing, EBML_TYPE_UINT)
+
+E("FlagForced", flag_forced, EBML_TYPE_UINT)
+
+E("FlagDefault", flag_default, EBML_TYPE_UINT)
+
+E("FlagEnabled", flag_enabled, EBML_TYPE_UINT)
+
+E("TrackType", track_type, EBML_TYPE_UINT)
+
+E("TrackUID", track_uid, EBML_TYPE_UINT)
+
+E("TrackNumber", track_number, EBML_TYPE_UINT)
+
+#define N track_entry
+E_S("TrackEntry", 24)
+F(MATROSKA_ID_TRACKNUMBER, track_number, 0)
+F(MATROSKA_ID_TRACKUID, track_uid, 0)
+F(MATROSKA_ID_TRACKTYPE, track_type, 0)
+F(MATROSKA_ID_FLAGENABLED, flag_enabled, 0)
+F(MATROSKA_ID_FLAGDEFAULT, flag_default, 0)
+F(MATROSKA_ID_FLAGFORCED, flag_forced, 0)
+F(MATROSKA_ID_FLAGLACING, flag_lacing, 0)
+F(MATROSKA_ID_MINCACHE, min_cache, 0)
+F(MATROSKA_ID_MAXCACHE, max_cache, 0)
+F(MATROSKA_ID_DEFAULTDURATION, default_duration, 0)
+F(MATROSKA_ID_TRACKTIMECODESCALE, track_timecode_scale, 0)
+F(MATROSKA_ID_MAXBLOCKADDITIONID, max_block_addition_id, 0)
+F(MATROSKA_ID_NAME, name, 0)
+F(MATROSKA_ID_LANGUAGE, language, 0)
+F(MATROSKA_ID_LANGUAGEBCP47, language_bcp47, 0)
+F(MATROSKA_ID_CODECID, codec_id, 0)
+F(MATROSKA_ID_CODECPRIVATE, codec_private, 0)
+F(MATROSKA_ID_CODECNAME, codec_name, 0)
+F(MATROSKA_ID_CODECDECODEALL, codec_decode_all, 0)
+F(MATROSKA_ID_CODECDELAY, codec_delay, 0)
+F(MATROSKA_ID_SEEKPREROLL, seek_pre_roll, 0)
+F(MATROSKA_ID_VIDEO, video, 0)
+F(MATROSKA_ID_AUDIO, audio, 0)
+F(MATROSKA_ID_CONTENTENCODINGS, content_encodings, 0)
+}};
+#undef N
+
+#define N tracks
+E_S("Tracks", 1)
+F(MATROSKA_ID_TRACKENTRY, track_entry, 1)
+}};
+#undef N
+
+E("SimpleBlock", simple_block, EBML_TYPE_BINARY)
+
+E("BlockAdditional", block_additional, EBML_TYPE_BINARY)
+
+E("BlockAddID", block_add_id, EBML_TYPE_UINT)
+
+#define N block_more
+E_S("BlockMore", 2)
+F(MATROSKA_ID_BLOCKADDID, block_add_id, 0)
+F(MATROSKA_ID_BLOCKADDITIONAL, block_additional, 0)
+}};
+#undef N
+
+#define N block_additions
+E_S("BlockAdditions", 1)
+F(MATROSKA_ID_BLOCKMORE, block_more, 1)
+}};
+#undef N
+
+E("DiscardPadding", discard_padding, EBML_TYPE_SINT)
+
+E("ReferenceBlock", reference_block, EBML_TYPE_SINT)
+
+E("BlockDuration", block_duration, EBML_TYPE_UINT)
+
+E("Block", block, EBML_TYPE_BINARY)
+
+#define N block_group
+E_S("BlockGroup", 5)
+F(MATROSKA_ID_BLOCK, block, 0)
+F(MATROSKA_ID_BLOCKDURATION, block_duration, 0)
+F(MATROSKA_ID_REFERENCEBLOCK, reference_block, 1)
+F(MATROSKA_ID_DISCARDPADDING, discard_padding, 0)
+F(MATROSKA_ID_BLOCKADDITIONS, block_additions, 0)
+}};
+#undef N
+
+E("Timecode", timecode, EBML_TYPE_UINT)
+
+#define N cluster
+E_S("Cluster", 3)
+F(MATROSKA_ID_TIMECODE, timecode, 0)
+F(MATROSKA_ID_BLOCKGROUP, block_group, 1)
+F(MATROSKA_ID_SIMPLEBLOCK, simple_block, 1)
+}};
+#undef N
+
+E("Duration", duration, EBML_TYPE_FLOAT)
+
+E("WritingApp", writing_app, EBML_TYPE_STR)
+
+E("MuxingApp", muxing_app, EBML_TYPE_STR)
+
+E("Title", title, EBML_TYPE_STR)
+
+E("DateUTC", date_utc, EBML_TYPE_SINT)
+
+E("TimecodeScale", timecode_scale, EBML_TYPE_UINT)
+
+E("NextUID", next_uid, EBML_TYPE_BINARY)
+
+E("PrevUID", prev_uid, EBML_TYPE_BINARY)
+
+E("SegmentUID", segment_uid, EBML_TYPE_BINARY)
+
+#define N info
+E_S("Info", 9)
+F(MATROSKA_ID_SEGMENTUID, segment_uid, 0)
+F(MATROSKA_ID_PREVUID, prev_uid, 0)
+F(MATROSKA_ID_NEXTUID, next_uid, 0)
+F(MATROSKA_ID_TIMECODESCALE, timecode_scale, 0)
+F(MATROSKA_ID_DATEUTC, date_utc, 0)
+F(MATROSKA_ID_TITLE, title, 0)
+F(MATROSKA_ID_MUXINGAPP, muxing_app, 0)
+F(MATROSKA_ID_WRITINGAPP, writing_app, 0)
+F(MATROSKA_ID_DURATION, duration, 0)
+}};
+#undef N
+
+E("SeekPosition", seek_position, EBML_TYPE_UINT)
+
+E("SeekID", seek_id, EBML_TYPE_EBML_ID)
+
+#define N seek
+E_S("Seek", 2)
+F(MATROSKA_ID_SEEKID, seek_id, 0)
+F(MATROSKA_ID_SEEKPOSITION, seek_position, 0)
+}};
+#undef N
+
+#define N seek_head
+E_S("SeekHead", 1)
+F(MATROSKA_ID_SEEK, seek, 1)
+}};
+#undef N
+
+#define N segment
+E_S("Segment", 8)
+F(MATROSKA_ID_SEEKHEAD, seek_head, 1)
+F(MATROSKA_ID_INFO, info, 1)
+F(MATROSKA_ID_CLUSTER, cluster, 1)
+F(MATROSKA_ID_TRACKS, tracks, 1)
+F(MATROSKA_ID_CUES, cues, 0)
+F(MATROSKA_ID_ATTACHMENTS, attachments, 0)
+F(MATROSKA_ID_CHAPTERS, chapters, 0)
+F(MATROSKA_ID_TAGS, tags, 1)
+}};
+#undef N
+
+E("Void", void, EBML_TYPE_BINARY)
+
+E("CRC32", crc32, EBML_TYPE_BINARY)
+
+E("DocTypeReadVersion", doc_type_read_version, EBML_TYPE_UINT)
+
+E("DocTypeVersion", doc_type_version, EBML_TYPE_UINT)
+
+E("DocType", doc_type, EBML_TYPE_STR)
+
+E("EBMLMaxSizeLength", ebml_max_size_length, EBML_TYPE_UINT)
+
+E("EBMLMaxIDLength", ebml_max_id_length, EBML_TYPE_UINT)
+
+E("EBMLReadVersion", ebml_read_version, EBML_TYPE_UINT)
+
+E("EBMLVersion", ebml_version, EBML_TYPE_UINT)
+
+#define N ebml
+E_S("EBML", 7)
+F(EBML_ID_EBMLVERSION, ebml_version, 0)
+F(EBML_ID_EBMLREADVERSION, ebml_read_version, 0)
+F(EBML_ID_EBMLMAXIDLENGTH, ebml_max_id_length, 0)
+F(EBML_ID_EBMLMAXSIZELENGTH, ebml_max_size_length, 0)
+F(EBML_ID_DOCTYPE, doc_type, 0)
+F(EBML_ID_DOCTYPEVERSION, doc_type_version, 0)
+F(EBML_ID_DOCTYPEREADVERSION, doc_type_read_version, 0)
+}};
+#undef N
diff --git a/ebml_types.h b/ebml_types.h
new file mode 100644
index 0000000000..d544694d48
--- /dev/null
+++ b/ebml_types.h
@@ -0,0 +1,658 @@
+// Generated by TOOLS/matroska.py, do not edit manually
+
+#define EBML_ID_EBML 0x1a45dfa3
+#define EBML_ID_EBMLVERSION 0x4286
+#define EBML_ID_EBMLREADVERSION 0x42f7
+#define EBML_ID_EBMLMAXIDLENGTH 0x42f2
+#define EBML_ID_EBMLMAXSIZELENGTH 0x42f3
+#define EBML_ID_DOCTYPE 0x4282
+#define EBML_ID_DOCTYPEVERSION 0x4287
+#define EBML_ID_DOCTYPEREADVERSION 0x4285
+#define EBML_ID_CRC32 0xbf
+#define EBML_ID_VOID 0xec
+#define MATROSKA_ID_SEGMENT 0x18538067
+#define MATROSKA_ID_SEEKHEAD 0x114d9b74
+#define MATROSKA_ID_SEEK 0x4dbb
+#define MATROSKA_ID_SEEKID 0x53ab
+#define MATROSKA_ID_SEEKPOSITION 0x53ac
+#define MATROSKA_ID_INFO 0x1549a966
+#define MATROSKA_ID_SEGMENTUID 0x73a4
+#define MATROSKA_ID_PREVUID 0x3cb923
+#define MATROSKA_ID_NEXTUID 0x3eb923
+#define MATROSKA_ID_TIMECODESCALE 0x2ad7b1
+#define MATROSKA_ID_DATEUTC 0x4461
+#define MATROSKA_ID_TITLE 0x7ba9
+#define MATROSKA_ID_MUXINGAPP 0x4d80
+#define MATROSKA_ID_WRITINGAPP 0x5741
+#define MATROSKA_ID_DURATION 0x4489
+#define MATROSKA_ID_CLUSTER 0x1f43b675
+#define MATROSKA_ID_TIMECODE 0xe7
+#define MATROSKA_ID_BLOCKGROUP 0xa0
+#define MATROSKA_ID_BLOCK 0xa1
+#define MATROSKA_ID_BLOCKDURATION 0x9b
+#define MATROSKA_ID_REFERENCEBLOCK 0xfb
+#define MATROSKA_ID_DISCARDPADDING 0x75a2
+#define MATROSKA_ID_BLOCKADDITIONS 0x75a1
+#define MATROSKA_ID_BLOCKMORE 0xa6
+#define MATROSKA_ID_BLOCKADDID 0xee
+#define MATROSKA_ID_BLOCKADDITIONAL 0xa5
+#define MATROSKA_ID_SIMPLEBLOCK 0xa3
+#define MATROSKA_ID_TRACKS 0x1654ae6b
+#define MATROSKA_ID_TRACKENTRY 0xae
+#define MATROSKA_ID_TRACKNUMBER 0xd7
+#define MATROSKA_ID_TRACKUID 0x73c5
+#define MATROSKA_ID_TRACKTYPE 0x83
+#define MATROSKA_ID_FLAGENABLED 0xb9
+#define MATROSKA_ID_FLAGDEFAULT 0x88
+#define MATROSKA_ID_FLAGFORCED 0x55aa
+#define MATROSKA_ID_FLAGLACING 0x9c
+#define MATROSKA_ID_MINCACHE 0x6de7
+#define MATROSKA_ID_MAXCACHE 0x6df8
+#define MATROSKA_ID_DEFAULTDURATION 0x23e383
+#define MATROSKA_ID_TRACKTIMECODESCALE 0x23314f
+#define MATROSKA_ID_MAXBLOCKADDITIONID 0x55ee
+#define MATROSKA_ID_NAME 0x536e
+#define MATROSKA_ID_LANGUAGE 0x22b59c
+#define MATROSKA_ID_LANGUAGEBCP47 0x22b59d
+#define MATROSKA_ID_CODECID 0x86
+#define MATROSKA_ID_CODECPRIVATE 0x63a2
+#define MATROSKA_ID_CODECNAME 0x258688
+#define MATROSKA_ID_CODECDECODEALL 0xaa
+#define MATROSKA_ID_CODECDELAY 0x56aa
+#define MATROSKA_ID_SEEKPREROLL 0x56bb
+#define MATROSKA_ID_VIDEO 0xe0
+#define MATROSKA_ID_FLAGINTERLACED 0x9a
+#define MATROSKA_ID_PIXELWIDTH 0xb0
+#define MATROSKA_ID_PIXELHEIGHT 0xba
+#define MATROSKA_ID_DISPLAYWIDTH 0x54b0
+#define MATROSKA_ID_DISPLAYHEIGHT 0x54ba
+#define MATROSKA_ID_DISPLAYUNIT 0x54b2
+#define MATROSKA_ID_PIXELCROPTOP 0x54bb
+#define MATROSKA_ID_PIXELCROPLEFT 0x54cc
+#define MATROSKA_ID_PIXELCROPRIGHT 0x54dd
+#define MATROSKA_ID_PIXELCROPBOTTOM 0x54aa
+#define MATROSKA_ID_FRAMERATE 0x2383e3
+#define MATROSKA_ID_COLOURSPACE 0x2eb524
+#define MATROSKA_ID_STEREOMODE 0x53b8
+#define MATROSKA_ID_COLOUR 0x55b0
+#define MATROSKA_ID_MATRIXCOEFFICIENTS 0x55b1
+#define MATROSKA_ID_BITSPERCHANNEL 0x55b2
+#define MATROSKA_ID_CHROMASUBSAMPLINGHORZ 0x55b3
+#define MATROSKA_ID_CHROMASUBSAMPLINGVERT 0x55b4
+#define MATROSKA_ID_CBSUBSAMPLINGHORZ 0x55b5
+#define MATROSKA_ID_CBSUBSAMPLINGVERT 0x55b6
+#define MATROSKA_ID_CHROMASITINGHORZ 0x55b7
+#define MATROSKA_ID_CHROMASITINGVERT 0x55b8
+#define MATROSKA_ID_RANGE 0x55b9
+#define MATROSKA_ID_TRANSFERCHARACTERISTICS 0x55ba
+#define MATROSKA_ID_PRIMARIES 0x55bb
+#define MATROSKA_ID_MAXCLL 0x55bc
+#define MATROSKA_ID_MAXFALL 0x55bd
+#define MATROSKA_ID_MASTERINGMETADATA 0x55d0
+#define MATROSKA_ID_PRIMARYRCHROMATICITYX 0x55d1
+#define MATROSKA_ID_PRIMARYRCHROMATICITYY 0x55d2
+#define MATROSKA_ID_PRIMARYGCHROMATICITYX 0x55d3
+#define MATROSKA_ID_PRIMARYGCHROMATICITYY 0x55d4
+#define MATROSKA_ID_PRIMARYBCHROMATICITYX 0x55d5
+#define MATROSKA_ID_PRIMARYBCHROMATICITYY 0x55d6
+#define MATROSKA_ID_WHITEPOINTCHROMATICITYX 0x55d7
+#define MATROSKA_ID_WHITEPOINTCHROMATICITYY 0x55d8
+#define MATROSKA_ID_LUMINANCEMAX 0x55d9
+#define MATROSKA_ID_LUMINANCEMIN 0x55da
+#define MATROSKA_ID_PROJECTION 0x7670
+#define MATROSKA_ID_PROJECTIONTYPE 0x7671
+#define MATROSKA_ID_PROJECTIONPRIVATE 0x7672
+#define MATROSKA_ID_PROJECTIONPOSEYAW 0x7673
+#define MATROSKA_ID_PROJECTIONPOSEPITCH 0x7674
+#define MATROSKA_ID_PROJECTIONPOSEROLL 0x7675
+#define MATROSKA_ID_AUDIO 0xe1
+#define MATROSKA_ID_SAMPLINGFREQUENCY 0xb5
+#define MATROSKA_ID_OUTPUTSAMPLINGFREQUENCY 0x78b5
+#define MATROSKA_ID_CHANNELS 0x9f
+#define MATROSKA_ID_BITDEPTH 0x6264
+#define MATROSKA_ID_CONTENTENCODINGS 0x6d80
+#define MATROSKA_ID_CONTENTENCODING 0x6240
+#define MATROSKA_ID_CONTENTENCODINGORDER 0x5031
+#define MATROSKA_ID_CONTENTENCODINGSCOPE 0x5032
+#define MATROSKA_ID_CONTENTENCODINGTYPE 0x5033
+#define MATROSKA_ID_CONTENTCOMPRESSION 0x5034
+#define MATROSKA_ID_CONTENTCOMPALGO 0x4254
+#define MATROSKA_ID_CONTENTCOMPSETTINGS 0x4255
+#define MATROSKA_ID_CUES 0x1c53bb6b
+#define MATROSKA_ID_CUEPOINT 0xbb
+#define MATROSKA_ID_CUETIME 0xb3
+#define MATROSKA_ID_CUETRACKPOSITIONS 0xb7
+#define MATROSKA_ID_CUETRACK 0xf7
+#define MATROSKA_ID_CUECLUSTERPOSITION 0xf1
+#define MATROSKA_ID_CUERELATIVEPOSITION 0xf0
+#define MATROSKA_ID_CUEDURATION 0xb2
+#define MATROSKA_ID_ATTACHMENTS 0x1941a469
+#define MATROSKA_ID_ATTACHEDFILE 0x61a7
+#define MATROSKA_ID_FILEDESCRIPTION 0x467e
+#define MATROSKA_ID_FILENAME 0x466e
+#define MATROSKA_ID_FILEMIMETYPE 0x4660
+#define MATROSKA_ID_FILEDATA 0x465c
+#define MATROSKA_ID_FILEUID 0x46ae
+#define MATROSKA_ID_CHAPTERS 0x1043a770
+#define MATROSKA_ID_EDITIONENTRY 0x45b9
+#define MATROSKA_ID_EDITIONUID 0x45bc
+#define MATROSKA_ID_EDITIONFLAGHIDDEN 0x45bd
+#define MATROSKA_ID_EDITIONFLAGDEFAULT 0x45db
+#define MATROSKA_ID_EDITIONFLAGORDERED 0x45dd
+#define MATROSKA_ID_CHAPTERATOM 0xb6
+#define MATROSKA_ID_CHAPTERUID 0x73c4
+#define MATROSKA_ID_CHAPTERTIMESTART 0x91
+#define MATROSKA_ID_CHAPTERTIMEEND 0x92
+#define MATROSKA_ID_CHAPTERFLAGHIDDEN 0x98
+#define MATROSKA_ID_CHAPTERFLAGENABLED 0x4598
+#define MATROSKA_ID_CHAPTERSEGMENTUID 0x6e67
+#define MATROSKA_ID_CHAPTERSEGMENTEDITIONUID 0x6ebc
+#define MATROSKA_ID_CHAPTERDISPLAY 0x80
+#define MATROSKA_ID_CHAPSTRING 0x85
+#define MATROSKA_ID_CHAPLANGUAGE 0x437c
+#define MATROSKA_ID_CHAPLANGUAGEBCP47 0x437d
+#define MATROSKA_ID_CHAPCOUNTRY 0x437e
+#define MATROSKA_ID_TAGS 0x1254c367
+#define MATROSKA_ID_TAG 0x7373
+#define MATROSKA_ID_TARGETS 0x63c0
+#define MATROSKA_ID_TARGETTYPEVALUE 0x68ca
+#define MATROSKA_ID_TARGETTYPE 0x63ca
+#define MATROSKA_ID_TARGETTRACKUID 0x63c5
+#define MATROSKA_ID_TARGETEDITIONUID 0x63c9
+#define MATROSKA_ID_TARGETCHAPTERUID 0x63c4
+#define MATROSKA_ID_TARGETATTACHMENTUID 0x63c6
+#define MATROSKA_ID_SIMPLETAG 0x67c8
+#define MATROSKA_ID_TAGNAME 0x45a3
+#define MATROSKA_ID_TAGLANGUAGE 0x447a
+#define MATROSKA_ID_TAGLANGUAGEBCP47 0x447b
+#define MATROSKA_ID_TAGSTRING 0x4487
+#define MATROSKA_ID_TAGDEFAULT 0x4484
+
+
+struct ebml_simple_tag {
+ char * tag_name;
+ char * tag_language;
+ char * tag_language_bcp47;
+ char * tag_string;
+ uint64_t tag_default;
+
+ int n_tag_name;
+ int n_tag_language;
+ int n_tag_language_bcp47;
+ int n_tag_string;
+ int n_tag_default;
+};
+
+struct ebml_targets {
+ uint64_t target_type_value;
+ char * target_type;
+ uint64_t target_track_uid;
+ uint64_t target_edition_uid;
+ uint64_t target_chapter_uid;
+ uint64_t target_attachment_uid;
+
+ int n_target_type_value;
+ int n_target_type;
+ int n_target_track_uid;
+ int n_target_edition_uid;
+ int n_target_chapter_uid;
+ int n_target_attachment_uid;
+};
+
+struct ebml_tag {
+ struct ebml_targets targets;
+ struct ebml_simple_tag *simple_tag;
+
+ int n_targets;
+ int n_simple_tag;
+};
+
+struct ebml_tags {
+ struct ebml_tag *tag;
+
+ int n_tag;
+};
+
+struct ebml_chapter_display {
+ char * chap_string;
+ char * *chap_language;
+ char * *chap_language_bcp47;
+ char * *chap_country;
+
+ int n_chap_string;
+ int n_chap_language;
+ int n_chap_language_bcp47;
+ int n_chap_country;
+};
+
+struct ebml_chapter_atom {
+ uint64_t chapter_uid;
+ uint64_t chapter_time_start;
+ uint64_t chapter_time_end;
+ uint64_t chapter_flag_hidden;
+ uint64_t chapter_flag_enabled;
+ bstr chapter_segment_uid;
+ uint64_t chapter_segment_edition_uid;
+ struct ebml_chapter_display *chapter_display;
+
+ int n_chapter_uid;
+ int n_chapter_time_start;
+ int n_chapter_time_end;
+ int n_chapter_flag_hidden;
+ int n_chapter_flag_enabled;
+ int n_chapter_segment_uid;
+ int n_chapter_segment_edition_uid;
+ int n_chapter_display;
+};
+
+struct ebml_edition_entry {
+ uint64_t edition_uid;
+ uint64_t edition_flag_hidden;
+ uint64_t edition_flag_default;
+ uint64_t edition_flag_ordered;
+ struct ebml_chapter_atom *chapter_atom;
+
+ int n_edition_uid;
+ int n_edition_flag_hidden;
+ int n_edition_flag_default;
+ int n_edition_flag_ordered;
+ int n_chapter_atom;
+};
+
+struct ebml_chapters {
+ struct ebml_edition_entry *edition_entry;
+
+ int n_edition_entry;
+};
+
+struct ebml_attached_file {
+ char * file_description;
+ char * file_name;
+ char * file_mime_type;
+ bstr file_data;
+ uint64_t file_uid;
+
+ int n_file_description;
+ int n_file_name;
+ int n_file_mime_type;
+ int n_file_data;
+ int n_file_uid;
+};
+
+struct ebml_attachments {
+ struct ebml_attached_file *attached_file;
+
+ int n_attached_file;
+};
+
+struct ebml_cue_track_positions {
+ uint64_t cue_track;
+ uint64_t cue_cluster_position;
+ uint64_t cue_relative_position;
+ uint64_t cue_duration;
+
+ int n_cue_track;
+ int n_cue_cluster_position;
+ int n_cue_relative_position;
+ int n_cue_duration;
+};
+
+struct ebml_cue_point {
+ uint64_t cue_time;
+ struct ebml_cue_track_positions *cue_track_positions;
+
+ int n_cue_time;
+ int n_cue_track_positions;
+};
+
+struct ebml_cues {
+ struct ebml_cue_point *cue_point;
+
+ int n_cue_point;
+};
+
+struct ebml_content_compression {
+ uint64_t content_comp_algo;
+ bstr content_comp_settings;
+
+ int n_content_comp_algo;
+ int n_content_comp_settings;
+};
+
+struct ebml_content_encoding {
+ uint64_t content_encoding_order;
+ uint64_t content_encoding_scope;
+ uint64_t content_encoding_type;
+ struct ebml_content_compression content_compression;
+
+ int n_content_encoding_order;
+ int n_content_encoding_scope;
+ int n_content_encoding_type;
+ int n_content_compression;
+};
+
+struct ebml_content_encodings {
+ struct ebml_content_encoding *content_encoding;
+
+ int n_content_encoding;
+};
+
+struct ebml_audio {
+ double sampling_frequency;
+ double output_sampling_frequency;
+ uint64_t channels;
+ uint64_t bit_depth;
+
+ int n_sampling_frequency;
+ int n_output_sampling_frequency;
+ int n_channels;
+ int n_bit_depth;
+};
+
+struct ebml_projection {
+ uint64_t projection_type;
+ bstr projection_private;
+ double projection_pose_yaw;
+ double projection_pose_pitch;
+ double projection_pose_roll;
+
+ int n_projection_type;
+ int n_projection_private;
+ int n_projection_pose_yaw;
+ int n_projection_pose_pitch;
+ int n_projection_pose_roll;
+};
+
+struct ebml_mastering_metadata {
+ double primary_r_chromaticity_x;
+ double primary_r_chromaticity_y;
+ double primary_g_chromaticity_x;
+ double primary_g_chromaticity_y;
+ double primary_b_chromaticity_x;
+ double primary_b_chromaticity_y;
+ double white_point_chromaticity_x;
+ double white_point_chromaticity_y;
+ double luminance_max;
+ double luminance_min;
+
+ int n_primary_r_chromaticity_x;
+ int n_primary_r_chromaticity_y;
+ int n_primary_g_chromaticity_x;
+ int n_primary_g_chromaticity_y;
+ int n_primary_b_chromaticity_x;
+ int n_primary_b_chromaticity_y;
+ int n_white_point_chromaticity_x;
+ int n_white_point_chromaticity_y;
+ int n_luminance_max;
+ int n_luminance_min;
+};
+
+struct ebml_colour {
+ uint64_t matrix_coefficients;
+ uint64_t bits_per_channel;
+ uint64_t chroma_subsampling_horz;
+ uint64_t chroma_subsampling_vert;
+ uint64_t cb_subsampling_horz;
+ uint64_t cb_subsampling_vert;
+ uint64_t chroma_siting_horz;
+ uint64_t chroma_siting_vert;
+ uint64_t range;
+ uint64_t transfer_characteristics;
+ uint64_t primaries;
+ uint64_t max_cll;
+ uint64_t max_fall;
+ struct ebml_mastering_metadata mastering_metadata;
+
+ int n_matrix_coefficients;
+ int n_bits_per_channel;
+ int n_chroma_subsampling_horz;
+ int n_chroma_subsampling_vert;
+ int n_cb_subsampling_horz;
+ int n_cb_subsampling_vert;
+ int n_chroma_siting_horz;
+ int n_chroma_siting_vert;
+ int n_range;
+ int n_transfer_characteristics;
+ int n_primaries;
+ int n_max_cll;
+ int n_max_fall;
+ int n_mastering_metadata;
+};
+
+struct ebml_video {
+ uint64_t flag_interlaced;
+ uint64_t pixel_width;
+ uint64_t pixel_height;
+ uint64_t display_width;
+ uint64_t display_height;
+ uint64_t display_unit;
+ uint64_t pixel_crop_top;
+ uint64_t pixel_crop_left;
+ uint64_t pixel_crop_right;
+ uint64_t pixel_crop_bottom;
+ double frame_rate;
+ bstr colour_space;
+ uint64_t stereo_mode;
+ struct ebml_colour colour;
+ struct ebml_projection projection;
+
+ int n_flag_interlaced;
+ int n_pixel_width;
+ int n_pixel_height;
+ int n_display_width;
+ int n_display_height;
+ int n_display_unit;
+ int n_pixel_crop_top;
+ int n_pixel_crop_left;
+ int n_pixel_crop_right;
+ int n_pixel_crop_bottom;
+ int n_frame_rate;
+ int n_colour_space;
+ int n_stereo_mode;
+ int n_colour;
+ int n_projection;
+};
+
+struct ebml_track_entry {
+ uint64_t track_number;
+ uint64_t track_uid;
+ uint64_t track_type;
+ uint64_t flag_enabled;
+ uint64_t flag_default;
+ uint64_t flag_forced;
+ uint64_t flag_lacing;
+ uint64_t min_cache;
+ uint64_t max_cache;
+ uint64_t default_duration;
+ double track_timecode_scale;
+ uint64_t max_block_addition_id;
+ char * name;
+ char * language;
+ char * language_bcp47;
+ char * codec_id;
+ bstr codec_private;
+ char * codec_name;
+ uint64_t codec_decode_all;
+ uint64_t codec_delay;
+ uint64_t seek_pre_roll;
+ struct ebml_video video;
+ struct ebml_audio audio;
+ struct ebml_content_encodings content_encodings;
+
+ int n_track_number;
+ int n_track_uid;
+ int n_track_type;
+ int n_flag_enabled;
+ int n_flag_default;
+ int n_flag_forced;
+ int n_flag_lacing;
+ int n_min_cache;
+ int n_max_cache;
+ int n_default_duration;
+ int n_track_timecode_scale;
+ int n_max_block_addition_id;
+ int n_name;
+ int n_language;
+ int n_language_bcp47;
+ int n_codec_id;
+ int n_codec_private;
+ int n_codec_name;
+ int n_codec_decode_all;
+ int n_codec_delay;
+ int n_seek_pre_roll;
+ int n_video;
+ int n_audio;
+ int n_content_encodings;
+};
+
+struct ebml_tracks {
+ struct ebml_track_entry *track_entry;
+
+ int n_track_entry;
+};
+
+struct ebml_block_more {
+ uint64_t block_add_id;
+ bstr block_additional;
+
+ int n_block_add_id;
+ int n_block_additional;
+};
+
+struct ebml_block_additions {
+ struct ebml_block_more *block_more;
+
+ int n_block_more;
+};
+
+struct ebml_block_group {
+ bstr block;
+ uint64_t block_duration;
+ int64_t *reference_block;
+ int64_t discard_padding;
+ struct ebml_block_additions block_additions;
+
+ int n_block;
+ int n_block_duration;
+ int n_reference_block;
+ int n_discard_padding;
+ int n_block_additions;
+};
+
+struct ebml_cluster {
+ uint64_t timecode;
+ struct ebml_block_group *block_group;
+ bstr *simple_block;
+
+ int n_timecode;
+ int n_block_group;
+ int n_simple_block;
+};
+
+struct ebml_info {
+ bstr segment_uid;
+ bstr prev_uid;
+ bstr next_uid;
+ uint64_t timecode_scale;
+ int64_t date_utc;
+ char * title;
+ char * muxing_app;
+ char * writing_app;
+ double duration;
+
+ int n_segment_uid;
+ int n_prev_uid;
+ int n_next_uid;
+ int n_timecode_scale;
+ int n_date_utc;
+ int n_title;
+ int n_muxing_app;
+ int n_writing_app;
+ int n_duration;
+};
+
+struct ebml_seek {
+ uint32_t seek_id;
+ uint64_t seek_position;
+
+ int n_seek_id;
+ int n_seek_position;
+};
+
+struct ebml_seek_head {
+ struct ebml_seek *seek;
+
+ int n_seek;
+};
+
+struct ebml_segment {
+ struct ebml_seek_head *seek_head;
+ struct ebml_info *info;
+ struct ebml_cluster *cluster;
+ struct ebml_tracks *tracks;
+ struct ebml_cues cues;
+ struct ebml_attachments attachments;
+ struct ebml_chapters chapters;
+ struct ebml_tags *tags;
+
+ int n_seek_head;
+ int n_info;
+ int n_cluster;
+ int n_tracks;
+ int n_cues;
+ int n_attachments;
+ int n_chapters;
+ int n_tags;
+};
+
+struct ebml_ebml {
+ uint64_t ebml_version;
+ uint64_t ebml_read_version;
+ uint64_t ebml_max_id_length;
+ uint64_t ebml_max_size_length;
+ char * doc_type;
+ uint64_t doc_type_version;
+ uint64_t doc_type_read_version;
+
+ int n_ebml_version;
+ int n_ebml_read_version;
+ int n_ebml_max_id_length;
+ int n_ebml_max_size_length;
+ int n_doc_type;
+ int n_doc_type_version;
+ int n_doc_type_read_version;
+};
+extern const struct ebml_elem_desc ebml_ebml_desc;
+extern const struct ebml_elem_desc ebml_segment_desc;
+extern const struct ebml_elem_desc ebml_seek_head_desc;
+extern const struct ebml_elem_desc ebml_seek_desc;
+extern const struct ebml_elem_desc ebml_info_desc;
+extern const struct ebml_elem_desc ebml_cluster_desc;
+extern const struct ebml_elem_desc ebml_block_group_desc;
+extern const struct ebml_elem_desc ebml_block_additions_desc;
+extern const struct ebml_elem_desc ebml_block_more_desc;
+extern const struct ebml_elem_desc ebml_tracks_desc;
+extern const struct ebml_elem_desc ebml_track_entry_desc;
+extern const struct ebml_elem_desc ebml_video_desc;
+extern const struct ebml_elem_desc ebml_colour_desc;
+extern const struct ebml_elem_desc ebml_mastering_metadata_desc;
+extern const struct ebml_elem_desc ebml_projection_desc;
+extern const struct ebml_elem_desc ebml_audio_desc;
+extern const struct ebml_elem_desc ebml_content_encodings_desc;
+extern const struct ebml_elem_desc ebml_content_encoding_desc;
+extern const struct ebml_elem_desc ebml_content_compression_desc;
+extern const struct ebml_elem_desc ebml_cues_desc;
+extern const struct ebml_elem_desc ebml_cue_point_desc;
+extern const struct ebml_elem_desc ebml_cue_track_positions_desc;
+extern const struct ebml_elem_desc ebml_attachments_desc;
+extern const struct ebml_elem_desc ebml_attached_file_desc;
+extern const struct ebml_elem_desc ebml_chapters_desc;
+extern const struct ebml_elem_desc ebml_edition_entry_desc;
+extern const struct ebml_elem_desc ebml_chapter_atom_desc;
+extern const struct ebml_elem_desc ebml_chapter_display_desc;
+extern const struct ebml_elem_desc ebml_tags_desc;
+extern const struct ebml_elem_desc ebml_tag_desc;
+extern const struct ebml_elem_desc ebml_targets_desc;
+extern const struct ebml_elem_desc ebml_simple_tag_desc;
+
+#define MAX_EBML_SUBELEMENTS 24
--
2.44.0