Go to the documentation of this file.
24 #ifndef LIBVLC_MODULES_H
25 # define LIBVLC_MODULES_H 1
52 #ifdef HAVE_DYNAMIC_PLUGINS
69 #define MODULE_SHORTCUT_MAX 20
72 typedef int (*
vlc_plugin_cb) (int (*)(
void *,
void *, int, ...),
void *);
116 #define module_LoadPlugins(a) module_LoadPlugins(VLC_OBJECT(a))
struct vlc_modcap vlc_modcap_t
int(* vlc_plugin_cb)(int(*)(void *, void *, int,...), void *)
Plugin entry point prototype.
Definition: modules.h:71
const char * psz_name
Definition: vlc_configuration.h:71
void sout_MuxDeleteStream(sout_mux_t *mux, sout_input_t *input)
Definition: missing.c:136
#define module_stop(o, m)
Definition: vlc_modules.h:56
void vlc_module_unload(vlc_object_t *obj, module_t *module, vlc_deactivate_t deinit,...)
Deinstantiates a module.
Definition: modules.c:335
block_t * caches
Definition: bank.c:100
struct vlc_plugin_t * vlc_plugins
List of all plug-ins.
Definition: bank.c:105
size_t count
Definition: core.c:461
stream_t * p_stream
Definition: vlc_xml.h:70
Definition: vlc_plugin.h:42
Definition: vlc_plugin.h:40
FILE * vlc_fopen(const char *filename, const char *mode)
Opens a FILE pointer.
Definition: filesystem.c:46
static module_config_t * vlc_config_create(vlc_plugin_t *plugin, int type)
Definition: entry.c:142
#define vlc_object_set_name(o, n)
Definition: libvlc.h:115
Definition: vlc_memstream.h:27
static void block_ChainRelease(block_t *p_block)
Definition: vlc_block.h:337
Definition: vlc_plugin.h:100
Definition: vlc_fixups.h:497
vlm_message_t * vlm_MessageSimpleNew(const char *a)
Definition: missing.c:229
module_t * vlc_module_load(vlc_object_t *obj, const char *capability, const char *name, bool strict, vlc_activate_t probe,...)
Finds and instantiates the best module of a certain type.
Definition: modules.c:213
int(* vlc_activate_t)(void *func, va_list args)
Definition: vlc_modules.h:32
Definition: vlc_plugin.h:64
module_t ** module_list_get(size_t *n)
Gets the flat list of VLC modules.
Definition: bank.c:774
xml_t * xml_Create(vlc_object_t *p_this)
Definition: xml.c:38
void sout_MuxFlush(sout_mux_t *mux, sout_input_t *input)
Definition: missing.c:161
int strcasecmp(const char *, const char *)
int vlc_entry__core(vlc_set_cb, void *)
Core module.
Definition: libvlc-module.c:1479
update_release_t * update_GetRelease(update_t *u)
Definition: missing.c:283
Definition: vlc_plugin.h:48
vlc_plugin_t * plugin
Plug-in/library containing the module.
Definition: modules.h:81
const char * textdomain
gettext domain (or NULL)
Definition: modules.h:38
Definition: vlc_plugin.h:91
void vlc_module_destroy(module_t *)
Destroys a module.
Definition: entry.c:82
vlc_plugin_t * vlc_plugin_create(void)
Definition: entry.c:94
void sdp_AddMedia(struct vlc_memstream *sdp, const char *type, const char *protocol, int dport, unsigned pt, bool bw_indep, unsigned bw, const char *ptname, unsigned clockrate, unsigned channels, const char *fmtp)
Definition: missing.c:43
const char ** pp_shortcuts
Definition: modules.h:86
Definition: vlc_plugin.h:79
static int vlc_plugin_symbol_compare(const void *a, const void *b)
Definition: entry.c:486
const char * module_get_capability(const module_t *m)
Gets the capability of a module.
Definition: modules.c:104
const char * psz_text
Definition: vlc_configuration.h:72
const char * activate_name
Definition: modules.h:99
const char * module_get_object(const module_t *m)
Get the internal name of a module.
Definition: modules.c:63
#define DIR_SEP
Definition: vlc_common.h:1032
const char ** list_text
Definition: vlc_configuration.h:89
const char * module_gettext(const module_t *m, const char *str)
Translate a string using the module's text domain.
Definition: modules.c:127
Definition: vlc_plugin.h:35
Definition: vlc_sout.h:196
void module_unneed(vlc_object_t *obj, module_t *module)
Definition: modules.c:375
#define IsConfigIntegerType(type)
Definition: configuration.h:47
size_t i_buffer
Payload length.
Definition: vlc_block.h:116
Definition: vlc_plugin.h:67
VLC plugin.
Definition: modules.h:32
module_t * module_need(vlc_object_t *obj, const char *cap, const char *name, bool strict)
Definition: modules.c:368
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_common.h:150
block_t * block_FilePath(const char *path, bool write)
Maps a file in memory.
Definition: block.c:434
sout_stream_t * sout_StreamChainNew(sout_instance_t *p_sout, const char *psz_chain, sout_stream_t *p_next, sout_stream_t **pp_last)
Definition: missing.c:173
Definition: vlc_plugin.h:61
const int * i
Definition: vlc_configuration.h:85
void vlc_plugin_destroy(vlc_plugin_t *)
Destroys a plug-in.
Definition: entry.c:124
Definition: vlc_plugin.h:50
unsigned i_shortcuts
Shortcuts to the module.
Definition: modules.h:85
unsigned b_internal
Definition: vlc_configuration.h:65
Definition: vlc_plugin.h:73
module_value_t orig
Definition: vlc_configuration.h:76
module_t * module
Definition: modules.h:35
void module_list_free(module_t **list)
Frees the flat list of VLC modules.
Definition: bank.c:763
void module_EndBank(bool b_plugins)
Unloads all unused plugin modules and empties the module bank in case of success.
Definition: bank.c:684
#define var_InheritBool(o, n)
Definition: vlc_variables.h:601
#define module_LoadPlugins(a)
Definition: modules.h:115
bool module_exists(const char *psz_name)
Tell if a module exists.
Definition: modules.c:416
size_t module_LoadPlugins(vlc_object_t *obj)
Loads module descriptions for all available plugins.
Definition: bank.c:732
sout_input_t * sout_MuxAddStream(sout_mux_t *mux, const es_format_t *fmt)
Definition: missing.c:124
static void vlc_modcap_sort(const void *node, const VISIT which, const int depth)
Definition: bank.c:85
#define MODULE_SHORTCUT_MAX
Definition: modules.h:68
char * psz
Definition: vlc_configuration.h:50
void module_InitBank(void)
Init bank.
Definition: bank.c:652
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:86
vlc_plugin_t * vlc_plugin_describe(vlc_plugin_cb)
Runs a plug-in descriptor.
Definition: entry.c:466
static char * xstrdup(const char *str)
Definition: vlc_common.h:1003
int vlc_plugin_resolve(vlc_plugin_t *, vlc_plugin_cb)
Definition: entry.c:593
bool module_provides(const module_t *m, const char *cap)
Checks whether a module implements a capability.
Definition: modules.c:52
update_t *() update_New(vlc_object_t *obj)
Create a new update VLC struct.
Definition: missing.c:253
Definition: vlc_fixups.h:495
#define VLC_EGENERIC
Unspecified error.
Definition: vlc_common.h:354
Definition: vlc_plugin.h:47
#define IsConfigStringType(type)
Definition: configuration.h:45
void vlc_plugin_destroy(vlc_plugin_t *plugin)
Destroys a plug-in.
Definition: entry.c:124
Definition: vlc_plugin.h:76
size_t modc
Definition: bank.c:82
int vlc_stat(const char *filename, struct stat *buf)
Finds file/inode information - like stat().
Definition: filesystem.c:170
vlc_integer_list_cb i_cb
Definition: vlc_configuration.h:87
int sout_AccessOutSeek(sout_access_out_t *out, off_t offset)
Definition: missing.c:88
void sout_AnnounceUnRegister(vlc_object_t *obj, session_descriptor_t *d)
Definition: missing.c:111
static char * getenv(const char *name)
Definition: vlc_fixups.h:293
Definition: vlc_plugin.h:55
Stream output access_output.
Definition: vlc_sout.h:72
static int vlc_module_store(module_t *mod)
Adds a module to the bank.
Definition: bank.c:110
Definition: vlc_plugin.h:46
#define var_InheritString(o, n)
Definition: vlc_variables.h:639
int asprintf(char **, const char *,...)
int module_Map(vlc_object_t *, vlc_plugin_t *)
Definition: bank.c:634
void vlm_Delete(vlm_t *vlm)
Definition: missing.c:202
Definition: vlc_plugin.h:82
int vlm_ExecuteCommand(vlm_t *vlm, const char *cmd, vlm_message_t **pm)
Definition: missing.c:208
int module_get_score(const module_t *m)
Get the score for a module.
Definition: modules.c:115
bool init
Definition: rand.c:49
Definition: vlc_plugin.h:58
sout_access_out_t * sout_AccessOutNew(vlc_object_t *obj, const char *access, const char *name)
Definition: missing.c:74
void(* vlc_deactivate_t)(void *func, va_list args)
Definition: vlc_modules.h:33
int vlc_sdp_Start(struct vlc_memstream *sdp, vlc_object_t *obj, const char *cfg, const struct sockaddr *src, size_t srclen, const struct sockaddr *addr, size_t addrlen)
Definition: missing.c:182
void vlm_MessageDelete(vlm_message_t *m)
Definition: missing.c:223
size_t booleans
Number of booleal config items.
Definition: modules.h:48
char * config_GetLibDir(void)
Definition: dirs.c:40
int sout_AccessOutControl(sout_access_out_t *out, int query,...)
Definition: missing.c:61
int config_SortConfig(void)
Index the configuration items by name for faster lookups.
Definition: core.c:467
#define msg_Warn(p_this,...)
Definition: vlc_messages.h:84
const char * psz_help
Long help string for "special" modules.
Definition: modules.h:93
void * owner
Definition: vlc_configuration.h:91
vlc_string_list_cb psz_cb
Definition: vlc_configuration.h:86
Definition: vlc_plugin.h:104
#define vlc_object_release(a)
Definition: vlc_objects.h:63
module_t ** modv
Definition: bank.c:81
int module_Map(vlc_object_t *obj, vlc_plugin_t *plugin)
Definition: bank.c:634
block_t * p_next
Definition: vlc_block.h:113
Describes an update VLC release number.
Definition: vlc_update.h:40
int i_score
Score for the capability.
Definition: modules.h:96
int vlc_rename(const char *oldpath, const char *newpath)
Moves a file atomically.
Definition: filesystem.c:194
int vlc_unlink(const char *filename)
Removes a file.
Definition: filesystem.c:180
unsigned usage
Definition: bank.c:102
vlc_plugin_t * vlc_plugins
List of all plug-ins.
Definition: bank.c:105
#define VLC_ETIMEOUT
Timeout.
Definition: vlc_common.h:356
static vlc_plugin_t * module_InitStatic(vlc_plugin_cb entry)
Registers a statically-linked plug-in.
Definition: bank.c:164
unsigned b_unsaveable
Definition: vlc_configuration.h:66
vlc_plugin_t * vlc_plugin_create(void)
Definition: entry.c:94
Internal module descriptor.
Definition: modules.h:79
void module_stop(vlc_object_t *obj, const module_t *m)
Definition: modules.c:149
module_value_t max
Definition: vlc_configuration.h:78
void * pf_activate
Definition: modules.h:101
static int generic_start(void *func, va_list ap)
Definition: modules.c:351
Definition: vlm_internal.h:83
encoder_t * sout_EncoderCreate(vlc_object_t *p_this)
Definition: missing.c:118
ssize_t sout_AccessOutWrite(sout_access_out_t *out, block_t *block)
Definition: missing.c:94
#define PATH_SEP
Definition: vlc_common.h:1034
void * module_handle_t
The plugin handle type.
Definition: modules.h:29
module_t * p_module
Definition: vlc_xml.h:41
void * pf_deactivate
Definition: modules.h:102
const char * psz_longname
Module descriptive name.
Definition: modules.h:92
static int vlc_plugin_desc_cb(void *ctx, void *tgt, int propid,...)
Plug-in descriptor callback.
Definition: entry.c:189
void module_Unload(module_handle_t)
CloseModule: unload a dynamic library.
Definition: plugin.c:76
struct vlc_plugin_t vlc_plugin_t
VLC plugin.
static void * realloc_or_free(void *p, size_t sz)
This wrapper around realloc() will free the input pointer when realloc() returns NULL.
Definition: vlc_memory.h:42
void update_Check(update_t *u, void(*cb)(void *, bool), void *opaque)
Check for updates.
Definition: missing.c:265
int vlc_bindtextdomain(const char *)
Definition: textdomain.c:32
static struct @69 modules
void config_Free(module_config_t *, size_t)
Destroys an array of configuration items.
Definition: core.c:529
void vlc_objres_clear(vlc_object_t *obj)
Releases all resources of an object.
Definition: objres.c:82
static void block_Release(block_t *block)
Releases a block.
Definition: vlc_block.h:181
#define MODULE_SUFFIX
Definition: vlc_plugin.h:192
static int vlc_modcap_cmp(const void *a, const void *b)
Definition: bank.c:62
Definition: vlc_codec.h:211
DIR * vlc_opendir(const char *dirname)
Opens a DIR pointer.
Definition: filesystem.c:107
const char * module_get_help(const module_t *m)
Get the help for a module.
Definition: modules.c:93
void module_EndBank(bool)
Unloads all unused plugin modules and empties the module bank in case of success.
Definition: bank.c:684
const char * psz_name
Definition: vlc_codecs.h:315
void sout_StreamChainDelete(sout_stream_t *p_first, sout_stream_t *p_last)
Definition: missing.c:167
char * strtok_r(char *, const char *, char **)
stream_t definition
Definition: vlc_stream.h:46
static bool module_match_name(const module_t *m, const char *name)
Definition: modules.c:157
unsigned modules_count
Definition: modules.h:36
size_t size
Size of items table.
Definition: modules.h:46
void update_Download(update_t *u, const char *dir)
Download the file given in the update_t.
Definition: missing.c:277
static void vlc_plugin_store(vlc_plugin_t *lib)
Adds a plugin (and all its modules) to the bank.
Definition: bank.c:150
Muxer structure.
Definition: vlc_sout.h:120
struct vlc_plugin_t * next
Definition: modules.h:34
void xml_Delete(xml_t *p_xml)
Definition: xml.c:57
vlm_t * vlm_New(vlc_object_t *obj)
Definition: missing.c:243
VISIT
Definition: vlc_fixups.h:493
Definition: vlc_plugin.h:45
module_t * vlc_module_create(vlc_plugin_t *plugin)
Definition: entry.c:40
static void * vlc_plugin_get_symbols(vlc_plugin_cb entry)
Gets the symbols of a plugin.
Definition: entry.c:556
vlm_message_t * vlm_MessageAdd(vlm_message_t *a, vlm_message_t *b)
Definition: missing.c:216
static int vlc_plugin_gpa_cb(void *ctx, void *tgt, int propid,...)
Plug-in symbols callback.
Definition: entry.c:499
Definition: vlc_plugin.h:49
Definition: vlc_plugin.h:88
static int vlc_plugin_get_symbol(void *root, const char *name, void **restrict addrp)
Definition: entry.c:574
ssize_t module_list_cap(module_t ***restrict list, const char *name)
Builds a sorted list of all VLC modules with a given capability.
Definition: bank.c:807
#define CONFIG_ITEM_BOOL
Definition: vlc_plugin.h:123
static void * xmalloc(size_t len)
Definition: vlc_common.h:979
int vlc_plugin_resolve(vlc_plugin_t *plugin, vlc_plugin_cb entry)
Definition: entry.c:593
module_config_t * items
Table of configuration parameters.
Definition: modules.h:45
static void vlc_modcap_free(void *data)
Definition: bank.c:68
#define likely(p)
Definition: vlc_common.h:113
void config_UnsortConfig(void)
Definition: core.c:501
module_config_t * module_config_get(const module_t *module, unsigned *restrict psize)
Get the configuration of a module.
Definition: modules.c:428
The main vlc_object_t structure.
Definition: vlc_objects.h:39
vlc_plugin_t * vlc_plugin_describe(vlc_plugin_cb entry)
Runs a plug-in descriptor.
Definition: entry.c:466
The update object.
Definition: update.h:156
#define IsConfigFloatType(type)
Definition: configuration.h:49
Definition: vlc_configuration.h:60
module_t * p_module
Definition: vlc_xml.h:71
size_t count
Number of configuration items.
Definition: modules.h:47
unsigned b_removed
Definition: vlc_configuration.h:68
#define VLC_UNUSED(x)
Definition: vlc_common.h:916
const char * psz_type
Definition: vlc_configuration.h:70
const char * psz_capability
Capability.
Definition: modules.h:95
void tdestroy(void *root, void(*free_node)(void *nodep))
pthread_mutex_t vlc_mutex_t
Mutex.
Definition: vlc_threads.h:267
char * name
Definition: bank.c:80
#define VLC_SUCCESS
No error.
Definition: vlc_common.h:353
void * tfind(const void *key, const void **rootp, int(*cmp)(const void *, const void *))
const char * name
Definition: entry.c:482
Definition: vlc_plugin.h:34
char * strdup(const char *)
module_value_t min
Definition: vlc_configuration.h:77
const char * module_get_name(const module_t *m, bool long_name)
Get the human-friendly name of a module.
Definition: modules.c:77
vlc_plugin_t * vlc_cache_load(vlc_object_t *, const char *, block_t **)
union module_config_t::@147 list
Definition: vlc_plugin.h:43
ssize_t module_list_cap(module_t ***, const char *)
#define vlc_custom_create(o, s, n)
Definition: libvlc.h:108
static int vlc_module_cmp(const void *a, const void *b)
Definition: bank.c:77
module_config_t ** list
Definition: core.c:460
void * caps_tree
Definition: bank.c:101
session_descriptor_t * sout_AnnounceRegisterSDP(vlc_object_t *obj, const char *sdp, const char *dst)
Definition: missing.c:101
const char name[16]
Definition: httpd.c:1251
#define module_start(o, m)
Definition: vlc_modules.h:54
bool update_NeedUpgrade(update_t *u)
Definition: missing.c:271
int module_start(vlc_object_t *obj, const module_t *m)
Definition: modules.c:141
Definition: fourcc_gen.c:50
void xml_ReaderDelete(xml_reader_t *reader)
Deletes an XML reader.
Definition: xml.c:93
static void module_Unmap(vlc_plugin_t *plugin)
Definition: bank.c:640
unsigned b_advanced
Definition: vlc_configuration.h:64
int64_t i
Definition: vlc_configuration.h:51
static int module_load(vlc_object_t *obj, module_t *m, vlc_activate_t init, va_list args)
Definition: modules.c:169
static void vlc_plugin_free_symbols(void *root)
Definition: entry.c:569
ssize_t sout_AccessOutRead(sout_access_out_t *out, block_t *block)
Definition: missing.c:82
module_value_t value
Definition: vlc_configuration.h:75
static void * xrealloc(void *ptr, size_t len)
Definition: vlc_common.h:987
vlm_message_t * vlm_MessageNew(const char *a, const char *fmt,...)
Definition: missing.c:235
Definition: vlc_plugin.h:41
vlc_plugin_t * vlc_cache_lookup(vlc_plugin_t **, const char *relpath)
static void module_InitStaticModules(void)
Definition: bank.c:186
float f
Definition: vlc_configuration.h:52
bool force
Module probe flag.
Definition: vlc_common.h:439
xml_reader_t * xml_ReaderReset(xml_reader_t *reader, stream_t *stream)
Resets an existing XML reader.
Definition: xml.c:113
void module_InitBank(void)
Init bank.
Definition: bank.c:652
void vlc_mutex_unlock(vlc_mutex_t *p_mutex)
Releases a mutex.
Definition: thread.c:138
#define unlikely(p)
Definition: vlc_common.h:114
int module_Load(vlc_object_t *, const char *, module_handle_t *, bool)
Load a dynamically linked library using a system dependent method.
Definition: plugin.c:49
uint16_t list_count
Definition: vlc_configuration.h:81
xml_reader_t * xml_ReaderCreate(vlc_object_t *obj, stream_t *stream)
Creates an XML reader.
Definition: xml.c:71
vlc_plugin_cb vlc_static_modules[]
const char * psz_longtext
Definition: vlc_configuration.h:73
vlc_mutex_t lock
Definition: bank.c:99
uint8_t i_type
Definition: vlc_configuration.h:62
void CacheSave(vlc_object_t *, const char *, vlc_plugin_t *const *, size_t)
void sdp_AddAttribute(struct vlc_memstream *sdp, const char *name, const char *fmt,...)
Definition: missing.c:55
const char ** psz
Definition: vlc_configuration.h:84
int sout_MuxGetStream(sout_mux_t *p_mux, unsigned int i_blocks, vlc_tick_t *pi_dts)
Definition: missing.c:142
void sout_MuxDelete(sout_mux_t *mux)
Definition: missing.c:130
module_t * vlc_module_create(vlc_plugin_t *)
Definition: entry.c:40
int sout_MuxSendBuffer(sout_mux_t *mux, sout_input_t *input, block_t *block)
Definition: missing.c:155
int vlm_Control(vlm_t *vlm, int query,...)
Definition: missing.c:195
const char * vlc_strerror_c(int errnum)
Definition: error.c:34
Definition: vlc_vlm.h:172
const char * list_cb_name
Definition: vlc_configuration.h:90
#define vlc_assert_unreachable()
Definition: vlc_common.h:118
const char * psz_shortname
Module name.
Definition: modules.h:91
char i_short
Definition: vlc_configuration.h:63
void * tsearch(const void *key, void **rootp, int(*cmp)(const void *, const void *))
sout_mux_t * sout_MuxNew(sout_instance_t *instance, const char *mux, sout_access_out_t *out)
Definition: missing.c:148
uint8_t * p_buffer
Payload start.
Definition: vlc_block.h:115
void module_config_free(module_config_t *config)
Release the configuration.
Definition: modules.c:470
void * addr
Definition: entry.c:483
void * module_Lookup(module_handle_t, const char *)
Looks up a symbol from a dynamically loaded library.
Definition: plugin.c:92
module_t * next
Definition: modules.h:82
void sout_AccessOutDelete(sout_access_out_t *out)
Definition: missing.c:67
void twalk(const void *root, void(*action)(const void *nodep, VISIT which, int depth))
const char * deactivate_name
Definition: modules.h:100
const char * vlc_readdir(DIR *dir)
Reads the next file name from an open directory.
Definition: filesystem.c:123
static void * vlc_alloc(size_t count, size_t size)
Definition: vlc_common.h:957
#define module_unneed(a, b)
Definition: vlc_modules.h:49
#define VLC_STATIC_MUTEX
Static initializer for (static) mutex.
Definition: vlc_threads.h:272
Stream output instance (FIXME: should be private to src/ to avoid invalid unsynchronized access)
Definition: vlc_sout.h:48
void vlc_mutex_lock(vlc_mutex_t *p_mutex)
Acquires a mutex.
Definition: thread.c:123
void update_Delete(update_t *u)
Delete an update_t struct.
Definition: missing.c:259
Definition: vlc_block.h:111
struct vlc_plugin_t::@70 conf
Variables set by the module to store its config options.
#define msg_Err(p_this,...)
Definition: vlc_messages.h:82
int vlc_entry__core(int(*)(void *, void *, int,...), void *)
Core module.
Definition: libvlc-module.c:1479
struct vlc_common_members obj
Definition: vlc_objects.h:42
static void generic_stop(void *func, va_list ap)
Definition: modules.c:359
#define CONFIG_ITEM(x)
Definition: vlc_plugin.h:136
#define module_need(a, b, c, d)
Definition: vlc_modules.h:47
unsigned b_safe
Definition: vlc_configuration.h:67
module_t * module_find(const char *name)
Get a pointer to a module_t given it's name.
Definition: modules.c:387
void vlc_module_destroy(module_t *module)
Destroys a module.
Definition: entry.c:82
Definition: vlc_plugin.h:44