// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS.  All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.

#ifndef WEBMIDS_HPP
#define WEBMIDS_HPP

namespace mkvmuxer {

enum MkvId {
  kMkvEBML                    = 0x1A45DFA3,
  kMkvEBMLVersion             = 0x4286,
  kMkvEBMLReadVersion         = 0x42F7,
  kMkvEBMLMaxIDLength         = 0x42F2,
  kMkvEBMLMaxSizeLength       = 0x42F3,
  kMkvDocType                 = 0x4282,
  kMkvDocTypeVersion          = 0x4287,
  kMkvDocTypeReadVersion      = 0x4285,
  kMkvVoid                    = 0xEC,
  kMkvSignatureSlot           = 0x1B538667,
  kMkvSignatureAlgo           = 0x7E8A,
  kMkvSignatureHash           = 0x7E9A,
  kMkvSignaturePublicKey      = 0x7EA5,
  kMkvSignature               = 0x7EB5,
  kMkvSignatureElements       = 0x7E5B,
  kMkvSignatureElementList    = 0x7E7B,
  kMkvSignedElement           = 0x6532,
  //segment
  kMkvSegment                 = 0x18538067,
  //Meta Seek Information
  kMkvSeekHead                = 0x114D9B74,
  kMkvSeek                    = 0x4DBB,
  kMkvSeekID                  = 0x53AB,
  kMkvSeekPosition            = 0x53AC,
  //Segment Information
  kMkvInfo                    = 0x1549A966,
  kMkvTimecodeScale           = 0x2AD7B1,
  kMkvDuration                = 0x4489,
  kMkvDateUTC                 = 0x4461,
  kMkvMuxingApp               = 0x4D80,
  kMkvWritingApp              = 0x5741,
  //Cluster
  kMkvCluster                 = 0x1F43B675,
  kMkvTimecode                = 0xE7,
  kMkvPrevSize                = 0xAB,
  kMkvBlockGroup              = 0xA0,
  kMkvBlock                   = 0xA1,
  kMkvBlockDuration           = 0x9B,
  kMkvReferenceBlock          = 0xFB,
  kMkvLaceNumber              = 0xCC,
  kMkvSimpleBlock             = 0xA3,
  kMkvBlockAdditions          = 0x75A1,
  kMkvBlockMore               = 0xA6,
  kMkvBlockAddID              = 0xEE,
  kMkvBlockAdditional         = 0xA5,
  kMkvDiscardPadding          = 0x75A2,
  //Track
  kMkvTracks                  = 0x1654AE6B,
  kMkvTrackEntry              = 0xAE,
  kMkvTrackNumber             = 0xD7,
  kMkvTrackUID                = 0x73C5,
  kMkvTrackType               = 0x83,
  kMkvFlagEnabled             = 0xB9,
  kMkvFlagDefault             = 0x88,
  kMkvFlagForced              = 0x55AA,
  kMkvFlagLacing              = 0x9C,
  kMkvDefaultDuration         = 0x23E383,
  kMkvMaxBlockAdditionID      = 0x55EE,
  kMkvName                    = 0x536E,
  kMkvLanguage                = 0x22B59C,
  kMkvCodecID                 = 0x86,
  kMkvCodecPrivate            = 0x63A2,
  kMkvCodecName               = 0x258688,
  kMkvCodecDelay              = 0x56AA,
  kMkvSeekPreRoll             = 0x56BB,
  //video
  kMkvVideo                   = 0xE0,
  kMkvFlagInterlaced          = 0x9A,
  kMkvStereoMode              = 0x53B8,
  kMkvAlphaMode               = 0x53C0,
  kMkvPixelWidth              = 0xB0,
  kMkvPixelHeight             = 0xBA,
  kMkvPixelCropBottom         = 0x54AA,
  kMkvPixelCropTop            = 0x54BB,
  kMkvPixelCropLeft           = 0x54CC,
  kMkvPixelCropRight          = 0x54DD,
  kMkvDisplayWidth            = 0x54B0,
  kMkvDisplayHeight           = 0x54BA,
  kMkvDisplayUnit             = 0x54B2,
  kMkvAspectRatioType         = 0x54B3,
  kMkvFrameRate               = 0x2383E3,
  //end video
  //audio
  kMkvAudio                   = 0xE1,
  kMkvSamplingFrequency       = 0xB5,
  kMkvOutputSamplingFrequency = 0x78B5,
  kMkvChannels                = 0x9F,
  kMkvBitDepth                = 0x6264,
  //end audio
  //ContentEncodings
  kMkvContentEncodings        = 0x6D80,
  kMkvContentEncoding         = 0x6240,
  kMkvContentEncodingOrder    = 0x5031,
  kMkvContentEncodingScope    = 0x5032,
  kMkvContentEncodingType     = 0x5033,
  kMkvContentEncryption       = 0x5035,
  kMkvContentEncAlgo          = 0x47E1,
  kMkvContentEncKeyID         = 0x47E2,
  kMkvContentEncAESSettings   = 0x47E7,
  kMkvAESSettingsCipherMode   = 0x47E8,
  kMkvAESSettingsCipherInitData = 0x47E9,
  //end ContentEncodings
  //Cueing Data
  kMkvCues                    = 0x1C53BB6B,
  kMkvCuePoint                = 0xBB,
  kMkvCueTime                 = 0xB3,
  kMkvCueTrackPositions       = 0xB7,
  kMkvCueTrack                = 0xF7,
  kMkvCueClusterPosition      = 0xF1,
  kMkvCueBlockNumber          = 0x5378,
  //Chapters
  kMkvChapters                = 0x1043A770,
  kMkvEditionEntry            = 0x45B9,
  kMkvChapterAtom             = 0xB6,
  kMkvChapterUID              = 0x73C4,
  kMkvChapterStringUID        = 0x5654,
  kMkvChapterTimeStart        = 0x91,
  kMkvChapterTimeEnd          = 0x92,
  kMkvChapterDisplay          = 0x80,
  kMkvChapString              = 0x85,
  kMkvChapLanguage            = 0x437C,
  kMkvChapCountry             = 0x437E
};

}  // end namespace mkvmuxer

#endif // WEBMIDS_HPP
