mirror of
https://github.com/mpv-player/mpv.git
synced 2024-09-20 12:02:23 +02:00
3c2f93aec8
Matroska makes it pretty hard to resync correctly on broken files: random data returns "valid" EBML IDs with a high probability, and when trying to skip them it's likely that you skip a random amount of data (instead of considering the element length invalid). Improve upon this by skipping known level 1 elements only. Consider everything else invalid and call the resync code. This might result in annoying behavior when Matroska adds new level 1 elements, although it won't be particularly harmful. Matroska doesn't really allow us to do better (even mkvtoolnix explicitly checks for known level 1 elements). Since we now don't always want to combine EBML element skipping and resyncing, remove ebml_read_skip_or_resync_cluster(), and make ebml_read_skip() more tolerant against skipping broken elements. Also, don't resync when reading sub-elements, and instead do resyncing when reading them results in an error. |
||
---|---|---|
.. | ||
codec_tags.c | ||
codec_tags.h | ||
demux_cue.c | ||
demux_edl.c | ||
demux_lavf.c | ||
demux_libass.c | ||
demux_mf.c | ||
demux_mkv.c | ||
demux_playlist.c | ||
demux_raw.c | ||
demux_subreader.c | ||
demux.c | ||
demux.h | ||
ebml.c | ||
ebml.h | ||
matroska.h | ||
mf.c | ||
mf.h | ||
ms_hdr.h | ||
packet.h | ||
stheader.h |