summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-05-01 00:49:49 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-05-08 13:42:35 +0200
commitff4da60fb8d849f709295bcdcb67726ea189d62b (patch)
treeac9ff4fbb95844dad5c3f6e5a500b8fccabff0b1 /libavformat
parent7e9103535ab82b82cb2d440c205a65a7767fa060 (diff)
avformat/matroskadec: Allow multiple Tags elements
The Matroska specification allows multiple (level 1) Tags elements per file, yet our demuxer didn't: While it parsed any amount of Tags elements it found in front of the Clusters (albeit with warnings because of duplicate elements), it would treat any Tags element only referenced via a SeekHead entry as already parsed if any Tags element has already been parsed; therefore this Tags element would not be parsed at all. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/matroskadec.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 1dc1bd470c..b277c05f9d 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -1147,11 +1147,11 @@ static MatroskaLevel1Element *matroska_find_level1_elem(MatroskaDemuxContext *ma
if (id == MATROSKA_ID_CLUSTER)
return NULL;
- // There can be multiple seekheads.
+ // There can be multiple SeekHeads and Tags.
for (i = 0; i < matroska->num_level1_elems; i++) {
if (matroska->level1_elems[i].id == id) {
if (matroska->level1_elems[i].pos == pos ||
- id != MATROSKA_ID_SEEKHEAD)
+ id != MATROSKA_ID_SEEKHEAD && id != MATROSKA_ID_TAGS)
return &matroska->level1_elems[i];
}
}