[vlc-commits] hls: Don't download the same segment twice when prefetching.
Hugo Beauzée-Luyssen
git at videolan.org
Fri Feb 3 12:37:07 CET 2012
vlc | branch: master | Hugo Beauzée-Luyssen <beauze.h at gmail.com> | Thu Feb 2 16:24:59 2012 +0100| [1555e3ce33ff3a75c19fdae4af08d052aed734c8] | committer: Hugo Beauzée-Luyssen
hls: Don't download the same segment twice when prefetching.
This makes the playback start faster.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1555e3ce33ff3a75c19fdae4af08d052aed734c8
---
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++;
More information about the vlc-commits
mailing list