aboutsummaryrefslogtreecommitdiffstats
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
parent7e9103535ab82b82cb2d440c205a65a7767fa060 (diff)
downloadffmpeg-ff4da60fb8d849f709295bcdcb67726ea189d62b.tar.gz
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>
-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];
}
}