Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-2-2
Commits
8f81a57b
Commit
8f81a57b
authored
Apr 23, 2006
by
Antoine Cellerier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support for Shoutcast TV. vp3 streams segfault, vp5 and 6 don't play :)
parent
aa98ec01
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
95 additions
and
9 deletions
+95
-9
modules/demux/playlist/shoutcast.c
modules/demux/playlist/shoutcast.c
+57
-4
modules/services_discovery/shout.c
modules/services_discovery/shout.c
+38
-5
No files found.
modules/demux/playlist/shoutcast.c
View file @
8f81a57b
...
@@ -48,6 +48,7 @@ struct demux_sys_t
...
@@ -48,6 +48,7 @@ struct demux_sys_t
/* duplicate from modules/services_discovery/shout.c */
/* duplicate from modules/services_discovery/shout.c */
#define SHOUTCAST_BASE_URL "http/shout-winamp://www.shoutcast.com/sbin/newxml.phtml"
#define SHOUTCAST_BASE_URL "http/shout-winamp://www.shoutcast.com/sbin/newxml.phtml"
#define SHOUTCAST_TUNEIN_BASE_URL "http://www.shoutcast.com"
#define SHOUTCAST_TUNEIN_BASE_URL "http://www.shoutcast.com"
#define SHOUTCAST_TV_TUNEIN_URL "http://www.shoutcast.com/sbin/tunein-tvstation.pls?id="
/*****************************************************************************
/*****************************************************************************
* Local prototypes
* Local prototypes
...
@@ -303,7 +304,8 @@ static int DemuxGenre( demux_t *p_demux )
...
@@ -303,7 +304,8 @@ static int DemuxGenre( demux_t *p_demux )
return
0
;
return
0
;
}
}
/* <stationlist>
/* radio stations:
* <stationlist>
* <tunein base="/sbin/tunein-station.pls"></tunein>
* <tunein base="/sbin/tunein-station.pls"></tunein>
* <station name="the name"
* <station name="the name"
* mt="mime type"
* mt="mime type"
...
@@ -313,6 +315,19 @@ static int DemuxGenre( demux_t *p_demux )
...
@@ -313,6 +315,19 @@ static int DemuxGenre( demux_t *p_demux )
* ct="current track name/author/..."
* ct="current track name/author/..."
* lc="listener count"></station>
* lc="listener count"></station>
* </stationlist>
* </stationlist>
*
* TV stations:
* <stationlist>
* <tunein base="/sbin/tunein-station.pls"></tunein>
* <station name="the name"
* id="the id"
* br="bit rate"
* rt="rating"
* load="server load ?"
* ct="current track name/author/..."
* genre="A big genre string"
* lc="listener count"></station>
* </stationlist>
**/
**/
static
int
DemuxStation
(
demux_t
*
p_demux
)
static
int
DemuxStation
(
demux_t
*
p_demux
)
{
{
...
@@ -328,6 +343,10 @@ static int DemuxStation( demux_t *p_demux )
...
@@ -328,6 +343,10 @@ static int DemuxStation( demux_t *p_demux )
char
*
psz_ct
=
NULL
;
/* current track */
char
*
psz_ct
=
NULL
;
/* current track */
char
*
psz_lc
=
NULL
;
/* listener count */
char
*
psz_lc
=
NULL
;
/* listener count */
/* If these are set then it's *not* a radio but a TV */
char
*
psz_rt
=
NULL
;
/* rating for shoutcast TV */
char
*
psz_load
=
NULL
;
/* load for shoutcast TV */
char
*
psz_eltname
=
NULL
;
/* tag name */
char
*
psz_eltname
=
NULL
;
/* tag name */
while
(
xml_ReaderRead
(
p_sys
->
p_xml_reader
)
==
1
)
while
(
xml_ReaderRead
(
p_sys
->
p_xml_reader
)
==
1
)
...
@@ -387,6 +406,8 @@ static int DemuxStation( demux_t *p_demux )
...
@@ -387,6 +406,8 @@ static int DemuxStation( demux_t *p_demux )
else
GET_VALUE
(
genre
)
else
GET_VALUE
(
genre
)
else
GET_VALUE
(
ct
)
else
GET_VALUE
(
ct
)
else
GET_VALUE
(
lc
)
else
GET_VALUE
(
lc
)
else
GET_VALUE
(
rt
)
else
GET_VALUE
(
load
)
else
else
{
{
msg_Warn
(
p_demux
,
msg_Warn
(
p_demux
,
...
@@ -409,14 +430,29 @@ static int DemuxStation( demux_t *p_demux )
...
@@ -409,14 +430,29 @@ static int DemuxStation( demux_t *p_demux )
free
(
psz_eltname
);
free
(
psz_eltname
);
psz_eltname
=
xml_ReaderName
(
p_sys
->
p_xml_reader
);
psz_eltname
=
xml_ReaderName
(
p_sys
->
p_xml_reader
);
if
(
!
psz_eltname
)
return
-
1
;
if
(
!
psz_eltname
)
return
-
1
;
if
(
!
strcmp
(
psz_eltname
,
"station"
)
&&
psz_base
)
if
(
!
strcmp
(
psz_eltname
,
"station"
)
&&
(
psz_base
||
(
psz_rt
&&
psz_load
)
)
)
{
{
playlist_item_t
*
p_item
;
playlist_item_t
*
p_item
;
char
*
psz_mrl
=
malloc
(
strlen
(
SHOUTCAST_TUNEIN_BASE_URL
)
char
*
psz_mrl
=
NULL
;
if
(
psz_rt
||
psz_load
)
{
/* tv */
psz_mrl
=
malloc
(
strlen
(
SHOUTCAST_TV_TUNEIN_URL
)
+
strlen
(
psz_id
)
+
1
);
sprintf
(
psz_mrl
,
SHOUTCAST_TV_TUNEIN_URL
"%s"
,
psz_id
);
}
else
{
/* radio */
psz_mrl
=
malloc
(
strlen
(
SHOUTCAST_TUNEIN_BASE_URL
)
+
strlen
(
psz_base
)
+
strlen
(
"?id="
)
+
strlen
(
psz_base
)
+
strlen
(
"?id="
)
+
strlen
(
psz_id
)
+
1
);
+
strlen
(
psz_id
)
+
1
);
sprintf
(
psz_mrl
,
SHOUTCAST_TUNEIN_BASE_URL
"%s?id=%s"
,
sprintf
(
psz_mrl
,
SHOUTCAST_TUNEIN_BASE_URL
"%s?id=%s"
,
psz_base
,
psz_id
);
psz_base
,
psz_id
);
}
msg_Warn
(
p_demux
,
"%s"
,
psz_mrl
);
p_item
=
playlist_ItemNew
(
p_sys
->
p_playlist
,
psz_mrl
,
p_item
=
playlist_ItemNew
(
p_sys
->
p_playlist
,
psz_mrl
,
psz_name
);
psz_name
);
free
(
psz_mrl
);
free
(
psz_mrl
);
...
@@ -461,6 +497,22 @@ static int DemuxStation( demux_t *p_demux )
...
@@ -461,6 +497,22 @@ static int DemuxStation( demux_t *p_demux )
"%s"
,
"%s"
,
psz_lc
);
psz_lc
);
}
}
else
if
(
psz_rt
)
{
vlc_input_item_AddInfo
(
&
p_item
->
input
,
_
(
"Shoutcast"
),
_
(
"Rating"
),
"%s"
,
psz_rt
);
}
else
if
(
psz_load
)
{
vlc_input_item_AddInfo
(
&
p_item
->
input
,
_
(
"Shoutcast"
),
_
(
"Load"
),
"%s"
,
psz_load
);
}
playlist_NodeAddItem
(
p_sys
->
p_playlist
,
p_item
,
playlist_NodeAddItem
(
p_sys
->
p_playlist
,
p_item
,
p_sys
->
p_current
->
pp_parents
[
0
]
->
i_view
,
p_sys
->
p_current
->
pp_parents
[
0
]
->
i_view
,
...
@@ -482,6 +534,7 @@ static int DemuxStation( demux_t *p_demux )
...
@@ -482,6 +534,7 @@ static int DemuxStation( demux_t *p_demux )
FREE
(
psz_genre
)
FREE
(
psz_genre
)
FREE
(
psz_ct
)
FREE
(
psz_ct
)
FREE
(
psz_lc
)
FREE
(
psz_lc
)
FREE
(
psz_rt
)
#undef FREE
#undef FREE
}
}
free
(
psz_eltname
);
free
(
psz_eltname
);
...
...
modules/services_discovery/shout.c
View file @
8f81a57b
...
@@ -50,13 +50,16 @@
...
@@ -50,13 +50,16 @@
#define MAX_LINE_LENGTH 256
#define MAX_LINE_LENGTH 256
#define SHOUTCAST_BASE_URL "http/shout-winamp://www.shoutcast.com/sbin/newxml.phtml"
#define SHOUTCAST_BASE_URL "http/shout-winamp://www.shoutcast.com/sbin/newxml.phtml"
#define SHOUTCAST_TV_BASE_URL "http/shout-winamp://www.shoutcast.com/sbin/newtvlister.phtml?alltv=1"
/*****************************************************************************
/*****************************************************************************
* Module descriptor
* Module descriptor
*****************************************************************************/
*****************************************************************************/
/* Callbacks */
/* Callbacks */
static
int
Open
(
vlc_object_t
*
);
static
int
Open
(
vlc_object_t
*
,
int
);
static
int
OpenRadio
(
vlc_object_t
*
);
static
int
OpenTV
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
vlc_module_begin
();
vlc_module_begin
();
...
@@ -68,7 +71,14 @@ vlc_module_begin();
...
@@ -68,7 +71,14 @@ vlc_module_begin();
add_suppressed_integer
(
"shoutcast-limit"
);
add_suppressed_integer
(
"shoutcast-limit"
);
set_capability
(
"services_discovery"
,
0
);
set_capability
(
"services_discovery"
,
0
);
set_callbacks
(
Open
,
Close
);
set_callbacks
(
OpenRadio
,
Close
);
add_submodule
();
set_shortname
(
"ShoutcastTV"
);
set_description
(
_
(
"Shoutcast TV listings"
)
);
set_capability
(
"services_discovery"
,
0
);
set_callbacks
(
OpenTV
,
Close
);
add_shortcut
(
"shoutcasttv"
);
vlc_module_end
();
vlc_module_end
();
...
@@ -83,6 +93,9 @@ struct services_discovery_sys_t
...
@@ -83,6 +93,9 @@ struct services_discovery_sys_t
vlc_bool_t
b_dialog
;
vlc_bool_t
b_dialog
;
};
};
#define RADIO 0
#define TV 1
/*****************************************************************************
/*****************************************************************************
* Local prototypes
* Local prototypes
*****************************************************************************/
*****************************************************************************/
...
@@ -90,10 +103,20 @@ struct services_discovery_sys_t
...
@@ -90,10 +103,20 @@ struct services_discovery_sys_t
/* Main functions */
/* Main functions */
static
void
Run
(
services_discovery_t
*
p_intf
);
static
void
Run
(
services_discovery_t
*
p_intf
);
static
int
OpenRadio
(
vlc_object_t
*
p_this
)
{
return
Open
(
p_this
,
RADIO
);
}
static
int
OpenTV
(
vlc_object_t
*
p_this
)
{
return
Open
(
p_this
,
TV
);
}
/*****************************************************************************
/*****************************************************************************
* Open: initialize and create stuff
* Open: initialize and create stuff
*****************************************************************************/
*****************************************************************************/
static
int
Open
(
vlc_object_t
*
p_this
)
static
int
Open
(
vlc_object_t
*
p_this
,
int
i_type
)
{
{
services_discovery_t
*
p_sd
=
(
services_discovery_t
*
)
p_this
;
services_discovery_t
*
p_sd
=
(
services_discovery_t
*
)
p_this
;
services_discovery_sys_t
*
p_sys
=
malloc
(
services_discovery_sys_t
*
p_sys
=
malloc
(
...
@@ -118,8 +141,18 @@ static int Open( vlc_object_t *p_this )
...
@@ -118,8 +141,18 @@ static int Open( vlc_object_t *p_this )
p_view
=
playlist_ViewFind
(
p_playlist
,
VIEW_CATEGORY
);
p_view
=
playlist_ViewFind
(
p_playlist
,
VIEW_CATEGORY
);
p_sys
->
p_item
=
switch
(
i_type
)
p_item
=
playlist_ItemNew
(
p_playlist
,
SHOUTCAST_BASE_URL
,
_
(
"Shoutcast"
)
);
{
case
TV
:
p_sys
->
p_item
=
p_item
=
playlist_ItemNew
(
p_playlist
,
SHOUTCAST_TV_BASE_URL
,
_
(
"Shoutcast TV"
)
);
break
;
case
RADIO
:
default:
p_sys
->
p_item
=
p_item
=
playlist_ItemNew
(
p_playlist
,
SHOUTCAST_BASE_URL
,
_
(
"Shoutcast"
)
);
break
;
}
playlist_NodeAddItem
(
p_playlist
,
p_item
,
p_view
->
i_id
,
playlist_NodeAddItem
(
p_playlist
,
p_item
,
p_view
->
i_id
,
p_view
->
p_root
,
PLAYLIST_APPEND
,
p_view
->
p_root
,
PLAYLIST_APPEND
,
PLAYLIST_END
);
PLAYLIST_END
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment