[vlc-commits] input: hide input_thread_t
Thomas Guillem
git at videolan.org
Mon Jun 3 16:16:47 CEST 2019
vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Fri May 31 15:15:12 2019 +0200| [9dc34b420504bd0b447b741456a1114da0ca422b] | committer: Thomas Guillem
input: hide input_thread_t
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9dc34b420504bd0b447b741456a1114da0ca422b
---
include/vlc_common.h | 1 -
include/vlc_input.h | 349 --------------------------------------
include/vlc_objects.h | 8 -
src/input/demux.c | 2 +-
src/input/input_internal.h | 350 +++++++++++++++++++++++++++++++++++++++
src/input/stream.h | 1 +
src/input/thumbnailer.c | 2 +-
src/libvlccore.sym | 12 --
src/text/strings.c | 2 +-
src/video_output/vout_internal.h | 1 +
10 files changed, 355 insertions(+), 373 deletions(-)
diff --git a/include/vlc_common.h b/include/vlc_common.h
index 0bbb98fd62..78d4c17850 100644
--- a/include/vlc_common.h
+++ b/include/vlc_common.h
@@ -354,7 +354,6 @@ typedef struct module_config_t module_config_t;
typedef struct config_category_t config_category_t;
/* Input */
-typedef struct input_thread_t input_thread_t;
typedef struct input_item_t input_item_t;
typedef struct input_item_node_t input_item_node_t;
typedef struct stream_t stream_t;
diff --git a/include/vlc_input.h b/include/vlc_input.h
index de1135dfb4..7d24f11830 100644
--- a/include/vlc_input.h
+++ b/include/vlc_input.h
@@ -211,78 +211,6 @@ static inline input_attachment_t *vlc_input_attachment_Duplicate( const input_at
a->p_data, a->i_data );
}
-/*****************************************************************************
- * input defines/constants.
- *****************************************************************************/
-
-/**
- * Main structure representing an input thread. This structure is mostly
- * private. The only public fields are read-only and constant.
- */
-struct input_thread_t
-{
- struct vlc_object_t obj;
-};
-
-/*****************************************************************************
- * Input events and variables
- *****************************************************************************/
-
-/**
- * \defgroup inputvariable Input variables
- *
- * The input provides multiples variable you can write to and/or read from.
- *
- * TODO complete the documentation.
- * The read only variables are:
- * - "length"
- * - "can-seek" (if you can seek, it doesn't say if 'bar display' has be shown
- * or not, for that check position != 0.0)
- * - "can-pause"
- * - "can-rate"
- * - "can-rewind"
- * - "can-record" (if a stream can be recorded while playing)
- * - "teletext-es" (list of id from the spu tracks (spu-es) that are teletext, the
- * variable value being the one currently selected, -1 if no teletext)
- * - "signal-quality"
- * - "signal-strength"
- * - "program-scrambled" (if the current program is scrambled)
- * - "cache" (level of data cached [0 .. 1])
- *
- * The read-write variables are:
- * - state (\see input_state_e)
- * - rate
- * - position
- * - time, time-offset
- * - title, next-title, prev-title
- * - chapter, next-chapter, next-chapter-prev
- * - program, audio-es, video-es, spu-es
- * - audio-delay, spu-delay
- * - bookmark (bookmark list)
- * - record
- * - frame-next
- * - navigation (list of "title %2i")
- * - "title %2i"
- *
- * The variable used for event is
- * - intf-event (\see input_event_type_e)
- */
-
-/**
- * Input state
- *
- * This enum is used by the variable "state"
- */
-typedef enum input_state_e
-{
- INIT_S = 0,
- OPENING_S,
- PLAYING_S,
- PAUSE_S,
- END_S,
- ERROR_S,
-} input_state_e;
-
/**
* Input rate.
*
@@ -301,282 +229,5 @@ typedef enum input_state_e
*/
#define INPUT_RATE_MAX 31.25f
-/**
- * Input events
- *
- * You can catch input event by adding a callback on the variable "intf-event".
- * This variable is an integer that will hold a input_event_type_e value.
- */
-typedef enum input_event_type_e
-{
- /* "state" has changed */
- INPUT_EVENT_STATE,
- /* b_dead is true */
- INPUT_EVENT_DEAD,
-
- /* "rate" has changed */
- INPUT_EVENT_RATE,
-
- /* "capabilities" has changed */
- INPUT_EVENT_CAPABILITIES,
-
- /* At least one of "position" or "time" */
- INPUT_EVENT_POSITION,
-
- /* "length" has changed */
- INPUT_EVENT_LENGTH,
-
- /* A title has been added or removed or selected.
- * It implies that the chapter has changed (no chapter event is sent) */
- INPUT_EVENT_TITLE,
- /* A chapter has been added or removed or selected. */
- INPUT_EVENT_CHAPTER,
-
- /* A program ("program") has been added or removed or selected,
- * or "program-scrambled" has changed.*/
- INPUT_EVENT_PROGRAM,
- /* A ES has been added or removed or selected */
- INPUT_EVENT_ES,
-
- /* "record" has changed */
- INPUT_EVENT_RECORD,
-
- /* input_item_t media has changed */
- INPUT_EVENT_ITEM_META,
- /* input_item_t info has changed */
- INPUT_EVENT_ITEM_INFO,
- /* input_item_t epg has changed */
- INPUT_EVENT_ITEM_EPG,
-
- /* Input statistics have been updated */
- INPUT_EVENT_STATISTICS,
- /* At least one of "signal-quality" or "signal-strength" has changed */
- INPUT_EVENT_SIGNAL,
-
- /* "audio-delay" has changed */
- INPUT_EVENT_AUDIO_DELAY,
- /* "spu-delay" has changed */
- INPUT_EVENT_SUBTITLE_DELAY,
-
- /* "bookmark" has changed */
- INPUT_EVENT_BOOKMARK,
-
- /* cache" has changed */
- INPUT_EVENT_CACHE,
-
- /* A vout_thread_t object has been created/deleted by *the input* */
- INPUT_EVENT_VOUT,
-
- /* (pre-)parsing events */
- INPUT_EVENT_SUBITEMS,
-
- /* vbi_page has changed */
- INPUT_EVENT_VBI_PAGE,
- /* vbi_transparent has changed */
- INPUT_EVENT_VBI_TRANSPARENCY,
-
- /* subs_fps has changed */
- INPUT_EVENT_SUBS_FPS,
-
- /* Thumbnail generation */
- INPUT_EVENT_THUMBNAIL_READY,
-} input_event_type_e;
-
-#define VLC_INPUT_CAPABILITIES_SEEKABLE (1<<0)
-#define VLC_INPUT_CAPABILITIES_PAUSEABLE (1<<1)
-#define VLC_INPUT_CAPABILITIES_CHANGE_RATE (1<<2)
-#define VLC_INPUT_CAPABILITIES_REWINDABLE (1<<3)
-#define VLC_INPUT_CAPABILITIES_RECORDABLE (1<<4)
-
-struct vlc_input_event_position
-{
- float percentage;
- vlc_tick_t ms;
-};
-
-struct vlc_input_event_title
-{
- enum {
- VLC_INPUT_TITLE_NEW_LIST,
- VLC_INPUT_TITLE_SELECTED,
- } action;
- union
- {
- struct
- {
- input_title_t *const *array;
- size_t count;
- } list;
- size_t selected_idx;
- };
-};
-
-struct vlc_input_event_chapter
-{
- int title;
- int seekpoint;
-};
-
-struct vlc_input_event_program {
- enum {
- VLC_INPUT_PROGRAM_ADDED,
- VLC_INPUT_PROGRAM_DELETED,
- VLC_INPUT_PROGRAM_UPDATED,
- VLC_INPUT_PROGRAM_SELECTED,
- VLC_INPUT_PROGRAM_SCRAMBLED,
- } action;
- int id;
- union {
- const char *title;
- bool scrambled;
- };
-};
-
-struct vlc_input_event_es {
- enum {
- VLC_INPUT_ES_ADDED,
- VLC_INPUT_ES_DELETED,
- VLC_INPUT_ES_UPDATED,
- VLC_INPUT_ES_SELECTED,
- VLC_INPUT_ES_UNSELECTED,
- } action;
- /**
- * ES track id: only valid from the event callback, unless the id is held
- * by the user with vlc_es_Hold(). */
- vlc_es_id_t *id;
- /**
- * Title of ES track, can be updated after the VLC_INPUT_ES_UPDATED event.
- */
- const char *title;
- /**
- * ES track information, can be updated after the VLC_INPUT_ES_UPDATED event.
- */
- const es_format_t *fmt;
-};
-
-struct vlc_input_event_signal {
- float quality;
- float strength;
-};
-
-struct vlc_input_event_vout
-{
- enum {
- VLC_INPUT_EVENT_VOUT_ADDED,
- VLC_INPUT_EVENT_VOUT_DELETED,
- } action;
- vout_thread_t *vout;
- vlc_es_id_t *id;
-};
-
-struct vlc_input_event
-{
- input_event_type_e type;
-
- union {
- /* INPUT_EVENT_STATE */
- input_state_e state;
- /* INPUT_EVENT_RATE */
- float rate;
- /* INPUT_EVENT_CAPABILITIES */
- int capabilities; /**< cf. VLC_INPUT_CAPABILITIES_* bitwise flags */
- /* INPUT_EVENT_POSITION */
- struct vlc_input_event_position position;
- /* INPUT_EVENT_LENGTH */
- vlc_tick_t length;
- /* INPUT_EVENT_TITLE */
- struct vlc_input_event_title title;
- /* INPUT_EVENT_CHAPTER */
- struct vlc_input_event_chapter chapter;
- /* INPUT_EVENT_PROGRAM */
- struct vlc_input_event_program program;
- /* INPUT_EVENT_ES */
- struct vlc_input_event_es es;
- /* INPUT_EVENT_RECORD */
- bool record;
- /* INPUT_EVENT_STATISTICS */
- const struct input_stats_t *stats;
- /* INPUT_EVENT_SIGNAL */
- struct vlc_input_event_signal signal;
- /* INPUT_EVENT_AUDIO_DELAY */
- vlc_tick_t audio_delay;
- /* INPUT_EVENT_SUBTITLE_DELAY */
- vlc_tick_t subtitle_delay;
- /* INPUT_EVENT_CACHE */
- float cache;
- /* INPUT_EVENT_VOUT */
- struct vlc_input_event_vout vout;
- /* INPUT_EVENT_SUBITEMS */
- input_item_node_t *subitems;
- /* INPUT_EVENT_VBI_PAGE */
- unsigned vbi_page;
- /* INPUT_EVENT_VBI_TRANSPARENCY */
- bool vbi_transparent;
- /* INPUT_EVENT_SUBS_FPS */
- float subs_fps;
- /* INPUT_EVENT_THUMBNAIL_READY */
- picture_t *thumbnail;
- };
-};
-
-typedef void (*input_thread_events_cb)( input_thread_t *input,
- const struct vlc_input_event *event,
- void *userdata);
-
-/** @}*/
-
-/*****************************************************************************
- * Prototypes
- *****************************************************************************/
-VLC_API input_thread_t * input_Create( vlc_object_t *p_parent,
- input_thread_events_cb event_cb, void *events_data,
- input_item_t *, input_resource_t *,
- vlc_renderer_item_t* p_renderer ) VLC_USED;
-#define input_Create(a,b,c,d,e,f) input_Create(VLC_OBJECT(a),b,c,d,e,f)
-
-
-/**
- * Creates an item preparser.
- *
- * Creates an input thread to preparse an item. The input needs to be started
- * with input_Start() afterwards.
- *
- * @param obj parent object
- * @param item input item to preparse
- * @return an input thread or NULL on error
- */
-VLC_API input_thread_t *input_CreatePreparser(vlc_object_t *obj,
- input_thread_events_cb events_cb,
- void *events_data, input_item_t *item)
-VLC_USED;
-
-VLC_API
-input_thread_t *input_CreateThumbnailer(vlc_object_t *obj,
- input_thread_events_cb events_cb,
- void *events_data, input_item_t *item)
-VLC_USED;
-
-VLC_API int input_Start( input_thread_t * );
-
-VLC_API void input_Stop( input_thread_t * );
-
-VLC_API int input_Read( vlc_object_t *, input_item_t *,
- input_thread_events_cb, void * );
-#define input_Read(a,b,c,d) input_Read(VLC_OBJECT(a),b,c,d)
-
-VLC_API void input_Close( input_thread_t * );
-
-VLC_API void input_SetTime( input_thread_t *, vlc_tick_t i_time, bool b_fast );
-
-VLC_API void input_SetPosition( input_thread_t *, float f_position, bool b_fast );
-
-/**
- * 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;
-
/** @} */
#endif
diff --git a/include/vlc_objects.h b/include/vlc_objects.h
index cc5eea64eb..3611da54ff 100644
--- a/include/vlc_objects.h
+++ b/include/vlc_objects.h
@@ -193,10 +193,6 @@ static inline libvlc_int_t *vlc_object_instance(vlc_object_t *obj)
}
#define vlc_object_instance(o) vlc_object_instance(VLC_OBJECT(o))
-/* Here for backward compatibility. TODO: Move to <vlc_input.h>! */
-VLC_API input_thread_t *input_Hold(input_thread_t *input);
-VLC_API void input_Release(input_thread_t *input);
-
/* Here for backward compatibility. TODO: Move to <vlc_vout.h>! */
VLC_API vout_thread_t *vout_Hold(vout_thread_t *vout);
VLC_API void vout_Release(vout_thread_t *vout);
@@ -210,8 +206,6 @@ VLC_DEPRECATED static inline void *vlc_object_hold(vlc_object_t *o)
{
const char *tn = vlc_object_typename(o);
- if (!strcmp(tn, "input"))
- input_Hold((input_thread_t *)o);
if (!strcmp(tn, "audio output"))
aout_Hold((audio_output_t *)o);
if (!strcmp(tn, "video output"))
@@ -223,8 +217,6 @@ static inline void vlc_object_release(vlc_object_t *o)
{
const char *tn = vlc_object_typename(o);
- if (!strcmp(tn, "input"))
- input_Release((input_thread_t *)o);
if (!strcmp(tn, "audio output"))
aout_Release((audio_output_t *)o);
if (!strcmp(tn, "video output"))
diff --git a/src/input/demux.c b/src/input/demux.c
index d7b5ce3711..22952ae800 100644
--- a/src/input/demux.c
+++ b/src/input/demux.c
@@ -31,10 +31,10 @@
#include <libvlc.h>
#include <vlc_codec.h>
#include <vlc_meta.h>
-#include <vlc_input.h>
#include <vlc_url.h>
#include <vlc_modules.h>
#include <vlc_strings.h>
+#include "input_internal.h"
typedef const struct
{
diff --git a/src/input/input_internal.h b/src/input/input_internal.h
index cdf70b7d04..7b2f86896e 100644
--- a/src/input/input_internal.h
+++ b/src/input/input_internal.h
@@ -37,6 +37,356 @@
struct input_stats;
/*****************************************************************************
+ * input defines/constants.
+ *****************************************************************************/
+
+/**
+ * Main structure representing an input thread. This structure is mostly
+ * private. The only public fields are read-only and constant.
+ */
+typedef struct input_thread_t
+{
+ struct vlc_object_t obj;
+} input_thread_t;
+
+/*****************************************************************************
+ * Input events and variables
+ *****************************************************************************/
+
+/**
+ * \defgroup inputvariable Input variables
+ *
+ * The input provides multiples variable you can write to and/or read from.
+ *
+ * TODO complete the documentation.
+ * The read only variables are:
+ * - "length"
+ * - "can-seek" (if you can seek, it doesn't say if 'bar display' has be shown
+ * or not, for that check position != 0.0)
+ * - "can-pause"
+ * - "can-rate"
+ * - "can-rewind"
+ * - "can-record" (if a stream can be recorded while playing)
+ * - "teletext-es" (list of id from the spu tracks (spu-es) that are teletext, the
+ * variable value being the one currently selected, -1 if no teletext)
+ * - "signal-quality"
+ * - "signal-strength"
+ * - "program-scrambled" (if the current program is scrambled)
+ * - "cache" (level of data cached [0 .. 1])
+ *
+ * The read-write variables are:
+ * - state (\see input_state_e)
+ * - rate
+ * - position
+ * - time, time-offset
+ * - title, next-title, prev-title
+ * - chapter, next-chapter, next-chapter-prev
+ * - program, audio-es, video-es, spu-es
+ * - audio-delay, spu-delay
+ * - bookmark (bookmark list)
+ * - record
+ * - frame-next
+ * - navigation (list of "title %2i")
+ * - "title %2i"
+ *
+ * The variable used for event is
+ * - intf-event (\see input_event_type_e)
+ */
+
+/**
+ * Input state
+ *
+ * This enum is used by the variable "state"
+ */
+typedef enum input_state_e
+{
+ INIT_S = 0,
+ OPENING_S,
+ PLAYING_S,
+ PAUSE_S,
+ END_S,
+ ERROR_S,
+} input_state_e;
+
+/**
+ * Input events
+ *
+ * You can catch input event by adding a callback on the variable "intf-event".
+ * This variable is an integer that will hold a input_event_type_e value.
+ */
+typedef enum input_event_type_e
+{
+ /* "state" has changed */
+ INPUT_EVENT_STATE,
+ /* b_dead is true */
+ INPUT_EVENT_DEAD,
+
+ /* "rate" has changed */
+ INPUT_EVENT_RATE,
+
+ /* "capabilities" has changed */
+ INPUT_EVENT_CAPABILITIES,
+
+ /* At least one of "position" or "time" */
+ INPUT_EVENT_POSITION,
+
+ /* "length" has changed */
+ INPUT_EVENT_LENGTH,
+
+ /* A title has been added or removed or selected.
+ * It implies that the chapter has changed (no chapter event is sent) */
+ INPUT_EVENT_TITLE,
+ /* A chapter has been added or removed or selected. */
+ INPUT_EVENT_CHAPTER,
+
+ /* A program ("program") has been added or removed or selected,
+ * or "program-scrambled" has changed.*/
+ INPUT_EVENT_PROGRAM,
+ /* A ES has been added or removed or selected */
+ INPUT_EVENT_ES,
+
+ /* "record" has changed */
+ INPUT_EVENT_RECORD,
+
+ /* input_item_t media has changed */
+ INPUT_EVENT_ITEM_META,
+ /* input_item_t info has changed */
+ INPUT_EVENT_ITEM_INFO,
+ /* input_item_t epg has changed */
+ INPUT_EVENT_ITEM_EPG,
+
+ /* Input statistics have been updated */
+ INPUT_EVENT_STATISTICS,
+ /* At least one of "signal-quality" or "signal-strength" has changed */
+ INPUT_EVENT_SIGNAL,
+
+ /* "audio-delay" has changed */
+ INPUT_EVENT_AUDIO_DELAY,
+ /* "spu-delay" has changed */
+ INPUT_EVENT_SUBTITLE_DELAY,
+
+ /* "bookmark" has changed */
+ INPUT_EVENT_BOOKMARK,
+
+ /* cache" has changed */
+ INPUT_EVENT_CACHE,
+
+ /* A vout_thread_t object has been created/deleted by *the input* */
+ INPUT_EVENT_VOUT,
+
+ /* (pre-)parsing events */
+ INPUT_EVENT_SUBITEMS,
+
+ /* vbi_page has changed */
+ INPUT_EVENT_VBI_PAGE,
+ /* vbi_transparent has changed */
+ INPUT_EVENT_VBI_TRANSPARENCY,
+
+ /* subs_fps has changed */
+ INPUT_EVENT_SUBS_FPS,
+
+ /* Thumbnail generation */
+ INPUT_EVENT_THUMBNAIL_READY,
+} input_event_type_e;
+
+#define VLC_INPUT_CAPABILITIES_SEEKABLE (1<<0)
+#define VLC_INPUT_CAPABILITIES_PAUSEABLE (1<<1)
+#define VLC_INPUT_CAPABILITIES_CHANGE_RATE (1<<2)
+#define VLC_INPUT_CAPABILITIES_REWINDABLE (1<<3)
+#define VLC_INPUT_CAPABILITIES_RECORDABLE (1<<4)
+
+struct vlc_input_event_position
+{
+ float percentage;
+ vlc_tick_t ms;
+};
+
+struct vlc_input_event_title
+{
+ enum {
+ VLC_INPUT_TITLE_NEW_LIST,
+ VLC_INPUT_TITLE_SELECTED,
+ } action;
+ union
+ {
+ struct
+ {
+ input_title_t *const *array;
+ size_t count;
+ } list;
+ size_t selected_idx;
+ };
+};
+
+struct vlc_input_event_chapter
+{
+ int title;
+ int seekpoint;
+};
+
+struct vlc_input_event_program {
+ enum {
+ VLC_INPUT_PROGRAM_ADDED,
+ VLC_INPUT_PROGRAM_DELETED,
+ VLC_INPUT_PROGRAM_UPDATED,
+ VLC_INPUT_PROGRAM_SELECTED,
+ VLC_INPUT_PROGRAM_SCRAMBLED,
+ } action;
+ int id;
+ union {
+ const char *title;
+ bool scrambled;
+ };
+};
+
+struct vlc_input_event_es {
+ enum {
+ VLC_INPUT_ES_ADDED,
+ VLC_INPUT_ES_DELETED,
+ VLC_INPUT_ES_UPDATED,
+ VLC_INPUT_ES_SELECTED,
+ VLC_INPUT_ES_UNSELECTED,
+ } action;
+ /**
+ * ES track id: only valid from the event callback, unless the id is held
+ * by the user with vlc_es_Hold(). */
+ vlc_es_id_t *id;
+ /**
+ * Title of ES track, can be updated after the VLC_INPUT_ES_UPDATED event.
+ */
+ const char *title;
+ /**
+ * ES track information, can be updated after the VLC_INPUT_ES_UPDATED event.
+ */
+ const es_format_t *fmt;
+};
+
+struct vlc_input_event_signal {
+ float quality;
+ float strength;
+};
+
+struct vlc_input_event_vout
+{
+ enum {
+ VLC_INPUT_EVENT_VOUT_ADDED,
+ VLC_INPUT_EVENT_VOUT_DELETED,
+ } action;
+ vout_thread_t *vout;
+ vlc_es_id_t *id;
+};
+
+struct vlc_input_event
+{
+ input_event_type_e type;
+
+ union {
+ /* INPUT_EVENT_STATE */
+ input_state_e state;
+ /* INPUT_EVENT_RATE */
+ float rate;
+ /* INPUT_EVENT_CAPABILITIES */
+ int capabilities; /**< cf. VLC_INPUT_CAPABILITIES_* bitwise flags */
+ /* INPUT_EVENT_POSITION */
+ struct vlc_input_event_position position;
+ /* INPUT_EVENT_LENGTH */
+ vlc_tick_t length;
+ /* INPUT_EVENT_TITLE */
+ struct vlc_input_event_title title;
+ /* INPUT_EVENT_CHAPTER */
+ struct vlc_input_event_chapter chapter;
+ /* INPUT_EVENT_PROGRAM */
+ struct vlc_input_event_program program;
+ /* INPUT_EVENT_ES */
+ struct vlc_input_event_es es;
+ /* INPUT_EVENT_RECORD */
+ bool record;
+ /* INPUT_EVENT_STATISTICS */
+ const struct input_stats_t *stats;
+ /* INPUT_EVENT_SIGNAL */
+ struct vlc_input_event_signal signal;
+ /* INPUT_EVENT_AUDIO_DELAY */
+ vlc_tick_t audio_delay;
+ /* INPUT_EVENT_SUBTITLE_DELAY */
+ vlc_tick_t subtitle_delay;
+ /* INPUT_EVENT_CACHE */
+ float cache;
+ /* INPUT_EVENT_VOUT */
+ struct vlc_input_event_vout vout;
+ /* INPUT_EVENT_SUBITEMS */
+ input_item_node_t *subitems;
+ /* INPUT_EVENT_VBI_PAGE */
+ unsigned vbi_page;
+ /* INPUT_EVENT_VBI_TRANSPARENCY */
+ bool vbi_transparent;
+ /* INPUT_EVENT_SUBS_FPS */
+ float subs_fps;
+ /* INPUT_EVENT_THUMBNAIL_READY */
+ picture_t *thumbnail;
+ };
+};
+
+typedef void (*input_thread_events_cb)( input_thread_t *input,
+ const struct vlc_input_event *event,
+ void *userdata);
+
+/*****************************************************************************
+ * Prototypes
+ *****************************************************************************/
+input_thread_t * input_Create( vlc_object_t *p_parent,
+ input_thread_events_cb event_cb, void *events_data,
+ input_item_t *, input_resource_t *,
+ vlc_renderer_item_t* p_renderer ) VLC_USED;
+#define input_Create(a,b,c,d,e,f) input_Create(VLC_OBJECT(a),b,c,d,e,f)
+
+
+/**
+ * Creates an item preparser.
+ *
+ * Creates an input thread to preparse an item. The input needs to be started
+ * with input_Start() afterwards.
+ *
+ * @param obj parent object
+ * @param item input item to preparse
+ * @return an input thread or NULL on error
+ */
+input_thread_t *input_CreatePreparser(vlc_object_t *obj,
+ input_thread_events_cb events_cb,
+ void *events_data, input_item_t *item)
+VLC_USED;
+
+VLC_API
+input_thread_t *input_CreateThumbnailer(vlc_object_t *obj,
+ input_thread_events_cb events_cb,
+ void *events_data, input_item_t *item)
+VLC_USED;
+
+input_thread_t *input_Hold(input_thread_t *input);
+void input_Release(input_thread_t *input);
+
+int input_Start( input_thread_t * );
+
+void input_Stop( input_thread_t * );
+
+int input_Read( vlc_object_t *, input_item_t *,
+ input_thread_events_cb, void * );
+#define input_Read(a,b,c,d) input_Read(VLC_OBJECT(a),b,c,d)
+
+void input_Close( input_thread_t * );
+
+void input_SetTime( input_thread_t *, vlc_tick_t i_time, bool b_fast );
+
+void input_SetPosition( input_thread_t *, float f_position, bool b_fast );
+
+/**
+ * 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.
+ */
+input_item_t* input_GetItem( input_thread_t * ) VLC_USED;
+
+/*****************************************************************************
* Private input fields
*****************************************************************************/
diff --git a/src/input/stream.h b/src/input/stream.h
index fbfff23a20..941d2f0a15 100644
--- a/src/input/stream.h
+++ b/src/input/stream.h
@@ -26,6 +26,7 @@
#include <vlc_common.h>
#include <vlc_stream.h>
+#include "input_internal.h"
stream_t *vlc_stream_CustomNew(vlc_object_t *parent,
void (*destroy)(stream_t *), size_t extra_size,
diff --git a/src/input/thumbnailer.c b/src/input/thumbnailer.c
index b1bbf2ae36..524651364d 100644
--- a/src/input/thumbnailer.c
+++ b/src/input/thumbnailer.c
@@ -25,7 +25,7 @@
#endif
#include <vlc_thumbnailer.h>
-#include <vlc_input.h>
+#include "input_internal.h"
#include "misc/background_worker.h"
struct vlc_thumbnailer_t
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 006ba6bb4c..f8252a8c61 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -159,16 +159,12 @@ image_HandlerDelete
image_Mime2Fourcc
image_Type2Fourcc
InitMD5
-input_Create
-input_CreatePreparser
-input_CreateThumbnailer
input_DecoderCreate
input_DecoderDelete
input_DecoderDecode
input_DecoderDrain
input_DecoderFlush
input_DecoderSetSpuHighlight
-input_GetItem
input_item_AddInfo
input_item_AddOption
input_item_AddOptions
@@ -209,7 +205,6 @@ input_item_slave_New
input_item_AddSlave
input_item_Parse
input_item_parser_id_Release
-input_Read
input_resource_New
input_resource_Release
input_resource_TerminateVout
@@ -218,16 +213,9 @@ input_resource_GetAout
input_resource_HoldAout
input_resource_PutAout
input_resource_ResetAout
-input_Start
-input_Stop
-input_Hold
-input_Release
-input_SetTime
-input_SetPosition
vlc_readdir_helper_init
vlc_readdir_helper_finish
vlc_readdir_helper_additem
-input_Close
intf_Create
libvlc_InternalAddIntf
libvlc_InternalDialogInit
diff --git a/src/text/strings.c b/src/text/strings.c
index 4fb65de252..906770517b 100644
--- a/src/text/strings.c
+++ b/src/text/strings.c
@@ -43,7 +43,6 @@
#endif
/* Needed by vlc_strfinput */
-#include <vlc_input.h>
#include <vlc_meta.h>
#include <vlc_aout.h>
#include <vlc_memstream.h>
@@ -54,6 +53,7 @@
#include <vlc_player.h>
#include <libvlc.h>
#include <errno.h>
+#include "../input/input_internal.h"
static const struct xml_entity_s
{
diff --git a/src/video_output/vout_internal.h b/src/video_output/vout_internal.h
index ac2feebe93..80b531ab77 100644
--- a/src/video_output/vout_internal.h
+++ b/src/video_output/vout_internal.h
@@ -33,6 +33,7 @@
#include "statistic.h"
#include "chrono.h"
#include "../clock/clock.h"
+#include "../input/input_internal.h"
/* It should be high enough to absorbe jitter due to difficult picture(s)
* to decode but not too high as memory is not that cheap.
More information about the vlc-commits
mailing list