[vlc-commits] commit: stream_filter/httplive.c: select stream with lowest bandwidth to start playback. (Jean-Paul Saman )
git at videolan.org
git at videolan.org
Fri Nov 26 16:55:14 CET 2010
vlc | branch: master | Jean-Paul Saman <jean-paul.saman at m2x.nl> | Fri Nov 26 15:34:14 2010 +0100| [d20cd47813b732bba92eb3d2663f13aa89108576] | committer: Jean-Paul Saman
stream_filter/httplive.c: select stream with lowest bandwidth to start playback.
Start playback with the lowest bandwidth stream.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d20cd47813b732bba92eb3d2663f13aa89108576
---
modules/stream_filter/httplive.c | 25 ++++++++++++++++++++++++-
1 files changed, 24 insertions(+), 1 deletions(-)
diff --git a/modules/stream_filter/httplive.c b/modules/stream_filter/httplive.c
index 39d9fc2..0ff5ede 100644
--- a/modules/stream_filter/httplive.c
+++ b/modules/stream_filter/httplive.c
@@ -232,6 +232,29 @@ static hls_stream_t *hls_GetLast(vlc_array_t *hls_stream)
return (hls_stream_t *) hls_Get(hls_stream, count);
}
+static int hls_LowestBandwidthStream(vlc_array_t *hls_stream)
+{
+ int count = vlc_array_count(hls_stream);
+ int i_lowest = 0;
+ uint64_t lowest = 0;
+
+ for (int i = 0; i < count; i++)
+ {
+ hls_stream_t *hls = (hls_stream_t *) vlc_array_item_at_index(hls_stream, i);
+ if (lowest == 0)
+ {
+ lowest = hls->bandwidth;
+ i_lowest = i;
+ }
+ else if (hls->bandwidth < lowest)
+ {
+ lowest = hls->bandwidth;
+ i_lowest = i;
+ }
+ }
+ return i_lowest;
+}
+
/* Segment */
static segment_t *segment_New(hls_stream_t* hls, int duration, char *uri)
{
@@ -1158,7 +1181,7 @@ static int Open(vlc_object_t *p_this)
}
/* */
- int current = p_sys->current = 0;
+ int current = p_sys->current = hls_LowestBandwidthStream(p_sys->hls_stream);
p_sys->segment = 0;
if (Prefetch(s, ¤t) != VLC_SUCCESS)
More information about the vlc-commits
mailing list