vlc/vlc-2.0 | branch: master | Hugo Beauzée-Luyssen <[email protected]> | Thu Feb 2 16:24:59 2012 +0100| [e8ac4adac65da0ddc4eeddac35a66cfe586913c3] | committer: Jean-Baptiste Kempf
hls: Don't download the same segment twice when prefetching. This makes the playback start faster. (cherry picked from commit 1555e3ce33ff3a75c19fdae4af08d052aed734c8) Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.0.git/?a=commit;h=e8ac4adac65da0ddc4eeddac35a66cfe586913c3 --- modules/stream_filter/httplive.c | 22 ++++------------------ 1 files changed, 4 insertions(+), 18 deletions(-) diff --git a/modules/stream_filter/httplive.c b/modules/stream_filter/httplive.c index f573404..79abe60 100644 --- a/modules/stream_filter/httplive.c +++ b/modules/stream_filter/httplive.c @@ -1724,35 +1724,21 @@ static void* hls_Reload(void *p_this) static int Prefetch(stream_t *s, int *current) { stream_sys_t *p_sys = s->p_sys; - int stream; + int stream = *current; - /* Try to pick best matching stream */; -again: - stream = *current; - - hls_stream_t *hls = hls_Get(p_sys->hls_stream, *current); + hls_stream_t *hls = hls_Get(p_sys->hls_stream, stream); if (hls == NULL) return VLC_EGENERIC; - segment_t *segment = segment_GetSegment(hls, p_sys->download.segment); - if (segment == NULL ) - return VLC_EGENERIC; - - if (hls_DownloadSegmentData(s, hls, segment, current) != VLC_SUCCESS) - return VLC_EGENERIC; - - /* Found better bandwidth match, try again */ - if (*current != stream) - goto again; - /* Download first 2 segments of this HLS stream */ - stream = *current; for (int i = 0; i < 2; i++) { segment_t *segment = segment_GetSegment(hls, p_sys->download.segment); if (segment == NULL ) return VLC_EGENERIC; + /* It is useless to lock the segment here, as Prefetch is called before + download and playlit thread are started. */ if (segment->data) { p_sys->download.segment++; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
