* Module descriptor
*****************************************************************************/
#define AUTOSTART_TEXT N_( "Auto start" )
+/// \bug [String] Why \n ?
#define AUTOSTART_LONGTEXT N_( "Automatically start playing the playlist " \
"content once it's loaded.\n" )
+#define SHOW_ADULT_TEXT N_( "Show shoutcast adult content" )
+#define SHOW_ADULT_LONGTEXT N_( "Show NC17 rated video streams when " \
+ "using shoutcast video playlists." )
+
vlc_module_begin();
add_shortcut( "playlist" );
set_category( CAT_INPUT );
add_bool( "playlist-autostart", 1, NULL,
AUTOSTART_TEXT, AUTOSTART_LONGTEXT, VLC_FALSE );
+ add_integer( "parent-item", 0, NULL, NULL, NULL, VLC_TRUE );
+ change_internal();
+
set_shortname( _("Playlist") );
set_description( _("Playlist") );
- add_shortcut( "old-open" );
- set_capability( "demux2", 10 );
- set_callbacks( E_(Import_Old), NULL );
-#if 0
- add_submodule();
- set_description( _("Native playlist import") );
- add_shortcut( "playlist" );
- add_shortcut( "native-open" );
- set_capability( "demux2", 10 );
- set_callbacks( E_(Import_Native), E_(Close_Native) );
-#endif
add_submodule();
set_description( _("M3U playlist import") );
add_shortcut( "m3u-open" );
add_shortcut( "podcast" );
set_capability( "demux2", 10 );
set_callbacks( E_(Import_podcast), E_(Close_podcast) );
+ add_submodule();
+ set_description( _("XSPF playlist import") );
+ add_shortcut( "xspf-open" );
+ set_capability( "demux2", 10 );
+ set_callbacks( E_(xspf_import_Activate), NULL );
+ add_submodule();
+ set_description( _("New winamp 5.2 shoutcast import") );
+ add_shortcut( "shout-winamp" );
+ set_capability( "demux2", 10 );
+ set_callbacks( E_(Import_Shoutcast), E_(Close_Shoutcast) );
+ add_bool( "shoutcast-show-adult", VLC_FALSE, NULL,
+ SHOW_ADULT_TEXT, SHOW_ADULT_LONGTEXT, VLC_FALSE );
+ add_submodule();
+ set_description( _("ASX playlist import") );
+ add_shortcut( "asx-open" );
+ set_capability( "demux2", 10 );
+ set_callbacks( E_(Import_ASX), E_(Close_ASX) );
+ add_submodule();
+ set_description( _("Kasenna MediaBase parser") );
+ add_shortcut( "sgimb" );
+ set_capability( "demux2", 10 );
+ set_callbacks( E_(Import_SGIMB), E_(Close_SGIMB) );
+ add_submodule();
+ set_description( _("QuickTime Media Link importer") );
+ add_shortcut( "qtl" );
+ set_capability( "demux2", 10 );
+ set_callbacks( E_(Import_QTL), E_(Close_QTL) );
+ add_submodule();
+ set_description( _("Google Video Playlist importer") );
+ add_shortcut( "gvp" );
+ set_capability( "demux2", 10 );
+ set_callbacks( E_(Import_GVP), E_(Close_GVP) );
vlc_module_end();
return psz_mrl;
}
+void E_(AddToPlaylist)( demux_t *p_demux, playlist_t *p_playlist,
+ input_item_t *p_input,
+ playlist_item_t *p_item, int i_parent_id )
+{
+ // Only add to parent if specific parent requested or not current
+ // playlist item
+ if( i_parent_id > 0 || ! (
+ p_playlist->status.p_item &&
+ p_playlist->status.p_item->p_input ==
+ ((input_thread_t *)p_demux->p_parent)->input.p_item ) )
+ {
+ playlist_NodeAddInput( p_playlist, p_input, p_item,
+ PLAYLIST_APPEND, PLAYLIST_END );
+ }
+ // Else, add to both
+ else
+ {
+ playlist_BothAddInput( p_playlist, p_input, p_item,
+ PLAYLIST_APPEND, PLAYLIST_END );
+ }
+ input_ItemCopyOptions( p_item->p_input, p_input );
+}
+
+
vlc_bool_t E_(FindItem)( demux_t *p_demux, playlist_t *p_playlist,
playlist_item_t **pp_item )
{
vlc_bool_t b_play = var_CreateGetBool( p_demux, "playlist-autostart" );
if( b_play && p_playlist->status.p_item &&
- &p_playlist->status.p_item->input ==
+ p_playlist->status.p_item->p_input ==
((input_thread_t *)p_demux->p_parent)->input.p_item )
{
msg_Dbg( p_playlist, "starting playlist playback" );
msg_Dbg( p_playlist, "unable to find item in playlist");
}
msg_Dbg( p_playlist, "not starting playlist playback");
+ p_playlist->status.i_status = PLAYLIST_STOPPED;
b_play = VLC_FALSE;
}
return b_play;