diff options
author | wm4 <wm4@nowhere> | 2015-02-05 22:14:17 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-02-05 22:14:17 +0100 |
commit | cfd3d5b52003a23376d02fd6cc581f46289badd2 (patch) | |
tree | 1b8ec65d39459b99bd8059f196d146ae04f33d0a /player/loadfile.c | |
parent | 3b5d7d1a1c664d15fa35992498ac4568ebc39e3b (diff) | |
download | mpv-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.c | 12 |
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); } |