-VLC_EXPORT( int, input_vaControl,( input_thread_t *, int i_query, va_list ) );
-VLC_EXPORT( int, input_Control, ( input_thread_t *, int i_query, ... ) );
+/** @}*/
+
+/*****************************************************************************
+ * Prototypes
+ *****************************************************************************/
+
+VLC_API input_thread_t * input_Create( vlc_object_t *p_parent, input_item_t *, const char *psz_log, input_resource_t * ) VLC_USED;
+#define input_Create(a,b,c,d) input_Create(VLC_OBJECT(a),b,c,d)
+
+VLC_API input_thread_t * input_CreateAndStart( vlc_object_t *p_parent, input_item_t *, const char *psz_log ) VLC_USED;
+#define input_CreateAndStart(a,b,c) input_CreateAndStart(VLC_OBJECT(a),b,c)
+
+VLC_API int input_Start( input_thread_t * );
+
+VLC_API void input_Stop( input_thread_t *, bool b_abort );
+
+VLC_API int input_Read( vlc_object_t *, input_item_t * );
+#define input_Read(a,b) input_Read(VLC_OBJECT(a),b)
+
+VLC_API int input_vaControl( input_thread_t *, int i_query, va_list );
+
+VLC_API int input_Control( input_thread_t *, int i_query, ... );
+
+VLC_API void input_Close( input_thread_t * );
+void input_Join( input_thread_t * );
+void input_Release( input_thread_t * );
+
+/**
+ * Get the input item for an input thread
+ *
+ * You have to keep a reference to the input or to the input_item_t until
+ * you do not need it anymore.
+ */
+VLC_API input_item_t* input_GetItem( input_thread_t * ) VLC_USED;