#define CAT_INPUT 4
#define SUBCAT_INPUT_GENERAL 401
#define SUBCAT_INPUT_ACCESS 402
- #define SUBCAT_INPUT_ACCESS_FILTER 403
- #define SUBCAT_INPUT_DEMUX 404
- #define SUBCAT_INPUT_VCODEC 405
- #define SUBCAT_INPUT_ACODEC 406
- #define SUBCAT_INPUT_SCODEC 407
+ #define SUBCAT_INPUT_DEMUX 403
+ #define SUBCAT_INPUT_VCODEC 404
+ #define SUBCAT_INPUT_ACODEC 405
+ #define SUBCAT_INPUT_SCODEC 406
+ #define SUBCAT_INPUT_STREAM_FILTER 407
#define CAT_SOUT 5
#define SUBCAT_SOUT_GENERAL 501
typedef union
{
char *psz;
- int i;
+ int64_t i;
float f;
} module_value_t;
-typedef union
-{
- int i;
- float f;
-} module_nvalue_t;
-
struct module_config_t
{
- int i_type; /* Configuration type */
char *psz_type; /* Configuration subtype */
char *psz_name; /* Option name */
- char i_short; /* Optional short option name */
char *psz_text; /* Short comment on the configuration option */
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;
+ module_value_t min;
+ module_value_t max;
/* Function to call when commiting a change */
vlc_callback_t pf_callback;
int *pi_list; /* Idem for integers */
char **ppsz_list_text; /* Friendly names for list values */
int i_list; /* Options list size */
+ int i_type; /* Configuration type */
vlc_callback_t pf_update_list; /*callback to initialize dropdownlists */
+ char i_short; /* Optional short option name */
/* Actions list */
+ int i_action; /* actions list size */
vlc_callback_t *ppf_action; /* List of possible actions for a config */
char **ppsz_action_text; /* Friendly names for actions */
- int i_action; /* actions list size */
+
+ /* Deprecated */
+ char *psz_oldname; /* Old option name */
+ bool b_removed;
/* Misc */
- vlc_mutex_t *p_lock; /* Lock to use when modifying the config */
bool b_dirty; /* Dirty flag to indicate a config change */
bool b_advanced; /* Flag to indicate an advanced option */
bool b_internal; /* Flag to indicate option is not to be shown */
bool b_restart; /* Flag to indicate the option needs a restart */
/* to take effect */
-
- /* Deprecated */
- char *psz_oldname; /* Old option name */
- bool b_removed;
-
/* Option values loaded from config file */
bool b_autosave; /* Config will be auto-saved at exit time */
bool b_unsaveable; /* Config should not be saved */
* Prototypes - these methods are used to get, set or manipulate configuration
* data.
*****************************************************************************/
-VLC_EXPORT( int, __config_GetType, (vlc_object_t *, const char *) );
-VLC_EXPORT( int, __config_GetInt, (vlc_object_t *, const char *) );
-VLC_EXPORT( void, __config_PutInt, (vlc_object_t *, const char *, int) );
-VLC_EXPORT( float, __config_GetFloat, (vlc_object_t *, const char *) );
-VLC_EXPORT( void, __config_PutFloat, (vlc_object_t *, const char *, float) );
-VLC_EXPORT( char *, __config_GetPsz, (vlc_object_t *, const char *) );
-VLC_EXPORT( void, __config_PutPsz, (vlc_object_t *, const char *, const char *) );
-
-#define config_SaveConfigFile(a,b) __config_SaveConfigFile(VLC_OBJECT(a),b)
-VLC_EXPORT( int, __config_SaveConfigFile, ( vlc_object_t *, const char * ) );
-#define config_ResetAll(a) __config_ResetAll(VLC_OBJECT(a))
-VLC_EXPORT( void, __config_ResetAll, ( vlc_object_t * ) );
-
-VLC_EXPORT( module_config_t *, config_FindConfig,( vlc_object_t *, const char * ) );
-
-VLC_EXPORT(const char *, config_GetDataDir, ( void ));
-VLC_EXPORT(const char *, config_GetConfDir, ( void ) );
-VLC_EXPORT(const char *, config_GetHomeDir, ( void ));
-VLC_EXPORT(char *, config_GetUserConfDir, ( void ) );
-VLC_EXPORT(char *, config_GetUserDataDir, ( void ) );
-VLC_EXPORT(char *, config_GetCacheDir, ( void ) );
-
-VLC_EXPORT( void, __config_AddIntf, ( vlc_object_t *, const char * ) );
-VLC_EXPORT( void, __config_RemoveIntf, ( vlc_object_t *, const char * ) );
-VLC_EXPORT( bool, __config_ExistIntf, ( vlc_object_t *, const char * ) );
-
-#define config_GetType(a,b) __config_GetType(VLC_OBJECT(a),b)
-#define config_GetInt(a,b) __config_GetInt(VLC_OBJECT(a),b)
-#define config_PutInt(a,b,c) __config_PutInt(VLC_OBJECT(a),b,c)
-#define config_GetFloat(a,b) __config_GetFloat(VLC_OBJECT(a),b)
-#define config_PutFloat(a,b,c) __config_PutFloat(VLC_OBJECT(a),b,c)
-#define config_GetPsz(a,b) __config_GetPsz(VLC_OBJECT(a),b)
-#define config_PutPsz(a,b,c) __config_PutPsz(VLC_OBJECT(a),b,c)
-
-#define config_AddIntf(a,b) __config_AddIntf(VLC_OBJECT(a),b)
-#define config_RemoveIntf(a,b) __config_RemoveIntf(VLC_OBJECT(a),b)
-#define config_ExistIntf(a,b) __config_ExistIntf(VLC_OBJECT(a),b)
+VLC_EXPORT( int, config_GetType, (vlc_object_t *, const char *) LIBVLC_USED );
+VLC_EXPORT( int64_t, config_GetInt, (vlc_object_t *, const char *) LIBVLC_USED );
+VLC_EXPORT( void, config_PutInt, (vlc_object_t *, const char *, int64_t) );
+VLC_EXPORT( float, config_GetFloat, (vlc_object_t *, const char *) LIBVLC_USED );
+VLC_EXPORT( void, config_PutFloat, (vlc_object_t *, const char *, float) );
+VLC_EXPORT( char *, config_GetPsz, (vlc_object_t *, const char *) LIBVLC_USED );
+VLC_EXPORT( void, config_PutPsz, (vlc_object_t *, const char *, const char *) );
+
+VLC_EXPORT( int, config_SaveConfigFile, ( vlc_object_t *, const char * ) );
+#define config_SaveConfigFile(a,b) config_SaveConfigFile(VLC_OBJECT(a),b)
+VLC_EXPORT( void, config_ResetAll, ( vlc_object_t * ) );
+#define config_ResetAll(a) config_ResetAll(VLC_OBJECT(a))
+
+VLC_EXPORT( module_config_t *, config_FindConfig,( vlc_object_t *, const char * ) LIBVLC_USED );
+VLC_EXPORT(char *, config_GetDataDir, ( vlc_object_t * ) LIBVLC_USED);
+#define config_GetDataDir(a) config_GetDataDir(VLC_OBJECT(a))
+VLC_EXPORT(const char *, config_GetLibDir, ( void ) LIBVLC_USED);
+VLC_EXPORT(const char *, config_GetConfDir, ( void ) LIBVLC_USED);
+
+typedef enum vlc_userdir
+{
+ VLC_HOME_DIR, /* User's home */
+ VLC_CONFIG_DIR, /* VLC-specific configuration directory */
+ VLC_DATA_DIR, /* VLC-specific data directory */
+ VLC_CACHE_DIR, /* VLC-specific user cached data directory */
+ /* Generic directories (same as XDG) */
+ VLC_DESKTOP_DIR=0x80,
+ VLC_DOWNLOAD_DIR,
+ VLC_TEMPLATES_DIR,
+ VLC_PUBLICSHARE_DIR,
+ VLC_DOCUMENTS_DIR,
+ VLC_MUSIC_DIR,
+ VLC_PICTURES_DIR,
+ VLC_VIDEOS_DIR,
+} vlc_userdir_t;
+
+VLC_EXPORT(char *, config_GetUserDir, ( vlc_userdir_t ) LIBVLC_USED);
+
+VLC_EXPORT( void, config_AddIntf, ( vlc_object_t *, const char * ) );
+VLC_EXPORT( void, config_RemoveIntf, ( vlc_object_t *, const char * ) );
+VLC_EXPORT( bool, config_ExistIntf, ( vlc_object_t *, const char * ) LIBVLC_USED);
+
+#define config_GetType(a,b) config_GetType(VLC_OBJECT(a),b)
+#define config_GetInt(a,b) config_GetInt(VLC_OBJECT(a),b)
+#define config_PutInt(a,b,c) config_PutInt(VLC_OBJECT(a),b,c)
+#define config_GetFloat(a,b) config_GetFloat(VLC_OBJECT(a),b)
+#define config_PutFloat(a,b,c) config_PutFloat(VLC_OBJECT(a),b,c)
+#define config_GetPsz(a,b) config_GetPsz(VLC_OBJECT(a),b)
+#define config_PutPsz(a,b,c) config_PutPsz(VLC_OBJECT(a),b,c)
+
+#define config_AddIntf(a,b) config_AddIntf(VLC_OBJECT(a),b)
+#define config_RemoveIntf(a,b) config_RemoveIntf(VLC_OBJECT(a),b)
+#define config_ExistIntf(a,b) config_ExistIntf(VLC_OBJECT(a),b)
/****************************************************************************
* config_chain_t:
****************************************************************************/
struct config_chain_t
{
- config_chain_t *p_next;
+ config_chain_t *p_next; /**< Pointer on the next config_chain_t element */
- char *psz_name;
- char *psz_value;
+ char *psz_name; /**< Option name */
+ char *psz_value; /**< Option value */
};
-#define config_ChainParse( a, b, c, d ) __config_ChainParse( VLC_OBJECT(a), b, c, d )
-VLC_EXPORT( void, __config_ChainParse, ( vlc_object_t *, const char *psz_prefix, const char *const *ppsz_options, config_chain_t * ) );
-VLC_EXPORT( char *, config_ChainCreate, ( char **, config_chain_t **, const char * ) );
+/**
+ * This function will
+ * - create all options in the array ppsz_options (var_Create).
+ * - parse the given linked list of config_chain_t and set the value (var_Set).
+ *
+ * The option names will be created by adding the psz_prefix prefix.
+ */
+VLC_EXPORT( void, config_ChainParse, ( vlc_object_t *, const char *psz_prefix, const char *const *ppsz_options, config_chain_t * ) );
+#define config_ChainParse( a, b, c, d ) config_ChainParse( VLC_OBJECT(a), b, c, d )
+
+/**
+ * This function will parse a configuration string (psz_string) and
+ * - set the module name (*ppsz_name)
+ * - set all options for this module in a chained list (*pp_cfg)
+ * - returns a pointer on the next module if any.
+ *
+ * The string format is
+ * module{option=*,option=*}[:modulenext{option=*,...}]
+ *
+ * The options values are unescaped using config_StringUnescape.
+ */
+VLC_EXPORT( char *, config_ChainCreate, ( char **ppsz_name, config_chain_t **pp_cfg, const char *psz_string ) ) LIBVLC_USED LIBVLC_MALLOC;
+
+/**
+ * This function will release a linked list of config_chain_t
+ * (Including the head)
+ */
VLC_EXPORT( void, config_ChainDestroy, ( config_chain_t * ) );
+/**
+ * This function will duplicate a linked list of config_chain_t
+ */
+VLC_EXPORT( config_chain_t *, config_ChainDuplicate, ( const config_chain_t * ) );
+
+/**
+ * This function will unescape a string in place and will return a pointer on
+ * the given string.
+ * No memory is allocated by it (unlike config_StringEscape).
+ * If NULL is given as parameter nothing will be done (NULL will be returned).
+ *
+ * The following sequences will be unescaped (only one time):
+ * \\ \' and \"
+ */
+VLC_EXPORT( char *, config_StringUnescape, ( char *psz_string ) );
+
+/**
+ * This function will escape a string that can be unescaped by
+ * config_StringUnescape.
+ * The returned value is allocated by it. You have to free it once you
+ * do not need it anymore (unlike config_StringUnescape).
+ * If NULL is given as parameter nothing will be done (NULL will be returned).
+ *
+ * The escaped characters are ' " and \
+ */
+VLC_EXPORT( char *, config_StringEscape, ( const char *psz_string ) LIBVLC_USED);
+
# ifdef __cplusplus
}
# endif