diff options
author | Kagami Hiiragi <kagami@genshiken.org> | 2015-12-29 22:12:46 +0300 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-12-29 20:39:34 +0100 |
commit | 492e3deb956a0c9d8ce7ed0d6f25aa0737ae7f50 (patch) | |
tree | eedefdbe122edcbbb4bed8cd2c0210671523776e | |
parent | fb185e4e79e3d3bcecfd7b786ff9086c35b464a0 (diff) | |
download | mpv-492e3deb956a0c9d8ce7ed0d6f25aa0737ae7f50.tar.bz2 mpv-492e3deb956a0c9d8ce7ed0d6f25aa0737ae7f50.tar.xz |
demux_mkv: skip EBML void elements
EBML_ID_VOID might occur at any level, see:
https://github.com/Matroska-Org/ebml-specification/blob/master/specification.markdown
This change prevents "Corrupt file detected" errors on completely valid
files.
-rw-r--r-- | demux/demux_mkv.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index 4b4e16c4b6..7f32e8d810 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -2609,7 +2609,7 @@ static int read_next_block(demuxer_t *demuxer, struct block_info *block) } // For the sake of robustness, consider even unknown level 1 // elements the same as unknown/broken IDs. - if (!ebml_is_mkv_level1_id(id) || + if ((!ebml_is_mkv_level1_id(id) && id != EBML_ID_VOID) || ebml_read_skip(demuxer->log, -1, s) != 0) { ebml_resync_cluster(demuxer->log, s); |