diff options
author | wm4 <wm4@nowhere> | 2013-05-03 19:52:28 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-05-05 18:44:23 +0200 |
commit | acad31c2d382043f1c43c74a678de659a54a3788 (patch) | |
tree | eb7d9a07f8ea0316e6faff2ce410fb298e50352c /demux | |
parent | 977dc4c63df0c38d6ce34b51f97352eb3d0e91e9 (diff) | |
download | mpv-acad31c2d382043f1c43c74a678de659a54a3788.tar.bz2 mpv-acad31c2d382043f1c43c74a678de659a54a3788.tar.xz |
core: don't report byte-based playback position with dvd
DVD playback uses a demuxer that signals to the frontend that timestamp
resets are possible. This made the frontend calculate the OSD playback
position based on the byte position and the total size of the stream.
This actually broke DVD playback position display. Since DVD reports a
a linear playback position, we don't have to rely on the demuxer
reported position, so disable this functionality in case of DVD
playback. This reverts the OSD behavior with DVD to the old behavior.
Diffstat (limited to 'demux')
-rw-r--r-- | demux/demux.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/demux/demux.c b/demux/demux.c index e1bb960e78..937c881639 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -922,6 +922,10 @@ static struct demuxer *open_given_type(struct MPOpts *opts, opts->correct_pts = demux_control(demuxer, DEMUXER_CTRL_CORRECT_PTS, NULL) == DEMUXER_CTRL_OK; + if (stream_manages_timeline(demuxer->stream)) { + // Incorrect, but fixes some behavior with DVD/BD + demuxer->ts_resets_possible = false; + } demuxer_sort_chapters(demuxer); return demuxer; } else { @@ -1071,7 +1075,7 @@ int demux_seek(demuxer_t *demuxer, float rel_seek_secs, float audio_delay, * (nothing actually implements DEMUXER_CTRL_RESYNC now). */ struct stream *stream = demuxer->stream; - if (stream->type == STREAMTYPE_DVD) { + if (stream_manages_timeline(stream)) { double pts; if (flags & SEEK_ABSOLUTE) |