summaryrefslogtreecommitdiffstats
path: root/player/loadfile.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-02-05 22:14:17 +0100
committerwm4 <wm4@nowhere>2015-02-05 22:14:17 +0100
commitcfd3d5b52003a23376d02fd6cc581f46289badd2 (patch)
tree1b8ec65d39459b99bd8059f196d146ae04f33d0a /player/loadfile.c
parent3b5d7d1a1c664d15fa35992498ac4568ebc39e3b (diff)
downloadmpv-cfd3d5b52003a23376d02fd6cc581f46289badd2.tar.bz2
mpv-cfd3d5b52003a23376d02fd6cc581f46289badd2.tar.xz
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.
Diffstat (limited to 'player/loadfile.c')
-rw-r--r--player/loadfile.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/player/loadfile.c b/player/loadfile.c
index 5b67618611..6560fe7806 100644
--- a/player/loadfile.c
+++ b/player/loadfile.c
@@ -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);
}