diff options
author | Uoti Urpala <uau@mplayer2.org> | 2012-03-16 08:04:24 +0200 |
---|---|---|
committer | Uoti Urpala <uau@mplayer2.org> | 2012-03-20 14:51:32 +0200 |
commit | fd50478659e56db84e8564434702cdc8291ac854 (patch) | |
tree | cf4a3fc55aebb69bb9d59df1eb7154b80368b71d /libvo/geometry.h | |
parent | ec58e5a3848f82681839eaa15d2c6912d92e74ed (diff) | |
download | mpv-fd50478659e56db84e8564434702cdc8291ac854.tar.bz2 mpv-fd50478659e56db84e8564434702cdc8291ac854.tar.xz |
core: improve sub and audio start after timeline part switch
When switching to a timeline part from another file, decoders were
reinitialized after doing the demuxer-level seek. This is necessary
for audio because some decoders read from the demuxer stream during
initialization and the previous stream position before seek could have
been at EOF. However, this initialization sequence could lose first
subtitles or first part of audio.
The problem for subtitles was that the seek itself or audio
initialization could already have buffered subtitle packets from the
new position, and the way subtitles are reinitialized flushes packet
buffers. Thus early subtitles could be lost (even if they were demuxed
- unfortunately demuxers may not know about still active subtitles
earlier in the file, but that's another issue). Fix this by moving
subtitle and video reinitialization before the demuxer seek; they
don't have the problems which prevent that for audio.
Audio initialization can already decode and buffer some output.
However, the seek_reset() call done last would then throw away this
buffered output. Work around this by adding an extra flag to
seek_reset().
Diffstat (limited to 'libvo/geometry.h')
0 files changed, 0 insertions, 0 deletions