- services_discovery_t *p_sd = ( services_discovery_t* )p_this;
- services_discovery_sys_t *p_sys = malloc(
- sizeof( services_discovery_sys_t ) );
-
- vlc_value_t val;
- playlist_t *p_playlist;
- playlist_view_t *p_view;
- playlist_item_t *p_item;
-
- p_sd->pf_run = Run;
- p_sd->p_sys = p_sys;
-
- /* Create our playlist node */
- p_playlist = (playlist_t *)vlc_object_find( p_sd, VLC_OBJECT_PLAYLIST,
- FIND_ANYWHERE );
- if( !p_playlist )
- {
- msg_Warn( p_sd, "unable to find playlist, cancelling");
- return VLC_EGENERIC;
- }
-
- p_view = playlist_ViewFind( p_playlist, VIEW_CATEGORY );
-
- switch( i_type )
- {
- 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,
- p_view->p_root, PLAYLIST_APPEND,
- PLAYLIST_END );
-
- p_sys->p_item->i_flags |= PLAYLIST_RO_FLAG;
-
- val.b_bool = VLC_TRUE;
- var_Set( p_playlist, "intf-change", val );
-
- vlc_object_release( p_playlist );
-
- return VLC_SUCCESS;
+ int i;
+ /* Create the item */
+ input_item_t *p_input = input_ItemNewExt( p_sd,
+ p_item->psz_url, _(p_item->psz_name),
+ 0, NULL, -1 );
+
+ /* Copy options */
+ for( i = 0; p_item->ppsz_options[i] != NULL; i++ )
+ input_ItemAddOption( p_input, p_item->ppsz_options[i] );
+ input_ItemAddOption( p_input, "no-playlist-autostart" );
+
+ return p_input;