mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-08 12:37:01 +03:00
714 lines
42 KiB
C
714 lines
42 KiB
C
// 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,
|
|
};
|