diff --git a/modules/demux/playlist/xspf.c b/modules/demux/playlist/xspf.c
index 9b2e736..96c74a2 100644
--- a/modules/demux/playlist/xspf.c
+++ b/modules/demux/playlist/xspf.c
@@ -718,7 +718,7 @@ static vlc_bool_t parse_extension_node COMPLEX_INTERFACE
             msg_Warn( p_demux, "<node> requires \"title\" attribute" );
             return VLC_FALSE;
         }
-        p_new_input = input_ItemNewWithType( VLC_OBJECT( p_playlist ), "vlc:nop",
+        p_new_input = input_ItemNewWithType( VLC_OBJECT( p_playlist ), "vlc://nop",
                                 psz_title, 0, NULL, -1, ITEM_TYPE_DIRECTORY );
         if( p_new_input )
         {
diff --git a/modules/misc/dummy/input.c b/modules/misc/dummy/input.c
index 8bc6bb3..004ac3e 100644
--- a/modules/misc/dummy/input.c
+++ b/modules/misc/dummy/input.c
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * input_dummy.c: dummy input plugin, to manage "vlc:***" special options
+ * input_dummy.c: dummy input plugin, to manage "vlc://***" special options
  *****************************************************************************
  * Copyright (C) 2001, 2002 the VideoLAN team
  * $Id$
@@ -154,7 +154,7 @@ int E_(OpenDemux) ( vlc_object_t *p_this )
     p_demux->pf_control = DemuxControl;
     p_demux->p_sys      = p_sys = malloc( sizeof( demux_sys_t ) );
 
-    /* Check for a "vlc:nop" command */
+    /* Check for a "vlc://nop" command */
     if( i_len == 3 && !strncasecmp( psz_name, "nop", 3 ) )
     {
         msg_Info( p_demux, "command `nop'" );
@@ -162,7 +162,7 @@ int E_(OpenDemux) ( vlc_object_t *p_this )
         return VLC_SUCCESS;
     }
 
-    /* Check for a "vlc:quit" command */
+    /* Check for a "vlc://quit" command */
     if( i_len == 4 && !strncasecmp( psz_name, "quit", 4 ) )
     {
         msg_Info( p_demux, "command `quit'" );
@@ -170,7 +170,7 @@ int E_(OpenDemux) ( vlc_object_t *p_this )
         return VLC_SUCCESS;
     }
 
-    /* Check for a "vlc:pause:***" command */
+    /* Check for a "vlc://pause:***" command */
     if( i_len > 6 && !strncasecmp( psz_name, "pause:", 6 ) )
     {
         i_arg = atoi( psz_name + 6 );
diff --git a/modules/services_discovery/shout.c b/modules/services_discovery/shout.c
index 783d8d0..f2bddac 100644
--- a/modules/services_discovery/shout.c
+++ b/modules/services_discovery/shout.c
@@ -54,7 +54,7 @@ struct shout_item_t
 #define endItem( ) { NULL, NULL, { NULL }, NULL }
 #define item( title, url ) { url, title, { NULL }, NULL }
 #define itemWithOption( title, url, option ) { url, title, { option, NULL }, NULL }
-#define itemWithChildren( title, children ) { "vlc:skip", title, { NULL }, children }
+#define itemWithChildren( title, children ) { "vlc://skip", title, { NULL }, children }
 
 /* WARN: We support only two levels */
 
diff --git a/src/control/media_descriptor.c b/src/control/media_descriptor.c
index 3dee389..35f31a4 100644
--- a/src/control/media_descriptor.c
+++ b/src/control/media_descriptor.c
@@ -312,7 +312,7 @@ libvlc_media_descriptor_t * libvlc_media_descriptor_new_as_node(
     input_item_t * p_input_item;
     libvlc_media_descriptor_t * p_md;
 
-    p_input_item = input_ItemNew( p_instance->p_libvlc_int, "vlc:nop", psz_name );
+    p_input_item = input_ItemNew( p_instance->p_libvlc_int, "vlc://nop", psz_name );
 
     if (!p_input_item)
     {
diff --git a/src/input/input.c b/src/input/input.c
index 9725ed8..0e0c1e0 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -764,13 +764,7 @@ static int Init( input_thread_t * p_input )
     int i_es_out_mode;
     int i, i_delay;
 
-    /* Initialize optional stream output. (before access/demuxer)
-     * XXX: we add a special case if the uri starts by vlc.
-     * else 'vlc in.file --sout "" vlc:quit'  cannot work (the output will
-     * be destroyed in case of a file).
-     * (this will break playing of file starting by 'vlc:' but I don't
-     * want to add more logic, just force file by file:// or code it ;)
-     */
+    /* Initialize optional stream output. (before access/demuxer) */
     memset( &p_input->p->counters, 0, sizeof( p_input->p->counters ) );
     vlc_mutex_init( p_input, &p_input->p->counters.counters_lock );
 
@@ -818,7 +812,7 @@ static int Init( input_thread_t * p_input )
 
         /* Find a usable sout and attach it to p_input */
         psz = var_GetNonEmptyString( p_input, "sout" );
-        if( psz && strncasecmp( p_input->p->input.p_item->psz_uri, "vlc:", 4 ) )
+        if( psz && strncasecmp( p_input->p->input.p_item->psz_uri, "vlc://", 6 ) )
         {
             /* Check the validity of the provided sout */
             if( p_input->p->p_sout )
diff --git a/src/playlist/control.c b/src/playlist/control.c
index 3ff4141..a21717a 100644
--- a/src/playlist/control.c
+++ b/src/playlist/control.c
@@ -491,8 +491,8 @@ int playlist_PlayItem( playlist_t *p_playlist, playlist_item_t *p_item )
     p_playlist->p_input = input_CreateThread( p_playlist, p_input );
 
     char *psz_uri = input_item_GetURI( p_item->p_input );
-    if( psz_uri && ( !strncmp( psz_uri, "directory:", 10 ) ||
-                     !strncmp( psz_uri, "vlc:", 4 ) ) )
+    if( psz_uri && ( !strncmp( psz_uri, "directory://", 12 ) ||
+                     !strncmp( psz_uri, "vlc://", 6 ) ) )
     {
         free( psz_uri );
         return VLC_SUCCESS;
