diff options
author | wm4 <wm4@nowhere> | 2019-10-08 23:55:05 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2019-10-08 23:55:05 +0200 |
commit | 5cbbd250908099b94cfaf7853adf8d5a5bb346e1 (patch) | |
tree | 9f9b50db22e1c5beab381c381458b4589d24d4fe /demux/demux_edl.c | |
parent | 68bbc55eda2de7d54ebbad394b8eb6994f3fdeef (diff) | |
download | mpv-5cbbd250908099b94cfaf7853adf8d5a5bb346e1.tar.bz2 mpv-5cbbd250908099b94cfaf7853adf8d5a5bb346e1.tar.xz |
demux_timeline, demux_edl: correctly enable cache in pseudo-DASH mode
In pseudo-DASH mode, we may have no real streams opened until the
demuxer layer is fully loaded and playback actually starts. The only
hint that the stream is from network is, at that point, the init
segment, which is only opened as stream, and then separately as demuxer
(which is dumb but happened to fit the internal architecture better).
So just propagate the flags from the init segment stream. Seems like an
annoyance, but doesn't hurt that much I guess. (Until someone gets the
idea to pass the init segment data inline or so, but nothing does that.)
The sample link in the linked issue will probably soon switch to another
format, because that service always does this after recent uploads or
so.
Fixes: #7038
Diffstat (limited to 'demux/demux_edl.c')
-rw-r--r-- | demux/demux_edl.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/demux/demux_edl.c b/demux/demux_edl.c index 7016df3558..62e6c50070 100644 --- a/demux/demux_edl.c +++ b/demux/demux_edl.c @@ -270,8 +270,11 @@ static struct timeline_par *build_timeline(struct timeline *root, MP_VERBOSE(root, "Opening init fragment...\n"); stream_t *s = stream_create(parts->init_fragment_url, STREAM_READ, root->cancel, root->global); - if (s) + if (s) { + root->is_network |= s->is_network; + root->is_streaming |= s->streaming; tl->init_fragment = stream_read_complete(s, tl, 1000000); + } free_stream(s); if (!tl->init_fragment.len) { MP_ERR(root, "Could not read init fragment.\n"); |