Originally committed as revision 14738 to svn://svn.ffmpeg.org/ffmpeg/trunk
| ... | ... |
@@ -41,6 +41,7 @@ |
| 41 | 41 |
|
| 42 | 42 |
/* general EBML types */ |
| 43 | 43 |
#define EBML_ID_VOID 0xEC |
| 44 |
+#define EBML_ID_CRC32 0xBF |
|
| 44 | 45 |
|
| 45 | 46 |
/* |
| 46 | 47 |
* Matroska element IDs, max. 32 bits |
| ... | ... |
@@ -95,6 +96,7 @@ |
| 95 | 95 |
#define MATROSKA_ID_TRACKCONTENTENCODINGS 0x6D80 |
| 96 | 96 |
#define MATROSKA_ID_TRACKCONTENTENCODING 0x6240 |
| 97 | 97 |
#define MATROSKA_ID_TRACKTIMECODESCALE 0x23314F |
| 98 |
+#define MATROSKA_ID_TRACKMAXBLKADDID 0x55EE |
|
| 98 | 99 |
|
| 99 | 100 |
/* IDs in the trackvideo master */ |
| 100 | 101 |
#define MATROSKA_ID_VIDEOFRAMERATE 0x2383E3 |
| ... | ... |
@@ -102,6 +104,11 @@ |
| 102 | 102 |
#define MATROSKA_ID_VIDEODISPLAYHEIGHT 0x54BA |
| 103 | 103 |
#define MATROSKA_ID_VIDEOPIXELWIDTH 0xB0 |
| 104 | 104 |
#define MATROSKA_ID_VIDEOPIXELHEIGHT 0xBA |
| 105 |
+#define MATROSKA_ID_VIDEOPIXELCROPB 0x54AA |
|
| 106 |
+#define MATROSKA_ID_VIDEOPIXELCROPT 0x54BB |
|
| 107 |
+#define MATROSKA_ID_VIDEOPIXELCROPL 0x54CC |
|
| 108 |
+#define MATROSKA_ID_VIDEOPIXELCROPR 0x54DD |
|
| 109 |
+#define MATROSKA_ID_VIDEODISPLAYUNIT 0x54B2 |
|
| 105 | 110 |
#define MATROSKA_ID_VIDEOFLAGINTERLACED 0x9A |
| 106 | 111 |
#define MATROSKA_ID_VIDEOSTEREOMODE 0x53B9 |
| 107 | 112 |
#define MATROSKA_ID_VIDEOASPECTRATIO 0x54B3 |
| ... | ... |
@@ -115,6 +122,7 @@ |
| 115 | 115 |
#define MATROSKA_ID_AUDIOCHANNELS 0x9F |
| 116 | 116 |
|
| 117 | 117 |
/* IDs in the content encoding master */ |
| 118 |
+#define MATROSKA_ID_ENCODINGORDER 0x5031 |
|
| 118 | 119 |
#define MATROSKA_ID_ENCODINGSCOPE 0x5032 |
| 119 | 120 |
#define MATROSKA_ID_ENCODINGTYPE 0x5033 |
| 120 | 121 |
#define MATROSKA_ID_ENCODINGCOMPRESSION 0x5034 |
| ... | ... |
@@ -131,6 +139,7 @@ |
| 131 | 131 |
/* IDs in the cuetrackposition master */ |
| 132 | 132 |
#define MATROSKA_ID_CUETRACK 0xF7 |
| 133 | 133 |
#define MATROSKA_ID_CUECLUSTERPOSITION 0xF1 |
| 134 |
+#define MATROSKA_ID_CUEBLOCKNUMBER 0x5378 |
|
| 134 | 135 |
|
| 135 | 136 |
/* IDs in the tags master */ |
| 136 | 137 |
#define MATROSKA_ID_TAG 0x7373 |
| ... | ... |
@@ -150,6 +159,8 @@ |
| 150 | 150 |
|
| 151 | 151 |
/* IDs in the cluster master */ |
| 152 | 152 |
#define MATROSKA_ID_CLUSTERTIMECODE 0xE7 |
| 153 |
+#define MATROSKA_ID_CLUSTERPOSITION 0xA7 |
|
| 154 |
+#define MATROSKA_ID_CLUSTERPREVSIZE 0xAB |
|
| 153 | 155 |
#define MATROSKA_ID_BLOCKGROUP 0xA0 |
| 154 | 156 |
#define MATROSKA_ID_SIMPLEBLOCK 0xA3 |
| 155 | 157 |
|
| ... | ... |
@@ -160,6 +171,7 @@ |
| 160 | 160 |
|
| 161 | 161 |
/* IDs in the attachments master */ |
| 162 | 162 |
#define MATROSKA_ID_ATTACHEDFILE 0x61A7 |
| 163 |
+#define MATROSKA_ID_FILEDESC 0x467E |
|
| 163 | 164 |
#define MATROSKA_ID_FILENAME 0x466E |
| 164 | 165 |
#define MATROSKA_ID_FILEMIMETYPE 0x4660 |
| 165 | 166 |
#define MATROSKA_ID_FILEDATA 0x465C |
| ... | ... |
@@ -172,11 +184,15 @@ |
| 172 | 172 |
#define MATROSKA_ID_CHAPTERTIMEEND 0x92 |
| 173 | 173 |
#define MATROSKA_ID_CHAPTERDISPLAY 0x80 |
| 174 | 174 |
#define MATROSKA_ID_CHAPSTRING 0x85 |
| 175 |
+#define MATROSKA_ID_CHAPLANG 0x437C |
|
| 175 | 176 |
#define MATROSKA_ID_EDITIONUID 0x45BC |
| 176 | 177 |
#define MATROSKA_ID_EDITIONFLAGHIDDEN 0x45BD |
| 177 | 178 |
#define MATROSKA_ID_EDITIONFLAGDEFAULT 0x45DB |
| 179 |
+#define MATROSKA_ID_EDITIONFLAGORDERED 0x45DD |
|
| 178 | 180 |
#define MATROSKA_ID_CHAPTERUID 0x73C4 |
| 179 | 181 |
#define MATROSKA_ID_CHAPTERFLAGHIDDEN 0x98 |
| 182 |
+#define MATROSKA_ID_CHAPTERFLAGENABLED 0x4598 |
|
| 183 |
+#define MATROSKA_ID_CHAPTERPHYSEQUIV 0x63C3 |
|
| 180 | 184 |
|
| 181 | 185 |
typedef enum {
|
| 182 | 186 |
MATROSKA_TRACK_TYPE_NONE = 0x0, |
| ... | ... |
@@ -250,6 +250,7 @@ static EbmlSyntax matroska_info[] = {
|
| 250 | 250 |
{ MATROSKA_ID_MUXINGAPP, EBML_NONE },
|
| 251 | 251 |
{ MATROSKA_ID_DATEUTC, EBML_NONE },
|
| 252 | 252 |
{ MATROSKA_ID_SEGMENTUID, EBML_NONE },
|
| 253 |
+ { EBML_ID_CRC32, EBML_NONE },
|
|
| 253 | 254 |
{ EBML_ID_VOID, EBML_NONE },
|
| 254 | 255 |
{ 0 }
|
| 255 | 256 |
}; |
| ... | ... |
@@ -261,6 +262,11 @@ static EbmlSyntax matroska_track_video[] = {
|
| 261 | 261 |
{ MATROSKA_ID_VIDEOPIXELWIDTH, EBML_UINT, 0, offsetof(MatroskaTrackVideo,pixel_width) },
|
| 262 | 262 |
{ MATROSKA_ID_VIDEOPIXELHEIGHT, EBML_UINT, 0, offsetof(MatroskaTrackVideo,pixel_height) },
|
| 263 | 263 |
{ MATROSKA_ID_VIDEOCOLORSPACE, EBML_UINT, 0, offsetof(MatroskaTrackVideo,fourcc) },
|
| 264 |
+ { MATROSKA_ID_VIDEOPIXELCROPB, EBML_NONE },
|
|
| 265 |
+ { MATROSKA_ID_VIDEOPIXELCROPT, EBML_NONE },
|
|
| 266 |
+ { MATROSKA_ID_VIDEOPIXELCROPL, EBML_NONE },
|
|
| 267 |
+ { MATROSKA_ID_VIDEOPIXELCROPR, EBML_NONE },
|
|
| 268 |
+ { MATROSKA_ID_VIDEODISPLAYUNIT, EBML_NONE },
|
|
| 264 | 269 |
{ MATROSKA_ID_VIDEOFLAGINTERLACED,EBML_NONE },
|
| 265 | 270 |
{ MATROSKA_ID_VIDEOSTEREOMODE, EBML_NONE },
|
| 266 | 271 |
{ MATROSKA_ID_VIDEOASPECTRATIO, EBML_NONE },
|
| ... | ... |
@@ -288,6 +294,7 @@ static EbmlSyntax matroska_track_encoding[] = {
|
| 288 | 288 |
{ MATROSKA_ID_ENCODINGSCOPE, EBML_UINT, 0, offsetof(MatroskaTrackEncoding,scope), {.u=1} },
|
| 289 | 289 |
{ MATROSKA_ID_ENCODINGTYPE, EBML_UINT, 0, offsetof(MatroskaTrackEncoding,type), {.u=0} },
|
| 290 | 290 |
{ MATROSKA_ID_ENCODINGCOMPRESSION,EBML_NEST, 0, offsetof(MatroskaTrackEncoding,compression), {.n=matroska_track_encoding_compression} },
|
| 291 |
+ { MATROSKA_ID_ENCODINGORDER, EBML_NONE },
|
|
| 291 | 292 |
{ EBML_ID_VOID, EBML_NONE },
|
| 292 | 293 |
{ 0 }
|
| 293 | 294 |
}; |
| ... | ... |
@@ -321,12 +328,15 @@ static EbmlSyntax matroska_track[] = {
|
| 321 | 321 |
{ MATROSKA_ID_CODECDOWNLOADURL, EBML_NONE },
|
| 322 | 322 |
{ MATROSKA_ID_TRACKMINCACHE, EBML_NONE },
|
| 323 | 323 |
{ MATROSKA_ID_TRACKMAXCACHE, EBML_NONE },
|
| 324 |
+ { MATROSKA_ID_TRACKMAXBLKADDID, EBML_NONE },
|
|
| 325 |
+ { EBML_ID_CRC32, EBML_NONE },
|
|
| 324 | 326 |
{ EBML_ID_VOID, EBML_NONE },
|
| 325 | 327 |
{ 0 }
|
| 326 | 328 |
}; |
| 327 | 329 |
|
| 328 | 330 |
static EbmlSyntax matroska_tracks[] = {
|
| 329 | 331 |
{ MATROSKA_ID_TRACKENTRY, EBML_NEST, sizeof(MatroskaTrack), offsetof(MatroskaDemuxContext,tracks), {.n=matroska_track} },
|
| 332 |
+ { EBML_ID_CRC32, EBML_NONE },
|
|
| 330 | 333 |
{ EBML_ID_VOID, EBML_NONE },
|
| 331 | 334 |
{ 0 }
|
| 332 | 335 |
}; |
| ... | ... |
@@ -335,6 +345,7 @@ static EbmlSyntax matroska_attachment[] = {
|
| 335 | 335 |
{ MATROSKA_ID_FILENAME, EBML_UTF8, 0, offsetof(MatroskaAttachement,filename) },
|
| 336 | 336 |
{ MATROSKA_ID_FILEMIMETYPE, EBML_STR, 0, offsetof(MatroskaAttachement,mime) },
|
| 337 | 337 |
{ MATROSKA_ID_FILEDATA, EBML_BIN, 0, offsetof(MatroskaAttachement,bin) },
|
| 338 |
+ { MATROSKA_ID_FILEDESC, EBML_NONE },
|
|
| 338 | 339 |
{ MATROSKA_ID_FILEUID, EBML_NONE },
|
| 339 | 340 |
{ EBML_ID_VOID, EBML_NONE },
|
| 340 | 341 |
{ 0 }
|
| ... | ... |
@@ -342,12 +353,14 @@ static EbmlSyntax matroska_attachment[] = {
|
| 342 | 342 |
|
| 343 | 343 |
static EbmlSyntax matroska_attachments[] = {
|
| 344 | 344 |
{ MATROSKA_ID_ATTACHEDFILE, EBML_NEST, sizeof(MatroskaAttachement), offsetof(MatroskaDemuxContext,attachments), {.n=matroska_attachment} },
|
| 345 |
+ { EBML_ID_CRC32, EBML_NONE },
|
|
| 345 | 346 |
{ EBML_ID_VOID, EBML_NONE },
|
| 346 | 347 |
{ 0 }
|
| 347 | 348 |
}; |
| 348 | 349 |
|
| 349 | 350 |
static EbmlSyntax matroska_chapter_display[] = {
|
| 350 | 351 |
{ MATROSKA_ID_CHAPSTRING, EBML_UTF8, 0, offsetof(MatroskaChapter,title) },
|
| 352 |
+ { MATROSKA_ID_CHAPLANG, EBML_NONE },
|
|
| 351 | 353 |
{ EBML_ID_VOID, EBML_NONE },
|
| 352 | 354 |
{ 0 }
|
| 353 | 355 |
}; |
| ... | ... |
@@ -358,6 +371,10 @@ static EbmlSyntax matroska_chapter_entry[] = {
|
| 358 | 358 |
{ MATROSKA_ID_CHAPTERUID, EBML_UINT, 0, offsetof(MatroskaChapter,uid) },
|
| 359 | 359 |
{ MATROSKA_ID_CHAPTERDISPLAY, EBML_NEST, 0, 0, {.n=matroska_chapter_display} },
|
| 360 | 360 |
{ MATROSKA_ID_CHAPTERFLAGHIDDEN, EBML_NONE },
|
| 361 |
+ { MATROSKA_ID_CHAPTERFLAGENABLED, EBML_NONE },
|
|
| 362 |
+ { MATROSKA_ID_CHAPTERPHYSEQUIV, EBML_NONE },
|
|
| 363 |
+ { MATROSKA_ID_CHAPTERATOM, EBML_NONE },
|
|
| 364 |
+ { EBML_ID_CRC32, EBML_NONE },
|
|
| 361 | 365 |
{ EBML_ID_VOID, EBML_NONE },
|
| 362 | 366 |
{ 0 }
|
| 363 | 367 |
}; |
| ... | ... |
@@ -367,12 +384,15 @@ static EbmlSyntax matroska_chapter[] = {
|
| 367 | 367 |
{ MATROSKA_ID_EDITIONUID, EBML_NONE },
|
| 368 | 368 |
{ MATROSKA_ID_EDITIONFLAGHIDDEN, EBML_NONE },
|
| 369 | 369 |
{ MATROSKA_ID_EDITIONFLAGDEFAULT, EBML_NONE },
|
| 370 |
+ { MATROSKA_ID_EDITIONFLAGORDERED, EBML_NONE },
|
|
| 371 |
+ { EBML_ID_CRC32, EBML_NONE },
|
|
| 370 | 372 |
{ EBML_ID_VOID, EBML_NONE },
|
| 371 | 373 |
{ 0 }
|
| 372 | 374 |
}; |
| 373 | 375 |
|
| 374 | 376 |
static EbmlSyntax matroska_chapters[] = {
|
| 375 | 377 |
{ MATROSKA_ID_EDITIONENTRY, EBML_NEST, 0, 0, {.n=matroska_chapter} },
|
| 378 |
+ { EBML_ID_CRC32, EBML_NONE },
|
|
| 376 | 379 |
{ EBML_ID_VOID, EBML_NONE },
|
| 377 | 380 |
{ 0 }
|
| 378 | 381 |
}; |
| ... | ... |
@@ -380,6 +400,7 @@ static EbmlSyntax matroska_chapters[] = {
|
| 380 | 380 |
static EbmlSyntax matroska_index_pos[] = {
|
| 381 | 381 |
{ MATROSKA_ID_CUETRACK, EBML_UINT, 0, offsetof(MatroskaIndexPos,track) },
|
| 382 | 382 |
{ MATROSKA_ID_CUECLUSTERPOSITION, EBML_UINT, 0, offsetof(MatroskaIndexPos,pos) },
|
| 383 |
+ { MATROSKA_ID_CUEBLOCKNUMBER, EBML_NONE },
|
|
| 383 | 384 |
{ EBML_ID_VOID, EBML_NONE },
|
| 384 | 385 |
{ 0 }
|
| 385 | 386 |
}; |
| ... | ... |
@@ -393,6 +414,7 @@ static EbmlSyntax matroska_index_entry[] = {
|
| 393 | 393 |
|
| 394 | 394 |
static EbmlSyntax matroska_index[] = {
|
| 395 | 395 |
{ MATROSKA_ID_POINTENTRY, EBML_NEST, sizeof(MatroskaIndex), offsetof(MatroskaDemuxContext,index), {.n=matroska_index_entry} },
|
| 396 |
+ { EBML_ID_CRC32, EBML_NONE },
|
|
| 396 | 397 |
{ EBML_ID_VOID, EBML_NONE },
|
| 397 | 398 |
{ 0 }
|
| 398 | 399 |
}; |
| ... | ... |
@@ -403,6 +425,7 @@ static EbmlSyntax matroska_simpletag[] = {
|
| 403 | 403 |
{ MATROSKA_ID_SIMPLETAG, EBML_NEST, sizeof(MatroskaTag), offsetof(MatroskaTag,sub), {.n=matroska_simpletag} },
|
| 404 | 404 |
{ MATROSKA_ID_TAGLANG, EBML_NONE },
|
| 405 | 405 |
{ MATROSKA_ID_TAGDEFAULT, EBML_NONE },
|
| 406 |
+ { EBML_ID_CRC32, EBML_NONE },
|
|
| 406 | 407 |
{ EBML_ID_VOID, EBML_NONE },
|
| 407 | 408 |
{ 0 }
|
| 408 | 409 |
}; |
| ... | ... |
@@ -410,12 +433,14 @@ static EbmlSyntax matroska_simpletag[] = {
|
| 410 | 410 |
static EbmlSyntax matroska_tag[] = {
|
| 411 | 411 |
{ MATROSKA_ID_SIMPLETAG, EBML_NEST, sizeof(MatroskaTag), 0, {.n=matroska_simpletag} },
|
| 412 | 412 |
{ MATROSKA_ID_TAGTARGETS, EBML_NONE },
|
| 413 |
+ { EBML_ID_CRC32, EBML_NONE },
|
|
| 413 | 414 |
{ EBML_ID_VOID, EBML_NONE },
|
| 414 | 415 |
{ 0 }
|
| 415 | 416 |
}; |
| 416 | 417 |
|
| 417 | 418 |
static EbmlSyntax matroska_tags[] = {
|
| 418 | 419 |
{ MATROSKA_ID_TAG, EBML_NEST, 0, offsetof(MatroskaDemuxContext,tags), {.n=matroska_tag} },
|
| 420 |
+ { EBML_ID_CRC32, EBML_NONE },
|
|
| 419 | 421 |
{ EBML_ID_VOID, EBML_NONE },
|
| 420 | 422 |
{ 0 }
|
| 421 | 423 |
}; |
| ... | ... |
@@ -429,6 +454,7 @@ static EbmlSyntax matroska_seekhead_entry[] = {
|
| 429 | 429 |
|
| 430 | 430 |
static EbmlSyntax matroska_seekhead[] = {
|
| 431 | 431 |
{ MATROSKA_ID_SEEKENTRY, EBML_NEST, sizeof(MatroskaSeekhead), offsetof(MatroskaDemuxContext,seekhead), {.n=matroska_seekhead_entry} },
|
| 432 |
+ { EBML_ID_CRC32, EBML_NONE },
|
|
| 432 | 433 |
{ EBML_ID_VOID, EBML_NONE },
|
| 433 | 434 |
{ 0 }
|
| 434 | 435 |
}; |
| ... | ... |
@@ -464,12 +490,19 @@ static EbmlSyntax matroska_cluster[] = {
|
| 464 | 464 |
{ MATROSKA_ID_CLUSTERTIMECODE,EBML_UINT,0, offsetof(MatroskaCluster,timecode) },
|
| 465 | 465 |
{ MATROSKA_ID_BLOCKGROUP, EBML_NEST, sizeof(MatroskaBlock), offsetof(MatroskaCluster,blocks), {.n=matroska_blockgroup} },
|
| 466 | 466 |
{ MATROSKA_ID_SIMPLEBLOCK, EBML_PASS, sizeof(MatroskaBlock), offsetof(MatroskaCluster,blocks), {.n=matroska_blockgroup} },
|
| 467 |
+ { MATROSKA_ID_CLUSTERPOSITION,EBML_NONE },
|
|
| 468 |
+ { MATROSKA_ID_CLUSTERPREVSIZE,EBML_NONE },
|
|
| 469 |
+ { EBML_ID_CRC32, EBML_NONE },
|
|
| 467 | 470 |
{ EBML_ID_VOID, EBML_NONE },
|
| 468 | 471 |
{ 0 }
|
| 469 | 472 |
}; |
| 470 | 473 |
|
| 471 | 474 |
static EbmlSyntax matroska_clusters[] = {
|
| 472 | 475 |
{ MATROSKA_ID_CLUSTER, EBML_NEST, 0, 0, {.n=matroska_cluster} },
|
| 476 |
+ { MATROSKA_ID_INFO, EBML_NONE },
|
|
| 477 |
+ { MATROSKA_ID_CUES, EBML_NONE },
|
|
| 478 |
+ { MATROSKA_ID_TAGS, EBML_NONE },
|
|
| 479 |
+ { MATROSKA_ID_SEEKHEAD, EBML_NONE },
|
|
| 473 | 480 |
{ 0 }
|
| 474 | 481 |
}; |
| 475 | 482 |
|