/* GStreamer Matroska muxer/demuxer
 * (c) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
 *
 * matroska-ids.h: matroska file/stream data IDs
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

#ifndef __GST_MATROSKA_IDS_H__
#define __GST_MATROSKA_IDS_H__

#include <gst/gst.h>

#include "ebml-ids.h"

/*
 * EBML DocType.
 */

#define GST_MATROSKA_DOCTYPE_MATROSKA              "matroska"
#define GST_MATROSKA_DOCTYPE_WEBM                  "webm"

/*
 * Matroska element IDs. max. 32-bit.
 */

/* toplevel Segment */
#define GST_MATROSKA_ID_SEGMENT                    0x18538067

/* matroska top-level master IDs, childs of Segment */
#define GST_MATROSKA_ID_SEGMENTINFO                0x1549A966
#define GST_MATROSKA_ID_TRACKS                     0x1654AE6B
#define GST_MATROSKA_ID_CUES                       0x1C53BB6B
#define GST_MATROSKA_ID_TAGS                       0x1254C367
#define GST_MATROSKA_ID_SEEKHEAD                   0x114D9B74
#define GST_MATROSKA_ID_CLUSTER                    0x1F43B675
#define GST_MATROSKA_ID_ATTACHMENTS                0x1941A469
#define GST_MATROSKA_ID_CHAPTERS                   0x1043A770

/* IDs in the SegmentInfo master */
#define GST_MATROSKA_ID_TIMECODESCALE              0x2AD7B1
#define GST_MATROSKA_ID_DURATION                   0x4489
#define GST_MATROSKA_ID_WRITINGAPP                 0x5741
#define GST_MATROSKA_ID_MUXINGAPP                  0x4D80
#define GST_MATROSKA_ID_DATEUTC                    0x4461
#define GST_MATROSKA_ID_SEGMENTUID                 0x73A4
#define GST_MATROSKA_ID_SEGMENTFILENAME            0x7384
#define GST_MATROSKA_ID_PREVUID                    0x3CB923
#define GST_MATROSKA_ID_PREVFILENAME               0x3C83AB
#define GST_MATROSKA_ID_NEXTUID                    0x3EB923
#define GST_MATROSKA_ID_NEXTFILENAME               0x3E83BB
#define GST_MATROSKA_ID_TITLE                      0x7BA9
#define GST_MATROSKA_ID_SEGMENTFAMILY              0x4444
#define GST_MATROSKA_ID_CHAPTERTRANSLATE           0x6924

/* IDs in the ChapterTranslate master */
#define GST_MATROSKA_ID_CHAPTERTRANSLATEEDITIONUID 0x69FC
#define GST_MATROSKA_ID_CHAPTERTRANSLATECODEC      0x69BF
#define GST_MATROSKA_ID_CHAPTERTRANSLATEID         0x69A5

/* ID in the Tracks master */
#define GST_MATROSKA_ID_TRACKENTRY                 0xAE

/* IDs in the TrackEntry master */
#define GST_MATROSKA_ID_TRACKNUMBER                0xD7
#define GST_MATROSKA_ID_TRACKUID                   0x73C5
#define GST_MATROSKA_ID_TRACKTYPE                  0x83
#define GST_MATROSKA_ID_TRACKAUDIO                 0xE1
#define GST_MATROSKA_ID_TRACKVIDEO                 0xE0
#define GST_MATROSKA_ID_CONTENTENCODINGS           0x6D80
#define GST_MATROSKA_ID_CODECID                    0x86
#define GST_MATROSKA_ID_CODECPRIVATE               0x63A2
#define GST_MATROSKA_ID_CODECNAME                  0x258688
#define GST_MATROSKA_ID_TRACKNAME                  0x536E
#define GST_MATROSKA_ID_TRACKLANGUAGE              0x22B59C
#define GST_MATROSKA_ID_TRACKFLAGENABLED           0xB9
#define GST_MATROSKA_ID_TRACKFLAGDEFAULT           0x88
#define GST_MATROSKA_ID_TRACKFLAGFORCED            0x55AA
#define GST_MATROSKA_ID_TRACKFLAGLACING            0x9C
#define GST_MATROSKA_ID_TRACKMINCACHE              0x6DE7
#define GST_MATROSKA_ID_TRACKMAXCACHE              0x6DF8
#define GST_MATROSKA_ID_TRACKDEFAULTDURATION       0x23E383
#define GST_MATROSKA_ID_TRACKTIMECODESCALE         0x23314F
#define GST_MATROSKA_ID_MAXBLOCKADDITIONID         0x55EE
#define GST_MATROSKA_ID_TRACKATTACHMENTLINK        0x7446
#define GST_MATROSKA_ID_TRACKOVERLAY               0x6FAB
#define GST_MATROSKA_ID_TRACKTRANSLATE             0x6624
/* semi-draft */
#define GST_MATROSKA_ID_TRACKOFFSET                0x537F
/* semi-draft */
#define GST_MATROSKA_ID_CODECSETTINGS              0x3A9697
/* semi-draft */
#define GST_MATROSKA_ID_CODECINFOURL               0x3B4040
/* semi-draft */
#define GST_MATROSKA_ID_CODECDOWNLOADURL           0x26B240
/* semi-draft */
#define GST_MATROSKA_ID_CODECDECODEALL             0xAA

/* IDs in the TrackTranslate master */
#define GST_MATROSKA_ID_TRACKTRANSLATEEDITIONUID   0x66FC
#define GST_MATROSKA_ID_TRACKTRANSLATECODEC        0x66BF
#define GST_MATROSKA_ID_TRACKTRANSLATETRACKID      0x66A5


/* IDs in the TrackVideo master */
/* NOTE: This one is here only for backward compatibility.
 * Use _TRACKDEFAULDURATION */
#define GST_MATROSKA_ID_VIDEOFRAMERATE             0x2383E3
#define GST_MATROSKA_ID_VIDEODISPLAYWIDTH          0x54B0
#define GST_MATROSKA_ID_VIDEODISPLAYHEIGHT         0x54BA
#define GST_MATROSKA_ID_VIDEODISPLAYUNIT           0x54B2
#define GST_MATROSKA_ID_VIDEOPIXELWIDTH            0xB0
#define GST_MATROSKA_ID_VIDEOPIXELHEIGHT           0xBA
#define GST_MATROSKA_ID_VIDEOPIXELCROPBOTTOM       0x54AA
#define GST_MATROSKA_ID_VIDEOPIXELCROPTOP          0x54BB
#define GST_MATROSKA_ID_VIDEOPIXELCROPLEFT         0x54CC
#define GST_MATROSKA_ID_VIDEOPIXELCROPRIGHT        0x54DD
#define GST_MATROSKA_ID_VIDEOFLAGINTERLACED        0x9A
/* semi-draft */
#define GST_MATROSKA_ID_VIDEOSTEREOMODE            0x53B8
#define GST_MATROSKA_ID_VIDEOASPECTRATIOTYPE       0x54B3
#define GST_MATROSKA_ID_VIDEOCOLOURSPACE           0x2EB524
/* semi-draft */
#define GST_MATROSKA_ID_VIDEOGAMMAVALUE            0x2FB523

/* IDs in the TrackAudio master */
#define GST_MATROSKA_ID_AUDIOSAMPLINGFREQ          0xB5
#define GST_MATROSKA_ID_AUDIOBITDEPTH              0x6264
#define GST_MATROSKA_ID_AUDIOCHANNELS              0x9F
/* semi-draft */
#define GST_MATROSKA_ID_AUDIOCHANNELPOSITIONS      0x7D7B
#define GST_MATROSKA_ID_AUDIOOUTPUTSAMPLINGFREQ    0x78B5

/* IDs in the TrackContentEncoding master */
#define GST_MATROSKA_ID_CONTENTENCODING            0x6240

/* IDs in the ContentEncoding master */
#define GST_MATROSKA_ID_CONTENTENCODINGORDER       0x5031
#define GST_MATROSKA_ID_CONTENTENCODINGSCOPE       0x5032
#define GST_MATROSKA_ID_CONTENTENCODINGTYPE        0x5033
#define GST_MATROSKA_ID_CONTENTCOMPRESSION         0x5034
#define GST_MATROSKA_ID_CONTENTENCRYPTION          0x5035

/* IDs in the ContentCompression master */
#define GST_MATROSKA_ID_CONTENTCOMPALGO            0x4254
#define GST_MATROSKA_ID_CONTENTCOMPSETTINGS        0x4255

/* IDs in the ContentEncryption master */
#define GST_MATROSKA_ID_CONTENTENCALGO             0x47E1
#define GST_MATROSKA_ID_CONTENTENCKEYID            0x47E2
#define GST_MATROSKA_ID_CONTENTSIGNATURE           0x47E3
#define GST_MATROSKA_ID_CONTENTSIGKEYID            0x47E4
#define GST_MATROSKA_ID_CONTENTSIGALGO             0x47E5
#define GST_MATROSKA_ID_CONTENTSIGHASHALGO         0x47E6

/* ID in the CUEs master */
#define GST_MATROSKA_ID_POINTENTRY                 0xBB

/* IDs in the pointentry master */
#define GST_MATROSKA_ID_CUETIME                    0xB3
#define GST_MATROSKA_ID_CUETRACKPOSITIONS          0xB7

/* IDs in the CueTrackPositions master */
#define GST_MATROSKA_ID_CUETRACK                   0xF7
#define GST_MATROSKA_ID_CUECLUSTERPOSITION         0xF1
#define GST_MATROSKA_ID_CUEBLOCKNUMBER             0x5378
/* semi-draft */
#define GST_MATROSKA_ID_CUECODECSTATE              0xEA
/* semi-draft */
#define GST_MATROSKA_ID_CUEREFERENCE               0xDB

/* IDs in the CueReference master */
/* semi-draft */
#define GST_MATROSKA_ID_CUEREFTIME                 0x96
/* semi-draft */
#define GST_MATROSKA_ID_CUEREFCLUSTER              0x97
/* semi-draft */
#define GST_MATROSKA_ID_CUEREFNUMBER               0x535F
/* semi-draft */
#define GST_MATROSKA_ID_CUEREFCODECSTATE           0xEB

/* IDs in the Tags master */
#define GST_MATROSKA_ID_TAG                        0x7373

/* in the Tag master */
#define GST_MATROSKA_ID_SIMPLETAG                  0x67C8
#define GST_MATROSKA_ID_TARGETS                    0x63C0

/* in the SimpleTag master */
#define GST_MATROSKA_ID_TAGNAME                    0x45A3
#define GST_MATROSKA_ID_TAGSTRING                  0x4487
#define GST_MATROSKA_ID_TAGLANGUAGE                0x447A
#define GST_MATROSKA_ID_TAGDEFAULT                 0x4484
#define GST_MATROSKA_ID_TAGBINARY                  0x4485

/* in the Targets master */
#define GST_MATROSKA_ID_TARGETTYPEVALUE            0x68CA
#define GST_MATROSKA_ID_TARGETTYPE                 0x63CA
#define GST_MATROSKA_ID_TARGETTRACKUID             0x63C5
#define GST_MATROSKA_ID_TARGETEDITIONUID           0x63C5
#define GST_MATROSKA_ID_TARGETCHAPTERUID           0x63C4
#define GST_MATROSKA_ID_TARGETATTACHMENTUID        0x63C6

/* IDs in the SeekHead master */
#define GST_MATROSKA_ID_SEEKENTRY                  0x4DBB

/* IDs in the SeekEntry master */
#define GST_MATROSKA_ID_SEEKID                     0x53AB
#define GST_MATROSKA_ID_SEEKPOSITION               0x53AC

/* IDs in the Cluster master */
#define GST_MATROSKA_ID_CLUSTERTIMECODE            0xE7
#define GST_MATROSKA_ID_BLOCKGROUP                 0xA0
#define GST_MATROSKA_ID_SIMPLEBLOCK                0xA3
#define GST_MATROSKA_ID_REFERENCEBLOCK             0xFB
#define GST_MATROSKA_ID_POSITION                   0xA7
#define GST_MATROSKA_ID_PREVSIZE                   0xAB
/* semi-draft */
#define GST_MATROSKA_ID_ENCRYPTEDBLOCK             0xAF
#define GST_MATROSKA_ID_SILENTTRACKS               0x5854

/* IDs in the SilentTracks master */
#define GST_MATROSKA_ID_SILENTTRACKNUMBER          0x58D7

/* IDs in the BlockGroup master */
#define GST_MATROSKA_ID_BLOCK                      0xA1
#define GST_MATROSKA_ID_BLOCKDURATION              0x9B
/* semi-draft */
#define GST_MATROSKA_ID_BLOCKVIRTUAL               0xA2
#define GST_MATROSKA_ID_REFERENCEBLOCK             0xFB
#define GST_MATROSKA_ID_BLOCKADDITIONS             0x75A1
#define GST_MATROSKA_ID_REFERENCEPRIORITY          0xFA
/* semi-draft */
#define GST_MATROSKA_ID_REFERENCEVIRTUAL           0xFD
/* semi-draft */
#define GST_MATROSKA_ID_CODECSTATE                 0xA4
#define GST_MATROSKA_ID_SLICES                     0x8E

/* IDs in the BlockAdditions master */
#define GST_MATROSKA_ID_BLOCKMORE                  0xA6

/* IDs in the BlockMore master */
#define GST_MATROSKA_ID_BLOCKADDID                 0xEE
#define GST_MATROSKA_ID_BLOCKADDITIONAL            0xA5

/* IDs in the Slices master */
#define GST_MATROSKA_ID_TIMESLICE                  0xE8

/* IDs in the TimeSlice master */
#define GST_MATROSKA_ID_LACENUMBER                 0xCC
/* semi-draft */
#define GST_MATROSKA_ID_FRAMENUMBER                0xCD
/* semi-draft */
#define GST_MATROSKA_ID_BLOCKADDITIONID            0xCB
/* semi-draft */
#define GST_MATROSKA_ID_TIMESLICEDELAY             0xCE
#define GST_MATROSKA_ID_TIMESLICEDURATION          0xCF

/* IDs in the Attachments master */
#define GST_MATROSKA_ID_ATTACHEDFILE               0x61A7

/* IDs in the AttachedFile master */
#define GST_MATROSKA_ID_FILEDESCRIPTION            0x467E
#define GST_MATROSKA_ID_FILENAME                   0x466E
#define GST_MATROSKA_ID_FILEMIMETYPE               0x4660
#define GST_MATROSKA_ID_FILEDATA                   0x465C
#define GST_MATROSKA_ID_FILEUID                    0x46AE
/* semi-draft */
#define GST_MATROSKA_ID_FILEREFERRAL               0x4675

/* IDs in the Chapters master */
#define GST_MATROSKA_ID_EDITIONENTRY               0x45B9

/* IDs in the EditionEntry master */
#define GST_MATROSKA_ID_EDITIONUID                 0x45BC
#define GST_MATROSKA_ID_EDITIONFLAGHIDDEN          0x45BD
#define GST_MATROSKA_ID_EDITIONFLAGDEFAULT         0x45DB
#define GST_MATROSKA_ID_EDITIONFLAGORDERED         0x45DD
#define GST_MATROSKA_ID_CHAPTERATOM                0xB6

/* IDs in the ChapterAtom master */
#define GST_MATROSKA_ID_CHAPTERUID                 0x73C4
#define GST_MATROSKA_ID_CHAPTERTIMESTART           0x91
#define GST_MATROSKA_ID_CHAPTERTIMESTOP            0x92
#define GST_MATROSKA_ID_CHAPTERFLAGHIDDEN          0x98
#define GST_MATROSKA_ID_CHAPTERFLAGENABLED         0x4598
#define GST_MATROSKA_ID_CHAPTERSEGMENTUID          0x6E67
#define GST_MATROSKA_ID_CHAPTERSEGMENTEDITIONUID   0x6EBC
#define GST_MATROSKA_ID_CHAPTERPHYSICALEQUIV       0x63C3
#define GST_MATROSKA_ID_CHAPTERTRACK               0x8F
#define GST_MATROSKA_ID_CHAPTERDISPLAY             0x80
#define GST_MATROSKA_ID_CHAPPROCESS                0x6944

/* IDs in the ChapProcess master */
#define GST_MATROSKA_ID_CHAPPROCESSCODECID         0x6955
#define GST_MATROSKA_ID_CHAPPROCESSPRIVATE         0x450D
#define GST_MATROSKA_ID_CHAPPROCESSCOMMAND         0x6911

/* IDs in the ChapProcessCommand master */
#define GST_MATROSKA_ID_CHAPPROCESSTIME            0x6922
#define GST_MATROSKA_ID_CHAPPROCESSDATA            0x6933

/* IDs in the ChapterDisplay master */
#define GST_MATROSKA_ID_CHAPSTRING                 0x85
#define GST_MATROSKA_ID_CHAPLANGUAGE               0x437C
#define GST_MATROSKA_ID_CHAPCOUNTRY                0x437E

/* IDs in the ChapterTrack master */
#define GST_MATROSKA_ID_CHAPTERTRACKNUMBER         0x89

/*
 * Matroska Codec IDs. Strings.
 */

#define GST_MATROSKA_CODEC_ID_VIDEO_VFW_FOURCC   "V_MS/VFW/FOURCC"
#define GST_MATROSKA_CODEC_ID_VIDEO_UNCOMPRESSED "V_UNCOMPRESSED"
#define GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_SP     "V_MPEG4/ISO/SP"
#define GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_ASP    "V_MPEG4/ISO/ASP"
#define GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_AP     "V_MPEG4/ISO/AP"
#define GST_MATROSKA_CODEC_ID_VIDEO_MPEG4_AVC    "V_MPEG4/ISO/AVC"
#define GST_MATROSKA_CODEC_ID_VIDEO_MSMPEG4V3    "V_MPEG4/MS/V3"
#define GST_MATROSKA_CODEC_ID_VIDEO_MPEG1        "V_MPEG1"
#define GST_MATROSKA_CODEC_ID_VIDEO_MPEG2        "V_MPEG2"
/* FIXME: not (yet) in the spec! */
#define GST_MATROSKA_CODEC_ID_VIDEO_MJPEG        "V_MJPEG"
#define GST_MATROSKA_CODEC_ID_VIDEO_REALVIDEO1   "V_REAL/RV10"
#define GST_MATROSKA_CODEC_ID_VIDEO_REALVIDEO2   "V_REAL/RV20"
#define GST_MATROSKA_CODEC_ID_VIDEO_REALVIDEO3   "V_REAL/RV30"
#define GST_MATROSKA_CODEC_ID_VIDEO_REALVIDEO4   "V_REAL/RV40"
#define GST_MATROSKA_CODEC_ID_VIDEO_THEORA       "V_THEORA"
#define GST_MATROSKA_CODEC_ID_VIDEO_QUICKTIME    "V_QUICKTIME"
#define GST_MATROSKA_CODEC_ID_VIDEO_SNOW         "V_SNOW"
#define GST_MATROSKA_CODEC_ID_VIDEO_DIRAC        "V_DIRAC"
#define GST_MATROSKA_CODEC_ID_VIDEO_VP8          "V_VP8"

#define GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L1       "A_MPEG/L1"
#define GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L2       "A_MPEG/L2"
#define GST_MATROSKA_CODEC_ID_AUDIO_MPEG1_L3       "A_MPEG/L3"
#define GST_MATROSKA_CODEC_ID_AUDIO_PCM_INT_BE     "A_PCM/INT/BIG"
#define GST_MATROSKA_CODEC_ID_AUDIO_PCM_INT_LE     "A_PCM/INT/LIT"
#define GST_MATROSKA_CODEC_ID_AUDIO_PCM_FLOAT      "A_PCM/FLOAT/IEEE"
#define GST_MATROSKA_CODEC_ID_AUDIO_AC3            "A_AC3"
#define GST_MATROSKA_CODEC_ID_AUDIO_AC3_BSID9      "A_AC3/BSID9"
#define GST_MATROSKA_CODEC_ID_AUDIO_AC3_BSID10     "A_AC3/BSID10"
#define GST_MATROSKA_CODEC_ID_AUDIO_EAC3           "A_EAC3"
#define GST_MATROSKA_CODEC_ID_AUDIO_TRUEHD         "A_TRUEHD"
#define GST_MATROSKA_CODEC_ID_AUDIO_DTS            "A_DTS"
#define GST_MATROSKA_CODEC_ID_AUDIO_VORBIS         "A_VORBIS"
#define GST_MATROSKA_CODEC_ID_AUDIO_FLAC           "A_FLAC"
/* FIXME: not yet in the spec */
#define GST_MATROSKA_CODEC_ID_AUDIO_SPEEX          "A_SPEEX"
#define GST_MATROSKA_CODEC_ID_AUDIO_ACM            "A_MS/ACM"
#define GST_MATROSKA_CODEC_ID_AUDIO_TTA            "A_TTA1"
#define GST_MATROSKA_CODEC_ID_AUDIO_WAVPACK4       "A_WAVPACK4"
#define GST_MATROSKA_CODEC_ID_AUDIO_REAL_14_4      "A_REAL/14_4"
#define GST_MATROSKA_CODEC_ID_AUDIO_REAL_28_8      "A_REAL/28_8"
#define GST_MATROSKA_CODEC_ID_AUDIO_REAL_COOK      "A_REAL/COOK"
#define GST_MATROSKA_CODEC_ID_AUDIO_REAL_SIPR      "A_REAL/SIPR"
#define GST_MATROSKA_CODEC_ID_AUDIO_REAL_RALF      "A_REAL/RALF"
#define GST_MATROSKA_CODEC_ID_AUDIO_REAL_ATRC      "A_REAL/ATRC"
#define GST_MATROSKA_CODEC_ID_AUDIO_AAC            "A_AAC"
#define GST_MATROSKA_CODEC_ID_AUDIO_AAC_MPEG2      "A_AAC/MPEG2/"
#define GST_MATROSKA_CODEC_ID_AUDIO_AAC_MPEG4      "A_AAC/MPEG4/"
#define GST_MATROSKA_CODEC_ID_AUDIO_QUICKTIME_QDMC "A_QUICKTIME/QDMC"
#define GST_MATROSKA_CODEC_ID_AUDIO_QUICKTIME_QDM2 "A_QUICKTIME/QDM2"
/* Undefined for now:
#define GST_MATROSKA_CODEC_ID_AUDIO_MPC            "A_MPC"
*/

#define GST_MATROSKA_CODEC_ID_SUBTITLE_ASCII     "S_TEXT/ASCII"
#define GST_MATROSKA_CODEC_ID_SUBTITLE_UTF8      "S_TEXT/UTF8"
#define GST_MATROSKA_CODEC_ID_SUBTITLE_SSA       "S_TEXT/SSA"
#define GST_MATROSKA_CODEC_ID_SUBTITLE_ASS       "S_TEXT/ASS" 
#define GST_MATROSKA_CODEC_ID_SUBTITLE_USF       "S_TEXT/USF"
#define GST_MATROSKA_CODEC_ID_SUBTITLE_VOBSUB    "S_VOBSUB"
#define GST_MATROSKA_CODEC_ID_SUBTITLE_HDMVPGS   "S_HDMV/PGS"
#define GST_MATROSKA_CODEC_ID_SUBTITLE_BMP       "S_IMAGE/BMP"
#define GST_MATROSKA_CODEC_ID_SUBTITLE_KATE      "S_KATE"

/*
 * Matroska tags. Strings.
 */

#define GST_MATROSKA_TAG_ID_TITLE    "TITLE"
#define GST_MATROSKA_TAG_ID_AUTHOR   "AUTHOR"
#define GST_MATROSKA_TAG_ID_ARTIST   "ARTIST"
#define GST_MATROSKA_TAG_ID_ALBUM    "ALBUM"
#define GST_MATROSKA_TAG_ID_COMMENTS "COMMENTS"
#define GST_MATROSKA_TAG_ID_BITSPS   "BITSPS"
#define GST_MATROSKA_TAG_ID_BPS      "BPS"
#define GST_MATROSKA_TAG_ID_ENCODER  "ENCODER"
#define GST_MATROSKA_TAG_ID_DATE     "DATE"
#define GST_MATROSKA_TAG_ID_ISRC     "ISRC"
#define GST_MATROSKA_TAG_ID_COPYRIGHT "COPYRIGHT"
#define GST_MATROSKA_TAG_ID_BPM       "BPM"
#define GST_MATROSKA_TAG_ID_TERMS_OF_USE "TERMS_OF_USE"
#define GST_MATROSKA_TAG_ID_DATE      "DATE"
#define GST_MATROSKA_TAG_ID_COMPOSER  "COMPOSER"
#define GST_MATROSKA_TAG_ID_LEAD_PERFORMER  "LEAD_PERFOMER"
#define GST_MATROSKA_TAG_ID_GENRE     "GENRE"

/*
 * TODO: add this tag & mappings
 * "REPLAYGAIN_GAIN" -> GST_TAG_*_GAIN   see http://replaygain.hydrogenaudio.org/rg_data_format.html
 * "REPLAYGAIN_PEAK" -> GST_TAG_*_PEAK   see http://replaygain.hydrogenaudio.org/peak_data_format.html
 * both are depending on the target (track, album?)
 *
 * "TOTAL_PARTS" -> GST_TAG_TRACK_COUNT    depending on target
 * "PART_NUMBER" -> GST_TAG_TRACK_NUMBER   depending on target
 *
 * "SORT_WITH" -> nested in other elements, GST_TAG_TITLE_SORTNAME, etc
 *
 * TODO: maybe add custom gstreamer tags for other standard matroska tags,
 * see http://matroska.org/technical/specs/tagging/index.html
 *
 * TODO: handle tag targets and nesting correctly
 */

/*
 * Enumerations for various types (mapping from binary
 * value to what it actually means).
 */

typedef enum {
  GST_MATROSKA_TRACK_TYPE_VIDEO    = 0x1,
  GST_MATROSKA_TRACK_TYPE_AUDIO    = 0x2,
  GST_MATROSKA_TRACK_TYPE_COMPLEX  = 0x3,
  GST_MATROSKA_TRACK_TYPE_LOGO     = 0x10,
  GST_MATROSKA_TRACK_TYPE_SUBTITLE = 0x11,
  GST_MATROSKA_TRACK_TYPE_BUTTONS  = 0x12,
  GST_MATROSKA_TRACK_TYPE_CONTROL  = 0x20,
} GstMatroskaTrackType;

typedef enum {
  GST_MATROSKA_ASPECT_RATIO_MODE_FREE  = 0x0,
  GST_MATROSKA_ASPECT_RATIO_MODE_KEEP  = 0x1,
  GST_MATROSKA_ASPECT_RATIO_MODE_FIXED = 0x2,
} GstMatroskaAspectRatioMode;

/*
 * These aren't in any way "matroska-form" things,
 * it's just something I use in the muxer/demuxer.
 */

typedef enum {
  GST_MATROSKA_TRACK_ENABLED = (1<<0),
  GST_MATROSKA_TRACK_DEFAULT = (1<<1),
  GST_MATROSKA_TRACK_LACING  = (1<<2),
  GST_MATROSKA_TRACK_FORCED  = (1<<3),
  GST_MATROSKA_TRACK_SHIFT   = (1<<16)
} GstMatroskaTrackFlags;

typedef enum {
  GST_MATROSKA_VIDEOTRACK_INTERLACED = (GST_MATROSKA_TRACK_SHIFT<<0)
} GstMatroskaVideoTrackFlags;


typedef struct _GstMatroskaTrackContext GstMatroskaTrackContext;

/* TODO: check if all fields are used */
struct _GstMatroskaTrackContext {
  GstPad       *pad;
  GstCaps      *caps;
  guint         index;
  GstFlowReturn last_flow;
  /* reverse playback */
  GstClockTime  from_time;
  gint64                   from_offset;
  gint64                   to_offset;

  GArray       *index_table;

  gint          index_writer_id;

  /* some often-used info */
  gchar        *codec_id, *codec_name, *name, *language;
  gpointer      codec_priv;
  gsize         codec_priv_size;
  gpointer      codec_state;
  gsize         codec_state_size;
  GstMatroskaTrackType type;
  guint         uid, num;
  GstMatroskaTrackFlags flags;
  guint64       default_duration;
  guint64       pos;
  gdouble       timecodescale;

  gboolean      set_discont; /* TRUE = set DISCONT flag on next buffer */

  /* Special flag for Vorbis and Theora, for which we need to send
   * codec_priv first before sending any data, and just testing
   * for time == 0 is not enough to detect that. Used by demuxer */
  gboolean      send_xiph_headers;

  /* Special flag for Flac, for which we need to reconstruct the header
   * buffer from the codec_priv data before sending any data, and just
   * testing for time == 0 is not enough to detect that. Used by demuxer */
  gboolean      send_flac_headers;

  /* Special flag for Speex, for which we need to reconstruct the header
   * buffer from the codec_priv data before sending any data, and just
   * testing for time == 0 is not enough to detect that. Used by demuxer */
  gboolean      send_speex_headers;

  /* Special flag for VobSub, for which we have to send colour table info
   * (if available) first before sending any data, and just testing
   * for time == 0 is not enough to detect that. Used by demuxer */
  gboolean      send_dvd_event;

  /* Special counter for muxer to skip the first N vorbis/theora headers -
   * they are put into codec private data, not muxed into the stream */
  guint         xiph_headers_to_skip;

  /* Used for postprocessing a frame before it is pushed from the demuxer */
  GstFlowReturn (*postprocess_frame) (GstElement *element,
                                      GstMatroskaTrackContext *context,
				      GstBuffer **buffer);

  /* Tags to send after newsegment event */
  GstTagList   *pending_tags;

  /* A GArray of GstMatroskaTrackEncoding structures which contain the
   * encoding (compression/encryption) settings for this track, if any */
  GArray       *encodings;

  /* Whether the stream is EOS */
  gboolean      eos;

  /* any alignment we need our output buffers to have */
  gint          alignment;
};

typedef struct _GstMatroskaTrackVideoContext {
  GstMatroskaTrackContext parent;

  guint         pixel_width, pixel_height;
  guint         display_width, display_height;
  gdouble       default_fps;
  GstMatroskaAspectRatioMode asr_mode;
  guint32       fourcc;

  /* QoS */
  GstClockTime  earliest_time;

  GstBuffer     *dirac_unit;
} GstMatroskaTrackVideoContext;

typedef struct _GstMatroskaTrackAudioContext {
  GstMatroskaTrackContext parent;

  guint         samplerate, channels, bitdepth;

  guint32       wvpk_block_index;
} GstMatroskaTrackAudioContext;

typedef struct _GstMatroskaTrackSubtitleContext {
  GstMatroskaTrackContext parent;

  gboolean    check_utf8;     /* buffers should be valid UTF-8 */
  gboolean    check_markup;   /* check if buffers contain markup
                               * or plaintext and escape characters */
  gboolean    invalid_utf8;   /* work around broken files      */
  gboolean    seen_markup_tag;  /* markup found in text */
} GstMatroskaTrackSubtitleContext;

typedef struct _GstMatroskaIndex {
  guint64        pos;      /* of the corresponding *cluster*! */
  guint16        track;    /* reference to 'num' */
  GstClockTime   time;     /* in nanoseconds */
  guint32        block;    /* number of the block in the cluster */
} GstMatroskaIndex;

typedef struct _Wavpack4Header {
  guchar  ck_id [4];     /* "wvpk"                                         */
  guint32 ck_size;       /* size of entire frame (minus 8, of course)      */
  guint16 version;       /* 0x403 for now                                  */
  guint8  track_no;      /* track number (0 if not used, like now)         */
  guint8  index_no;      /* remember these? (0 if not used, like now)      */
  guint32 total_samples; /* for entire file (-1 if unknown)                */
  guint32 block_index;   /* index of first sample in block (to file begin) */
  guint32 block_samples; /* # samples in this block                        */
  guint32 flags;         /* various flags for id and decoding              */
  guint32 crc;           /* crc for actual decoded data                    */
} Wavpack4Header;

typedef enum {
  GST_MATROSKA_TRACK_ENCODING_SCOPE_FRAME = (1<<0),
  GST_MATROSKA_TRACK_ENCODING_SCOPE_CODEC_DATA = (1<<1),
  GST_MATROSKA_TRACK_ENCODING_SCOPE_NEXT_CONTENT_ENCODING = (1<<2)
} GstMatroskaTrackEncodingScope;

typedef enum {
  GST_MATROSKA_TRACK_COMPRESSION_ALGORITHM_ZLIB = 0,
  GST_MATROSKA_TRACK_COMPRESSION_ALGORITHM_BZLIB = 1,
  GST_MATROSKA_TRACK_COMPRESSION_ALGORITHM_LZO1X = 2,
  GST_MATROSKA_TRACK_COMPRESSION_ALGORITHM_HEADERSTRIP = 3
} GstMatroskaTrackCompressionAlgorithm;

typedef struct _GstMatroskaTrackEncoding {
  guint   order;
  guint   scope     : 3;
  guint   type      : 1;
  guint   comp_algo : 2;
  guint8 *comp_settings;
  guint   comp_settings_length;
} GstMatroskaTrackEncoding;

gboolean gst_matroska_track_init_video_context    (GstMatroskaTrackContext ** p_context);
gboolean gst_matroska_track_init_audio_context    (GstMatroskaTrackContext ** p_context);
gboolean gst_matroska_track_init_subtitle_context (GstMatroskaTrackContext ** p_context);

void gst_matroska_register_tags (void);

#endif /* __GST_MATROSKA_IDS_H__ */
