summaryrefslogtreecommitdiffstats
path: root/demux/demux_mkv.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-04-04 15:24:04 +0200
committerwm4 <wm4@nowhere>2013-04-04 15:24:04 +0200
commitc49aa35380a44341e3ffc34301dec3b5d4602522 (patch)
treea7e2cf06ebd9d164b60d3b211e6aae53cf2ff561 /demux/demux_mkv.c
parent75afa370b9aba90be73b8acc97eb9669bc0f2133 (diff)
downloadmpv-c49aa35380a44341e3ffc34301dec3b5d4602522.tar.bz2
mpv-c49aa35380a44341e3ffc34301dec3b5d4602522.tar.xz
demux_mkv: move preroll subtitle check to the right place
No subtitle selected was supposed to disable the preroll logic completely. However, the packet skipping logic was not properly enabled, so the demuxer would still return subtitle packets from before the seek target timecode. This shouldn't matter at all in practice, but fixing this makes the code clearer.
Diffstat (limited to 'demux/demux_mkv.c')
-rw-r--r--demux/demux_mkv.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
index 0171b1e9a2..ee39038c77 100644
--- a/demux/demux_mkv.c
+++ b/demux/demux_mkv.c
@@ -2435,7 +2435,7 @@ static struct mkv_index *seek_with_cues(struct demuxer *demuxer, int seek_id,
if (index) { /* We've found an entry. */
uint64_t seek_pos = index->filepos;
- if (mkv_d->subtitle_preroll && demuxer->sub->id >= 0) {
+ if (mkv_d->subtitle_preroll) {
uint64_t prev_target = 0;
for (int i = 0; i < mkv_d->num_indexes; i++) {
if (seek_id < 0 || mkv_d->indexes[i].tnum == seek_id) {
@@ -2466,7 +2466,7 @@ static void demux_mkv_seek(demuxer_t *demuxer, float rel_seek_secs,
if (demuxer->audio->id >= 0)
a_tnum = find_track_by_num(mkv_d, demuxer->audio->id,
MATROSKA_TRACK_AUDIO)->tnum;
- mkv_d->subtitle_preroll = !!(flags & SEEK_SUBPREROLL);
+ mkv_d->subtitle_preroll = (flags & SEEK_SUBPREROLL) && demuxer->sub->id >= 0;
if (!(flags & (SEEK_BACKWARD | SEEK_FORWARD))) {
if (flags & SEEK_ABSOLUTE || rel_seek_secs < 0)
flags |= SEEK_BACKWARD;