[vlc-devel] [PATCH 2/2] m3u: Check Content-type if available.

Konstantin Pavlov thresh at videolan.org
Wed May 30 10:39:38 CEST 2012


---
 modules/demux/playlist/m3u.c |   21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/modules/demux/playlist/m3u.c b/modules/demux/playlist/m3u.c
index f3ba611..d805618 100644
--- a/modules/demux/playlist/m3u.c
+++ b/modules/demux/playlist/m3u.c
@@ -48,6 +48,7 @@ struct demux_sys_t
 static int Demux( demux_t *p_demux);
 static void parseEXTINF( char *psz_string, char **ppsz_artist, char **ppsz_name, int *pi_duration );
 static bool ContainsURL( demux_t *p_demux );
+static bool CheckContentType( stream_t * p_stream, const char * psz_ctype );
 
 static char *GuessEncoding (const char *str)
 {
@@ -72,14 +73,16 @@ int Import_M3U( vlc_object_t *p_this )
     if( POKE( p_peek, "RTSPtext", 8 ) /* QuickTime */
      || POKE( p_peek, "\xef\xbb\xbf" "#EXTM3U", 10) /* BOM at start */
      || demux_IsPathExtension( p_demux, ".m3u8" )
-     || demux_IsForced( p_demux, "m3u8" ) )
+     || demux_IsForced( p_demux, "m3u8" )
+     || CheckContentType( p_demux->s, "application/vnd.apple.mpegurl" ) )
         pf_dup = CheckUnicode; /* UTF-8 */
     else
     if( POKE( p_peek, "#EXTM3U", 7 )
      || demux_IsPathExtension( p_demux, ".m3u" )
      || demux_IsPathExtension( p_demux, ".vlc" )
      || demux_IsForced( p_demux, "m3u" )
-     || ContainsURL( p_demux ) )
+     || ContainsURL( p_demux )
+     || CheckContentType( p_demux->s, "audio/x-mpegurl") )
         pf_dup = GuessEncoding;
     else
         return VLC_EGENERIC;
@@ -125,6 +128,20 @@ static bool ContainsURL( demux_t *p_demux )
     return false;
 }
 
+static bool CheckContentType( stream_t * p_stream, const char * psz_ctype )
+{
+    char *psz_check = stream_ContentType( p_stream );
+    if( !psz_check ) return false;
+
+    if( !strncasecmp( psz_check, psz_ctype, strlen( psz_check ) ) )
+    {
+        free( psz_check );
+        return true;
+    }
+    free( psz_check );
+    return false;
+}
+
 /*****************************************************************************
  * Deactivate: frees unused data
  *****************************************************************************/
-- 
1.7.9.7




More information about the vlc-devel mailing list