[vlc-devel] [PATCH 2/2] input/item: factor input_item_t New*() functions

Thomas Guillem thomas at gllm.fr
Thu Apr 14 11:16:24 CEST 2016


Remove "int options, const char *const *options, unsigned option_flags"
arguments from every New() functions since these args are mainly unused. You
now have to call input_item_AddOptions after input item creation to add
options.

Add input_item_net_type enum in order to avoid confusion between 2 int
arguments: i_duration and i_net that could both be -1, 0 or > 0.

Replace input_item_NewWithType and input_item_NewWithTypeExt with
input_item_NewExt.

Add input_item_NewCard, input_item_NewDisc, input_item_NewStream,
input_item_NewDirectory, input_item_NewFile MACRO. These MACROS avoid to use
useless arguments for an item type (for example, it's useless to specify a
duration for a directory type).
---
 include/vlc_input_item.h              | 51 ++++++++++++++++++-----------------
 lib/media_list.c                      |  3 +--
 modules/access/cdda.c                 |  6 ++---
 modules/access/directory.c            |  4 +--
 modules/access/dsm/access.c           |  3 +--
 modules/access/dsm/sd.c               |  3 +--
 modules/access/ftp.c                  |  4 +--
 modules/access/nfs.c                  |  8 +++---
 modules/access/sftp.c                 |  3 +--
 modules/access/smb.c                  |  4 +--
 modules/demux/playlist/asx.c          |  7 +++--
 modules/demux/playlist/dvb.c          |  7 +++--
 modules/demux/playlist/m3u.c          |  5 ++--
 modules/demux/playlist/ram.c          |  4 ++-
 modules/demux/playlist/sgimb.c        |  4 +--
 modules/demux/playlist/wpl.c          |  2 +-
 modules/demux/playlist/xspf.c         |  5 ++--
 modules/lua/libs/sd.c                 | 28 +++++++++----------
 modules/lua/vlc.c                     |  9 ++++---
 modules/services_discovery/bonjour.m  |  7 +++--
 modules/services_discovery/microdns.c |  3 +--
 modules/services_discovery/os2drive.c |  2 +-
 modules/services_discovery/pulse.c    |  4 +--
 modules/services_discovery/sap.c      |  5 ++--
 modules/services_discovery/udev.c     |  5 ++--
 modules/services_discovery/upnp.cpp   | 16 +++++------
 modules/services_discovery/windrive.c |  3 +--
 modules/services_discovery/xcb_apps.c |  7 ++---
 src/input/item.c                      | 41 +++++-----------------------
 src/libvlccore.sym                    |  2 --
 src/playlist/item.c                   |  6 ++---
 src/playlist/loadsave.c               |  4 +--
 src/playlist/tree.c                   |  4 +--
 33 files changed, 115 insertions(+), 154 deletions(-)

diff --git a/include/vlc_input_item.h b/include/vlc_input_item.h
index 0e4ac73..449ca10 100644
--- a/include/vlc_input_item.h
+++ b/include/vlc_input_item.h
@@ -116,6 +116,13 @@ enum input_item_type_e
     ITEM_TYPE_NUMBER
 };
 
+enum input_item_net_type
+{
+    ITEM_NET_UNKNOWN,
+    ITEM_NET,
+    ITEM_LOCAL
+};
+
 typedef int (*input_item_compar_cb)( input_item_t *, input_item_t * );
 
 struct input_item_node_t
@@ -281,34 +288,30 @@ VLC_API void input_item_MergeInfos( input_item_t *, info_category_t * );
 /**
  * This function creates a new input_item_t with the provided information.
  *
- * XXX You may also use input_item_New or input_item_NewExt as they need
- * less arguments.
+ * XXX You may also use input_item_New, as they need less arguments.
  */
-VLC_API input_item_t * input_item_NewWithType( const char *psz_uri, const char *psz_name, int i_options, const char *const *ppsz_options, unsigned i_option_flags, mtime_t i_duration, int i_type ) VLC_USED;
+VLC_API input_item_t * input_item_NewExt( const char *psz_uri,
+                                          const char *psz_name,
+                                          mtime_t i_duration, int i_type,
+                                          enum input_item_net_type i_net ) VLC_USED;
 
-/**
- * This function creates a new input_item_t with the provided information.
- *
- * \param i_net 1/0: force b_net to true/false, -1: default (guess it)
- *
- * XXX You may also use input_item_New, input_item_NewExt, or
- * input_item_NewWithType as they need less arguments.
- */
-VLC_API input_item_t * input_item_NewWithTypeExt( const char *psz_uri, const char *psz_name, int i_options, const char *const *ppsz_options, unsigned i_option_flags, mtime_t i_duration, int i_type, int i_net ) VLC_USED;
+#define input_item_New( psz_uri, psz_name ) \
+    input_item_NewExt( psz_uri, psz_name, -1, ITEM_TYPE_UNKNOWN, ITEM_NET_UNKNOWN )
 
-/**
- * This function creates a new input_item_t with the provided information.
- *
- * Provided for convenience.
- */
-VLC_API input_item_t * input_item_NewExt( const char *psz_uri, const char *psz_name, int i_options, const char *const *ppsz_options, unsigned i_option_flags, mtime_t i_duration ) VLC_USED;
+#define input_item_NewCard( psz_uri, psz_name ) \
+    input_item_NewExt( psz_uri, psz_name, -1, ITEM_TYPE_CARD, ITEM_LOCAL )
 
-/**
- * This function creates a new input_item_t with the provided information.
- *
- * Provided for convenience.
- */
-#define input_item_New( a,b ) input_item_NewExt( a, b, 0, NULL, 0, -1 )
+#define input_item_NewDisc( psz_uri, psz_name, i_duration ) \
+    input_item_NewExt( psz_uri, psz_name, i_duration, ITEM_TYPE_DISC, ITEM_LOCAL )
+
+#define input_item_NewStream( psz_uri, psz_name, i_duration ) \
+    input_item_NewExt( psz_uri, psz_name, i_duration, ITEM_TYPE_STREAM, ITEM_NET )
+
+#define input_item_NewDirectory( psz_uri, psz_name, i_net ) \
+    input_item_NewExt( psz_uri, psz_name, -1, ITEM_TYPE_DIRECTORY, i_net )
+
+#define input_item_NewFile( psz_uri, psz_name, i_duration, i_net ) \
+    input_item_NewExt( psz_uri, psz_name, i_duration, ITEM_TYPE_FILE, i_net )
 
 /**
  * This function creates a new input_item_t as a copy of another.
diff --git a/lib/media_list.c b/lib/media_list.c
index 73076f3..82fee60 100644
--- a/lib/media_list.c
+++ b/lib/media_list.c
@@ -244,8 +244,7 @@ libvlc_media_list_add_file_content( libvlc_media_list_t * p_mlist,
     input_item_t * p_input_item;
     libvlc_media_t * p_md;
 
-    p_input_item = input_item_NewExt( psz_uri,
-                                         _("Media Library"), 0, NULL, 0, -1 );
+    p_input_item = input_item_New( psz_uri, _("Media Library") );
 
     if( !p_input_item )
     {
diff --git a/modules/access/cdda.c b/modules/access/cdda.c
index 5253ea5..90b334a 100644
--- a/modules/access/cdda.c
+++ b/modules/access/cdda.c
@@ -484,10 +484,8 @@ static int GetTracks( access_t *p_access, input_item_t *p_current )
         const mtime_t i_duration = (int64_t)( p_sys->p_sectors[i+1] - p_sys->p_sectors[i] ) *
                                    CDDA_DATA_SIZE * 1000000 / 44100 / 2 / 2;
 
-        input_item_t *p_item = input_item_NewWithType( p_access->psz_url,
-                                                       psz_name, 0, NULL, 0,
-                                                       i_duration,
-                                                       ITEM_TYPE_DISC );
+        input_item_t *p_item = input_item_NewDisc( p_access->psz_url,
+                                                   psz_name, i_duration );
         if( likely(psz_name != p_access->psz_url) )
             free( psz_name );
 
diff --git a/modules/access/directory.c b/modules/access/directory.c
index a6a044b..ff908eb 100644
--- a/modules/access/directory.c
+++ b/modules/access/directory.c
@@ -174,8 +174,8 @@ input_item_t *DirRead(access_t *access)
         if (unlikely(uri == NULL))
             continue;
 
-        input_item_t *item = input_item_NewWithType(uri, entry, 0, NULL, 0, 0,
-                                                    type);
+        input_item_t *item = input_item_NewExt(uri, entry, -1, type,
+                                               ITEM_NET_UNKNOWN);
         free(uri);
         if (likely(item != NULL))
             return item;
diff --git a/modules/access/dsm/access.c b/modules/access/dsm/access.c
index 14cc496..df56e5e 100644
--- a/modules/access/dsm/access.c
+++ b/modules/access/dsm/access.c
@@ -541,8 +541,7 @@ static input_item_t *new_item( access_t *p_access, const char *psz_name,
     if( i_ret == -1 )
         return NULL;
 
-    p_item = input_item_NewWithTypeExt( psz_uri, psz_name, 0, NULL, 0, -1,
-                                        i_type, 1 );
+    p_item = input_item_NewExt( psz_uri, psz_name, -1, i_type, ITEM_NET );
     free( psz_uri );
     if( p_item == NULL )
         return NULL;
diff --git a/modules/access/dsm/sd.c b/modules/access/dsm/sd.c
index e8857a7..bba7f69 100644
--- a/modules/access/dsm/sd.c
+++ b/modules/access/dsm/sd.c
@@ -120,8 +120,7 @@ static void netbios_ns_discover_on_entry_added( void *p_opaque,
         if( asprintf(&psz_mrl, "smb://%s", name) < 0 )
             return;
 
-        p_item = input_item_NewWithTypeExt( psz_mrl, name, 0, NULL,
-                                            0, -1, ITEM_TYPE_DIRECTORY, 1 );
+        p_item = input_item_NewDirectory( psz_mrl, name, ITEM_NET );
         msg_Dbg( p_sd, "Adding item %s", psz_mrl );
         free(psz_mrl);
 
diff --git a/modules/access/ftp.c b/modules/access/ftp.c
index 42ea40c..3a878b1 100644
--- a/modules/access/ftp.c
+++ b/modules/access/ftp.c
@@ -902,8 +902,8 @@ static input_item_t* DirRead( access_t *p_access )
                   p_sys->url.psz_path ? p_sys->url.psz_path : "",
                   psz_line ) != -1 )
     {
-        p_item = input_item_NewWithTypeExt( psz_uri, psz_line, 0, NULL,
-                                            0, -1, ITEM_TYPE_UNKNOWN, 1 );
+        p_item = input_item_NewExt( psz_uri, psz_line, -1, ITEM_TYPE_UNKNOWN,
+                                    ITEM_NET );
         free( psz_uri );
     }
     free( psz_line );
diff --git a/modules/access/nfs.c b/modules/access/nfs.c
index 2c85953..310bc95 100644
--- a/modules/access/nfs.c
+++ b/modules/access/nfs.c
@@ -348,8 +348,8 @@ DirRead(access_t *p_access)
         default:
             i_type = ITEM_TYPE_UNKNOWN;
         }
-        p_item = input_item_NewWithTypeExt(psz_url, p_nfsdirent->name,
-                                           0, NULL, 0, -1, i_type, 1);
+        p_item = input_item_NewExt(psz_url, p_nfsdirent->name, -1, i_type,
+                                   ITEM_NET);
         free(psz_url);
         return p_item;
     }
@@ -373,9 +373,7 @@ MountRead(access_t *p_access)
     if (psz_url == NULL)
         return NULL;
 
-    input_item_t *p_item = input_item_NewWithTypeExt(psz_url, psz_name, 0,
-                                                     NULL, 0, -1,
-                                                     ITEM_TYPE_DIRECTORY, 1);
+    input_item_t *p_item = input_item_NewDirectory(psz_url, psz_name, ITEM_NET);
     free(psz_url);
     return p_item;
 }
diff --git a/modules/access/sftp.c b/modules/access/sftp.c
index 032e28d..f5488df 100644
--- a/modules/access/sftp.c
+++ b/modules/access/sftp.c
@@ -520,8 +520,7 @@ static input_item_t* DirRead( access_t *p_access )
         free( psz_uri );
 
         int i_type = LIBSSH2_SFTP_S_ISDIR( attrs.permissions ) ? ITEM_TYPE_DIRECTORY : ITEM_TYPE_FILE;
-        p_item = input_item_NewWithTypeExt( psz_full_uri, psz_file,
-                                            0, NULL, 0, 0, i_type, 1 );
+        p_item = input_item_NewExt( psz_full_uri, psz_file, -1, i_type, ITEM_NET );
         free( psz_full_uri );
 
         if( p_item == NULL )
diff --git a/modules/access/smb.c b/modules/access/smb.c
index 0d8e3fe..c007f71 100644
--- a/modules/access/smb.c
+++ b/modules/access/smb.c
@@ -392,8 +392,8 @@ static input_item_t* DirRead (access_t *p_access )
         }
         free(psz_encoded_name);
 
-        p_item = input_item_NewWithTypeExt( psz_uri, p_entry->name, 0, NULL,
-                                            0, -1, i_type, 1 );
+        p_item = input_item_NewExt( psz_uri, p_entry->name, -1, i_type,
+                                    ITEM_NET );
         free( psz_uri );
         if( !p_item )
             return NULL;
diff --git a/modules/demux/playlist/asx.c b/modules/demux/playlist/asx.c
index ed216c9..3a38771 100644
--- a/modules/demux/playlist/asx.c
+++ b/modules/demux/playlist/asx.c
@@ -265,8 +265,11 @@ static void ProcessEntry( int *pi_n_entry, xml_reader_t *p_xml_reader,
                 }
 
                 /* Create the input item */
-                p_entry = input_item_NewExt( psz_mrl, psz_name, i_options,
-                        (const char* const*) ppsz_options, VLC_INPUT_OPTION_TRUSTED, i_duration );
+                p_entry = input_item_NewExt( psz_mrl, psz_name, i_duration,
+                                             ITEM_TYPE_UNKNOWN, ITEM_NET_UNKNOWN );
+                input_item_AddOptions( p_entry, i_options,
+                                       (const char **)ppsz_options,
+                                       VLC_INPUT_OPTION_TRUSTED );
                 input_item_CopyOptions( p_entry, p_current_input );
 
                 /* Add the metadata */
diff --git a/modules/demux/playlist/dvb.c b/modules/demux/playlist/dvb.c
index 1e13925..c7c1ac0 100644
--- a/modules/demux/playlist/dvb.c
+++ b/modules/demux/playlist/dvb.c
@@ -336,10 +336,9 @@ static input_item_t *ParseLine(char *line)
     char sid_opt[sizeof("program=65535")];
     snprintf(sid_opt, sizeof(sid_opt), "program=%lu", sid);
 
-    const char *opts[] = { sid_opt };
-
-    input_item_t *item = input_item_NewWithType(mrl, name, 1, opts, 0, -1,
-                                                ITEM_TYPE_CARD);
+    input_item_t *item = input_item_NewCard(mrl, name);
     free(mrl);
+    if (item != NULL)
+        input_item_AddOption(item, sid_opt, 0);
     return item;
 }
diff --git a/modules/demux/playlist/m3u.c b/modules/demux/playlist/m3u.c
index a13d26a..323bc0e 100644
--- a/modules/demux/playlist/m3u.c
+++ b/modules/demux/playlist/m3u.c
@@ -255,8 +255,9 @@ static int Demux( demux_t *p_demux )
                 goto error;
             }
 
-            p_input = input_item_NewExt( psz_mrl, psz_name,
-                                        i_options, ppsz_options, 0, i_duration );
+            p_input = input_item_NewExt( psz_mrl, psz_name, i_duration,
+                                         ITEM_TYPE_UNKNOWN, ITEM_NET_UNKNOWN );
+            input_item_AddOptions( p_input, i_options, ppsz_options, 0 );
 
             free( psz_parse );
             free( psz_mrl );
diff --git a/modules/demux/playlist/ram.c b/modules/demux/playlist/ram.c
index 569b99e..3e5b9f7 100644
--- a/modules/demux/playlist/ram.c
+++ b/modules/demux/playlist/ram.c
@@ -337,7 +337,9 @@ static int Demux( demux_t *p_demux )
             }
 
             /* Create the input item and pump in all the options into playlist item */
-            p_input = input_item_NewExt( psz_mrl, psz_title, i_options, ppsz_options, 0, i_duration );
+            p_input = input_item_NewExt( psz_mrl, psz_title, i_duration,
+                                         ITEM_TYPE_UNKNOWN, ITEM_NET_UNKNOWN );
+            input_item_AddOptions( p_input, i_options, ppsz_options, 0 );
 
             if( !EMPTY_STR( psz_artist ) ) input_item_SetArtist( p_input, psz_artist );
             if( !EMPTY_STR( psz_author ) ) input_item_SetPublisher( p_input, psz_author );
diff --git a/modules/demux/playlist/sgimb.c b/modules/demux/playlist/sgimb.c
index 418278e..9b00e48 100644
--- a/modules/demux/playlist/sgimb.c
+++ b/modules/demux/playlist/sgimb.c
@@ -373,9 +373,9 @@ static int Demux ( demux_t *p_demux )
         p_sys->psz_uri = uri;
     }
 
-    p_child = input_item_NewWithType( p_sys->psz_uri,
+    p_child = input_item_NewStream( p_sys->psz_uri,
                       p_sys->psz_name ? p_sys->psz_name : p_sys->psz_uri,
-                      0, NULL, 0, p_sys->i_duration, ITEM_TYPE_STREAM );
+                      p_sys->i_duration  );
 
     if( !p_child )
     {
diff --git a/modules/demux/playlist/wpl.c b/modules/demux/playlist/wpl.c
index 9164e69..2a79b7e 100644
--- a/modules/demux/playlist/wpl.c
+++ b/modules/demux/playlist/wpl.c
@@ -114,7 +114,7 @@ static void read_body( demux_t* p_demux, input_item_node_t* p_node )
                     char* mrl = ProcessMRL( psz_val, p_sys->psz_prefix );
                     if ( unlikely( !mrl ) )
                         return;
-                    input_item_t* p_item = input_item_NewExt( mrl, NULL, 0, NULL, 0, -1 );
+                    input_item_t* p_item = input_item_New( mrl, NULL );
                     if ( likely( p_item ) )
                     {
                         input_item_node_AppendItem( p_node, p_item );
diff --git a/modules/demux/playlist/xspf.c b/modules/demux/playlist/xspf.c
index d4150d2..5dfbfe4 100644
--- a/modules/demux/playlist/xspf.c
+++ b/modules/demux/playlist/xspf.c
@@ -631,9 +631,8 @@ static bool parse_extension_node COMPLEX_INTERFACE
             msg_Warn(p_demux, "<vlc:node> requires \"title\" attribute");
             return false;
         }
-        p_new_input = input_item_NewWithType("vlc://nop", psz_title,
-                                              0, NULL, 0, -1,
-                                              ITEM_TYPE_DIRECTORY);
+        p_new_input = input_item_NewDirectory("vlc://nop", psz_title,
+                                              ITEM_NET_UNKNOWN);
         if (p_new_input)
         {
             p_input_node =
diff --git a/modules/lua/libs/sd.c b/modules/lua/libs/sd.c
index f162847..bfe8e19 100644
--- a/modules/lua/libs/sd.c
+++ b/modules/lua/libs/sd.c
@@ -181,9 +181,9 @@ static int vlclua_sd_add_node( lua_State *L )
         if( lua_isstring( L, -1 ) )
         {
             const char *psz_name = lua_tostring( L, -1 );
-            input_item_t *p_input = input_item_NewWithType( "vlc://nop",
-                                                            psz_name, 0, NULL, 0,
-                                                            -1, ITEM_TYPE_NODE );
+            input_item_t *p_input = input_item_NewExt( "vlc://nop",
+                                                       psz_name, -1,
+                                                       ITEM_TYPE_NODE, ITEM_NET_UNKNOWN );
             lua_pop( L, 1 );
 
             if( p_input )
@@ -244,14 +244,14 @@ static int vlclua_sd_add_item( lua_State *L )
             lua_pushvalue( L, -3 );
             vlclua_read_options( p_sd, L, &i_options, &ppsz_options );
 
-            input_item_t *p_input = input_item_NewExt( psz_path, psz_title,
-                                                       i_options,
-                                                       (const char **)ppsz_options,
-                                                       VLC_INPUT_OPTION_TRUSTED, -1 );
+            input_item_t *p_input = input_item_New( psz_path, psz_title );
             lua_pop( L, 3 );
 
             if( p_input )
             {
+                input_item_AddOptions( p_input, i_options,
+                                       (const char **)ppsz_options,
+                                       VLC_INPUT_OPTION_TRUSTED );
                 vlclua_read_meta_data( p_sd, L, p_input );
                 /* This one is to be tested... */
                 vlclua_read_custom_meta_data( p_sd, L, p_input );
@@ -371,14 +371,14 @@ static int vlclua_node_add_subitem( lua_State *L )
                 lua_pushvalue( L, -2 );
                 vlclua_read_options( p_sd, L, &i_options, &ppsz_options );
 
-                input_item_t *p_input = input_item_NewExt( psz_path,
-                                                           psz_path, i_options,
-                                                           (const char **)ppsz_options,
-                                                           VLC_INPUT_OPTION_TRUSTED, -1 );
+                input_item_t *p_input = input_item_New( psz_path, psz_path );
                 lua_pop( L, 2 );
 
                 if( p_input )
                 {
+                    input_item_AddOptions( p_input, i_options,
+                                           (const char **)ppsz_options,
+                                           VLC_INPUT_OPTION_TRUSTED );
                     input_item_node_t *p_input_node = input_item_node_Create( *pp_node );
 
                     vlclua_read_meta_data( p_sd, L, p_input );
@@ -431,9 +431,9 @@ static int vlclua_node_add_subnode( lua_State *L )
             if( lua_isstring( L, -1 ) )
             {
                 const char *psz_name = lua_tostring( L, -1 );
-                input_item_t *p_input = input_item_NewWithType( "vlc://nop",
-                                                                psz_name, 0, NULL, 0,
-                                                                -1, ITEM_TYPE_NODE );
+                input_item_t *p_input = input_item_NewExt( "vlc://nop",
+                                                           psz_name, -1,
+                                                           ITEM_TYPE_NODE, ITEM_NET_UNKNOWN );
                 lua_pop( L, 1 );
 
                 if( p_input )
diff --git a/modules/lua/vlc.c b/modules/lua/vlc.c
index 6c2430a..4ac3f3b 100644
--- a/modules/lua/vlc.c
+++ b/modules/lua/vlc.c
@@ -541,10 +541,11 @@ int vlclua_playlist_add_internal( vlc_object_t *p_this, lua_State *L,
                     vlclua_read_options( p_this, L, &i_options, &ppsz_options );
 
                     /* Create input item */
-                    p_input = input_item_NewExt( psz_path, psz_name, i_options,
-                                                (const char **)ppsz_options,
-                                                VLC_INPUT_OPTION_TRUSTED,
-                                                i_duration );
+                    p_input = input_item_NewExt( psz_path, psz_name, i_duration,
+                                                 ITEM_TYPE_UNKNOWN, ITEM_NET_UNKNOWN );
+                    input_item_AddOptions( p_input, i_options,
+                                           (const char **)ppsz_options,
+                                           VLC_INPUT_OPTION_TRUSTED );
                     lua_pop( L, 3 ); /* pop "path name item" */
                     /* playlist key item */
 
diff --git a/modules/services_discovery/bonjour.m b/modules/services_discovery/bonjour.m
index 673f71d..ad4d46e 100644
--- a/modules/services_discovery/bonjour.m
+++ b/modules/services_discovery/bonjour.m
@@ -194,10 +194,9 @@ struct services_discovery_sys_t
                          aNetService.hostName,
                          aNetService.port];
 
-        input_item_t *p_input_item = input_item_NewWithTypeExt([uri UTF8String],
-                                                               [aNetService.name UTF8String],
-                                                               0, NULL, 0, -1,
-                                                               ITEM_TYPE_DIRECTORY, true );
+        input_item_t *p_input_item = input_item_NewDirectory([uri UTF8String],
+                                                             [aNetService.name UTF8String],
+                                                             ITEM_NET );
 
         if (p_input_item != NULL) {
             services_discovery_AddItem(self.p_sd, p_input_item, NULL);
diff --git a/modules/services_discovery/microdns.c b/modules/services_discovery/microdns.c
index ca231da..e1f9159 100644
--- a/modules/services_discovery/microdns.c
+++ b/modules/services_discovery/microdns.c
@@ -139,8 +139,7 @@ items_add_input( services_discovery_t *p_sd, char *psz_uri,
     }
 
     input_item_t *p_input_item =
-        input_item_NewWithTypeExt( psz_uri, psz_name, 0, NULL, 0, -1,
-                                   ITEM_TYPE_DIRECTORY, true );
+        input_item_NewDirectory( psz_uri, psz_name, ITEM_NET );
     if( p_input_item == NULL )
     {
         free( psz_uri );
diff --git a/modules/services_discovery/os2drive.c b/modules/services_discovery/os2drive.c
index 1ccab65..8b84be6 100644
--- a/modules/services_discovery/os2drive.c
+++ b/modules/services_discovery/os2drive.c
@@ -88,7 +88,7 @@ static int Open (vlc_object_t *obj)
             letter = 'A' + drive;
 
             mrl[8] = name[0] = letter;
-            item = input_item_NewWithType (mrl, name, 0, NULL, 0, -1, ITEM_TYPE_DISC);
+            item = input_item_NewDisc (mrl, name, -1);
             msg_Dbg (sd, "adding %s (%s)", mrl, name);
             if (item == NULL)
                 break;
diff --git a/modules/services_discovery/pulse.c b/modules/services_discovery/pulse.c
index a981154..62b6fe4 100644
--- a/modules/services_discovery/pulse.c
+++ b/modules/services_discovery/pulse.c
@@ -148,9 +148,7 @@ static int AddSource (services_discovery_t *sd, const pa_source_info *info)
     if (unlikely(asprintf (&mrl, "pulse://%s", info->name) == -1))
         return -1;
 
-    input_item_t *item = input_item_NewWithType (mrl, info->description,
-                                                 0, NULL, 0, -1,
-                                                 ITEM_TYPE_CARD);
+    input_item_t *item = input_item_NewCard (mrl, info->description);
     free (mrl);
     if (unlikely(item == NULL))
         return -1;
diff --git a/modules/services_discovery/sap.c b/modules/services_discovery/sap.c
index 1fbd5a0..72c6c53 100644
--- a/modules/services_discovery/sap.c
+++ b/modules/services_discovery/sap.c
@@ -852,9 +852,8 @@ sap_announce_t *CreateAnnounce( services_discovery_t *p_sd, uint32_t *i_source,
     p_sap->p_sdp = p_sdp;
 
     /* Released in RemoveAnnounce */
-    p_input = input_item_NewWithType( p_sap->p_sdp->psz_uri,
-                                      p_sdp->psz_sessionname,
-                                      0, NULL, 0, -1, ITEM_TYPE_STREAM );
+    p_input = input_item_NewStream( p_sap->p_sdp->psz_uri, p_sdp->psz_sessionname,
+                                    -1 );
     if( unlikely(p_input == NULL) )
     {
         free( p_sap );
diff --git a/modules/services_discovery/udev.c b/modules/services_discovery/udev.c
index a91dcf8..ab954d3 100644
--- a/modules/services_discovery/udev.c
+++ b/modules/services_discovery/udev.c
@@ -168,9 +168,8 @@ static int AddDevice (services_discovery_t *sd, struct udev_device *dev)
     if (mrl == NULL)
         return 0; /* don't know if it was an error... */
     char *name = p_sys->subsys->get_name (dev);
-    input_item_t *item = input_item_NewWithType (mrl, name ? name : mrl,
-                                                 0, NULL, 0, -1,
-                                                 p_sys->subsys->item_type);
+    input_item_t *item = input_item_NewExt (mrl, name ? name : mrl, -1,
+                                            p_sys->subsys->item_type, ITEM_LOCAL);
     msg_Dbg (sd, "adding %s (%s)", mrl, name);
     free (name);
     free (mrl);
diff --git a/modules/services_discovery/upnp.cpp b/modules/services_discovery/upnp.cpp
index 94e52d8..bc54024 100644
--- a/modules/services_discovery/upnp.cpp
+++ b/modules/services_discovery/upnp.cpp
@@ -320,15 +320,17 @@ bool MediaServerList::addServer( MediaServerDesc* desc )
 
     if ( desc->isSatIp )
     {
-        p_input_item = input_item_NewWithTypeExt( desc->location.c_str(), desc->friendlyName.c_str(), 0,
-                                                  NULL, 0, -1, ITEM_TYPE_DIRECTORY, 1);
+        p_input_item = input_item_NewDirectory( desc->location.c_str(),
+                                                desc->friendlyName.c_str(),
+                                                ITEM_NET );
     } else {
         char* psz_mrl;
         if( asprintf(&psz_mrl, "upnp://%s?ObjectID=0", desc->location.c_str() ) < 0 )
             return false;
 
-        p_input_item = input_item_NewWithTypeExt( psz_mrl, desc->friendlyName.c_str(), 0,
-                                                  NULL, 0, -1, ITEM_TYPE_DIRECTORY, 1);
+        p_input_item = input_item_NewDirectory( psz_mrl,
+                                                desc->friendlyName.c_str(),
+                                                ITEM_NET );
         free( psz_mrl );
     }
     if ( !p_input_item )
@@ -790,8 +792,7 @@ input_item_t* MediaServer::newItem( const char *objectID, const char *title )
     if( asprintf( &psz_url, "upnp://%s?ObjectID=%s", psz_root_, objectID ) < 0 )
         return NULL;
 
-    input_item_t* p_item = input_item_NewWithTypeExt( psz_url, title, 0, NULL,
-                                                      0, -1, ITEM_TYPE_DIRECTORY, 1 );
+    input_item_t* p_item = input_item_NewDirectory( psz_url, title, ITEM_NET );
     free( psz_url);
     return p_item;
 }
@@ -799,8 +800,7 @@ input_item_t* MediaServer::newItem( const char *objectID, const char *title )
 input_item_t* MediaServer::newItem(const char* title, const char*,
                                    mtime_t duration, const char* psz_url)
 {
-    return input_item_NewWithTypeExt( psz_url, title, 0, NULL, 0,
-                                      duration, ITEM_TYPE_FILE, 1 );
+    return input_item_NewFile( psz_url, title, duration, ITEM_NET );
 }
 
 int MediaServer::sendActionCb( Upnp_EventType eventType,
diff --git a/modules/services_discovery/windrive.c b/modules/services_discovery/windrive.c
index bed020e..91956d9 100644
--- a/modules/services_discovery/windrive.c
+++ b/modules/services_discovery/windrive.c
@@ -74,8 +74,7 @@ static int Open (vlc_object_t *obj)
             continue;
 
         mrl[8] = name[0] = letter;
-        item = input_item_NewWithType (mrl, name,
-                                       0, NULL, 0, -1, ITEM_TYPE_DISC);
+        item = input_item_NewDisc (mrl, name, -1);
         msg_Dbg (sd, "adding %s (%s)", mrl, name);
         if (item == NULL)
             break;
diff --git a/modules/services_discovery/xcb_apps.c b/modules/services_discovery/xcb_apps.c
index 8990ef0..795650b 100644
--- a/modules/services_discovery/xcb_apps.c
+++ b/modules/services_discovery/xcb_apps.c
@@ -255,9 +255,7 @@ static struct app *AddApp (services_discovery_t *sd, xcb_window_t xid)
     else
         name = NULL;
 
-    input_item_t *item = input_item_NewWithType (mrl, name ? name : mrl,
-                                                 0, NULL, 0, -1,
-                                                 ITEM_TYPE_CARD /* FIXME */);
+    input_item_t *item = input_item_NewCard (mrl, name ? name : mrl); /* FIXME */
     free (mrl);
     free (name);
     if (item == NULL)
@@ -348,8 +346,7 @@ static void AddDesktop(services_discovery_t *sd)
 {
     input_item_t *item;
 
-    item = input_item_NewWithType ("screen://", _("Desktop"),
-                                   0, NULL, 0, -1, ITEM_TYPE_CARD);
+    item = input_item_NewCard ("screen://", _("Desktop"));
     if (item == NULL)
         return;
 
diff --git a/src/input/item.c b/src/input/item.c
index 3d67a44..fbc4c41 100644
--- a/src/input/item.c
+++ b/src/input/item.c
@@ -913,24 +913,9 @@ void input_item_SetEpgOffline( input_item_t *p_item )
     vlc_event_send( &p_item->event_manager, &event );
 }
 
-input_item_t *input_item_NewExt( const char *psz_uri,
-                                 const char *psz_name,
-                                 int i_options,
-                                 const char *const *ppsz_options,
-                                 unsigned i_option_flags,
-                                 mtime_t i_duration )
-{
-    return input_item_NewWithType( psz_uri, psz_name,
-                                  i_options, ppsz_options, i_option_flags,
-                                  i_duration, ITEM_TYPE_UNKNOWN );
-}
-
-
 input_item_t *
-input_item_NewWithTypeExt( const char *psz_uri, const char *psz_name,
-                           int i_options, const char *const *ppsz_options,
-                           unsigned flags, mtime_t duration, int type,
-                           int i_net )
+input_item_NewExt( const char *psz_uri, const char *psz_name,
+                   mtime_t duration, int type, enum input_item_net_type i_net )
 {
     static atomic_uint last_input_id = ATOMIC_VAR_INIT(0);
 
@@ -962,8 +947,6 @@ input_item_NewWithTypeExt( const char *psz_uri, const char *psz_name,
     TAB_INIT( p_input->i_options, p_input->ppsz_options );
     p_input->optflagc = 0;
     p_input->optflagv = NULL;
-    for( int i = 0; i < i_options; i++ )
-        input_item_AddOption( p_input, ppsz_options[i], flags );
     p_input->opaques = NULL;
 
     p_input->i_duration = duration;
@@ -988,21 +971,11 @@ input_item_NewWithTypeExt( const char *psz_uri, const char *psz_name,
         p_input->i_type = type;
     p_input->b_error_when_reading = false;
 
-    if( i_net != -1 )
-        p_input->b_net = !!i_net;
+    if( i_net != ITEM_NET_UNKNOWN )
+        p_input->b_net = i_net == ITEM_NET;
     return p_input;
 }
 
-input_item_t *
-input_item_NewWithType( const char *psz_uri, const char *psz_name,
-                        int i_options, const char *const *ppsz_options,
-                        unsigned flags, mtime_t duration, int type )
-{
-    return input_item_NewWithTypeExt( psz_uri, psz_name, i_options,
-                                      ppsz_options, flags, duration, type,
-                                      -1 );
-}
-
 input_item_t *input_item_Copy( input_item_t *p_input )
 {
     vlc_meta_t *meta = NULL;
@@ -1010,9 +983,9 @@ input_item_t *input_item_Copy( input_item_t *p_input )
 
     vlc_mutex_lock( &p_input->lock );
 
-    item = input_item_NewWithType( p_input->psz_uri, p_input->psz_name,
-                                   0, NULL, 0, p_input->i_duration,
-                                   p_input->i_type );
+    item = input_item_NewExt( p_input->psz_uri, p_input->psz_name,
+                              p_input->i_duration, p_input->i_type,
+                              ITEM_NET_UNKNOWN );
     if( likely(item != NULL) && p_input->p_meta != NULL )
     {
         meta = vlc_meta_New();
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 8dff0c6..5d8813e 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -191,8 +191,6 @@ input_item_IsPreparsed
 input_item_MetaMatch
 input_item_MergeInfos
 input_item_NewExt
-input_item_NewWithType
-input_item_NewWithTypeExt
 input_item_Hold
 input_item_Release
 input_item_node_AppendItem
diff --git a/src/playlist/item.c b/src/playlist/item.c
index e4cf879..a96a15e 100644
--- a/src/playlist/item.c
+++ b/src/playlist/item.c
@@ -436,11 +436,11 @@ int playlist_AddExt( playlist_t *p_playlist, const char * psz_uri,
     int i_ret;
     input_item_t *p_input;
 
-    p_input = input_item_NewExt( psz_uri, psz_name,
-                                 i_options, ppsz_options, i_option_flags,
-                                 i_duration );
+    p_input = input_item_NewExt( psz_uri, psz_name, i_duration,
+                                 ITEM_TYPE_UNKNOWN, ITEM_NET_UNKNOWN );
     if( p_input == NULL )
         return VLC_ENOMEM;
+    input_item_AddOptions( p_input, i_options, ppsz_options, i_option_flags );
     i_ret = playlist_AddInput( p_playlist, p_input, i_mode, i_pos, b_playlist,
                                b_locked );
     vlc_gc_decref( p_input );
diff --git a/src/playlist/loadsave.c b/src/playlist/loadsave.c
index f05f96e..adbc92d 100644
--- a/src/playlist/loadsave.c
+++ b/src/playlist/loadsave.c
@@ -96,7 +96,7 @@ int playlist_Import( playlist_t *p_playlist, const char *psz_file )
     if( psz_uri == NULL )
         return VLC_EGENERIC;
 
-    p_input = input_item_NewExt( psz_uri, psz_file, 0, NULL, 0, -1 );
+    p_input = input_item_New( psz_uri, psz_file );
     free( psz_uri );
 
     playlist_AddInput( p_playlist, p_input, PLAYLIST_APPEND, PLAYLIST_END,
@@ -158,7 +158,7 @@ int playlist_MLLoad( playlist_t *p_playlist )
     if( psz_uri == NULL )
         return VLC_ENOMEM;
 
-    p_input = input_item_NewExt( psz_uri, _("Media Library"), 0, NULL, 0, -1 );
+    p_input = input_item_New( psz_uri, _("Media Library") );
     free( psz_uri );
     if( p_input == NULL )
         return VLC_EGENERIC;
diff --git a/src/playlist/tree.c b/src/playlist/tree.c
index 9fe3c24..d991162 100644
--- a/src/playlist/tree.c
+++ b/src/playlist/tree.c
@@ -67,8 +67,8 @@ playlist_item_t * playlist_NodeCreate( playlist_t *p_playlist,
     if( !psz_name ) psz_name = _("Undefined");
 
     if( !p_input )
-        p_new_input = input_item_NewWithType( NULL, psz_name, 0, NULL, 0, -1,
-                                              ITEM_TYPE_NODE );
+        p_new_input = input_item_NewExt( NULL, psz_name, -1, ITEM_TYPE_NODE,
+                                         ITEM_NET_UNKNOWN );
     p_item = playlist_ItemNewFromInput( p_playlist,
                                         p_input ? p_input : p_new_input );
     if( p_new_input )
-- 
2.8.0.rc3



More information about the vlc-devel mailing list