vlc/vlc-2.0 | branch: master | Hugo Beauzée-Luyssen <[email protected]> | Fri Feb 3 12:32:24 2012 +0100| [f426cd4b48c2eb2992072327caa51314430f4616] | committer: Jean-Baptiste Kempf
hls: Ensure streams are sorted by bandwidth. THe standard doesn't guaranty anything, but the code assumes it. (cherry picked from commit e2942aee746d12ea0bed999e8110bbbead3ca72d) Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.0.git/?a=commit;h=f426cd4b48c2eb2992072327caa51314430f4616 --- modules/stream_filter/httplive.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/modules/stream_filter/httplive.c b/modules/stream_filter/httplive.c index 79abe60..b9a2a7c 100644 --- a/modules/stream_filter/httplive.c +++ b/modules/stream_filter/httplive.c @@ -953,6 +953,13 @@ static int parse_Discontinuity(stream_t *s, hls_stream_t *hls, char *p_read) return VLC_SUCCESS; } +static int hls_CompareStreams( const void* a, const void* b ) +{ + hls_stream_t* stream_a = *(hls_stream_t**)a; + hls_stream_t* stream_b = *(hls_stream_t**)b; + return stream_a->bandwidth > stream_b->bandwidth; +} + /* The http://tools.ietf.org/html/draft-pantos-http-live-streaming-04#page-8 * document defines the following new tags: EXT-X-TARGETDURATION, * EXT-X-MEDIA-SEQUENCE, EXT-X-KEY, EXT-X-PROGRAM-DATE-TIME, EXT-X- @@ -1977,6 +1984,10 @@ static int Open(vlc_object_t *p_this) goto fail; } free(buffer); + /* HLS standard doesn't provide any guaranty about streams + being sorted by bandwidth, so we sort them */ + qsort( p_sys->hls_stream->pp_elems, p_sys->hls_stream->i_count, + sizeof( hls_stream_t* ), &hls_CompareStreams ); /* Choose first HLS stream to start with */ int current = p_sys->playback.stream = 0; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
