mirror of https://github.com/mpv-player/mpv
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.
This commit is contained in:
parent
cf8855cd2e
commit
34cf655ddd
|
@ -22,6 +22,8 @@ Interface changes
|
||||||
--- mpv 0.29.0 ---
|
--- mpv 0.29.0 ---
|
||||||
- drop deprecated --videotoolbox-format, --ff-aid, --ff-vid, --ff-sid,
|
- drop deprecated --videotoolbox-format, --ff-aid, --ff-vid, --ff-sid,
|
||||||
--ad-spdif-dtshd, --softvol options
|
--ad-spdif-dtshd, --softvol options
|
||||||
|
- fix --external-files: strictly never select any tracks from them, unless
|
||||||
|
explicitly selected (this may or may not be expected)
|
||||||
--- mpv 0.28.0 ---
|
--- mpv 0.28.0 ---
|
||||||
- rename --hwdec=mediacodec option to mediacodec-copy, to reflect
|
- rename --hwdec=mediacodec option to mediacodec-copy, to reflect
|
||||||
conventions followed by other hardware video decoding APIs
|
conventions followed by other hardware video decoding APIs
|
||||||
|
|
|
@ -5376,7 +5376,8 @@ Miscellaneous
|
||||||
|
|
||||||
Unlike ``--sub-files`` and ``--audio-files``, this includes all tracks, and
|
Unlike ``--sub-files`` and ``--audio-files``, this includes all tracks, and
|
||||||
does not cause default stream selection over the "proper" file. This makes
|
does not cause default stream selection over the "proper" file. This makes
|
||||||
it slightly less intrusive.
|
it slightly less intrusive. (In mpv 0.28.0 and before, this was not quite
|
||||||
|
strictly enforced.)
|
||||||
|
|
||||||
This is a list option. See `List Options`_ for details.
|
This is a list option. See `List Options`_ for details.
|
||||||
|
|
||||||
|
|
|
@ -141,6 +141,7 @@ struct track {
|
||||||
// If this track is from an external file (e.g. subtitle file).
|
// If this track is from an external file (e.g. subtitle file).
|
||||||
bool is_external;
|
bool is_external;
|
||||||
bool no_default; // pretend it's not external for auto-selection
|
bool no_default; // pretend it's not external for auto-selection
|
||||||
|
bool no_auto_select;
|
||||||
char *external_filename;
|
char *external_filename;
|
||||||
bool auto_loaded;
|
bool auto_loaded;
|
||||||
|
|
||||||
|
|
|
@ -310,6 +310,7 @@ static int match_lang(char **langs, char *lang)
|
||||||
* Sort tracks based on the following criteria, and pick the first:
|
* Sort tracks based on the following criteria, and pick the first:
|
||||||
* 0a) track matches ff-index (always wins)
|
* 0a) track matches ff-index (always wins)
|
||||||
* 0b) track matches tid (almost always wins)
|
* 0b) track matches tid (almost always wins)
|
||||||
|
* 0c) track is not from --external-file
|
||||||
* 1) track is external (no_default cancels this)
|
* 1) track is external (no_default cancels this)
|
||||||
* 1b) track was passed explicitly (is not an auto-loaded subtitle)
|
* 1b) track was passed explicitly (is not an auto-loaded subtitle)
|
||||||
* 2) earlier match in lang list
|
* 2) earlier match in lang list
|
||||||
|
@ -371,6 +372,8 @@ struct track *select_default_track(struct MPContext *mpctx, int order,
|
||||||
continue;
|
continue;
|
||||||
if (track->user_tid == tid)
|
if (track->user_tid == tid)
|
||||||
return track;
|
return track;
|
||||||
|
if (track->no_auto_select)
|
||||||
|
continue;
|
||||||
if (!pick || compare_track(track, pick, langs, mpctx->opts))
|
if (!pick || compare_track(track, pick, langs, mpctx->opts))
|
||||||
pick = track;
|
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->title = talloc_strdup(t, mp_basename(disp_filename));
|
||||||
t->external_filename = talloc_strdup(t, filename);
|
t->external_filename = talloc_strdup(t, filename);
|
||||||
t->no_default = sh->type != filter;
|
t->no_default = sh->type != filter;
|
||||||
|
t->no_auto_select = filter == STREAM_TYPE_COUNT;
|
||||||
if (!first && (filter == STREAM_TYPE_COUNT || sh->type == filter))
|
if (!first && (filter == STREAM_TYPE_COUNT || sh->type == filter))
|
||||||
first = t;
|
first = t;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue