summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-08-22 22:08:17 +0200
committerwm4 <wm4@nowhere>2015-08-22 22:08:17 +0200
commit602105dbdae5b35dfcd7c060349b42a990bd25a8 (patch)
tree8d07ab84dfa12396841010b3f7d066688f9352d2
parent1e4113040c533278f61f66e56e817aba5958f380 (diff)
downloadmpv-602105dbdae5b35dfcd7c060349b42a990bd25a8.tar.bz2
mpv-602105dbdae5b35dfcd7c060349b42a990bd25a8.tar.xz
player: add --playlist-pos option
Oddly often requested.
-rw-r--r--DOCS/interface-changes.rst1
-rw-r--r--DOCS/man/options.rst11
-rw-r--r--options/options.c3
-rw-r--r--options/options.h1
-rw-r--r--player/loadfile.c9
5 files changed, 24 insertions, 1 deletions
diff --git a/DOCS/interface-changes.rst b/DOCS/interface-changes.rst
index e74296c557..9d1390c808 100644
--- a/DOCS/interface-changes.rst
+++ b/DOCS/interface-changes.rst
@@ -20,6 +20,7 @@ Interface changes
::
--- mpv 0.10.0 will be released ---
+ - add --playlist-pos option
- add --video-sync* options
"display-sync-active" property
"vo-missed-frame-count" property
diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst
index afa3eb55a8..c8b2460879 100644
--- a/DOCS/man/options.rst
+++ b/DOCS/man/options.rst
@@ -129,6 +129,17 @@ Playback Control
Specify which chapter to start playing at. Optionally specify which
chapter to end playing at. Also see ``--start``.
+``--playlist-pos=<no|index>``
+ Set which file on the internal playlist to start playback with. The index
+ is an integer, with 0 meaning the first file. The value ``no`` means that
+ the selection of the entry to play is left to the playback resume mechanism
+ (default). If an entry with the given index doesn't exist, the behavior is
+ unspecified and might change in future mpv versions. The same applies if
+ the playlist contains further playlists (don't expect any reasonable
+ behavior). Passing a playlist file to mpv should work with this option,
+ though. E.g. ``mpv playlist.m3u --playlist-pos=123`` will work as expected,
+ as long as ``playlist.m3u`` does not link to further playlists.
+
``--playlist=<filename>``
Play files according to a playlist file (Supports some common formats. If
no format is detected, it will be treated as list of files, separated by
diff --git a/options/options.c b/options/options.c
index c393536af0..2a62ef69c8 100644
--- a/options/options.c
+++ b/options/options.c
@@ -200,6 +200,8 @@ const m_option_t mp_opts[] = {
OPT_TIME("ab-loop-a", ab_loop[0], 0, .min = MP_NOPTS_VALUE),
OPT_TIME("ab-loop-b", ab_loop[1], 0, .min = MP_NOPTS_VALUE),
+ OPT_CHOICE_OR_INT("playlist-pos", playlist_pos, 0, 0, INT_MAX, ({"no", -1})),
+
OPT_FLAG("pause", pause, M_OPT_FIXED),
OPT_CHOICE("keep-open", keep_open, 0,
({"no", 0},
@@ -754,6 +756,7 @@ const struct MPOpts mp_default_opts = {
.term_osd = 2,
.term_osd_bar_chars = "[-+-]",
.consolecontrols = 1,
+ .playlist_pos = -1,
.play_frames = -1,
.keep_open = 0,
.stream_id = { { [STREAM_AUDIO] = -1,
diff --git a/options/options.h b/options/options.h
index 1b65b4af4d..b3d6bb18c2 100644
--- a/options/options.h
+++ b/options/options.h
@@ -167,6 +167,7 @@ typedef struct MPOpts {
float heartbeat_interval;
int player_idle_mode;
int consolecontrols;
+ int playlist_pos;
struct m_rel_time play_start;
struct m_rel_time play_end;
struct m_rel_time play_length;
diff --git a/player/loadfile.c b/player/loadfile.c
index 9857d8a1a8..2115c72058 100644
--- a/player/loadfile.c
+++ b/player/loadfile.c
@@ -804,13 +804,20 @@ void prepare_playlist(struct MPContext *mpctx, struct playlist *pl)
{
struct MPOpts *opts = mpctx->opts;
+ pl->current = NULL;
+
+ if (opts->playlist_pos >= 0)
+ pl->current = playlist_entry_from_index(pl, opts->playlist_pos);
+
if (opts->shuffle)
playlist_shuffle(pl);
if (opts->merge_files)
merge_playlist_files(pl);
- pl->current = mp_check_playlist_resume(mpctx, pl);
+ if (!pl->current)
+ pl->current = mp_check_playlist_resume(mpctx, pl);
+
if (!pl->current)
pl->current = pl->first;
}