master hovercats/oakiss / pkg / mpv / patch / 0001-Add-generated-ebml-sources.patch
   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