player: add a --loop-file option

Unlike --loop, loops a file instead of the playlist.
This commit is contained in:
wm4 2014-04-17 23:55:04 +02:00
parent 5059039c95
commit 1b398e99f7
5 changed files with 20 additions and 0 deletions

View File

@ -1331,6 +1331,12 @@ OPTIONS
disables looping. If several files are specified on command line, the
entire playlist is looped.
``--loop-file``
Loop a single file. The difference to ``--loop=inf`` is that this doesn't
loop the playlist, just the file itself. If the playlist contains only a
single file, the difference between the two option is that this option
performs a seek on loop, instead of reloading the file.
``--lua=<filename>``
Load a Lua script. You can load multiple scripts by separating them with
commas (``,``).

View File

@ -560,6 +560,7 @@ const m_option_t mp_opts[] = {
OPT_CHOICE_OR_INT("loop", loop_times, M_OPT_GLOBAL, 2, 10000,
({"no", -1}, {"1", -1},
{"inf", 0})),
OPT_FLAG("loop-file", loop_file, 0),
OPT_FLAG("resume-playback", position_resume, 0),
OPT_FLAG("save-position-on-quit", position_save_on_quit, 0),

View File

@ -100,6 +100,7 @@ typedef struct MPOpts {
char *stream_capture;
char *stream_dump;
int loop_times;
int loop_file;
int shuffle;
int ordered_chapters;
char *ordered_chapters_files;

View File

@ -2205,6 +2205,7 @@ static const m_option_t mp_properties[] = {
M_OPTION_PROPERTY("osd-level"),
M_OPTION_PROPERTY_CUSTOM("osd-scale", property_osd_helper),
M_OPTION_PROPERTY("loop"),
M_OPTION_PROPERTY("loop-file"),
M_OPTION_PROPERTY_CUSTOM("speed", mp_property_playback_speed),
{ "filename", mp_property_filename, CONF_TYPE_STRING,
0, 0, 0, NULL },

View File

@ -825,6 +825,15 @@ static void handle_sstep(struct MPContext *mpctx)
}
}
static void handle_loop_file(struct MPContext *mpctx)
{
struct MPOpts *opts = mpctx->opts;
if (opts->loop_file && mpctx->stop_play == AT_END_OF_FILE) {
set_osd_function(mpctx, OSD_FFW);
queue_seek(mpctx, MPSEEK_ABSOLUTE, get_start_time(mpctx), 0, true);
}
}
static void handle_keep_open(struct MPContext *mpctx)
{
struct MPOpts *opts = mpctx->opts;
@ -1282,6 +1291,8 @@ void run_playloop(struct MPContext *mpctx)
handle_sstep(mpctx);
handle_loop_file(mpctx);
handle_keep_open(mpctx);
handle_force_window(mpctx, false);