]> git.sesse.net Git - vlc/blobdiff - src/libvlc.h
Add a useful link to precious Meuhh's comments
[vlc] / src / libvlc.h
index ee4434eb08db54107694d338d0f189fc2068213c..b64c2aeafd4a0a9fc9c40d979e46a4b022250628 100644 (file)
@@ -1,9 +1,12 @@
 /*****************************************************************************
  * libvlc.h: Internal libvlc generic/misc declaration
  *****************************************************************************
+ * Copyright (C) 1999, 2000, 2001, 2002 the VideoLAN team
  * Copyright © 2006-2007 Rémi Denis-Courmont
  * $Id$
  *
+ * Authors: Vincent Seguin <seguin@via.ecp.fr>
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
 
 extern const char vlc_usage[];
 
-extern const module_config_t libvlc_config[];
-extern const size_t libvlc_config_count;
-
 extern const struct hotkey libvlc_hotkeys[];
 extern const size_t libvlc_hotkeys_size;
 
+
+/*
+ * Threads subsystem
+ */
+int __vlc_threads_init( vlc_object_t * );
+int __vlc_threads_end( vlc_object_t * );
+
+/*
+ * CPU capabilities
+ */
+extern uint32_t cpu_flags;
+uint32_t CPUCapabilities( void );
+
+/*
+ * Unicode stuff
+ */
+
+/*
+ * LibVLC objects stuff
+ */
+
 extern vlc_object_t *
 vlc_custom_create (vlc_object_t *p_this, size_t i_size, int i_type,
                    const char *psz_type);
 
-#if 0
 /*****************************************************************************
  * libvlc_global_data_t (global variable)
  *****************************************************************************
@@ -71,9 +91,89 @@ struct libvlc_global_data_t
     char *                 psz_vlcpath;
 #endif
 };
-#endif
 
 
-extern uint32_t cpu_flags;
+libvlc_global_data_t *vlc_global (void);
+libvlc_int_t *vlc_current_object (int i_object);
+
+/* Private LibVLC data for each objects */
+struct vlc_object_internals_t
+{
+    /* Object variables */
+    variable_t *    p_vars;
+    vlc_mutex_t     var_lock;
+    int             i_vars;
+
+    /* Thread properties, if any */
+    vlc_thread_t    thread_id;
+    vlc_bool_t      b_thread;
+
+    /* Objects thread synchronization */
+    int             pipes[2];
+
+    /* Objects management */
+    unsigned        i_refcount;
+    vlc_bool_t      b_attached;
+};
+
+
+static inline vlc_object_internals_t *vlc_internals( vlc_object_t *obj )
+{
+    return obj->p_internals;
+}
+
+/*
+ * Configuration stuff
+ */
+#if 0
+struct module_config_t
+{
+    int          i_type;                               /* Configuration type */
+    const char  *psz_type;                          /* Configuration subtype */
+    const char  *psz_name;                                    /* Option name */
+    char         i_short;                      /* Optional short option name */
+    const char  *psz_text;      /* Short comment on the configuration option */
+    const char  *psz_longtext;   /* Long comment on the configuration option */
+    module_value_t value;                                    /* Option value */
+    module_value_t orig;
+    module_value_t saved;
+    module_nvalue_t min;
+    module_nvalue_t max;
+
+    /* Function to call when commiting a change */
+    vlc_callback_t pf_callback;
+    void          *p_callback_data;
+
+    /* Values list */
+    const char **ppsz_list;       /* List of possible values for the option */
+    int         *pi_list;                              /* Idem for integers */
+    const char **ppsz_list_text;          /* Friendly names for list values */
+    int          i_list;                               /* Options list size */
+
+    /* Actions list */
+    vlc_callback_t *ppf_action;    /* List of possible actions for a config */
+    const char    **ppsz_action_text;         /* Friendly names for actions */
+    int            i_action;                           /* actions list size */
+
+    /* Misc */
+    vlc_mutex_t *p_lock;            /* Lock to use when modifying the config */
+    vlc_bool_t   b_dirty;          /* Dirty flag to indicate a config change */
+    vlc_bool_t   b_advanced;          /* Flag to indicate an advanced option */
+    vlc_bool_t   b_internal;   /* Flag to indicate option is not to be shown */
+    vlc_bool_t   b_restart;   /* Flag to indicate the option needs a restart */
+                              /* to take effect */
+
+    /* Deprecated */
+    const char    *psz_current;                         /* Good option name */
+    vlc_bool_t     b_strict;                     /* Transitionnal or strict */
+
+    /* Option values loaded from config file */
+    vlc_bool_t   b_autosave;      /* Config will be auto-saved at exit time */
+    vlc_bool_t   b_unsaveable;                    /* Config should be saved */
+};
+#endif
+
+extern module_config_t libvlc_config[];
+extern const size_t libvlc_config_count;
 
 #endif