<html><head></head><body>Hi,<br><br>Better register the m3u and m3u8 extensions on both adaptive and playlist demuxers, IMO<br><br><div class="gmail_quote">Le 29 septembre 2020 11:22:53 GMT+03:00, "Hugo Beauzée-Luyssen" <hugo@beauzee.fr> a écrit :<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">On Mon, Sep 28, 2020, at 5:09 PM, Rémi Denis-Courmont wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">vlc | branch: master | Rémi Denis-Courmont <remi@remlab.net> | Sun Sep <br>27 12:37:53 2020 +0300| [0b67edc914a9678ad5ab74e3bc0bd5d68f4da46b] | <br>committer: Rémi Denis-Courmont<br><br>m3u: remove HLS checks<br><br>The M3U parser has lower priority than the adaptive module. If we get an<br>M3U input here, it's either not HLS or HLS support is not installed.<br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;"><a href="http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0b67edc914a9678ad5ab74e3bc0bd5d68f4da46b">http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0b67edc914a9678ad5ab74e3bc0bd5d68f4da46b</a><br></blockquote><hr> modules/demux/playlist/m3u.c | 58 ++++----------------------------------------<br> 1 file changed, 5 insertions(+), 53 deletions(-)<br><br>diff --git a/modules/demux/playlist/m3u.c b/modules/demux/playlist/m3u.c<br>index 73156cf3ed..038e2077d1 100644<br>--- a/modules/demux/playlist/m3u.c<br>+++ b/modules/demux/playlist/m3u.c<br>@@ -52,24 +52,6 @@ static char *CheckUnicode (const char *str)<br>     return IsUTF8 (str) ? strdup (str): NULL;<br> }<br> <br>-static bool IsHLS(const unsigned char *buf, size_t length)<br>-{<br>-    static const char *const hlsexts[] =<br>-    {<br>-        "#EXT-X-MEDIA:",<br>-        "#EXT-X-VERSION:",<br>-        "#EXT-X-TARGETDURATION:",<br>-        "#EXT-X-MEDIA-SEQUENCE:",<br>-        "#EXT-X-STREAM-INF:",<br>-    };<br>-<br>-    for (size_t i = 0; i < ARRAY_SIZE(hlsexts); i++)<br>-        if (strnstr((const char *)buf, hlsexts[i], length) != NULL)<br>-            return true;<br>-<br>-    return false;<br>-}<br>-<br> /*****************************************************************************<br>  * Import_M3U: main import function<br>  *****************************************************************************/<br>@@ -101,41 +83,11 @@ int Import_M3U( vlc_object_t *p_this )<br>         i_peek -= offset;<br>     }<br> <br>-    /* File type: playlist, or not (HLS manifest or whatever else) */<br>-    char *type = stream_MimeType(p_stream->s);<br>-    bool match;<br>-<br>-    if (p_stream->obj.force)<br>-        match = true;<br>-    else<br>-    if (type != NULL<br>-     && !vlc_ascii_strcasecmp(type, "application/vnd.apple.mpegurl")) /* HLS */<br>-        match = false;<br>-    else<br>-    if (memcmp(p_peek, "#EXTM3U", 7 ) == 0<br>-     || (type != NULL<br>-      && (vlc_ascii_strcasecmp(type, "application/mpegurl") == 0<br>-       || vlc_ascii_strcasecmp(type, "application/x-mpegurl") == 0<br>-       || vlc_ascii_strcasecmp(type, "audio/mpegurl") == 0<br>-       || vlc_ascii_strcasecmp(type, "vnd.apple.mpegURL") == 0<br>-       || vlc_ascii_strcasecmp(type, "audio/x-mpegurl") == 0))<br>-     || stream_HasExtension(p_stream, ".m3u8")<br>-     || stream_HasExtension(p_stream, ".m3u"))<br>-        match = !IsHLS(p_peek, i_peek);<br>-    else<br>-    if (stream_HasExtension(p_stream, ".vlc")<br>-     || strncasecmp((const char *)p_peek, "RTSPtext", 8) == 0<br>-     || ContainsURL(p_peek, i_peek))<br>-        match = true;<br>-    else<br>-        match = false;<br>-<br>-    free(type);<br>-<br>-    if (!match)<br>-        return VLC_EGENERIC;<br>-<br>-    if (offset != 0 && vlc_stream_Seek(p_stream->s, offset))<br>+    if (!p_stream->obj.force<br>+     && memcmp(p_peek, "#EXTM3U", 7 ) != 0<br>+     && !stream_HasExtension(p_stream, ".vlc")<br>+     && strncasecmp((const char *)p_peek, "RTSPtext", 8) != 0<br>+     && !ContainsURL(p_peek, i_peek))<br>         return VLC_EGENERIC;<br> <br>     msg_Dbg( p_stream, "found valid M3U playlist" );<br><br></blockquote><br>Hi,<br><br>This appears to make m3u playlists not starting by '#EXTM3U' rejected by the playlist demux, while they were accepted before, most likely because .m3u extensions didn't require that directive.<br><br>Any objection about re-adding an explicit extension check in order to restore the previous behavior?<br></pre></blockquote></div><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.</body></html>