0
0
mirror of https://github.com/mpv-player/mpv.git synced 2024-09-20 03:52:22 +02:00
mpv/mpvcore
wm4 884c179177 mplayer: attempt to skip playlist entries which can't be played
This is for situations when repeated attempts at playing a playlist
entry failed, and playlist navigation becomes impossible due to that.
For example, it wasn't possible to skip backwards past an unplayable
playlist entry:

    mpv file1.mkv doesntexist.mkv file3.mkv

You couldn't skip back to file1.mkv from file3.mkv. When running a
single "playlist_prev" command, doesntexist.mkv would be played, which
would fail to load. As reaction to the failure to load it, the next file
would be played, which is file3.mkv.

To make this even worse, the file could successfully load, but run only
for a split second. So just loading successfully isn't good enough.

Attempt to solve this by marking problematic playlist entries as failed,
and by having playlist_prev skip past such playlist entries. We define
failure as not being able to play more than 3 seconds (or failing to
initialize to begin with). (The 3 seconds are in real time, not file
duration.)

"playlist_prev force" still exhibits the old behavior.

Additionally, use the same mechanism to prevent pointless infinite
reloading if none of the files on the playlist exist. (See github issue

All in all, this is a heuristic, and later adjustments might be
necessary.

Note: forward skips (playlist_next) are not affected at all. (Except for
the interaction with --loop.)
2013-09-15 05:03:55 +02:00
..
input input: fix accidental NULL pointer dereference 2013-09-11 18:32:36 +02:00
timeline core: remove a minor memory leak 2013-09-08 05:17:05 +02:00
asxparser.c core: add a playlist demuxer 2013-08-26 10:09:45 +02:00
asxparser.h
av_common.c
av_common.h
av_log.c av_log: show ffmpeg "info" messages with -v only 2013-09-15 00:43:43 +02:00
av_log.h
av_opts.c
av_opts.h
bstr.c bstr: make UTF-8 check stricter 2013-08-15 23:40:03 +02:00
bstr.h bstr: add UTF-8 validation and sanitation functions 2013-08-15 23:40:02 +02:00
charset_conv.c sub: don't print detected charset if it's UTF-8 2013-08-15 23:40:04 +02:00
charset_conv.h sub: don't print detected charset if it's UTF-8 2013-08-15 23:40:04 +02:00
codecs.c
codecs.h
command.c mplayer: attempt to skip playlist entries which can't be played 2013-09-15 05:03:55 +02:00
command.h
cpudetect.c
cpudetect.h
encode_lavc.c
encode_lavc.h
encode.h
m_config.c m_option: rename struct member named "new" 2013-08-19 13:03:08 +02:00
m_config.h
m_option.c mplayer: m_option: fix clang -Wformat compiler warning 2013-09-14 20:49:55 +02:00
m_option.h mplayer: start track IDs from 1 rather than 0 2013-08-21 18:32:42 +02:00
m_property.c
m_property.h
mp_common.c mp_common: add function which accepts a format string to format playback time 2013-09-15 02:51:17 +02:00
mp_common.h mp_common: add function which accepts a format string to format playback time 2013-09-15 02:51:17 +02:00
mp_core.h mplayer: attempt to skip playlist entries which can't be played 2013-09-15 05:03:55 +02:00
mp_memory_barrier.h
mp_msg.c
mp_msg.h Some more mp_msg conversions 2013-08-23 23:30:09 +02:00
mp_osd.h
mp_ring.c
mp_ring.h
mp_talloc.h
mplayer.c mplayer: attempt to skip playlist entries which can't be played 2013-09-15 05:03:55 +02:00
mpv_global.h
options.c core: add --deinterlace option, restore it with resume functionality 2013-09-13 21:32:28 +02:00
options.h core: add --deinterlace option, restore it with resume functionality 2013-09-13 21:32:28 +02:00
parser-cfg.c
parser-cfg.h
parser-mpcmd.c core: add a playlist demuxer 2013-08-26 10:09:45 +02:00
parser-mpcmd.h
path.c macosx: always active bundle path lookup if cocoa is active 2013-09-12 18:45:40 +02:00
path.h path: add a common mp_is_url() function 2013-09-04 16:15:08 +02:00
playlist_parser.c demux_playlist: port ini reference playlist parser 2013-08-28 23:08:10 +02:00
playlist_parser.h core: add a playlist demuxer 2013-08-26 10:09:45 +02:00
playlist.c path: add a common mp_is_url() function 2013-09-04 16:15:08 +02:00
playlist.h mplayer: attempt to skip playlist entries which can't be played 2013-09-15 05:03:55 +02:00
resolve_quvi9.c
resolve_quvi.c quvi: coerce libquvi 0.4 support into allowing format switching 2013-09-10 16:38:34 +02:00
resolve.h quvi: coerce libquvi 0.4 support into allowing format switching 2013-09-10 16:38:34 +02:00
screenshot.c screenshot: make it possible to format playback time in various ways 2013-09-15 02:51:19 +02:00
screenshot.h
version.c