summaryrefslogtreecommitdiffstats
path: root/player/loadfile.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-02-18 21:10:43 +0100
committerwm4 <wm4@nowhere>2015-02-18 21:12:57 +0100
commit102946ee0358924f22477435114785bd1f901ade (patch)
tree041231408c3ae32bee50902f700d68dd4fea55eb /player/loadfile.c
parent37a0c9140ad85be8d184b626759f8d24ca69aa83 (diff)
downloadmpv-102946ee0358924f22477435114785bd1f901ade.tar.bz2
mpv-102946ee0358924f22477435114785bd1f901ade.tar.xz
player: enable cache and demuxer thread for subtitles too
Includes some logic for not starting the demuxer thread for fully read subtitles. (Well, the cache will still waste _lots_ of resources, and the cache always has to be created, because we don't know whether it'll be needed _before_ opening the file.) See #1597.
Diffstat (limited to 'player/loadfile.c')
-rw-r--r--player/loadfile.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/player/loadfile.c b/player/loadfile.c
index aba8b6c7df..bbfff46fe2 100644
--- a/player/loadfile.c
+++ b/player/loadfile.c
@@ -291,8 +291,8 @@ static void enable_demux_thread(struct MPContext *mpctx)
demux_start_thread(mpctx->demuxer);
for (int n = 0; n < mpctx->num_tracks; n++) {
struct track *track = mpctx->tracks[n];
- if (track->is_external && track->stream &&
- track->stream->type != STREAM_SUB)
+ if (track->is_external && track->stream && !track->preloaded &&
+ !track->demuxer->fully_read)
{
demux_set_wakeup_cb(track->demuxer, wakeup_demux, mpctx);
demux_start_thread(track->demuxer);
@@ -689,6 +689,7 @@ struct track *mp_add_external_file(struct MPContext *mpctx, char *filename,
struct stream *stream = stream_open(filename, mpctx->global);
if (!stream)
goto err_out;
+ stream_enable_cache(&stream, &opts->stream_cache);
char *demuxer_name = NULL;
switch (filter) {
@@ -697,7 +698,6 @@ struct track *mp_add_external_file(struct MPContext *mpctx, char *filename,
break;
case STREAM_AUDIO:
demuxer_name = opts->audio_demuxer_name;
- stream_enable_cache(&stream, &opts->stream_cache);
break;
}
@@ -731,6 +731,8 @@ struct track *mp_add_external_file(struct MPContext *mpctx, char *filename,
}
MP_TARRAY_APPEND(NULL, mpctx->sources, mpctx->num_sources, demuxer);
+ if (mpctx->playback_initialized)
+ enable_demux_thread(mpctx);
return first;
err_out: