From 500b8f9510babd4e5d2d9cd35af689617946a1d9 Mon Sep 17 00:00:00 2001 From: Michael Forney 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