Commit 3217bc5b authored by Derk-Jan Hartman's avatar Derk-Jan Hartman

* detect rtsptext reference files as used by QuickTime and Real

parent e92a3924
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
#define TYPE_PLS 4 #define TYPE_PLS 4
#define TYPE_B4S 5 #define TYPE_B4S 5
#define TYPE_WMP 6 #define TYPE_WMP 6
#define TYPE_RTSP 7
struct demux_sys_t struct demux_sys_t
{ {
...@@ -134,6 +135,7 @@ static int Activate( vlc_object_t * p_this ) ...@@ -134,6 +135,7 @@ static int Activate( vlc_object_t * p_this )
&& strncasecmp( p_peek, "[Reference]", sizeof("[Reference]") - 1 ) && strncasecmp( p_peek, "[Reference]", sizeof("[Reference]") - 1 )
&& strncasecmp( p_peek, "<html>", sizeof("<html>") - 1 ) && strncasecmp( p_peek, "<html>", sizeof("<html>") - 1 )
&& strncasecmp( p_peek, "<asx", sizeof("<asx") - 1 ) && strncasecmp( p_peek, "<asx", sizeof("<asx") - 1 )
&& strncasecmp( p_peek, "rtsptext", sizeof("rtsptext") - 1 )
&& strncasecmp( p_peek, "<?xml", sizeof("<?xml") -1 ) ) && strncasecmp( p_peek, "<?xml", sizeof("<?xml") -1 ) )
{ {
p_peek++; p_peek++;
...@@ -159,6 +161,10 @@ static int Activate( vlc_object_t * p_this ) ...@@ -159,6 +161,10 @@ static int Activate( vlc_object_t * p_this )
{ {
i_type2 = TYPE_ASX; i_type2 = TYPE_ASX;
} }
else if( !strncasecmp( p_peek, "rtsptext", sizeof("rtsptext") -1 ) )
{
i_type2 = TYPE_RTSP;
}
#if 0 #if 0
else if( !strncasecmp( p_peek, "<?xml", sizeof("<?xml") -1 ) ) else if( !strncasecmp( p_peek, "<?xml", sizeof("<?xml") -1 ) )
{ {
...@@ -183,6 +189,7 @@ static int Activate( vlc_object_t * p_this ) ...@@ -183,6 +189,7 @@ static int Activate( vlc_object_t * p_this )
/* Allocate p_m3u */ /* Allocate p_m3u */
p_demux->p_sys = malloc( sizeof( demux_sys_t ) ); p_demux->p_sys = malloc( sizeof( demux_sys_t ) );
p_demux->p_sys->i_type = i_type; p_demux->p_sys->i_type = i_type;
msg_Dbg( p_this, "Playlist type: %d - %d", i_type, i_type2 );
return VLC_SUCCESS; return VLC_SUCCESS;
} }
...@@ -292,7 +299,7 @@ static int ParseLine( demux_t *p_demux, char *psz_line, char *psz_data, ...@@ -292,7 +299,7 @@ static int ParseLine( demux_t *p_demux, char *psz_line, char *psz_data,
} }
/* If we don't have a comment, the line is directly the URI */ /* If we don't have a comment, the line is directly the URI */
} }
else if ( p_m3u->i_type == TYPE_PLS ) else if( p_m3u->i_type == TYPE_PLS )
{ {
/* We are dealing with .pls files from shoutcast /* We are dealing with .pls files from shoutcast
* We are looking for lines like "File1=http://..." */ * We are looking for lines like "File1=http://..." */
...@@ -308,7 +315,7 @@ static int ParseLine( demux_t *p_demux, char *psz_line, char *psz_data, ...@@ -308,7 +315,7 @@ static int ParseLine( demux_t *p_demux, char *psz_line, char *psz_data,
return 0; return 0;
} }
} }
else if ( p_m3u->i_type == TYPE_WMP ) else if( p_m3u->i_type == TYPE_WMP )
{ {
/* We are dealing with some weird WMP stream playlist format /* We are dealing with some weird WMP stream playlist format
* Hurray for idiotic M$. Lines look like: "Ref1=http://..." */ * Hurray for idiotic M$. Lines look like: "Ref1=http://..." */
...@@ -328,7 +335,7 @@ static int ParseLine( demux_t *p_demux, char *psz_line, char *psz_data, ...@@ -328,7 +335,7 @@ static int ParseLine( demux_t *p_demux, char *psz_line, char *psz_data,
return 0; return 0;
} }
} }
else if ( p_m3u->i_type == TYPE_ASX ) else if( p_m3u->i_type == TYPE_ASX )
{ {
/* We are dealing with ASX files. /* We are dealing with ASX files.
* We are looking for "<ref href=" xml markups that * We are looking for "<ref href=" xml markups that
...@@ -368,7 +375,7 @@ static int ParseLine( demux_t *p_demux, char *psz_line, char *psz_data, ...@@ -368,7 +375,7 @@ static int ParseLine( demux_t *p_demux, char *psz_line, char *psz_data,
*psz_eol = '\0'; *psz_eol = '\0';
} }
else if ( p_m3u->i_type == TYPE_HTML ) else if( p_m3u->i_type == TYPE_HTML )
{ {
/* We are dealing with a html file with embedded /* We are dealing with a html file with embedded
* video. We are looking for "<param name="filename" * video. We are looking for "<param name="filename"
...@@ -401,7 +408,7 @@ static int ParseLine( demux_t *p_demux, char *psz_line, char *psz_data, ...@@ -401,7 +408,7 @@ static int ParseLine( demux_t *p_demux, char *psz_line, char *psz_data,
*psz_eol = '\0'; *psz_eol = '\0';
} }
else if ( p_m3u->i_type == TYPE_B4S ) else if( p_m3u->i_type == TYPE_B4S )
{ {
char *psz_eol; char *psz_eol;
...@@ -465,6 +472,13 @@ static int ParseLine( demux_t *p_demux, char *psz_line, char *psz_data, ...@@ -465,6 +472,13 @@ static int ParseLine( demux_t *p_demux, char *psz_line, char *psz_data,
/* Handle the XML special characters */ /* Handle the XML special characters */
XMLSpecialChars( psz_bol ); XMLSpecialChars( psz_bol );
} }
else if( p_m3u->i_type == TYPE_RTSP )
{
/* We are dealing with rtsptext reference files
* Ignore anthying that doesn't start with rtsp://..." */
if( strncasecmp( psz_bol, "rtsp://", sizeof("rtsp://") - 1 ) )
/* ignore */ return 0;
}
else else
{ {
msg_Warn( p_demux, "unknown file type" ); msg_Warn( p_demux, "unknown file type" );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment