@@ -41,6 +41,13 @@
/* IDs in the info master */
#define MATROSKA_ID_TIMECODESCALE 0x2AD7B1
+#define MATROSKA_ID_SEGMENTFILENAME 0x7384
+#define MATROSKA_ID_PREVUID 0x3CB923
+#define MATROSKA_ID_PREVFILENAME 0x3C83AB
+#define MATROSKA_ID_NEXTUID 0x3EB923
+#define MATROSKA_ID_NEXTFILENAME 0x3E83BB
+#define MATROSKA_ID_SEGMENTFAMILY 0x4444
+#define MATROSKA_ID_CHAPTERTRANSLATE 0x6924
#define MATROSKA_ID_DURATION 0x4489
#define MATROSKA_ID_TITLE 0x7BA9
#define MATROSKA_ID_WRITINGAPP 0x5741
@@ -48,6 +55,11 @@
#define MATROSKA_ID_DATEUTC 0x4461
#define MATROSKA_ID_SEGMENTUID 0x73A4
+/* IDs in the chaptertranslate master */
+#define MATROSKA_ID_CHAPTERTRANSLATEID 0x69A5
+#define MATROSKA_ID_CHAPTERTRANSLATECODEC 0x69BF
+#define MATROSKA_ID_CHAPTERTRANSLATEEDITIONUID 0x69FC
+
/* IDs in the tracks master */
#define MATROSKA_ID_TRACKENTRY 0xAE
@@ -63,19 +75,31 @@
#define MATROSKA_ID_TRACKFLAGTEXTDESCRIPTIONS 0x55AD
#define MATROSKA_ID_TRACKFLAGORIGINAL 0x55AE
#define MATROSKA_ID_TRACKFLAGCOMMENTARY 0x55AF
+#define MATROSKA_ID_TRACKDEFAULTDECODEDFIELDDURATION 0x234E7A
#define MATROSKA_ID_TRACKTIMECODESCALE 0x23314F
+#define MATROSKA_ID_TRACKOFFSET 0x537F
#define MATROSKA_ID_TRACKMAXBLKADDID 0x55EE
#define MATROSKA_ID_TRACKBLKADDMAPPING 0x41E4
#define MATROSKA_ID_TRACKNAME 0x536E
#define MATROSKA_ID_TRACKLANGUAGE 0x22B59C
+#define MATROSKA_ID_TRACKLANGUAGEIETF 0x22B59D
#define MATROSKA_ID_CODECID 0x86
#define MATROSKA_ID_CODECPRIVATE 0x63A2
#define MATROSKA_ID_CODECNAME 0x258688
+#define MATROSKA_ID_TRACKATTACHMENTLINK 0x7446
+#define MATROSKA_ID_CODECSETTINGS 0x3A9697
#define MATROSKA_ID_CODECINFOURL 0x3B4040
#define MATROSKA_ID_CODECDOWNLOADURL 0x26B240
#define MATROSKA_ID_CODECDECODEALL 0xAA
+#define MATROSKA_ID_TRACKOVERLAY 0x6FAB
#define MATROSKA_ID_CODECDELAY 0x56AA
#define MATROSKA_ID_SEEKPREROLL 0x56BB
+#define MATROSKA_ID_TRACKTRANSLATE 0x6624
+#define MATROSKA_ID_TRICKTRACKUID 0xC0
+#define MATROSKA_ID_TRICKTRACKSEGMENTUID 0xC1
+#define MATROSKA_ID_TRICKTRACKFLAG 0xC6
+#define MATROSKA_ID_TRICKMASTERTRACKUID 0xC7
+#define MATROSKA_ID_TRICKMASTERTRACKSEGMENTUID 0xC4
#define MATROSKA_ID_TRACKFLAGENABLED 0xB9
#define MATROSKA_ID_TRACKFLAGDEFAULT 0x88
#define MATROSKA_ID_TRACKFLAGFORCED 0x55AA
@@ -115,9 +139,11 @@
#define MATROSKA_ID_ENCODINGSIGNATURE 0x47E3
/* IDs in the contentencaessettings master */
+#define MATROSKA_ID_TRACKAESSETTINGSCIPHERMODE 0x47E8
/* IDs in the trackoperation master */
#define MATROSKA_ID_TRACKCOMBINEPLANES 0xE3
+#define MATROSKA_ID_TRACKJOINBLOCKS 0xE9
/* IDs in the trackcombineplanes master */
#define MATROSKA_ID_TRACKPLANE 0xE4
@@ -126,6 +152,14 @@
#define MATROSKA_ID_TRACKPLANEUID 0xE5
#define MATROSKA_ID_TRACKPLANETYPE 0xE6
+/* IDs in the trackjoinblocks master */
+#define MATROSKA_ID_TRACKJOINUID 0xED
+
+/* IDs in the tracktranslate master */
+#define MATROSKA_ID_TRACKTRANSLATETRACKID 0x66A5
+#define MATROSKA_ID_TRACKTRANSLATECODEC 0x66BF
+#define MATROSKA_ID_TRACKTRANSLATEEDITIONUID 0x66FC
+
/* IDs in the trackvideo master */
#define MATROSKA_ID_VIDEOFRAMERATE 0x2383E3
#define MATROSKA_ID_VIDEODISPLAYWIDTH 0x54B0
@@ -141,8 +175,10 @@
#define MATROSKA_ID_VIDEOFIELDORDER 0x9D
#define MATROSKA_ID_VIDEOSTEREOMODE 0x53B8
#define MATROSKA_ID_VIDEOALPHAMODE 0x53C0
+#define MATROSKA_ID_VIDEOOLDSTEREOMODE 0x53B9
#define MATROSKA_ID_VIDEOASPECTRATIO 0x54B3
#define MATROSKA_ID_VIDEOCOLORSPACE 0x2EB524
+#define MATROSKA_ID_VIDEOGAMMAVALUE 0x2FB523
#define MATROSKA_ID_VIDEOCOLOR 0x55B0
#define MATROSKA_ID_VIDEOPROJECTION 0x7670
@@ -184,6 +220,7 @@
/* IDs in the trackaudio master */
#define MATROSKA_ID_AUDIOSAMPLINGFREQ 0xB5
#define MATROSKA_ID_AUDIOOUTSAMPLINGFREQ 0x78B5
+#define MATROSKA_ID_AUDIOCHANNELPOSITIONS 0x7D7B
#define MATROSKA_ID_AUDIOBITDEPTH 0x6264
#define MATROSKA_ID_AUDIOCHANNELS 0x9F
@@ -200,6 +237,14 @@
#define MATROSKA_ID_CUERELATIVEPOSITION 0xF0
#define MATROSKA_ID_CUEDURATION 0xB2
#define MATROSKA_ID_CUEBLOCKNUMBER 0x5378
+#define MATROSKA_ID_CUECODECSTATE 0xEA
+#define MATROSKA_ID_CUEREFERENCE 0xDB
+
+/* IDs in the cuereference master */
+#define MATROSKA_ID_CUEREFTIME 0x96
+#define MATROSKA_ID_CUEREFCLUSTER 0x97
+#define MATROSKA_ID_CUEREFCODECSTATE 0xEB
+#define MATROSKA_ID_CUEREFNUMBER 0x535F
/* IDs in the tags master */
#define MATROSKA_ID_TAG 0x7373
@@ -210,7 +255,9 @@
/* IDs in the simpletag master */
#define MATROSKA_ID_TAGLANG 0x447A
+#define MATROSKA_ID_TAGLANGUAGEIETF 0x447B
#define MATROSKA_ID_TAGDEFAULT 0x4484
+#define MATROSKA_ID_TAGBINARY 0x4485
#define MATROSKA_ID_TAGSTRING 0x4487
#define MATROSKA_ID_TAGDEFAULT_BUG 0x44B4
#define MATROSKA_ID_TAGNAME 0x45A3
@@ -219,6 +266,7 @@
#define MATROSKA_ID_TAGTARGETS_TYPE 0x63CA
#define MATROSKA_ID_TAGTARGETS_TYPEVALUE 0x68CA
#define MATROSKA_ID_TAGTARGETS_TRACKUID 0x63C5
+#define MATROSKA_ID_TAGEDITIONUID 0x63C9
#define MATROSKA_ID_TAGTARGETS_CHAPTERUID 0x63C4
#define MATROSKA_ID_TAGTARGETS_ATTACHUID 0x63C6
@@ -231,21 +279,31 @@
#define MATROSKA_ID_FILEMIMETYPE 0x4660
#define MATROSKA_ID_FILEDATA 0x465C
#define MATROSKA_ID_FILEUID 0x46AE
+#define MATROSKA_ID_FILEREFERRAL 0x4675
+#define MATROSKA_ID_FILEUSEDSTARTTIME 0x4661
+#define MATROSKA_ID_FILEUSEDENDTIME 0x4662
/* IDs in the cluster master */
#define MATROSKA_ID_CLUSTERTIMECODE 0xE7
+#define MATROSKA_ID_SILENTTRACKS 0x5854
#define MATROSKA_ID_CLUSTERPOSITION 0xA7
#define MATROSKA_ID_CLUSTERPREVSIZE 0xAB
#define MATROSKA_ID_BLOCKGROUP 0xA0
+#define MATROSKA_ID_ENCRYPTEDBLOCK 0xAF
#define MATROSKA_ID_SIMPLEBLOCK 0xA3
/* IDs in the blockgroup master */
#define MATROSKA_ID_BLOCK 0xA1
+#define MATROSKA_ID_BLOCKVIRTUAL 0xA2
#define MATROSKA_ID_BLOCKADDITIONS 0x75A1
#define MATROSKA_ID_BLOCKDURATION 0x9B
+#define MATROSKA_ID_REFERENCEPRIORITY 0xFA
#define MATROSKA_ID_BLOCKREFERENCE 0xFB
+#define MATROSKA_ID_REFERENCEVIRTUAL 0xFD
#define MATROSKA_ID_CODECSTATE 0xA4
#define MATROSKA_ID_DISCARDPADDING 0x75A2
+#define MATROSKA_ID_SLICES 0x8E
+#define MATROSKA_ID_REFERENCEFRAME 0xC8
/* IDs in the blockadditions master */
#define MATROSKA_ID_BLOCKMORE 0xA6
@@ -254,6 +312,23 @@
#define MATROSKA_ID_BLOCKADDID 0xEE
#define MATROSKA_ID_BLOCKADDITIONAL 0xA5
+/* IDs in the referenceframe master */
+#define MATROSKA_ID_REFERENCEOFFSET 0xC9
+#define MATROSKA_ID_REFERENCETIMESTAMP 0xCA
+
+/* IDs in the slices master */
+#define MATROSKA_ID_TIMESLICE 0xE8
+
+/* IDs in the timeslice master */
+#define MATROSKA_ID_BLOCKADDITIONID 0xCB
+#define MATROSKA_ID_LACENUMBER 0xCC
+#define MATROSKA_ID_FRAMENUMBER 0xCD
+#define MATROSKA_ID_DELAY 0xCE
+#define MATROSKA_ID_SLICEDURATION 0xCF
+
+/* IDs in the silenttracks master */
+#define MATROSKA_ID_SILENTTRACKNUMBER 0x58D7
+
/* IDs in the seekhead master */
#define MATROSKA_ID_SEEKENTRY 0x4DBB
@@ -273,18 +348,36 @@
/* IDs in the chapteratom master */
#define MATROSKA_ID_CHAPTERUID 0x73C4
+#define MATROSKA_ID_CHAPTERSTRINGUID 0x5654
#define MATROSKA_ID_CHAPTERTIMESTART 0x91
#define MATROSKA_ID_CHAPTERTIMEEND 0x92
#define MATROSKA_ID_CHAPTERFLAGHIDDEN 0x98
+#define MATROSKA_ID_CHAPTERSEGMENTUID 0x6E67
+#define MATROSKA_ID_CHAPTERSEGMENTEDITIONUID 0x6EBC
#define MATROSKA_ID_CHAPTERPHYSEQUIV 0x63C3
#define MATROSKA_ID_CHAPTERDISPLAY 0x80
+#define MATROSKA_ID_CHAPPROCESS 0x6944
#define MATROSKA_ID_CHAPTERFLAGENABLED 0x4598
+#define MATROSKA_ID_CHAPTERTRACK 0x8F
+
+/* IDs in the chapprocess master */
+#define MATROSKA_ID_CHAPPROCESSPRIVATE 0x450D
+#define MATROSKA_ID_CHAPPROCESSCOMMAND 0x6911
+#define MATROSKA_ID_CHAPPROCESSCODECID 0x6955
+
+/* IDs in the chapprocesscommand master */
+#define MATROSKA_ID_CHAPPROCESSTIME 0x6922
+#define MATROSKA_ID_CHAPPROCESSDATA 0x6933
/* IDs in the chapterdisplay master */
#define MATROSKA_ID_CHAPSTRING 0x85
#define MATROSKA_ID_CHAPLANG 0x437C
+#define MATROSKA_ID_CHAPLANGUAGEIETF 0x437D
#define MATROSKA_ID_CHAPCOUNTRY 0x437E
+/* IDs in the chaptertrack master */
+#define MATROSKA_ID_CHAPTERTRACKUID 0x89
+
typedef enum {
MATROSKA_TRACK_TYPE_NONE = 0x0,
MATROSKA_TRACK_TYPE_VIDEO = 0x1,
@@ -42,24 +42,24 @@
// incomplete type (6.7.2 in C90, 6.9.2 in C99).
// Removing the sizes breaks MSVC.
static EbmlSyntax matroska_seekhead[2];
-static EbmlSyntax matroska_info[8];
+static EbmlSyntax matroska_info[15];
static EbmlSyntax matroska_blockadditions[2];
-// static EbmlSyntax matroska_blockgroup[8];
+// static EbmlSyntax matroska_blockgroup[13];
// static EbmlSyntax matroska_cluster_parsing[8];
static EbmlSyntax matroska_track_video_color[15];
-static EbmlSyntax matroska_track_video[19];
+static EbmlSyntax matroska_track_video[21];
static EbmlSyntax matroska_track_combine_planes[2];
-static EbmlSyntax matroska_track_operation[2];
+static EbmlSyntax matroska_track_operation[3];
static EbmlSyntax matroska_track_encoding_encryption[8];
static EbmlSyntax matroska_track_encoding[6];
static EbmlSyntax matroska_track_encodings[2];
-static EbmlSyntax matroska_track[33];
+static EbmlSyntax matroska_track[45];
static EbmlSyntax matroska_tracks[2];
-static EbmlSyntax matroska_index_pos[6];
+static EbmlSyntax matroska_index_pos[8];
static EbmlSyntax matroska_index_entry[3];
static EbmlSyntax matroska_index[2];
static EbmlSyntax matroska_attachments[2];
-static EbmlSyntax matroska_chapter_entry[9];
+static EbmlSyntax matroska_chapter_entry[14];
static EbmlSyntax matroska_chapter[6];
static EbmlSyntax matroska_chapters[2];
static EbmlSyntax matroska_tag[3];
@@ -138,7 +138,9 @@ static EbmlSyntax matroska_track_video[] = {
{ MATROSKA_ID_VIDEOFLAGINTERLACED, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideo, interlaced), { .u = MATROSKA_VIDEO_INTERLACE_FLAG_UNDETERMINED } },
{ MATROSKA_ID_VIDEOFIELDORDER, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideo, field_order), { .u = MATROSKA_VIDEO_FIELDORDER_UNDETERMINED } },
{ MATROSKA_ID_VIDEOALPHAMODE, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideo, alpha_mode) },
+ { MATROSKA_ID_VIDEOOLDSTEREOMODE, EBML_NONE },
{ MATROSKA_ID_VIDEOCOLORSPACE, EBML_BIN, 0, 0, offsetof(MatroskaTrackVideo, color_space) },
+ { MATROSKA_ID_VIDEOGAMMAVALUE, EBML_NONE },
{ MATROSKA_ID_VIDEOCOLOR, EBML_NEST, 0, sizeof(MatroskaTrackVideoColor), offsetof(MatroskaTrackVideo, color), { .n = matroska_track_video_color } },
{ MATROSKA_ID_VIDEOPROJECTION, EBML_NEST, 0, 0, offsetof(MatroskaTrackVideo, projection), { .n = matroska_track_video_projection } },
{ MATROSKA_ID_VIDEOSTEREOMODE, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideo, stereo_mode), { .u = MATROSKA_VIDEO_STEREOMODE_TYPE_NB } },
@@ -159,6 +161,7 @@ static EbmlSyntax matroska_track_combine_planes[] = {
static EbmlSyntax matroska_track_operation[] = {
{ MATROSKA_ID_TRACKCOMBINEPLANES, EBML_NEST, 0, 0, 0, { .n = matroska_track_combine_planes } },
+ { MATROSKA_ID_TRACKJOINBLOCKS, EBML_NONE },
CHILD_OF(matroska_track)
};
@@ -204,6 +207,7 @@ static EbmlSyntax matroska_block_addition_mapping[] = {
static EbmlSyntax matroska_track_audio[] = {
{ MATROSKA_ID_AUDIOSAMPLINGFREQ, EBML_FLOAT, 0, 0, offsetof(MatroskaTrackAudio, samplerate), { .f = 8000.0 } },
{ MATROSKA_ID_AUDIOOUTSAMPLINGFREQ, EBML_FLOAT, 0, 0, offsetof(MatroskaTrackAudio, out_samplerate) },
+ { MATROSKA_ID_AUDIOCHANNELPOSITIONS, EBML_NONE },
{ MATROSKA_ID_AUDIOBITDEPTH, EBML_UINT, 0, 0, offsetof(MatroskaTrackAudio, bitdepth) },
{ MATROSKA_ID_AUDIOCHANNELS, EBML_UINT, 0, 0, offsetof(MatroskaTrackAudio, channels), { .u = 1 } },
CHILD_OF(matroska_track)
@@ -233,14 +237,26 @@ static EbmlSyntax matroska_track[] = {
{ MATROSKA_ID_TRACKFLAGLACING, EBML_NONE },
{ MATROSKA_ID_TRACKMINCACHE, EBML_NONE },
{ MATROSKA_ID_TRACKMAXCACHE, EBML_NONE },
+ { MATROSKA_ID_TRACKDEFAULTDECODEDFIELDDURATION, EBML_NONE },
+ { MATROSKA_ID_TRACKOFFSET, EBML_NONE },
{ MATROSKA_ID_TRACKMAXBLKADDID, EBML_UINT, 0, 0, offsetof(MatroskaTrack, max_block_additional_id) },
{ MATROSKA_ID_TRACKBLKADDMAPPING, EBML_NEST, 0, sizeof(MatroskaBlockAdditionMapping), offsetof(MatroskaTrack, block_addition_mappings), { .n = matroska_block_addition_mapping } },
+ { MATROSKA_ID_TRACKLANGUAGEIETF, EBML_NONE },
{ MATROSKA_ID_CODECNAME, EBML_NONE },
+ { MATROSKA_ID_TRACKATTACHMENTLINK, EBML_NONE },
+ { MATROSKA_ID_CODECSETTINGS, EBML_NONE },
{ MATROSKA_ID_CODECINFOURL, EBML_NONE },
{ MATROSKA_ID_CODECDOWNLOADURL, EBML_NONE },
{ MATROSKA_ID_CODECDECODEALL, EBML_NONE },
+ { MATROSKA_ID_TRACKOVERLAY, EBML_NONE },
{ MATROSKA_ID_SEEKPREROLL, EBML_UINT, 0, 0, offsetof(MatroskaTrack, seek_preroll) },
+ { MATROSKA_ID_TRACKTRANSLATE, EBML_NONE },
{ MATROSKA_ID_TRACKOPERATION, EBML_NEST, 0, 0, offsetof(MatroskaTrack, operation), { .n = matroska_track_operation } },
+ { MATROSKA_ID_TRICKTRACKUID, EBML_NONE },
+ { MATROSKA_ID_TRICKTRACKSEGMENTUID, EBML_NONE },
+ { MATROSKA_ID_TRICKTRACKFLAG, EBML_NONE },
+ { MATROSKA_ID_TRICKMASTERTRACKUID, EBML_NONE },
+ { MATROSKA_ID_TRICKMASTERTRACKSEGMENTUID, EBML_NONE },
{ MATROSKA_ID_TRACKCONTENTENCODINGS, EBML_NEST, 0, 0, 0, { .n = matroska_track_encodings } },
CHILD_OF(matroska_tracks)
};
@@ -254,6 +270,7 @@ static EbmlSyntax matroska_tagtargets[] = {
{ MATROSKA_ID_TAGTARGETS_TYPE, EBML_STR, 0, 0, offsetof(MatroskaTagTarget, type) },
{ MATROSKA_ID_TAGTARGETS_TYPEVALUE, EBML_UINT, 0, 0, offsetof(MatroskaTagTarget, typevalue), { .u = 50 } },
{ MATROSKA_ID_TAGTARGETS_TRACKUID, EBML_UINT, 0, 0, offsetof(MatroskaTagTarget, trackuid) },
+ { MATROSKA_ID_TAGEDITIONUID, EBML_NONE },
{ MATROSKA_ID_TAGTARGETS_CHAPTERUID, EBML_UINT, 0, 0, offsetof(MatroskaTagTarget, chapteruid) },
{ MATROSKA_ID_TAGTARGETS_ATTACHUID, EBML_UINT, 0, 0, offsetof(MatroskaTagTarget, attachuid) },
CHILD_OF(matroska_tag)
@@ -263,7 +280,9 @@ static EbmlSyntax matroska_simpletag[] = {
{ MATROSKA_ID_TAGNAME, EBML_UTF8, 0, 0, offsetof(MatroskaTag, name) },
{ MATROSKA_ID_TAGSTRING, EBML_UTF8, 0, 0, offsetof(MatroskaTag, string) },
{ MATROSKA_ID_TAGLANG, EBML_STR, 0, 0, offsetof(MatroskaTag, lang), { .s = "und" } },
+ { MATROSKA_ID_TAGLANGUAGEIETF, EBML_NONE },
{ MATROSKA_ID_TAGDEFAULT, EBML_UINT, 0, 0, offsetof(MatroskaTag, def), { .u = 1 } },
+ { MATROSKA_ID_TAGBINARY, EBML_NONE },
{ MATROSKA_ID_TAGDEFAULT_BUG, EBML_UINT, 0, 0, offsetof(MatroskaTag, def), { .u = 1 } },
{ MATROSKA_ID_SIMPLETAG, EBML_NEST, 0, sizeof(MatroskaTag), offsetof(MatroskaTag, sub), { .n = matroska_simpletag } },
CHILD_OF(matroska_tag)
@@ -293,6 +312,13 @@ static EbmlSyntax matroska_seekhead[] = {
static EbmlSyntax matroska_info[] = {
{ MATROSKA_ID_TIMECODESCALE, EBML_UINT, 0, 0, offsetof(MatroskaDemuxContext, time_scale), { .u = 1000000 } },
+ { MATROSKA_ID_SEGMENTFILENAME, EBML_NONE },
+ { MATROSKA_ID_PREVUID, EBML_NONE },
+ { MATROSKA_ID_PREVFILENAME, EBML_NONE },
+ { MATROSKA_ID_NEXTUID, EBML_NONE },
+ { MATROSKA_ID_NEXTFILENAME, EBML_NONE },
+ { MATROSKA_ID_SEGMENTFAMILY, EBML_NONE },
+ { MATROSKA_ID_CHAPTERTRANSLATE, EBML_NONE },
{ MATROSKA_ID_DURATION, EBML_FLOAT, 0, 0, offsetof(MatroskaDemuxContext, duration) },
{ MATROSKA_ID_TITLE, EBML_UTF8, 0, 0, offsetof(MatroskaDemuxContext, title) },
{ MATROSKA_ID_WRITINGAPP, EBML_NONE },
@@ -308,6 +334,8 @@ static EbmlSyntax matroska_index_pos[] = {
{ MATROSKA_ID_CUERELATIVEPOSITION, EBML_NONE },
{ MATROSKA_ID_CUEDURATION, EBML_NONE },
{ MATROSKA_ID_CUEBLOCKNUMBER, EBML_NONE },
+ { MATROSKA_ID_CUECODECSTATE, EBML_NONE },
+ { MATROSKA_ID_CUEREFERENCE, EBML_NONE },
CHILD_OF(matroska_index_entry)
};
@@ -338,8 +366,13 @@ EbmlSyntax matroska_blockgroup[] = {
{ MATROSKA_ID_BLOCKADDITIONS, EBML_NEST, 0, 0, 0, { .n = matroska_blockadditions } },
{ MATROSKA_ID_BLOCKDURATION, EBML_UINT, 0, 0, offsetof(MatroskaBlock, duration) },
{ MATROSKA_ID_DISCARDPADDING, EBML_SINT, 0, 0, offsetof(MatroskaBlock, discard_padding) },
+ { MATROSKA_ID_BLOCKVIRTUAL, EBML_NONE },
+ { MATROSKA_ID_REFERENCEPRIORITY, EBML_NONE },
{ MATROSKA_ID_BLOCKREFERENCE, EBML_SINT, 1, 0, offsetof(MatroskaBlock, reference) },
+ { MATROSKA_ID_REFERENCEVIRTUAL, EBML_NONE },
{ MATROSKA_ID_CODECSTATE, EBML_NONE },
+ { MATROSKA_ID_SLICES, EBML_NONE },
+ { MATROSKA_ID_REFERENCEFRAME, EBML_NONE },
{ 1, EBML_UINT, 0, 0, offsetof(MatroskaBlock, non_simple), { .u = 1 } },
CHILD_OF(matroska_cluster_parsing)
};
@@ -350,8 +383,10 @@ EbmlSyntax matroska_cluster_parsing[] = {
{ MATROSKA_ID_SIMPLEBLOCK, EBML_BIN, 0, 0, offsetof(MatroskaBlock, bin) },
{ MATROSKA_ID_BLOCKGROUP, EBML_NEST, 0, 0, 0, { .n = matroska_blockgroup } },
{ MATROSKA_ID_CLUSTERTIMECODE, EBML_UINT, 0, 0, offsetof(MatroskaCluster, timecode) },
+ { MATROSKA_ID_SILENTTRACKS, EBML_NONE },
{ MATROSKA_ID_CLUSTERPOSITION, EBML_NONE },
{ MATROSKA_ID_CLUSTERPREVSIZE, EBML_NONE },
+ { MATROSKA_ID_ENCRYPTEDBLOCK, EBML_NONE },
{ MATROSKA_ID_SIMPLEBLOCK, EBML_STOP },
{ MATROSKA_ID_BLOCKGROUP, EBML_STOP },
CHILD_OF(matroska_segment)
@@ -360,6 +395,7 @@ EbmlSyntax matroska_cluster_parsing[] = {
static EbmlSyntax matroska_chapter_display[] = {
{ MATROSKA_ID_CHAPSTRING, EBML_UTF8, 0, 0, offsetof(MatroskaChapter, title) },
{ MATROSKA_ID_CHAPLANG, EBML_NONE },
+ { MATROSKA_ID_CHAPLANGUAGEIETF, EBML_NONE },
{ MATROSKA_ID_CHAPCOUNTRY, EBML_NONE },
CHILD_OF(matroska_chapter_entry)
};
@@ -369,9 +405,14 @@ static EbmlSyntax matroska_chapter_entry[] = {
{ MATROSKA_ID_CHAPTERTIMEEND, EBML_UINT, 0, 0, offsetof(MatroskaChapter, end), { .u = AV_NOPTS_VALUE } },
{ MATROSKA_ID_CHAPTERUID, EBML_UINT, 0, 0, offsetof(MatroskaChapter, uid) },
{ MATROSKA_ID_CHAPTERDISPLAY, EBML_NEST, 0, 0, 0, { .n = matroska_chapter_display } },
+ { MATROSKA_ID_CHAPTERSTRINGUID, EBML_NONE },
{ MATROSKA_ID_CHAPTERFLAGHIDDEN, EBML_NONE },
+ { MATROSKA_ID_CHAPTERSEGMENTUID, EBML_NONE },
+ { MATROSKA_ID_CHAPTERSEGMENTEDITIONUID, EBML_NONE },
{ MATROSKA_ID_CHAPTERPHYSEQUIV, EBML_NONE },
+ { MATROSKA_ID_CHAPPROCESS, EBML_NONE },
{ MATROSKA_ID_CHAPTERFLAGENABLED, EBML_NONE },
+ { MATROSKA_ID_CHAPTERTRACK, EBML_NONE },
{ MATROSKA_ID_CHAPTERATOM, EBML_NONE },
CHILD_OF(matroska_chapter)
};
@@ -395,6 +436,9 @@ static EbmlSyntax matroska_attachment[] = {
{ MATROSKA_ID_FILENAME, EBML_UTF8, 0, 0, offsetof(MatroskaAttachment, filename) },
{ MATROSKA_ID_FILEMIMETYPE, EBML_STR, 0, 0, offsetof(MatroskaAttachment, mime) },
{ MATROSKA_ID_FILEDATA, EBML_BIN, 0, 0, offsetof(MatroskaAttachment, bin) },
+ { MATROSKA_ID_FILEREFERRAL, EBML_NONE },
+ { MATROSKA_ID_FILEUSEDSTARTTIME, EBML_NONE },
+ { MATROSKA_ID_FILEUSEDENDTIME, EBML_NONE },
{ MATROSKA_ID_FILEDESC, EBML_UTF8, 0, 0, offsetof(MatroskaAttachment, description) },
CHILD_OF(matroska_attachments)
};
@@ -381,7 +381,7 @@ typedef struct MatroskaDemuxContext {
// a tentative definition with internal linkage must not be an
// incomplete type (6.7.2 in C90, 6.9.2 in C99).
// Removing the sizes breaks MSVC.
-EbmlSyntax ebml_syntax[3], matroska_segment[9], matroska_blockgroup[8], matroska_cluster_parsing[8];
+EbmlSyntax ebml_syntax[3], matroska_segment[9], matroska_blockgroup[13], matroska_cluster_parsing[10];
EbmlSyntax matroska_segments[2];
EbmlSyntax matroska_cluster_enter[2];