+ vlc_thread_t thread_id;
+ bool b_thread;
+
+ /* Objects thread synchronization */
+ vlc_mutex_t lock;
+ vlc_cond_t wait;
+ int pipes[2];
+ vlc_spinlock_t spin;
+
+ /* Objects management */
+ vlc_spinlock_t ref_spin;
+ unsigned i_refcount;
+ vlc_destructor_t pf_destructor;
+
+ /* Objects tree structure */
+ vlc_object_t *prev, *next;
+ vlc_object_t **pp_children;
+ int i_children;
+} vlc_object_internals_t;
+
+#define ZOOM_SECTION N_("Zoom")
+#define ZOOM_QUARTER_KEY_TEXT N_("1:4 Quarter")
+#define ZOOM_HALF_KEY_TEXT N_("1:2 Half")
+#define ZOOM_ORIGINAL_KEY_TEXT N_("1:1 Original")
+#define ZOOM_DOUBLE_KEY_TEXT N_("2:1 Double")
+
+#define vlc_internals( obj ) (((vlc_object_internals_t*)(VLC_OBJECT(obj)))-1)
+
+typedef struct sap_handler_t sap_handler_t;
+
+/**
+ * Private LibVLC instance data.
+ */
+typedef struct libvlc_priv_t
+{
+ libvlc_int_t public_data;
+
+ /* Configuration */
+ vlc_mutex_t config_lock; ///< config file lock
+ char * psz_configfile; ///< location of config file
+
+ /* There is no real reason to keep a list of items, but not to break
+ * everything, let's keep it */
+ input_item_array_t input_items; ///< Array of all created input items
+ int i_last_input_id ; ///< Last id of input item
+
+ /* Messages */
+ msg_bank_t msg_bank; ///< The message bank
+ int i_verbose; ///< info messages
+ bool b_color; ///< color messages?
+ vlc_dictionary_t msg_enabled_objects; ///< Enabled objects
+ bool msg_all_objects_enabled; ///< Should we print all objects?