From d26ba961d05a2de165fa87c41d705ed3db00231b Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 16 Feb 2015 22:06:41 +0100 Subject: command: add rescan_external_files Requested. Hopefully will be useful for things that download and add external subtitles on demand. Or something. Closes #1586. --- player/command.c | 18 ++++++++++++++++++ player/core.h | 3 +++ player/loadfile.c | 7 +++---- 3 files changed, 24 insertions(+), 4 deletions(-) (limited to 'player') 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; -- cgit v1.2.3