diff options
author | wm4 <wm4@nowhere> | 2013-04-04 15:24:04 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-04-04 15:24:04 +0200 |
commit | c49aa35380a44341e3ffc34301dec3b5d4602522 (patch) | |
tree | a7e2cf06ebd9d164b60d3b211e6aae53cf2ff561 | |
parent | 75afa370b9aba90be73b8acc97eb9669bc0f2133 (diff) | |
download | mpv-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.
-rw-r--r-- | demux/demux_mkv.c | 4 |
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; |