tagparser/matroska/matroskaid.h

541 lines
11 KiB
C++

#ifndef MATROSKAIDS_H
#define MATROSKAIDS_H
#include "../global.h"
#include <c++utilities/conversion/types.h>
namespace Media {
namespace MatroskaIds {
/*!
* \brief Encapsulates all top level ID values.
*/
enum TopLevelIds {
Segment = 0x18538067,
SegmentInfo = 0x1549A966,
Tracks = 0x1654AE6B,
Cues = 0x1C53BB6B,
Tags = 0x1254C367,
SeekHead = 0x114D9B74,
Cluster = 0x1F43B675,
Attachments = 0x1941A469,
Chapters = 0x1043A770
};
/*!
* \brief Encapsulates all ID values in the SeekHead master.
*/
enum SeekHeadIds {
Seek = 0x4DBB,
};
/*!
* \brief Encapsulates all ID values in the Seek master.
*/
enum SeekIds {
SeekID = 0x53AB,
SeekPosition = 0x53AC
};
/*!
* \brief Encapsulates all ID values in the SegmentInfo master.
*/
enum SegmentInfoIds {
TimeCodeScale = 0x2AD7B1,
Duration = 0x4489,
WrittingApp = 0x5741,
MuxingApp = 0x4D80,
DateUTC = 0x4461,
SegmentUID = 0x73A4,
SegmentFileName = 0x7384,
PrevUID = 0x3CB923,
PrevFileName = 0x3C83AB,
NexUID = 0x3EB923,
NextFileName = 0x3E83BB,
Title = 0x7BA9,
SegmentFamily = 0x4444,
ChapterTranslate = 0x6924
};
/*!
* \brief Encapsulates all ID values in the ChapterTranslate master.
*/
enum ChapterTranslateIds {
ChapterTranslateEditionUID = 0x69fc,
ChapterTranslateCodec = 0x69bf,
ChapterTranslateID = 0x69a5
};
/*!
* \brief Encapsulates all ID values in the Tracks master.
*/
enum TracksIds {
TrackEntry = 0xAE,
};
/*!
* \brief Encapsulates all ID values in the TrackEntry master.
*/
enum TrackEntryIds {
TrackNumber = 0xD7,
TrackUID = 0x73C5,
TrackType = 0x83,
TrackFlagEnabled = 0xB9,
TrackFlagDefault = 0x88,
TrackFlagForced = 0x55AA,
TrackFlagLacing = 0x9C,
MinCache = 0x6DE7,
MaxCache = 0x6DF8,
DefaultDuration = 0x23E383,
DefaultDecodedFieldDuration = 0x234e7a,
TrackTimeCodeScale = 0x23314F,
TrackOffset = 0x537F,
MaxBlockAdditionId = 0x55EE,
TrackName = 0x536E,
TrackLanguage = 0x22B59C,
CodecID = 0x86,
CodecPrivate = 0x63A2,
CodecName = 0x258688,
AttachmentLink = 0x7446,
CodecSettings = 0x3A9697,
CodecInfoUrl = 0x3B4040,
CodecDownloadUrl = 0x26B240,
CodecDecodeAll = 0xAA,
TrackOverlay = 0x6FAB,
CodecDelay = 0x56aa,
SeekPreRoll = 0x56bb,
TrackTranslate = 0x6624,
TrackAudio = 0xE1,
TrackVideo = 0xE0,
TrackOperation = 0xe2,
TrickTrackUID = 0xc0,
TrickTrackSegmentUID = 0xc1,
TrickTrackFlag = 0xc6,
TrickMasterTrackUID = 0xc7,
TrickMasterTrackSegmentUID = 0xc4,
ContentEncodings = 0x6D80
};
/*!
* \brief Encapsulates all ID values in the TrackTranslate master.
*/
enum TrackTranslateIds {
TrackTranslateEditionUID = 0x66fc,
TrackTranslateCodec = 0x66bf,
TrackTranslateTrackID = 0x66a5
};
/*!
* \brief Encapsulates all ID values in the TrackVideo master.
*/
enum TrackVideoIds {
FlagInterlaced = 0x9A,
StereoMode = 0x53B8,
AlphaMode = 0x53c0,
OldStereoMode = 0x53b9,
PixelWidth = 0xB0,
PixelHeight = 0xBA,
PixelCropBottom = 0x54AA,
PixelCropTop = 0x54BB,
PixelCropLeft = 0x54CC,
PixelCropRight = 0x54DD,
DisplayWidth = 0x54B0,
DisplayHeight = 0x54BA,
DisplayUnit = 0x54B2,
AspectRatioType = 0x54B3,
ColorSpace = 0x2EB524,
GammaValue = 0x2FB523,
FrameRate = 0x2383E3
};
/*!
* \brief Encapsulates all ID values in the TrackAudio master.
*/
enum TrackAudioIds {
SamplingFrequency = 0xB5,
OutputSamplingFrequency = 0x78B5,
Channels = 0x9F,
ChannelsPositions = 0x7D7B,
BitDepth = 0x6264
};
/*!
* \brief Encapsulates all ID values in the TrackOperation master.
*/
enum TrackOperationIds {
TrackCombinePlanes = 0xe3,
TrackJoinBlocks = 0xe9
};
/*!
* \brief Encapsulates all ID values in the TrackCombinePlanes master.
*/
enum TrackCombinePlanesIds {
TrackPlane = 0xe4
};
/*!
* \brief Encapsulates all ID values in the TrackPlane master.
*/
enum TrackPlaneIds {
TrackPlaneUID = 0xe5,
TrackPlaneType = 0xe6
};
/*!
* \brief Encapsulates all ID values in the TrackJoinBlocks master.
*/
enum TrackJoinBlocksIds {
TrackJoinUID = 0xed
};
/*!
* \brief Encapsulates all ID values in the ContentEncodings master.
*/
enum ContentEncodingsIds {
ContentEncoding = 0x6240
};
/*!
* \brief Encapsulates all ID values in the ContentEncoding master.
*/
enum ContentEncodingIds {
ContentEncodingOrder = 0x5031,
ContentEncodingScope = 0x5032,
ContentEncodingType = 0x5033,
ContentCompression = 0x5034,
ContentEncryption = 0x5035
};
/*!
* \brief Encapsulates all ID values in the ContentCompression master.
*/
enum ContentCompressionIds {
ContentCompAlgo = 0x4254,
ContentCompSettings = 0x4255
};
/*!
* \brief Encapsulates all ID values in the ContentEncryption master.
*/
enum ContentEncryptionIds {
ContentEncAlgo = 0x47e1,
ContentEncKeyID = 0x47e2,
ContentSignature = 0x47e3,
ContentSigKeyID = 0x47e4,
ContentSigAlgo = 0x47e5,
ContentSigHashAlgo = 0x47e6
};
/*!
* \brief Encapsulates all ID values in the Tags master.
*/
enum TagsIds {
Tag = 0x7373,
};
/*!
* \brief Encapsulates all ID values in the Tag master.
*/
enum TagIds {
SimpleTag = 0x67C8,
Targets = 0x63C0,
};
/*!
* \brief Encapsulates all ID values in the SimpleTag master.
*/
enum SimpleTagIds {
TagName = 0x45A3,
TagString = 0x4487,
TagLanguage = 0x447A,
TagDefault = 0x4484,
TagBinary = 0x4485,
};
/*!
* \brief Encapsulates all ID values in the Targets master.
*/
enum TargetsIds {
TargetTypeValue = 0x68ca,
TargetType = 0x63ca,
TagTrackUID = 0x63c5,
TagEditionUID = 0x63c9,
TagChapterUID = 0x63c4,
TagAttachmentUID = 0x63c6
};
/*!
* \brief Encapsulates all ID values in the Cues master.
*/
enum CuesIds {
CuePoint = 0xbb
};
/*!
* \brief Encapsulates all ID values in the CuePoint master.
*/
enum CuePointIds {
CueTime = 0xb3,
CueTrackPositions = 0xb7
};
/*!
* \brief Encapsulates all ID values in the CueTrackPositions master.
*/
enum CueTrackPositionsIds {
CueTrack = 0xf7,
CueClusterPosition = 0xf1,
CueRelativePosition = 0xf0,
CueDuration = 0xb2,
CueBlockNumber = 0x5378,
CueCodecState = 0xea,
CueReference = 0xdb
};
/*!
* \brief Encapsulates all ID values in the CueReference master.
*/
enum CueReferenceIds {
CueRefTime = 0x96,
CueRefCluster = 0x97,
CueRefNumber = 0x535f,
CueRefCodecState = 0xeb
};
/*!
* \brief Encapsulates all ID values in the Attachments master.
*/
enum AttachmentsIds {
AttachedFile = 0x61a7
};
/*!
* \brief Encapsulates all ID values in the AttachedFile master.
*/
enum AttachedFileIds {
FileDescription = 0x467e,
FileName = 0x466e,
FileMimeType = 0x4660,
FileData = 0x465c,
FileUID = 0x46ae,
FileReferral = 0x4675,
FileUsedStartTime = 0x4661,
FileUsedEndTime = 0x4662
};
/*!
* \brief Encapsulates all ID values in the Chapters master.
*/
enum ChaptersIds {
EditionEntry = 0x45b9
};
/*!
* \brief Encapsulates all ID values in the EditionEntry master.
*/
enum EditionEntryIds {
EditionUID = 0x45bc,
EditionFlagHidden = 0x45bd,
EditionFlagDefault = 0x45db,
EditionFlagOrdered = 0x45dd,
ChapterAtom = 0xb6
};
/*!
* \brief Encapsulates all ID values in the ChapterAtom master.
*/
enum ChapterAtomIds {
ChapterUID = 0x73c4,
ChapterStringUID = 0x5654,
ChapterTimeStart = 0x91,
ChapterTimeEnd = 0x92,
ChapterFlagHidden = 0x98,
ChapterFlagEnabled = 0x4598,
ChapterSegmentUID = 0x6e67,
ChapterSegmentEditionUID = 0x6ebc,
ChapterPhysicalEquiv = 0x63c3,
ChapterTrack = 0x8f,
ChapterDisplay = 0x80,
ChapProcess = 0x6944
};
/*!
* \brief Encapsulates all ID values in the ChapterTrack master.
*/
enum ChapterTrackIds {
ChapterTrackNumber = 0x89
};
/*!
* \brief Encapsulates all ID values in the ChapterDisplay master.
*/
enum ChapterDisplayIds {
ChapString = 0x85,
ChapLanguage = 0x437c,
ChapCountry = 0x437e
};
/*!
* \brief Encapsulates all ID values in the ChapProcess master.
*/
enum ChapProcessIds {
ChapProcessCodecID = 0x6955,
ChapProcessPrivate = 0x450d,
ChapProcessCommand = 0x6911
};
/*!
* \brief Encapsulates all ID values in the ChapProcessCommand master.
*/
enum ChapProcessCommandIds {
ChapProcessTime = 0x6922,
ChapProcessData = 0x6933
};
/*!
* \brief Encapsulates all ID values in the Cluster master.
*/
enum ClusterIds {
Timecode = 0xe7,
SilentTracks = 0x5854,
Position = 0xa7,
PrevSize = 0xab,
SimpleBlock = 0xa3,
BlockGroup = 0xa0,
EncryptedBlock = 0xaf
};
/*!
* \brief Encapsulates all ID values in the SilentTracks master.
*/
enum SilentTracksIds {
SilentTrackNumber = 0x58d7
};
/*!
* \brief Encapsulates all ID values in the BlockGroup master.
*/
enum BlockGroupIds {
Block = 0xa1,
BlockVirtual = 0xa2,
BlockAdditions = 0x75a1,
BlockDuration = 0x9b,
ReferencePriority = 0xfa,
ReferenceBlock = 0xfb,
ReferenceVirtual = 0xfd,
CodecState = 0xa4,
DiscardPadding = 0x75a2,
Slices = 0x8e,
ReferenceFrame = 0xc8,
};
/*!
* \brief Encapsulates all ID values in the BlockAdditions master.
*/
enum BlockAdditionsIds {
BlockMore = 0xa6
};
/*!
* \brief Encapsulates all ID values in the BlockMore master.
*/
enum BlockMoreIds {
BlockAddID = 0xee,
BlockAdditional = 0x45
};
/*!
* \brief Encapsulates all ID values in the Slices master.
*/
enum SlicesIds {
TimeSlice = 0xe8
};
/*!
* \brief Encapsulates all ID values in the TimeSlice master.
*/
enum TimeSliceIds {
LaceNumber = 0xcc,
FrameNumber = 0xcd,
BlockAdditionID = 0xcb,
Delay = 0xce,
SliceDuration = 0xcf
};
/*!
* \brief Encapsulates all ID values in the ReferenceFrame master.
*/
enum ReferenceFrameIds {
ReferenceOffset = 0xc9,
ReferenceTimeCode = 0xca
};
}
namespace MatroskaTrackType {
enum KnownValues {
Video = 0x1,
Audio = 0x2,
Complex = 0x3,
Logo = 0x10,
Subtitle = 0x11,
Buttons = 0x12,
Control = 0x20
};
}
enum class MatroskaElementLevel : byte {
TopLevel = 0x0,
Level1,
Level2,
Level3,
Level4,
Level5,
Level6,
Global = 0xFE,
Unknown = 0xFF,
};
constexpr bool operator>(MatroskaElementLevel lhs, MatroskaElementLevel rhs)
{
return static_cast<byte>(lhs) < static_cast<byte>(MatroskaElementLevel::Global)
&& static_cast<byte>(rhs) < static_cast<byte>(MatroskaElementLevel::Global)
&& static_cast<byte>(lhs) > static_cast<byte>(rhs);
}
constexpr bool operator>(byte lhs, MatroskaElementLevel rhs)
{
return lhs < static_cast<byte>(MatroskaElementLevel::Global)
&& static_cast<byte>(rhs) < static_cast<byte>(MatroskaElementLevel::Global)
&& static_cast<byte>(lhs) > static_cast<byte>(rhs);
}
constexpr bool operator<(MatroskaElementLevel lhs, MatroskaElementLevel rhs)
{
return static_cast<byte>(lhs) < static_cast<byte>(MatroskaElementLevel::Global)
&& static_cast<byte>(rhs) < static_cast<byte>(MatroskaElementLevel::Global)
&& static_cast<byte>(lhs) < static_cast<byte>(rhs);
}
constexpr bool operator>=(MatroskaElementLevel lhs, MatroskaElementLevel rhs)
{
return lhs == rhs || lhs > rhs;
}
constexpr bool operator<=(MatroskaElementLevel lhs, MatroskaElementLevel rhs)
{
return lhs == rhs || lhs < rhs;
}
TAG_PARSER_EXPORT const char *matroskaIdName(uint32 matroskaId);
TAG_PARSER_EXPORT MatroskaElementLevel matroskaIdLevel(uint32 matroskaId);
}
#endif // MATROSKAIDS_H