diff options
author | wm4 <wm4@nowhere> | 2014-10-29 22:45:21 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-10-29 22:45:21 +0100 |
commit | 71e73b6c8ead34219eb6d16ede74d161f847826c (patch) | |
tree | d580b8f24c4c61b950996379d2511bb51ee87331 /demux/demux.c | |
parent | a1083fb46148dee550b41ffb3d27cc1dbe21b2a9 (diff) | |
download | mpv-71e73b6c8ead34219eb6d16ede74d161f847826c.tar.bz2 mpv-71e73b6c8ead34219eb6d16ede74d161f847826c.tar.xz |
demux: move some seek flag sanitation to generic code
No reason why only demux_mkv.c should do this.
Diffstat (limited to 'demux/demux.c')
-rw-r--r-- | demux/demux.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/demux/demux.c b/demux/demux.c index 01c03026f7..d8ebde7384 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -963,9 +963,22 @@ int demux_seek(demuxer_t *demuxer, float rel_seek_secs, int flags) return 0; } + if ((flags & SEEK_FACTOR) && !(flags & SEEK_ABSOLUTE)) { + MP_WARN(demuxer, "Invalid seek flags.\n"); + return 0; + } + if (rel_seek_secs == MP_NOPTS_VALUE && (flags & SEEK_ABSOLUTE)) return 0; + if (!(flags & (SEEK_BACKWARD | SEEK_FORWARD))) { + if (flags & SEEK_ABSOLUTE || rel_seek_secs < 0) { + flags |= SEEK_BACKWARD; + } else { + flags |= SEEK_FORWARD; + } + } + pthread_mutex_lock(&in->lock); flush_locked(demuxer); |