1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-29 18:42:09 +00:00
mpv/player
wm4 082029f850
player: redo hack for video keyframe seeks with external audio
If you play a video with an external audio track, and do backwards
keyframe seeks, then audio can be missing. This is because a backwards
seek can end up way before the seek target (this is just how this seek
mode works). The audio file will be seeked at the correct seek target
(since audio usually has a much higher seek granularity), which results
in silence being played until the video reaches the originally intended
seek target.

There was a hack in audio.c to deal with this. Replace it with a
different hack. The new hack probably works about as well as the old
hack, except it doesn't add weird crap to the audio resync path (which
is some of the worst code here, so this is some nice preparation for
rewriting it). As a more practical advantage, it doesn't discard the
audio demuxer packet cache. The old code did, which probably ruined
seeking in youtube DASH streams.

A non-hacky solution would be handling external files in the demuxer
layer. Then chaining the seeks would be pretty easy. But we're pretty
far from that, because it would either require intrusive changes to the
demuxer layer, or wouldn't be flexible enough to load/unload external
files at runtime. Maybe later.
2018-01-18 01:25:53 -08:00
..
javascript js: implement mp.msg.trace() 2017-12-16 02:25:24 -08:00
lua ytdl_hook: support native dash demuxer, if present 2018-01-15 11:20:02 +00:00
audio.c player: redo hack for video keyframe seeks with external audio 2018-01-18 01:25:53 -08:00
client.c client: Allow "C.UTF-8" as LC_NUMERIC locale 2017-11-30 21:06:37 +02:00
client.h client API: turn mpv_suspend() and mpv_resume() into stubs 2016-11-22 15:54:44 +01:00
command.c input: make command argument list a dynamic array 2018-01-10 20:36:27 -08:00
command.h player: update duration based on highest timestamp demuxed 2017-12-24 21:49:12 +01:00
configfiles.c player: silence config file loading message on resuming 2018-01-13 03:26:45 -08:00
core.h player: redo hack for video keyframe seeks with external audio 2018-01-18 01:25:53 -08:00
external_files.c player: make track language matching case insensitive 2017-12-23 15:14:13 -07:00
external_files.h external_files: change license to LGPL 2017-06-20 14:22:10 +02:00
javascript.c lua+js: implement utils.file_info() 2017-12-13 21:55:28 +02:00
lavfi.c lavfi: fix warnings with newer libavfilter versions 2017-10-27 18:09:08 +02:00
lavfi.h audio: introduce a new type to hold audio frames 2017-08-16 21:10:54 +02:00
loadfile.c player: redo hack for video keyframe seeks with external audio 2018-01-18 01:25:53 -08:00
lua.c msg: reinterpret a bunch of message levels 2017-12-15 22:28:47 -08:00
main.c build: move copyright statement to a shared location 2018-01-01 21:05:09 +00:00
misc.c options: move most subtitle and OSD rendering options to sub structs 2018-01-02 14:27:37 -08:00
osd.c osd: treat user provided term-status-msg the same as the default 2018-01-14 00:31:47 -08:00
playloop.c player: redo hack for video keyframe seeks with external audio 2018-01-18 01:25:53 -08:00
screenshot.c screenshot: create directories from template 2017-11-02 17:07:35 +01:00
screenshot.h player: make screenshot commands honor the async flag 2017-04-01 20:47:23 +02:00
scripting.c msg: reinterpret a bunch of message levels 2017-12-15 22:28:47 -08:00
sub.c sub: move all subtitle timestamp messing code to a central place 2018-01-02 14:27:37 -08:00
video.c msg: reinterpret a bunch of message levels 2017-12-15 22:28:47 -08:00