00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef FFMPEG_MATROSKA_H
00023 #define FFMPEG_MATROSKA_H
00024
00025 #include "avcodec.h"
00026
00027
00028 #define EBML_VERSION 1
00029
00030
00031 #define EBML_ID_HEADER 0x1A45DFA3
00032
00033
00034 #define EBML_ID_EBMLVERSION 0x4286
00035 #define EBML_ID_EBMLREADVERSION 0x42F7
00036 #define EBML_ID_EBMLMAXIDLENGTH 0x42F2
00037 #define EBML_ID_EBMLMAXSIZELENGTH 0x42F3
00038 #define EBML_ID_DOCTYPE 0x4282
00039 #define EBML_ID_DOCTYPEVERSION 0x4287
00040 #define EBML_ID_DOCTYPEREADVERSION 0x4285
00041
00042
00043 #define EBML_ID_VOID 0xEC
00044
00045
00046
00047
00048
00049
00050 #define MATROSKA_ID_SEGMENT 0x18538067
00051
00052
00053 #define MATROSKA_ID_INFO 0x1549A966
00054 #define MATROSKA_ID_TRACKS 0x1654AE6B
00055 #define MATROSKA_ID_CUES 0x1C53BB6B
00056 #define MATROSKA_ID_TAGS 0x1254C367
00057 #define MATROSKA_ID_SEEKHEAD 0x114D9B74
00058 #define MATROSKA_ID_ATTACHMENTS 0x1941A469
00059 #define MATROSKA_ID_CLUSTER 0x1F43B675
00060
00061
00062 #define MATROSKA_ID_TIMECODESCALE 0x2AD7B1
00063 #define MATROSKA_ID_DURATION 0x4489
00064 #define MATROSKA_ID_TITLE 0x7BA9
00065 #define MATROSKA_ID_WRITINGAPP 0x5741
00066 #define MATROSKA_ID_MUXINGAPP 0x4D80
00067 #define MATROSKA_ID_DATEUTC 0x4461
00068 #define MATROSKA_ID_SEGMENTUID 0x73A4
00069
00070
00071 #define MATROSKA_ID_TRACKENTRY 0xAE
00072
00073
00074 #define MATROSKA_ID_TRACKNUMBER 0xD7
00075 #define MATROSKA_ID_TRACKUID 0x73C5
00076 #define MATROSKA_ID_TRACKTYPE 0x83
00077 #define MATROSKA_ID_TRACKAUDIO 0xE1
00078 #define MATROSKA_ID_TRACKVIDEO 0xE0
00079 #define MATROSKA_ID_CODECID 0x86
00080 #define MATROSKA_ID_CODECPRIVATE 0x63A2
00081 #define MATROSKA_ID_CODECNAME 0x258688
00082 #define MATROSKA_ID_CODECINFOURL 0x3B4040
00083 #define MATROSKA_ID_CODECDOWNLOADURL 0x26B240
00084 #define MATROSKA_ID_TRACKNAME 0x536E
00085 #define MATROSKA_ID_TRACKLANGUAGE 0x22B59C
00086 #define MATROSKA_ID_TRACKFLAGENABLED 0xB9
00087 #define MATROSKA_ID_TRACKFLAGDEFAULT 0x88
00088 #define MATROSKA_ID_TRACKFLAGLACING 0x9C
00089 #define MATROSKA_ID_TRACKMINCACHE 0x6DE7
00090 #define MATROSKA_ID_TRACKMAXCACHE 0x6DF8
00091 #define MATROSKA_ID_TRACKDEFAULTDURATION 0x23E383
00092
00093
00094 #define MATROSKA_ID_VIDEOFRAMERATE 0x2383E3
00095 #define MATROSKA_ID_VIDEODISPLAYWIDTH 0x54B0
00096 #define MATROSKA_ID_VIDEODISPLAYHEIGHT 0x54BA
00097 #define MATROSKA_ID_VIDEOPIXELWIDTH 0xB0
00098 #define MATROSKA_ID_VIDEOPIXELHEIGHT 0xBA
00099 #define MATROSKA_ID_VIDEOFLAGINTERLACED 0x9A
00100 #define MATROSKA_ID_VIDEOSTEREOMODE 0x53B9
00101 #define MATROSKA_ID_VIDEOASPECTRATIO 0x54B3
00102 #define MATROSKA_ID_VIDEOCOLORSPACE 0x2EB524
00103
00104
00105 #define MATROSKA_ID_AUDIOSAMPLINGFREQ 0xB5
00106 #define MATROSKA_ID_AUDIOOUTSAMPLINGFREQ 0x78B5
00107
00108 #define MATROSKA_ID_AUDIOBITDEPTH 0x6264
00109 #define MATROSKA_ID_AUDIOCHANNELS 0x9F
00110
00111
00112 #define MATROSKA_ID_POINTENTRY 0xBB
00113
00114
00115 #define MATROSKA_ID_CUETIME 0xB3
00116 #define MATROSKA_ID_CUETRACKPOSITION 0xB7
00117
00118
00119 #define MATROSKA_ID_CUETRACK 0xF7
00120 #define MATROSKA_ID_CUECLUSTERPOSITION 0xF1
00121
00122
00123
00124
00125
00126 #define MATROSKA_ID_SEEKENTRY 0x4DBB
00127
00128
00129 #define MATROSKA_ID_SEEKID 0x53AB
00130 #define MATROSKA_ID_SEEKPOSITION 0x53AC
00131
00132
00133 #define MATROSKA_ID_CLUSTERTIMECODE 0xE7
00134 #define MATROSKA_ID_BLOCKGROUP 0xA0
00135 #define MATROSKA_ID_SIMPLEBLOCK 0xA3
00136
00137
00138 #define MATROSKA_ID_BLOCK 0xA1
00139 #define MATROSKA_ID_BLOCKDURATION 0x9B
00140 #define MATROSKA_ID_BLOCKREFERENCE 0xFB
00141
00142
00143 #define MATROSKA_ID_ATTACHEDFILE 0x61A7
00144 #define MATROSKA_ID_FILENAME 0x466E
00145 #define MATROSKA_ID_FILEMIMETYPE 0x4660
00146 #define MATROSKA_ID_FILEDATA 0x465C
00147 #define MATROSKA_ID_FILEUID 0x46AE
00148
00149 typedef enum {
00150 MATROSKA_TRACK_TYPE_VIDEO = 0x1,
00151 MATROSKA_TRACK_TYPE_AUDIO = 0x2,
00152 MATROSKA_TRACK_TYPE_COMPLEX = 0x3,
00153 MATROSKA_TRACK_TYPE_LOGO = 0x10,
00154 MATROSKA_TRACK_TYPE_SUBTITLE = 0x11,
00155 MATROSKA_TRACK_TYPE_CONTROL = 0x20,
00156 } MatroskaTrackType;
00157
00158 typedef enum {
00159 MATROSKA_EYE_MODE_MONO = 0x0,
00160 MATROSKA_EYE_MODE_RIGHT = 0x1,
00161 MATROSKA_EYE_MODE_LEFT = 0x2,
00162 MATROSKA_EYE_MODE_BOTH = 0x3,
00163 } MatroskaEyeMode;
00164
00165 typedef enum {
00166 MATROSKA_ASPECT_RATIO_MODE_FREE = 0x0,
00167 MATROSKA_ASPECT_RATIO_MODE_KEEP = 0x1,
00168 MATROSKA_ASPECT_RATIO_MODE_FIXED = 0x2,
00169 } MatroskaAspectRatioMode;
00170
00171
00172
00173
00174
00175
00176 typedef enum {
00177 MATROSKA_TRACK_ENABLED = (1<<0),
00178 MATROSKA_TRACK_DEFAULT = (1<<1),
00179 MATROSKA_TRACK_LACING = (1<<2),
00180 MATROSKA_TRACK_SHIFT = (1<<16)
00181 } MatroskaTrackFlags;
00182
00183 typedef enum {
00184 MATROSKA_VIDEOTRACK_INTERLACED = (MATROSKA_TRACK_SHIFT<<0)
00185 } MatroskaVideoTrackFlags;
00186
00187
00188
00189
00190
00191 typedef struct CodecTags{
00192 char str[16];
00193 enum CodecID id;
00194 }CodecTags;
00195
00196 typedef struct CodecMime{
00197 char str[32];
00198 enum CodecID id;
00199 }CodecMime;
00200
00201 #define MATROSKA_CODEC_ID_VIDEO_VFW_FOURCC "V_MS/VFW/FOURCC"
00202 #define MATROSKA_CODEC_ID_AUDIO_ACM "A_MS/ACM"
00203
00204
00205 #define EBML_MAX_DEPTH 16
00206
00207 extern const CodecTags ff_mkv_codec_tags[];
00208 extern const CodecMime ff_mkv_mime_tags[];
00209
00210 #endif