summaryrefslogtreecommitdiffstats
path: root/player/loadfile.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2018-01-06 17:49:37 +0100
committerKevin Mitchell <kevmitch@gmail.com>2018-01-06 14:42:22 -0800
commit34cf655ddd99a67af0d1899499c14c4617236352 (patch)
treeee11205f2d8806474208e0d67f3c4af0ea6d5f01 /player/loadfile.c
parentcf8855cd2efb2828441dde19a713a34af20b4bc5 (diff)
downloadmpv-34cf655ddd99a67af0d1899499c14c4617236352.tar.bz2
mpv-34cf655ddd99a67af0d1899499c14c4617236352.tar.xz
player: strictly never autoselect tracks from --external-files
Before this commit, some autoselection of tracks coming from files loaded with --external-files was still done. This commit removes all of it, and the only way to select a track is via the explicit stream selection options like --vid/--sid/--aid. I think this was always the original intention. The change could in theory still unintentionally surprise some users, so add a changelog entry. This does not affect --audio-file/--sub-file, even if these contain mismatching track types. E.g. if audio files passed to --audio-file contain subtitles, these should still be selected. Past feature requests indicate that users want this.
Diffstat (limited to 'player/loadfile.c')
-rw-r--r--player/loadfile.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/player/loadfile.c b/player/loadfile.c
index c54204db0b..daea9149e7 100644
--- a/player/loadfile.c
+++ b/player/loadfile.c
@@ -310,6 +310,7 @@ static int match_lang(char **langs, char *lang)
* Sort tracks based on the following criteria, and pick the first:
* 0a) track matches ff-index (always wins)
* 0b) track matches tid (almost always wins)
+ * 0c) track is not from --external-file
* 1) track is external (no_default cancels this)
* 1b) track was passed explicitly (is not an auto-loaded subtitle)
* 2) earlier match in lang list
@@ -371,6 +372,8 @@ struct track *select_default_track(struct MPContext *mpctx, int order,
continue;
if (track->user_tid == tid)
return track;
+ if (track->no_auto_select)
+ continue;
if (!pick || compare_track(track, pick, langs, mpctx->opts))
pick = track;
}
@@ -624,6 +627,7 @@ struct track *mp_add_external_file(struct MPContext *mpctx, char *filename,
t->title = talloc_strdup(t, mp_basename(disp_filename));
t->external_filename = talloc_strdup(t, filename);
t->no_default = sh->type != filter;
+ t->no_auto_select = filter == STREAM_TYPE_COUNT;
if (!first && (filter == STREAM_TYPE_COUNT || sh->type == filter))
first = t;
}