[vlc-devel] [PATCH 3/3] hls: Don't fail when a STREAM-INF is commented.

Hugo Beauzée-Luyssen beauze.h at gmail.com
Fri Jan 20 16:04:17 CET 2012


---
 modules/stream_filter/httplive.c |   44 ++++++++++++++++++++++---------------
 1 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/modules/stream_filter/httplive.c b/modules/stream_filter/httplive.c
index 126b71f..386cbbd 100644
--- a/modules/stream_filter/httplive.c
+++ b/modules/stream_filter/httplive.c
@@ -1040,27 +1040,35 @@ static int parse_M3U8(stream_t *s, vlc_array_t *streams, uint8_t *buffer, const
                     err = VLC_ENOMEM;
                 else
                 {
-                    hls_stream_t *hls = NULL;
-                    err = parse_StreamInformation(s, &streams, &hls, line, uri);
-                    free(uri);
-
-                    /* Download playlist file from server */
-                    uint8_t *buf = NULL;
-                    ssize_t len = read_M3U8_from_url(s, &hls->url, &buf);
-                    if (len < 0)
-                        err = VLC_EGENERIC;
-                    else
+                    if ( *uri == '#' )
                     {
-                        /* Parse HLS m3u8 content. */
-                        err = parse_M3U8(s, streams, buf, len);
-                        free(buf);
+                        msg_Info( s, "Skipping invalid stream-inf: %s", uri );
+                        free( uri );
                     }
-
-                    if (hls)
+                    else
                     {
-                        hls->version = version;
-                        if (!p_sys->b_live)
-                            hls->size = hls_GetStreamSize(hls); /* Stream size (approximate) */
+                        hls_stream_t *hls = NULL;
+                        err = parse_StreamInformation(s, &streams, &hls, line, uri);
+                        free(uri);
+
+                        /* Download playlist file from server */
+                        uint8_t *buf = NULL;
+                        ssize_t len = read_M3U8_from_url(s, &hls->url, &buf);
+                        if (len < 0)
+                            err = VLC_EGENERIC;
+                        else
+                        {
+                            /* Parse HLS m3u8 content. */
+                            err = parse_M3U8(s, streams, buf, len);
+                            free(buf);
+                        }
+
+                        if (hls)
+                        {
+                            hls->version = version;
+                            if (!p_sys->b_live)
+                                hls->size = hls_GetStreamSize(hls); /* Stream size (approximate) */
+                        }
                     }
                 }
                 p_begin = p_read;
-- 
1.7.8.4




More information about the vlc-devel mailing list