diff options
author | wm4 <wm4@nowhere> | 2015-02-16 22:06:41 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-02-16 22:08:16 +0100 |
commit | d26ba961d05a2de165fa87c41d705ed3db00231b (patch) | |
tree | eb3dfc217322ca600decad7a6bf7a051c6d521f5 /player | |
parent | 37183532ae2b3b919540a31f56d0089cd16652d9 (diff) | |
download | mpv-d26ba961d05a2de165fa87c41d705ed3db00231b.tar.bz2 mpv-d26ba961d05a2de165fa87c41d705ed3db00231b.tar.xz |
command: add rescan_external_files
Requested.
Hopefully will be useful for things that download and add external
subtitles on demand. Or something.
Closes #1586.
Diffstat (limited to 'player')
-rw-r--r-- | player/command.c | 18 | ||||
-rw-r--r-- | player/core.h | 3 | ||||
-rw-r--r-- | player/loadfile.c | 7 |
3 files changed, 24 insertions, 4 deletions
diff --git a/player/command.c b/player/command.c index 484b8d7aad..e2a69fe808 100644 --- a/player/command.c +++ b/player/command.c @@ -4636,6 +4636,24 @@ int run_command(MPContext *mpctx, mp_cmd_t *cmd) return -1; } + case MP_CMD_RESCAN_EXTERNAL_FILES: { + if (!mpctx->playing) + return -1; + autoload_external_files(mpctx); + if (cmd->args[0].v.i) { + // somewhat fuzzy and not ideal + struct track *a = select_track(mpctx, STREAM_AUDIO, opts->audio_id, + opts->audio_id_ff, opts->audio_lang); + if (a && a->is_external) + mp_switch_track(mpctx, STREAM_AUDIO, a); + struct track *s = select_track(mpctx, STREAM_SUB, opts->sub_id, + opts->sub_id_ff, opts->sub_lang); + if (s && s->is_external) + mp_switch_track(mpctx, STREAM_SUB, s); + } + break; + } + case MP_CMD_SCREENSHOT: screenshot_request(mpctx, cmd->args[0].v.i, cmd->args[1].v.i, msg_osd); break; diff --git a/player/core.h b/player/core.h index d6475eb385..5b69541d24 100644 --- a/player/core.h +++ b/player/core.h @@ -394,6 +394,9 @@ void mp_play_files(struct MPContext *mpctx); void update_demuxer_properties(struct MPContext *mpctx); void reselect_demux_streams(struct MPContext *mpctx); void prepare_playlist(struct MPContext *mpctx, struct playlist *pl); +void autoload_external_files(struct MPContext *mpctx); +struct track *select_track(struct MPContext *mpctx, enum stream_type type, + int tid, int ffid, char **langs); // main.c int mpv_main(int argc, char *argv[]); diff --git a/player/loadfile.c b/player/loadfile.c index 472304d5f0..9148050c6a 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -441,9 +441,8 @@ static bool compare_track(struct track *t1, struct track *t2, char **langs, } return t1->user_tid <= t2->user_tid; } -static struct track *select_track(struct MPContext *mpctx, - enum stream_type type, int tid, int ffid, - char **langs) +struct track *select_track(struct MPContext *mpctx, enum stream_type type, + int tid, int ffid, char **langs) { if (ffid != -1) tid = -1; // prefer selecting ffid @@ -727,7 +726,7 @@ static void open_subtitles_from_options(struct MPContext *mpctx) mp_add_external_file(mpctx, opts->sub_name[i], STREAM_SUB); } -static void autoload_external_files(struct MPContext *mpctx) +void autoload_external_files(struct MPContext *mpctx) { if (mpctx->opts->sub_auto < 0 && mpctx->opts->audiofile_auto < 0) return; |