diff options
Diffstat (limited to 'demux/demux_mkv.c')
-rw-r--r-- | demux/demux_mkv.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index 5eaa7bbb07..db1ccff13a 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -1999,13 +1999,9 @@ static int demux_mkv_open(demuxer_t *demuxer, enum demux_check check) if (demuxer->params) mkv_d->probably_webm_dash_init = demuxer->params->init_fragment.len > 0; - bstr start = stream_peek(s, 4); - uint32_t start_id = 0; - for (int n = 0; n < start.len; n++) - start_id = (start_id << 8) | start.start[n]; - if (start_id != EBML_ID_EBML) + // Make sure you can seek back after read_ebml_header() if no EBML ID. + if (stream_read_peek(s, &(char[4]){0}, 4) != 4) return -1; - if (!read_ebml_header(demuxer)) return -1; MP_DBG(demuxer, "Found the head...\n"); @@ -2027,7 +2023,6 @@ static int demux_mkv_open(demuxer_t *demuxer, enum demux_check check) while (1) { start_pos = stream_tell(s); - stream_peek(s, 4); // make sure we can always seek back uint32_t id = ebml_read_id(s); if (s->eof) { if (!mkv_d->probably_webm_dash_init) @@ -2836,7 +2831,6 @@ static int read_next_block_into_queue(demuxer_t *demuxer) find_next_cluster: mkv_d->cluster_end = 0; for (;;) { - stream_peek(s, 4); // guarantee we can undo ebml_read_id() below mkv_d->cluster_start = stream_tell(s); uint32_t id = ebml_read_id(s); if (id == MATROSKA_ID_CLUSTER) |