+#define ITEM_TYPE_FILE 1
+#define ITEM_TYPE_DIRECTORY 2
+#define ITEM_TYPE_DISC 3
+#define ITEM_TYPE_CDDA 4
+#define ITEM_TYPE_CARD 5
+#define ITEM_TYPE_NET 6
+#define ITEM_TYPE_PLAYLIST 7
+#define ITEM_TYPE_NODE 8
+#define ITEM_TYPE_NUMBER 9
+
+VLC_EXPORT( void, input_item_CopyOptions, ( input_item_t *p_parent, input_item_t *p_child ) );
+VLC_EXPORT( void, input_item_SetName, ( input_item_t *p_item, const char *psz_name ) );
+
+/* This won't hold the item, but can tell to interested third parties
+ * Like the playlist, that there is a new sub item. With this design
+ * It is not the input item's responsability to keep all the ref of
+ * the input item children. */
+VLC_EXPORT( void, input_item_AddSubItem, ( input_item_t *p_parent, input_item_t *p_child ) );
+
+
+/* Flags handled past input_item_AddOpt() */
+#define VLC_INPUT_OPTION_TRUSTED 0x2
+
+/* Flags handled within input_item_AddOpt() */
+#define VLC_INPUT_OPTION_UNIQUE 0x100
+
+VLC_EXPORT( int, input_item_AddOpt, ( input_item_t *, const char *str, unsigned flags ) );
+VLC_EXPORT( int, input_item_AddOption, (input_item_t *item, const char *str) );
+VLC_EXPORT( int ,input_item_AddOption, (input_item_t *item, const char *str) );
+VLC_EXPORT( bool,input_item_HasErrorWhenReading, (input_item_t *item) );
+VLC_EXPORT( void, input_item_SetMeta, ( input_item_t *p_i, vlc_meta_type_t meta_type, const char *psz_val ));
+
+VLC_EXPORT( bool,input_item_HasErrorWhenReading, (input_item_t *item) );
+
+VLC_EXPORT( bool,input_item_MetaMatch, ( input_item_t *p_i, vlc_meta_type_t meta_type, const char *psz ) );
+VLC_EXPORT( char *, input_item_GetMeta, ( input_item_t *p_i, vlc_meta_type_t meta_type ) );
+VLC_EXPORT( char *, input_item_GetName, ( input_item_t * p_i ) );
+VLC_EXPORT( char *, input_item_GetURI, ( input_item_t * p_i ) );
+VLC_EXPORT( void, input_item_SetURI, ( input_item_t * p_i, char * psz_uri ));
+VLC_EXPORT(mtime_t, input_item_GetDuration, ( input_item_t * p_i ) );
+VLC_EXPORT( void, input_item_SetDuration, ( input_item_t * p_i, mtime_t i_duration ));
+VLC_EXPORT( bool, input_item_IsPreparsed, ( input_item_t *p_i ));
+VLC_EXPORT( bool, input_item_IsArtFetched, ( input_item_t *p_i ));
+VLC_EXPORT( const vlc_meta_t *, input_item_GetMetaObject, ( input_item_t *p_i ));
+VLC_EXPORT( void, input_item_MetaMerge, ( input_item_t *p_i, const vlc_meta_t * p_new_meta ));
+
+
+#define input_item_SetTitle( item, b ) input_item_SetMeta( item, vlc_meta_Title, b )
+#define input_item_SetArtist( item, b ) input_item_SetMeta( item, vlc_meta_Artist, b )
+#define input_item_SetGenre( item, b ) input_item_SetMeta( item, vlc_meta_Genre, b )
+#define input_item_SetCopyright( item, b ) input_item_SetMeta( item, vlc_meta_Copyright, b )
+#define input_item_SetAlbum( item, b ) input_item_SetMeta( item, vlc_meta_Album, b )
+#define input_item_SetTrackNum( item, b ) input_item_SetMeta( item, vlc_meta_TrackNumber, b )
+#define input_item_SetDescription( item, b ) input_item_SetMeta( item, vlc_meta_Description, b )
+#define input_item_SetRating( item, b ) input_item_SetMeta( item, vlc_meta_Rating, b )
+#define input_item_SetDate( item, b ) input_item_SetMeta( item, vlc_meta_Date, b )
+#define input_item_SetSetting( item, b ) input_item_SetMeta( item, vlc_meta_Setting, b )
+#define input_item_SetURL( item, b ) input_item_SetMeta( item, vlc_meta_URL, b )
+#define input_item_SetLanguage( item, b ) input_item_SetMeta( item, vlc_meta_Language, b )
+#define input_item_SetNowPlaying( item, b ) input_item_SetMeta( item, vlc_meta_NowPlaying, b )
+#define input_item_SetPublisher( item, b ) input_item_SetMeta( item, vlc_meta_Publisher, b )
+#define input_item_SetEncodedBy( item, b ) input_item_SetMeta( item, vlc_meta_EncodedBy, b )
+#define input_item_SetArtURL( item, b ) input_item_SetMeta( item, vlc_meta_ArtworkURL, b )
+#define input_item_SetTrackID( item, b ) input_item_SetMeta( item, vlc_meta_TrackID, b )
+
+#define input_item_GetTitle( item ) input_item_GetMeta( item, vlc_meta_Title )
+#define input_item_GetArtist( item ) input_item_GetMeta( item, vlc_meta_Artist )
+#define input_item_GetGenre( item ) input_item_GetMeta( item, vlc_meta_Genre )
+#define input_item_GetCopyright( item ) input_item_GetMeta( item, vlc_meta_Copyright )
+#define input_item_GetAlbum( item ) input_item_GetMeta( item, vlc_meta_Album )
+#define input_item_GetTrackNum( item ) input_item_GetMeta( item, vlc_meta_TrackNumber )
+#define input_item_GetDescription( item ) input_item_GetMeta( item, vlc_meta_Description )
+#define input_item_GetRating( item ) input_item_GetMeta( item, vlc_meta_Rating )
+#define input_item_GetDate( item ) input_item_GetMeta( item, vlc_meta_Date )
+#define input_item_GetGetting( item ) input_item_GetMeta( item, vlc_meta_Getting )
+#define input_item_GetURL( item ) input_item_GetMeta( item, vlc_meta_URL )
+#define input_item_GetLanguage( item ) input_item_GetMeta( item, vlc_meta_Language )
+#define input_item_GetNowPlaying( item ) input_item_GetMeta( item, vlc_meta_NowPlaying )
+#define input_item_GetPublisher( item ) input_item_GetMeta( item, vlc_meta_Publisher )
+#define input_item_GetEncodedBy( item ) input_item_GetMeta( item, vlc_meta_EncodedBy )
+#define input_item_GetArtURL( item ) input_item_GetMeta( item, vlc_meta_ArtworkURL )
+#define input_item_GetTrackID( item ) input_item_GetMeta( item, vlc_meta_TrackID )
+#define input_item_GetSetting( item ) input_item_GetMeta( item, vlc_meta_Setting )
+
+VLC_EXPORT( char *, input_item_GetInfo, ( input_item_t *p_i, const char *psz_cat,const char *psz_name ) );
+VLC_EXPORT(int, input_item_AddInfo, ( input_item_t *p_i, const char *psz_cat, const char *psz_name, const char *psz_format, ... ) LIBVLC_FORMAT( 4, 5 ) );
+
+#define input_item_New( a,b,c ) input_item_NewExt( a, b, c, 0, NULL, -1 )
+#define input_item_NewExt(a,b,c,d,e,f) __input_item_NewExt( VLC_OBJECT(a),b,c,d,e,f)
+VLC_EXPORT( input_item_t *, __input_item_NewExt, (vlc_object_t *, const char *, const char*, int, const char *const *, mtime_t i_duration ) );
+VLC_EXPORT( input_item_t *, input_item_NewWithType, ( vlc_object_t *, const char *, const char *e, int, const char *const *, mtime_t i_duration, int ) );
+
+#define input_item_GetById(a,b) __input_item_GetById( VLC_OBJECT(a),b )
+VLC_EXPORT( input_item_t *, __input_item_GetById, (vlc_object_t *, int ) );