123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713 |
- // Copyright (c) Kuba Szczodrzyński 2022-1-16.
- #pragma once
- enum class ElementId {
- /** [sub-elements] Set the EBML characteristics of the data to follow. Each EBML document has to start with this. */
- EBML = 0x1A45DFA3,
- /** [u-integer] The version of EBML parser used to create the file. */
- EBMLVersion = 0x4286,
- /** [u-integer] The minimum EBML version a parser has to support to read this file. */
- EBMLReadVersion = 0x42F7,
- /** [u-integer] The maximum length of the IDs you'll find in this file (4 or less in Matroska). */
- EBMLMaxIDLength = 0x42F2,
- /** [u-integer] The maximum length of the sizes you'll find in this file (8 or less in Matroska). This does not
- override the element size indicated at the beginning of an element. Elements that have an indicated size which is
- larger than what is allowed by EBMLMaxSizeLength shall be considered invalid. */
- EBMLMaxSizeLength = 0x42F3,
- /** [string] A string that describes the type of document that follows this EBML header ('matroska' in our case). */
- DocType = 0x4282,
- /** [u-integer] The version of DocType interpreter used to create the file. */
- DocTypeVersion = 0x4287,
- /** [u-integer] The minimum DocType version an interpreter has to support to read this file. */
- DocTypeReadVersion = 0x4285,
- /** [binary] The CRC is computed on all the data from the last CRC element (or start of the upper level element), up
- to the CRC element, including other previous CRC elements. All level 1 elements should include a CRC-32. */
- CRC32 = 0xBF,
- /** [binary] Used to void damaged data, to avoid unexpected behaviors when using damaged data. The content is
- discarded. Also used to reserve space in a sub-element for later use. */
- Void = 0xEC,
- /** [sub-elements] Contain signature of some (coming) elements in the stream. */
- SignatureSlot = 0x1B538667,
- /** [u-integer] Signature algorithm used (1=RSA, 2=elliptic). */
- SignatureAlgo = 0x7E8A,
- /** [u-integer] Hash algorithm used (1=SHA1-160, 2=MD5). */
- SignatureHash = 0x7E9A,
- /** [binary] The public key to use with the algorithm (in the case of a PKI-based signature). */
- SignaturePublicKey = 0x7EA5,
- /** [binary] The signature of the data (until a new. */
- Signature = 0x7EB5,
- /** [sub-elements] Contains elements that will be used to compute the signature. */
- SignatureElements = 0x7E5B,
- /** [sub-elements] A list consists of a number of consecutive elements that represent one case where data is used in
- signature. Ex: Cluster|Block|BlockAdditional means that the BlockAdditional of all Blocks in all Clusters is used
- for encryption. */
- SignatureElementList = 0x7E7B,
- /** [binary] An element ID whose data will be used to compute the signature. */
- SignedElement = 0x6532,
- /* ebml_matroska.xml */
- /** [master] The Root Element that contains all other Top-Level Elements (Elements defined only at Level 1). A
- Matroska file is composed of 1 Segment. */
- Segment = 0x18538067,
- /** [master] Contains the Segment Position of other Top-Level Elements. */
- SeekHead = 0x114D9B74,
- /** [master] Contains a single seek entry to an EBML Element. */
- Seek = 0x4DBB,
- /** [binary] The binary ID corresponding to the Element name. */
- SeekID = 0x53AB,
- /** [uinteger] The Segment Position of the Element. */
- SeekPosition = 0x53AC,
- /** [master] Contains general information about the Segment. */
- Info = 0x1549A966,
- /** [binary] A randomly generated unique ID to identify the Segment amongst many others (128 bits). */
- SegmentUID = 0x73A4,
- /** [utf-8] A filename corresponding to this Segment. */
- SegmentFilename = 0x7384,
- /** [binary] A unique ID to identify the previous Segment of a Linked Segment (128 bits). */
- PrevUID = 0x3CB923,
- /** [utf-8] A filename corresponding to the file of the previous Linked Segment. */
- PrevFilename = 0x3C83AB,
- /** [binary] A unique ID to identify the next Segment of a Linked Segment (128 bits). */
- NextUID = 0x3EB923,
- /** [utf-8] A filename corresponding to the file of the next Linked Segment. */
- NextFilename = 0x3E83BB,
- /** [binary] A randomly generated unique ID that all Segments of a Linked Segment **MUST** share (128 bits). */
- SegmentFamily = 0x4444,
- /** [master] The mapping between this `Segment` and a segment value in the given Chapter Codec. */
- ChapterTranslate = 0x6924,
- /** [binary] The binary value used to represent this Segment in the chapter codec data. The format depends on the
- ChapProcessCodecID used; see (#chapprocesscodecid-element). */
- ChapterTranslateID = 0x69A5,
- /** [uinteger] This `ChapterTranslate` applies to this chapter codec of the given chapter edition(s); see
- (#chapprocesscodecid-element). */
- ChapterTranslateCodec = 0x69BF,
- /** [uinteger] Specify a chapter edition UID on which this `ChapterTranslate` applies. */
- ChapterTranslateEditionUID = 0x69FC,
- /** [uinteger] Timestamp scale in nanoseconds (1.000.000 means all timestamps in the Segment are expressed in
- milliseconds). */
- TimestampScale = 0x2AD7B1,
- /** [float] Duration of the Segment in nanoseconds based on TimestampScale. */
- Duration = 0x4489,
- /** [date] The date and time that the Segment was created by the muxing application or library. */
- DateUTC = 0x4461,
- /** [utf-8] General name of the Segment. */
- Title = 0x7BA9,
- /** [utf-8] Muxing application or library (example: "libmatroska-0.4.3"). */
- MuxingApp = 0x4D80,
- /** [utf-8] Writing application (example: "mkvmerge-0.3.3"). */
- WritingApp = 0x5741,
- /** [master] The Top-Level Element containing the (monolithic) Block structure. */
- Cluster = 0x1F43B675,
- /** [uinteger] Absolute timestamp of the cluster (based on TimestampScale). */
- Timestamp = 0xE7,
- /** [master] The list of tracks that are not used in that part of the stream. It is useful when using overlay tracks
- on seeking or to decide what track to use. */
- SilentTracks = 0x5854,
- /** [uinteger] One of the track number that are not used from now on in the stream. It could change later if not
- specified as silent in a further Cluster. */
- SilentTrackNumber = 0x58D7,
- /** [uinteger] The Segment Position of the Cluster in the Segment (0 in live streams). It might help to
- resynchronise offset on damaged streams. */
- Position = 0xA7,
- /** [uinteger] Size of the previous Cluster, in octets. Can be useful for backward playing. */
- PrevSize = 0xAB,
- /** [binary] Similar to Block, see (#block-structure), but without all the extra information, mostly used to reduced
- overhead when no extra feature is needed; see (#simpleblock-structure) on SimpleBlock Structure. */
- SimpleBlock = 0xA3,
- /** [master] Basic container of information containing a single Block and information specific to that Block. */
- BlockGroup = 0xA0,
- /** [binary] Block containing the actual data to be rendered and a timestamp relative to the Cluster Timestamp; see
- (#block-structure) on Block Structure. */
- Block = 0xA1,
- /** [binary] A Block with no data. It **MUST** be stored in the stream at the place the real Block would be in
- display order. */
- BlockVirtual = 0xA2,
- /** [master] Contain additional blocks to complete the main one. An EBML parser that has no knowledge of the Block
- structure could still see and use/skip these data. */
- BlockAdditions = 0x75A1,
- /** [master] Contain the BlockAdditional and some parameters. */
- BlockMore = 0xA6,
- /** [uinteger] An ID to identify the BlockAdditional level. If BlockAddIDType of the corresponding block is 0, this
- value is also the value of BlockAddIDType for the meaning of the content of BlockAdditional. */
- BlockAddID = 0xEE,
- /** [binary] Interpreted by the codec as it wishes (using the BlockAddID). */
- BlockAdditional = 0xA5,
- /** [uinteger] The duration of the Block (based on TimestampScale). The BlockDuration Element can be useful at the
- end of a Track to define the duration of the last frame (as there is no subsequent Block available), or when
- there is a break in a track like for subtitle tracks. */
- BlockDuration = 0x9B,
- /** [uinteger] This frame is referenced and has the specified cache priority. In cache only a frame of the same or
- higher priority can replace this frame. A value of 0 means the frame is not referenced. */
- ReferencePriority = 0xFA,
- /** [integer] A timestamp value, relative to the timestamp of the Block in this BlockGroup. This is used to
- reference other frames necessary to decode this frame. The relative value **SHOULD** correspond to a valid
- `Block` this `Block` depends on. Historically Matroska Writer didn't write the actual `Block(s)` this `Block`
- depends on, but *some* `Block` in the past. The value "0" **MAY** also be used to signify this `Block` cannot be
- decoded on its own, but without knownledge of which `Block` is necessary. In this case, other `ReferenceBlock`
- **MUST NOT** be found in the same `BlockGroup`. If the `BlockGroup` doesn't have any `ReferenceBlock` element,
- then the `Block` it contains can be decoded without using any other `Block` data. */
- ReferenceBlock = 0xFB,
- /** [integer] The Segment Position of the data that would otherwise be in position of the virtual block. */
- ReferenceVirtual = 0xFD,
- /** [binary] The new codec state to use. Data interpretation is private to the codec. This information **SHOULD**
- always be referenced by a seek entry. */
- CodecState = 0xA4,
- /** [integer] Duration in nanoseconds of the silent data added to the Block (padding at the end of the Block for
- positive value, at the beginning of the Block for negative value). The duration of DiscardPadding is not
- calculated in the duration of the TrackEntry and **SHOULD** be discarded during playback. */
- DiscardPadding = 0x75A2,
- /** [master] Contains slices description. */
- Slices = 0x8E,
- /** [master] Contains extra time information about the data contained in the Block. Being able to interpret this
- Element is not **REQUIRED** for playback. */
- TimeSlice = 0xE8,
- /** [uinteger] The reverse number of the frame in the lace (0 is the last frame, 1 is the next to last, etc). Being
- able to interpret this Element is not **REQUIRED** for playback. */
- LaceNumber = 0xCC,
- /** [uinteger] The number of the frame to generate from this lace with this delay (allow you to generate many frames
- from the same Block/Frame). */
- FrameNumber = 0xCD,
- /** [uinteger] The ID of the BlockAdditional Element (0 is the main Block). */
- BlockAdditionID = 0xCB,
- /** [uinteger] The (scaled) delay to apply to the Element. */
- Delay = 0xCE,
- /** [uinteger] The (scaled) duration to apply to the Element. */
- SliceDuration = 0xCF,
- /** [master] Contains information about the last reference frame. See [@?DivXTrickTrack]. */
- ReferenceFrame = 0xC8,
- /** [uinteger] The relative offset, in bytes, from the previous BlockGroup element for this Smooth FF/RW video track
- to the containing BlockGroup element. See [@?DivXTrickTrack]. */
- ReferenceOffset = 0xC9,
- /** [uinteger] The timecode of the BlockGroup pointed to by ReferenceOffset. See [@?DivXTrickTrack]. */
- ReferenceTimestamp = 0xCA,
- /** [binary] Similar to SimpleBlock, see (#simpleblock-structure), but the data inside the Block are Transformed
- (encrypt and/or signed). */
- EncryptedBlock = 0xAF,
- /** [master] A Top-Level Element of information with many tracks described. */
- Tracks = 0x1654AE6B,
- /** [master] Describes a track with all Elements. */
- TrackEntry = 0xAE,
- /** [uinteger] The track number as used in the Block Header (using more than 127 tracks is not encouraged, though
- the design allows an unlimited number). */
- TrackNumber = 0xD7,
- /** [uinteger] A unique ID to identify the Track. */
- TrackUID = 0x73C5,
- /** [uinteger] The `TrackType` defines the type of each frame found in the Track. The value **SHOULD** be stored on
- 1 octet. */
- TrackType = 0x83,
- /** [uinteger] Set to 1 if the track is usable. It is possible to turn a not usable track into a usable track using
- chapter codecs or control tracks. */
- FlagEnabled = 0xB9,
- /** [uinteger] Set if that track (audio, video or subs) **SHOULD** be eligible for automatic selection by the
- player; see (#default-track-selection) for more details. */
- FlagDefault = 0x88,
- /** [uinteger] Applies only to subtitles. Set if that track **SHOULD** be eligible for automatic selection by the
- player if it matches the user's language preference, even if the user's preferences would normally not enable
- subtitles with the selected audio track; this can be used for tracks containing only translations of
- foreign-language audio or onscreen text. See (#default-track-selection) for more details. */
- FlagForced = 0x55AA,
- /** [uinteger] Set to 1 if that track is suitable for users with hearing impairments, set to 0 if it is unsuitable
- for users with hearing impairments. */
- FlagHearingImpaired = 0x55AB,
- /** [uinteger] Set to 1 if that track is suitable for users with visual impairments, set to 0 if it is unsuitable
- for users with visual impairments. */
- FlagVisualImpaired = 0x55AC,
- /** [uinteger] Set to 1 if that track contains textual descriptions of video content, set to 0 if that track does
- not contain textual descriptions of video content. */
- FlagTextDescriptions = 0x55AD,
- /** [uinteger] Set to 1 if that track is in the content's original language, set to 0 if it is a translation. */
- FlagOriginal = 0x55AE,
- /** [uinteger] Set to 1 if that track contains commentary, set to 0 if it does not contain commentary. */
- FlagCommentary = 0x55AF,
- /** [uinteger] Set to 1 if the track **MAY** contain blocks using lacing. When set to 0 all blocks **MUST** have
- their lacing flags set to No lacing; see (#block-lacing) on Block Lacing. */
- FlagLacing = 0x9C,
- /** [uinteger] The minimum number of frames a player **SHOULD** be able to cache during playback. If set to 0, the
- reference pseudo-cache system is not used. */
- MinCache = 0x6DE7,
- /** [uinteger] The maximum cache size necessary to store referenced frames in and the current frame. 0 means no
- cache is needed. */
- MaxCache = 0x6DF8,
- /** [uinteger] Number of nanoseconds (not scaled via TimestampScale) per frame (frame in the Matroska sense -- one
- Element put into a (Simple)Block). */
- DefaultDuration = 0x23E383,
- /** [uinteger] The period in nanoseconds (not scaled by TimestampScale) between two successive fields at the output
- of the decoding process, see (#defaultdecodedfieldduration) for more information */
- DefaultDecodedFieldDuration = 0x234E7A,
- /** [float] DEPRECATED, DO NOT USE. The scale to apply on this track to work at normal speed in relation with other
- tracks (mostly used to adjust video speed when the audio length differs). */
- TrackTimestampScale = 0x23314F,
- /** [integer] A value to add to the Block's Timestamp. This can be used to adjust the playback offset of a track. */
- TrackOffset = 0x537F,
- /** [uinteger] The maximum value of BlockAddID ((#blockaddid-element)). A value 0 means there is no BlockAdditions
- ((#blockadditions-element)) for this track. */
- MaxBlockAdditionID = 0x55EE,
- /** [master] Contains elements that extend the track format, by adding content either to each frame, with BlockAddID
- ((#blockaddid-element)), or to the track as a whole with BlockAddIDExtraData. */
- BlockAdditionMapping = 0x41E4,
- /** [uinteger] If the track format extension needs content beside frames, the value refers to the BlockAddID
- ((#blockaddid-element)), value being described. To keep MaxBlockAdditionID as low as possible, small values
- **SHOULD** be used. */
- BlockAddIDValue = 0x41F0,
- /** [string] A human-friendly name describing the type of BlockAdditional data, as defined by the associated Block
- Additional Mapping. */
- BlockAddIDName = 0x41A4,
- /** [uinteger] Stores the registered identifier of the Block Additional Mapping to define how the BlockAdditional
- data should be handled. */
- BlockAddIDType = 0x41E7,
- /** [binary] Extra binary data that the BlockAddIDType can use to interpret the BlockAdditional data. The
- interpretation of the binary data depends on the BlockAddIDType value and the corresponding Block Additional
- Mapping. */
- BlockAddIDExtraData = 0x41ED,
- /** [utf-8] A human-readable track name. */
- Name = 0x536E,
- /** [string] Specifies the language of the track in the Matroska languages form; see (#language-codes) on language
- codes. This Element **MUST** be ignored if the LanguageIETF Element is used in the same TrackEntry. */
- Language = 0x22B59C,
- /** [string] Specifies the language of the track according to [@!BCP47] and using the IANA Language Subtag Registry
- [@!IANALangRegistry]. If this Element is used, then any Language Elements used in the same TrackEntry **MUST** be
- ignored. */
- LanguageIETF = 0x22B59D,
- /** [string] An ID corresponding to the codec, see [@!MatroskaCodec] for more info. */
- CodecID = 0x86,
- /** [binary] Private data only known to the codec. */
- CodecPrivate = 0x63A2,
- /** [utf-8] A human-readable string specifying the codec. */
- CodecName = 0x258688,
- /** [uinteger] The UID of an attachment that is used by this codec. */
- AttachmentLink = 0x7446,
- /** [utf-8] A string describing the encoding setting used. */
- CodecSettings = 0x3A9697,
- /** [string] A URL to find information about the codec used. */
- CodecInfoURL = 0x3B4040,
- /** [string] A URL to download about the codec used. */
- CodecDownloadURL = 0x26B240,
- /** [uinteger] Set to 1 if the codec can decode potentially damaged data. */
- CodecDecodeAll = 0xAA,
- /** [uinteger] Specify that this track is an overlay track for the Track specified (in the u-integer). That means
- when this track has a gap, see (#silenttracks-element) on SilentTracks, the overlay track **SHOULD** be used
- instead. The order of multiple TrackOverlay matters, the first one is the one that **SHOULD** be used. If not
- found it **SHOULD** be the second, etc. */
- TrackOverlay = 0x6FAB,
- /** [uinteger] CodecDelay is The codec-built-in delay in nanoseconds. This value **MUST** be subtracted from each
- block timestamp in order to get the actual timestamp. The value **SHOULD** be small so the muxing of tracks with
- the same actual timestamp are in the same Cluster. */
- CodecDelay = 0x56AA,
- /** [uinteger] After a discontinuity, SeekPreRoll is the duration in nanoseconds of the data the decoder **MUST**
- decode before the decoded data is valid. */
- SeekPreRoll = 0x56BB,
- /** [master] The mapping between this `TrackEntry` and a track value in the given Chapter Codec. */
- TrackTranslate = 0x6624,
- /** [binary] The binary value used to represent this `TrackEntry` in the chapter codec data. The format depends on
- the `ChapProcessCodecID` used; see (#chapprocesscodecid-element). */
- TrackTranslateTrackID = 0x66A5,
- /** [uinteger] This `TrackTranslate` applies to this chapter codec of the given chapter edition(s); see
- (#chapprocesscodecid-element). */
- TrackTranslateCodec = 0x66BF,
- /** [uinteger] Specify a chapter edition UID on which this `TrackTranslate` applies. */
- TrackTranslateEditionUID = 0x66FC,
- /** [master] Video settings. */
- Video = 0xE0,
- /** [uinteger] Specify whether the video frames in this track are interlaced or not. */
- FlagInterlaced = 0x9A,
- /** [uinteger] Specify the field ordering of video frames in this track. */
- FieldOrder = 0x9D,
- /** [uinteger] Stereo-3D video mode. There are some more details in (#multi-planar-and-3d-videos). */
- StereoMode = 0x53B8,
- /** [uinteger] Alpha Video Mode. Presence of this Element indicates that the BlockAdditional Element could contain
- Alpha data. */
- AlphaMode = 0x53C0,
- /** [uinteger] DEPRECATED, DO NOT USE. Bogus StereoMode value used in old versions of libmatroska. */
- OldStereoMode = 0x53B9,
- /** [uinteger] Width of the encoded video frames in pixels. */
- PixelWidth = 0xB0,
- /** [uinteger] Height of the encoded video frames in pixels. */
- PixelHeight = 0xBA,
- /** [uinteger] The number of video pixels to remove at the bottom of the image. */
- PixelCropBottom = 0x54AA,
- /** [uinteger] The number of video pixels to remove at the top of the image. */
- PixelCropTop = 0x54BB,
- /** [uinteger] The number of video pixels to remove on the left of the image. */
- PixelCropLeft = 0x54CC,
- /** [uinteger] The number of video pixels to remove on the right of the image. */
- PixelCropRight = 0x54DD,
- /** [uinteger] Width of the video frames to display. Applies to the video frame after cropping (PixelCrop*
- Elements). */
- DisplayWidth = 0x54B0,
- /** [uinteger] Height of the video frames to display. Applies to the video frame after cropping (PixelCrop*
- Elements). */
- DisplayHeight = 0x54BA,
- /** [uinteger] How DisplayWidth & DisplayHeight are interpreted. */
- DisplayUnit = 0x54B2,
- /** [uinteger] Specify the possible modifications to the aspect ratio. */
- AspectRatioType = 0x54B3,
- /** [binary] Specify the uncompressed pixel format used for the Track's data as a FourCC. This value is similar in
- scope to the biCompression value of AVI's `BITMAPINFO` [@?AVIFormat]. See the YUV video formats [@?FourCC-YUV]
- and RGB video formats [@?FourCC-RGB] for common values. */
- UncompressedFourCC = 0x2EB524,
- /** [float] Gamma Value. */
- GammaValue = 0x2FB523,
- /** [float] Number of frames per second. This value is Informational only. It is intended for constant frame rate
- streams, and **SHOULD NOT** be used for a variable frame rate TrackEntry. */
- FrameRate = 0x2383E3,
- /** [master] Settings describing the colour format. */
- Colour = 0x55B0,
- /** [uinteger] The Matrix Coefficients of the video used to derive luma and chroma values from red, green, and blue
- color primaries. For clarity, the value and meanings for MatrixCoefficients are adopted from Table 4 of ISO/IEC
- 23001-8:2016 or ITU-T H.273. */
- MatrixCoefficients = 0x55B1,
- /** [uinteger] Number of decoded bits per channel. A value of 0 indicates that the BitsPerChannel is unspecified. */
- BitsPerChannel = 0x55B2,
- /** [uinteger] The amount of pixels to remove in the Cr and Cb channels for every pixel not removed horizontally.
- Example: For video with 4:2:0 chroma subsampling, the ChromaSubsamplingHorz **SHOULD** be set to 1. */
- ChromaSubsamplingHorz = 0x55B3,
- /** [uinteger] The amount of pixels to remove in the Cr and Cb channels for every pixel not removed vertically.
- Example: For video with 4:2:0 chroma subsampling, the ChromaSubsamplingVert **SHOULD** be set to 1. */
- ChromaSubsamplingVert = 0x55B4,
- /** [uinteger] The amount of pixels to remove in the Cb channel for every pixel not removed horizontally. This is
- additive with ChromaSubsamplingHorz. Example: For video with 4:2:1 chroma subsampling, the ChromaSubsamplingHorz
- **SHOULD** be set to 1 and CbSubsamplingHorz **SHOULD** be set to 1. */
- CbSubsamplingHorz = 0x55B5,
- /** [uinteger] The amount of pixels to remove in the Cb channel for every pixel not removed vertically. This is
- additive with ChromaSubsamplingVert. */
- CbSubsamplingVert = 0x55B6,
- /** [uinteger] How chroma is subsampled horizontally. */
- ChromaSitingHorz = 0x55B7,
- /** [uinteger] How chroma is subsampled vertically. */
- ChromaSitingVert = 0x55B8,
- /** [uinteger] Clipping of the color ranges. */
- Range = 0x55B9,
- /** [uinteger] The transfer characteristics of the video. For clarity, the value and meanings for
- TransferCharacteristics are adopted from Table 3 of ISO/IEC 23091-4 or ITU-T H.273. */
- TransferCharacteristics = 0x55BA,
- /** [uinteger] The colour primaries of the video. For clarity, the value and meanings for Primaries are adopted from
- Table 2 of ISO/IEC 23091-4 or ITU-T H.273. */
- Primaries = 0x55BB,
- /** [uinteger] Maximum brightness of a single pixel (Maximum Content Light Level) in candelas per square meter
- (cd/m^2^). */
- MaxCLL = 0x55BC,
- /** [uinteger] Maximum brightness of a single full frame (Maximum Frame-Average Light Level) in candelas per square
- meter (cd/m^2^). */
- MaxFALL = 0x55BD,
- /** [master] SMPTE 2086 mastering data. */
- MasteringMetadata = 0x55D0,
- /** [float] Red X chromaticity coordinate, as defined by CIE 1931. */
- PrimaryRChromaticityX = 0x55D1,
- /** [float] Red Y chromaticity coordinate, as defined by CIE 1931. */
- PrimaryRChromaticityY = 0x55D2,
- /** [float] Green X chromaticity coordinate, as defined by CIE 1931. */
- PrimaryGChromaticityX = 0x55D3,
- /** [float] Green Y chromaticity coordinate, as defined by CIE 1931. */
- PrimaryGChromaticityY = 0x55D4,
- /** [float] Blue X chromaticity coordinate, as defined by CIE 1931. */
- PrimaryBChromaticityX = 0x55D5,
- /** [float] Blue Y chromaticity coordinate, as defined by CIE 1931. */
- PrimaryBChromaticityY = 0x55D6,
- /** [float] White X chromaticity coordinate, as defined by CIE 1931. */
- WhitePointChromaticityX = 0x55D7,
- /** [float] White Y chromaticity coordinate, as defined by CIE 1931. */
- WhitePointChromaticityY = 0x55D8,
- /** [float] Maximum luminance. Represented in candelas per square meter (cd/m^2^). */
- LuminanceMax = 0x55D9,
- /** [float] Minimum luminance. Represented in candelas per square meter (cd/m^2^). */
- LuminanceMin = 0x55DA,
- /** [master] Describes the video projection details. Used to render spherical, VR videos or flipping videos
- horizontally/vertically. */
- Projection = 0x7670,
- /** [uinteger] Describes the projection used for this video track. */
- ProjectionType = 0x7671,
- /** [binary] Private data that only applies to a specific projection. * If `ProjectionType` equals 0
- (Rectangular), then this element must not be present. * If `ProjectionType` equals 1 (Equirectangular),
- then this element must be present and contain the same binary data that would be stored inside an ISOBMFF
- Equirectangular Projection Box ('equi'). * If `ProjectionType` equals 2 (Cubemap), then this element must be
- present and contain the same binary data that would be stored inside an ISOBMFF Cubemap Projection Box
- ('cbmp'). * If `ProjectionType` equals 3 (Mesh), then this element must be present and contain the same binary
- data that would be stored inside an ISOBMFF Mesh Projection Box ('mshp'). */
- ProjectionPrivate = 0x7672,
- /** [float] Specifies a yaw rotation to the projection. Value represents a clockwise rotation, in degrees, around
- the up vector. This rotation must be applied before any `ProjectionPosePitch` or `ProjectionPoseRoll` rotations.
- The value of this element **MUST** be in the -180 to 180 degree range, both included. Setting
- `ProjectionPoseYaw` to 180 or -180 degrees, with the `ProjectionPoseRoll` and `ProjectionPosePitch` set to 0
- degrees flips the image horizontally. */
- ProjectionPoseYaw = 0x7673,
- /** [float] Specifies a pitch rotation to the projection. Value represents a counter-clockwise rotation, in
- degrees, around the right vector. This rotation must be applied after the `ProjectionPoseYaw` rotation and before
- the `ProjectionPoseRoll` rotation. The value of this element **MUST** be in the -90 to 90 degree range, both
- included. */
- ProjectionPosePitch = 0x7674,
- /** [float] Specifies a roll rotation to the projection. Value represents a counter-clockwise rotation, in degrees,
- around the forward vector. This rotation must be applied after the `ProjectionPoseYaw` and `ProjectionPosePitch`
- rotations. The value of this element **MUST** be in the -180 to 180 degree range, both included. Setting
- `ProjectionPoseRoll` to 180 or -180 degrees, the `ProjectionPoseYaw` to 180 or -180 degrees with
- `ProjectionPosePitch` set to 0 degrees flips the image vertically. Setting `ProjectionPoseRoll` to 180 or -180
- degrees, with the `ProjectionPoseYaw` and `ProjectionPosePitch` set to 0 degrees flips the image horizontally and
- vertically. */
- ProjectionPoseRoll = 0x7675,
- /** [master] Audio settings. */
- Audio = 0xE1,
- /** [float] Sampling frequency in Hz. */
- SamplingFrequency = 0xB5,
- /** [float] Real output sampling frequency in Hz (used for SBR techniques). */
- OutputSamplingFrequency = 0x78B5,
- /** [uinteger] Numbers of channels in the track. */
- Channels = 0x9F,
- /** [binary] Table of horizontal angles for each successive channel. */
- ChannelPositions = 0x7D7B,
- /** [uinteger] Bits per sample, mostly used for PCM. */
- BitDepth = 0x6264,
- /** [master] Operation that needs to be applied on tracks to create this virtual track. For more details look at
- (#track-operation). */
- TrackOperation = 0xE2,
- /** [master] Contains the list of all video plane tracks that need to be combined to create this 3D track */
- TrackCombinePlanes = 0xE3,
- /** [master] Contains a video plane track that need to be combined to create this 3D track */
- TrackPlane = 0xE4,
- /** [uinteger] The trackUID number of the track representing the plane. */
- TrackPlaneUID = 0xE5,
- /** [uinteger] The kind of plane this track corresponds to. */
- TrackPlaneType = 0xE6,
- /** [master] Contains the list of all tracks whose Blocks need to be combined to create this virtual track */
- TrackJoinBlocks = 0xE9,
- /** [uinteger] The trackUID number of a track whose blocks are used to create this virtual track. */
- TrackJoinUID = 0xED,
- /** [uinteger] The TrackUID of the Smooth FF/RW video in the paired EBML structure corresponding to this video
- track. See [@?DivXTrickTrack]. */
- TrickTrackUID = 0xC0,
- /** [binary] The SegmentUID of the Segment containing the track identified by TrickTrackUID. See [@?DivXTrickTrack].
- */
- TrickTrackSegmentUID = 0xC1,
- /** [uinteger] Set to 1 if this video track is a Smooth FF/RW track. If set to 1, MasterTrackUID and
- MasterTrackSegUID should must be present and BlockGroups for this track must contain ReferenceFrame structures.
- Otherwise, TrickTrackUID and TrickTrackSegUID must be present if this track has a corresponding Smooth FF/RW
- track. See [@?DivXTrickTrack]. */
- TrickTrackFlag = 0xC6,
- /** [uinteger] The TrackUID of the video track in the paired EBML structure that corresponds to this Smooth FF/RW
- track. See [@?DivXTrickTrack]. */
- TrickMasterTrackUID = 0xC7,
- /** [binary] The SegmentUID of the Segment containing the track identified by MasterTrackUID. See
- [@?DivXTrickTrack]. */
- TrickMasterTrackSegmentUID = 0xC4,
- /** [master] Settings for several content encoding mechanisms like compression or encryption. */
- ContentEncodings = 0x6D80,
- /** [master] Settings for one content encoding like compression or encryption. */
- ContentEncoding = 0x6240,
- /** [uinteger] Tells when this modification was used during encoding/muxing starting with 0 and counting upwards.
- The decoder/demuxer has to start with the highest order number it finds and work its way down. This value has to
- be unique over all ContentEncodingOrder Elements in the TrackEntry that contains this ContentEncodingOrder
- element. */
- ContentEncodingOrder = 0x5031,
- /** [uinteger] A bit field that describes which Elements have been modified in this way. Values (big-endian) can be
- OR'ed. */
- ContentEncodingScope = 0x5032,
- /** [uinteger] A value describing what kind of transformation is applied. */
- ContentEncodingType = 0x5033,
- /** [master] Settings describing the compression used. This Element **MUST** be present if the value of
- ContentEncodingType is 0 and absent otherwise. Each block **MUST** be decompressable even if no previous block is
- available in order not to prevent seeking. */
- ContentCompression = 0x5034,
- /** [uinteger] The compression algorithm used. */
- ContentCompAlgo = 0x4254,
- /** [binary] Settings that might be needed by the decompressor. For Header Stripping (`ContentCompAlgo`=3), the
- bytes that were removed from the beginning of each frames of the track. */
- ContentCompSettings = 0x4255,
- /** [master] Settings describing the encryption used. This Element **MUST** be present if the value of
- `ContentEncodingType` is 1 (encryption) and **MUST** be ignored otherwise. */
- ContentEncryption = 0x5035,
- /** [uinteger] The encryption algorithm used. The value "0" means that the contents have not been encrypted. */
- ContentEncAlgo = 0x47E1,
- /** [binary] For public key algorithms this is the ID of the public key the the data was encrypted with. */
- ContentEncKeyID = 0x47E2,
- /** [master] Settings describing the encryption algorithm used. If `ContentEncAlgo` != 5 this **MUST** be ignored.
- */
- ContentEncAESSettings = 0x47E7,
- /** [uinteger] The AES cipher mode used in the encryption. */
- AESSettingsCipherMode = 0x47E8,
- /** [binary] A cryptographic signature of the contents. */
- ContentSignature = 0x47E3,
- /** [binary] This is the ID of the private key the data was signed with. */
- ContentSigKeyID = 0x47E4,
- /** [uinteger] The algorithm used for the signature. */
- ContentSigAlgo = 0x47E5,
- /** [uinteger] The hash algorithm used for the signature. */
- ContentSigHashAlgo = 0x47E6,
- /** [master] A Top-Level Element to speed seeking access. All entries are local to the Segment. */
- Cues = 0x1C53BB6B,
- /** [master] Contains all information relative to a seek point in the Segment. */
- CuePoint = 0xBB,
- /** [uinteger] Absolute timestamp according to the Segment time base. */
- CueTime = 0xB3,
- /** [master] Contain positions for different tracks corresponding to the timestamp. */
- CueTrackPositions = 0xB7,
- /** [uinteger] The track for which a position is given. */
- CueTrack = 0xF7,
- /** [uinteger] The Segment Position of the Cluster containing the associated Block. */
- CueClusterPosition = 0xF1,
- /** [uinteger] The relative position inside the Cluster of the referenced SimpleBlock or BlockGroup with 0 being the
- first possible position for an Element inside that Cluster. */
- CueRelativePosition = 0xF0,
- /** [uinteger] The duration of the block according to the Segment time base. If missing the track's DefaultDuration
- does not apply and no duration information is available in terms of the cues. */
- CueDuration = 0xB2,
- /** [uinteger] Number of the Block in the specified Cluster. */
- CueBlockNumber = 0x5378,
- /** [uinteger] The Segment Position of the Codec State corresponding to this Cue Element. 0 means that the data is
- taken from the initial Track Entry. */
- CueCodecState = 0xEA,
- /** [master] The Clusters containing the referenced Blocks. */
- CueReference = 0xDB,
- /** [uinteger] Timestamp of the referenced Block. */
- CueRefTime = 0x96,
- /** [uinteger] The Segment Position of the Cluster containing the referenced Block. */
- CueRefCluster = 0x97,
- /** [uinteger] Number of the referenced Block of Track X in the specified Cluster. */
- CueRefNumber = 0x535F,
- /** [uinteger] The Segment Position of the Codec State corresponding to this referenced Element. 0 means that the
- data is taken from the initial Track Entry. */
- CueRefCodecState = 0xEB,
- /** [master] Contain attached files. */
- Attachments = 0x1941A469,
- /** [master] An attached file. */
- AttachedFile = 0x61A7,
- /** [utf-8] A human-friendly name for the attached file. */
- FileDescription = 0x467E,
- /** [utf-8] Filename of the attached file. */
- FileName = 0x466E,
- /** [string] MIME type of the file. */
- FileMimeType = 0x4660,
- /** [binary] The data of the file. */
- FileData = 0x465C,
- /** [uinteger] Unique ID representing the file, as random as possible. */
- FileUID = 0x46AE,
- /** [binary] A binary value that a track/codec can refer to when the attachment is needed. */
- FileReferral = 0x4675,
- /** [uinteger] The timecode at which this optimized font attachment comes into context, based on the Segment
- TimecodeScale. This element is reserved for future use and if written must be the segment start time. See
- [@?DivXWorldFonts]. */
- FileUsedStartTime = 0x4661,
- /** [uinteger] The timecode at which this optimized font attachment goes out of context, based on the Segment
- TimecodeScale. This element is reserved for future use and if written must be the segment end time. See
- [@?DivXWorldFonts]. */
- FileUsedEndTime = 0x4662,
- /** [master] A system to define basic menus and partition data. For more detailed information, look at the Chapters
- explanation in (#chapters). */
- Chapters = 0x1043A770,
- /** [master] Contains all information about a Segment edition. */
- EditionEntry = 0x45B9,
- /** [uinteger] A unique ID to identify the edition. It's useful for tagging an edition. */
- EditionUID = 0x45BC,
- /** [uinteger] Set to 1 if an edition is hidden. Hidden editions **SHOULD NOT** be available to the user interface
- (but still to Control Tracks; see (#chapter-flags) on Chapter flags). */
- EditionFlagHidden = 0x45BD,
- /** [uinteger] Set to 1 if the edition **SHOULD** be used as the default one. */
- EditionFlagDefault = 0x45DB,
- /** [uinteger] Set to 1 if the chapters can be defined multiple times and the order to play them is enforced; see
- (#editionflagordered). */
- EditionFlagOrdered = 0x45DD,
- /** [master] Contains the atom information to use as the chapter atom (apply to all tracks). */
- ChapterAtom = 0xB6,
- /** [uinteger] A unique ID to identify the Chapter. */
- ChapterUID = 0x73C4,
- /** [utf-8] A unique string ID to identify the Chapter. Use for WebVTT cue identifier storage [@!WebVTT]. */
- ChapterStringUID = 0x5654,
- /** [uinteger] Timestamp of the start of Chapter (not scaled). */
- ChapterTimeStart = 0x91,
- /** [uinteger] Timestamp of the end of Chapter (timestamp excluded, not scaled). The value **MUST** be greater than
- or equal to the `ChapterTimeStart` of the same `ChapterAtom`. */
- ChapterTimeEnd = 0x92,
- /** [uinteger] Set to 1 if a chapter is hidden. Hidden chapters **SHOULD NOT** be available to the user interface
- (but still to Control Tracks; see (#chapterflaghidden) on Chapter flags). */
- ChapterFlagHidden = 0x98,
- /** [uinteger] Set to 1 if the chapter is enabled. It can be enabled/disabled by a Control Track. When disabled, the
- movie **SHOULD** skip all the content between the TimeStart and TimeEnd of this chapter; see (#chapter-flags) on
- Chapter flags. */
- ChapterFlagEnabled = 0x4598,
- /** [binary] The SegmentUID of another Segment to play during this chapter. */
- ChapterSegmentUID = 0x6E67,
- /** [uinteger] The EditionUID to play from the Segment linked in ChapterSegmentUID. If ChapterSegmentEditionUID is
- undeclared, then no Edition of the linked Segment is used; see (#medium-linking) on medium-linking Segments. */
- ChapterSegmentEditionUID = 0x6EBC,
- /** [uinteger] Specify the physical equivalent of this ChapterAtom like "DVD" (60) or "SIDE" (50); see
- (#physical-types) for a complete list of values. */
- ChapterPhysicalEquiv = 0x63C3,
- /** [master] List of tracks on which the chapter applies. If this Element is not present, all tracks apply */
- ChapterTrack = 0x8F,
- /** [uinteger] UID of the Track to apply this chapter to. In the absence of a control track, choosing this chapter
- will select the listed Tracks and deselect unlisted tracks. Absence of this Element indicates that the Chapter
- **SHOULD** be applied to any currently used Tracks. */
- ChapterTrackUID = 0x89,
- /** [master] Contains all possible strings to use for the chapter display. */
- ChapterDisplay = 0x80,
- /** [utf-8] Contains the string to use as the chapter atom. */
- ChapString = 0x85,
- /** [string] A language corresponding to the string, in the bibliographic ISO-639-2 form [@!ISO639-2]. This Element
- **MUST** be ignored if a ChapLanguageIETF Element is used within the same ChapterDisplay Element. */
- ChapLanguage = 0x437C,
- /** [string] Specifies a language corresponding to the ChapString in the format defined in [@!BCP47] and using the
- IANA Language Subtag Registry [@!IANALangRegistry]. If a ChapLanguageIETF Element is used, then any ChapLanguage
- and ChapCountry Elements used in the same ChapterDisplay **MUST** be ignored. */
- ChapLanguageIETF = 0x437D,
- /** [string] A country corresponding to the string, using the same 2 octets country-codes as in Internet domains
- [@!IANADomains] based on [@!ISO3166-1] alpha-2 codes. This Element **MUST** be ignored if a ChapLanguageIETF
- Element is used within the same ChapterDisplay Element. */
- ChapCountry = 0x437E,
- /** [master] Contains all the commands associated to the Atom. */
- ChapProcess = 0x6944,
- /** [uinteger] Contains the type of the codec used for the processing. A value of 0 means native Matroska processing
- (to be defined), a value of 1 means the DVD command set is used; see (#menu-features) on DVD menus. More codec
- IDs can be added later. */
- ChapProcessCodecID = 0x6955,
- /** [binary] Some optional data attached to the ChapProcessCodecID information. For ChapProcessCodecID = 1, it
- is the "DVD level" equivalent; see (#menu-features) on DVD menus. */
- ChapProcessPrivate = 0x450D,
- /** [master] Contains all the commands associated to the Atom. */
- ChapProcessCommand = 0x6911,
- /** [uinteger] Defines when the process command **SHOULD** be handled */
- ChapProcessTime = 0x6922,
- /** [binary] Contains the command information. The data **SHOULD** be interpreted depending on the
- ChapProcessCodecID value. For ChapProcessCodecID = 1, the data correspond to the binary DVD cell pre/post
- commands; see (#menu-features) on DVD menus. */
- ChapProcessData = 0x6933,
- /** [master] Element containing metadata describing Tracks, Editions, Chapters, Attachments, or the Segment as a
- whole. A list of valid tags can be found in [@!MatroskaTags]. */
- Tags = 0x1254C367,
- /** [master] A single metadata descriptor. */
- Tag = 0x7373,
- /** [master] Specifies which other elements the metadata represented by the Tag applies to. If empty or not present,
- then the Tag describes everything in the Segment. */
- Targets = 0x63C0,
- /** [uinteger] A number to indicate the logical level of the target. */
- TargetTypeValue = 0x68CA,
- /** [string] An informational string that can be used to display the logical level of the target like "ALBUM",
- "TRACK", "MOVIE", "CHAPTER", etc ; see Section 6.4 of [@!MatroskaTags]. */
- TargetType = 0x63CA,
- /** [uinteger] A unique ID to identify the Track(s) the tags belong to. */
- TagTrackUID = 0x63C5,
- /** [uinteger] A unique ID to identify the EditionEntry(s) the tags belong to. */
- TagEditionUID = 0x63C9,
- /** [uinteger] A unique ID to identify the Chapter(s) the tags belong to. */
- TagChapterUID = 0x63C4,
- /** [uinteger] A unique ID to identify the Attachment(s) the tags belong to. */
- TagAttachmentUID = 0x63C6,
- /** [master] Contains general information about the target. */
- SimpleTag = 0x67C8,
- /** [utf-8] The name of the Tag that is going to be stored. */
- TagName = 0x45A3,
- /** [string] Specifies the language of the tag specified, in the Matroska languages form; see (#language-codes) on
- language codes. This Element **MUST** be ignored if the TagLanguageIETF Element is used within the same SimpleTag
- Element. */
- TagLanguage = 0x447A,
- /** [string] Specifies the language used in the TagString according to [@!BCP47] and using the IANA Language Subtag
- Registry [@!IANALangRegistry]. If this Element is used, then any TagLanguage Elements used in the same SimpleTag
- **MUST** be ignored. */
- TagLanguageIETF = 0x447B,
- /** [uinteger] A boolean value to indicate if this is the default/original language to use for the given tag. */
- TagDefault = 0x4484,
- /** [uinteger] A variant of the TagDefault element with a bogus Element ID; see (#tagdefault-element). */
- TagDefaultBogus = 0x44B4,
- /** [utf-8] The value of the Tag. */
- TagString = 0x4487,
- /** [binary] The values of the Tag, if it is binary. Note that this cannot be used in the same SimpleTag as
- TagString. */
- TagBinary = 0x4485,
- };
|