mirror of
https://github.com/mpv-player/mpv
synced 2025-03-08 23:27:33 +00:00
player: do not autoload audio with audio files, enable autoloading
Autoload external audio files only if there's at least a video track (which is not coverart pseudo-video). Enable external audio file autoloading by default. Now that we actively avoid doing stupid things like loading an external audio file for an audio-only file, this should be fine. Additionally, don't autoload subtitles if a subtitle is played. Although you currently can't play subtitles without audio or video, it's disturbing and stupid that the player might load subtitle files with different extension and then fail.
This commit is contained in:
parent
3b5d7d1a1c
commit
cfd3d5b520
@ -1041,11 +1041,11 @@ Audio
|
||||
|
||||
``--audio-file-auto=<no|exact|fuzzy|all>``, ``--no-audio-file-auto``
|
||||
Load additional audio files matching the video filename. The parameter
|
||||
specifies how external audio files are matched. This is disabled by
|
||||
specifies how external audio files are matched. ``exact`` is enabled by
|
||||
default.
|
||||
|
||||
:no: Don't automatically load external audio files (default).
|
||||
:exact: Load the media filename with audio file extension.
|
||||
:no: Don't automatically load external audio files.
|
||||
:exact: Load the media filename with audio file extension (default).
|
||||
:fuzzy: Load all audio files containing media filename.
|
||||
:all: Load all audio files in the current directory.
|
||||
|
||||
|
@ -764,7 +764,7 @@ const struct MPOpts mp_default_opts = {
|
||||
.movie_aspect = -1.,
|
||||
.field_dominance = -1,
|
||||
.sub_auto = 0,
|
||||
.audiofile_auto = -1,
|
||||
.audiofile_auto = 0,
|
||||
.osd_bar_visible = 1,
|
||||
#if HAVE_LIBASS
|
||||
.ass_enabled = 1,
|
||||
|
@ -737,6 +737,13 @@ static void autoload_external_files(struct MPContext *mpctx)
|
||||
}
|
||||
struct subfn *list = find_external_files(mpctx->global, base_filename);
|
||||
talloc_steal(tmp, list);
|
||||
|
||||
int sc[STREAM_TYPE_COUNT] = {0};
|
||||
for (int n = 0; n < mpctx->num_tracks; n++) {
|
||||
if (!mpctx->tracks[n]->attached_picture)
|
||||
sc[mpctx->tracks[n]->type]++;
|
||||
}
|
||||
|
||||
for (int i = 0; list && list[i].fname; i++) {
|
||||
char *filename = list[i].fname;
|
||||
char *lang = list[i].lang;
|
||||
@ -744,6 +751,10 @@ static void autoload_external_files(struct MPContext *mpctx)
|
||||
if (strcmp(mpctx->sources[n]->stream->url, filename) == 0)
|
||||
goto skip;
|
||||
}
|
||||
if (list[i].type == STREAM_SUB && !sc[STREAM_VIDEO] && !sc[STREAM_AUDIO])
|
||||
goto skip;
|
||||
if (list[i].type == STREAM_AUDIO && !sc[STREAM_VIDEO])
|
||||
goto skip;
|
||||
struct track *track = mp_add_external_file(mpctx, filename, list[i].type);
|
||||
if (track) {
|
||||
track->auto_loaded = true;
|
||||
@ -752,6 +763,7 @@ static void autoload_external_files(struct MPContext *mpctx)
|
||||
}
|
||||
skip:;
|
||||
}
|
||||
|
||||
talloc_free(tmp);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user