]> git.sesse.net Git - vlc/blobdiff - include/vlc/libvlc.h
remove vlc_tdestroy from the symbols list.
[vlc] / include / vlc / libvlc.h
index 5f3b52b14616e057024858eebba05a7ac6eb5729..9ba48646024b6b75b2e968646956b2370174e296 100644 (file)
@@ -67,8 +67,9 @@ extern "C" {
  * You can create one (or more) instance(s) of LibVLC in a given process,
  * with libvlc_new() and destroy them with libvlc_release().
  *
- * \version This documents LibVLC version 1.1.
- * Earlier versions (0.9 and 1.0) are <b>not</b> compatible.
+ * \version Unless otherwise stated, these functions are available
+ * from LibVLC versions numbered 1.1.0 or more.
+ * Earlier versions (0.9.x and 1.0.x) are <b>not</b> compatible.
  * @{
  */
 
@@ -88,36 +89,86 @@ VLC_PUBLIC_API const char *libvlc_errmsg (void);
 
 /**
  * Clears the LibVLC error status for the current thread. This is optional.
- * By default, the error status is automatically overriden when a new error
+ * By default, the error status is automatically overridden when a new error
  * occurs, and destroyed when the thread exits.
  */
 VLC_PUBLIC_API void libvlc_clearerr (void);
 
 /**
  * Sets the LibVLC error status and message for the current thread.
- * Any previous error is overriden.
- * @return a nul terminated string in any case
+ * Any previous error is overridden.
+ * \return a nul terminated string in any case
  */
 const char *libvlc_vprinterr (const char *fmt, va_list ap);
 
 /**
  * Sets the LibVLC error status and message for the current thread.
- * Any previous error is overriden.
- * @return a nul terminated string in any case
+ * Any previous error is overridden.
+ * \return a nul terminated string in any case
  */
 const char *libvlc_printerr (const char *fmt, ...);
 
 /**@} */
 
+/**
+ * Create and initialize a libvlc instance.
+ * This functions accept a list of "command line" arguments similar to the
+ * main(). These arguments affect the LibVLC instance default configuration.
+ *
+ * \version
+ * Arguments are meant to be passed from the command line to LibVLC, just like
+ * VLC media player does. The list of valid arguments depends on the LibVLC
+ * version, the operating system and platform, and set of available LibVLC
+ * plugins. Invalid or unsupported arguments will cause the function to fail
+ * (i.e. return NULL). Also, some arguments may alter the behaviour or
+ * otherwise interfere with other LibVLC functions.
+ *
+ * \warning
+ * There is absolutely no warranty or promise of forward, backward and
+ * cross-platform compatibility with regards to libvlc_new() arguments.
+ * We recommend that you do not use them, other than when debugging.
+ *
+ * \param argc the number of arguments (should be 0)
+ * \param argv list of arguments (should be NULL)
+ * \return the libvlc instance or NULL in case of error
+ */
+VLC_PUBLIC_API libvlc_instance_t *
+libvlc_new( int argc , const char *const *argv );
+
+
+/**
+ * \return a static entry point for a module, suitable for passing to
+ * libvlc_new_with_builtins. This is to be used when you want to statically
+ * link to a module.
+ *
+ * Note, statically linking to a module will results in nearly zero speed gain
+ * and increased memory usage. Use with caution.
+ */
+
+#define vlc_plugin(module) & vlc_plugin_entry(module)
+
+#define vlc_plugin_entry(module) vlc_entry__ ## module
+#define vlc_declare_plugin(module) extern void *vlc_plugin_entry(module);
+
 /**
  * Create and initialize a libvlc instance.
  *
  * \param argc the number of arguments
  * \param argv command-line-type arguments
+ * \param builtins a NULL terminated array of \see vlc_plugin.
  * \return the libvlc instance or NULL in case of error
+ * @begincode
+ * {
+ *     vlc_declare_plugin(mp4);
+ *     vlc_declare_plugin(dummy);
+ *     const void **builtins = { vlc_plugin(mp4), vlc_plugin(dummy), NULL };
+ *     libvlc_instance_t *vlc = libvlc_new_with_builtins(argc, argv, builtins);
+ * }
+ * @endcode
  */
 VLC_PUBLIC_API libvlc_instance_t *
-libvlc_new( int argc , const char *const *argv );
+libvlc_new_with_builtins( int argc , const char *const *argv, const void **builtins);
+
 
 /**
  * Decrement the reference count of a libvlc instance, and destroy it
@@ -145,6 +196,22 @@ VLC_PUBLIC_API void libvlc_retain( libvlc_instance_t *p_instance );
 VLC_PUBLIC_API
 int libvlc_add_intf( libvlc_instance_t *p_instance, const char *name );
 
+/**
+ * Registers a callback for the LibVLC exit event. This is mostly useful if
+ * you have started at least one interface with libvlc_add_intf().
+ * Typically, this function will wake up your application main loop (from
+ * another thread).
+ *
+ * \param p_instance LibVLC instance
+ * \param cb callback to invoke when LibVLC wants to exit
+ * \param opaque data pointer for the callback
+ * \warning This function and libvlc_wait() cannot be used at the same time.
+ * Use either or none of them but not both.
+ */
+VLC_PUBLIC_API
+void libvlc_set_exit_handler( libvlc_instance_t *p_instance,
+                              void (*cb) (void *), void *opaque );
+
 /**
  * Waits until an interface causes the instance to exit.
  * You should start at least one interface first, using libvlc_add_intf().
@@ -154,6 +221,19 @@ int libvlc_add_intf( libvlc_instance_t *p_instance, const char *name );
 VLC_PUBLIC_API
 void libvlc_wait( libvlc_instance_t *p_instance );
 
+/**
+ * Sets the application name. LibVLC passes this as the user agent string
+ * when a protocol requires it.
+ *
+ * \param p_instance LibVLC instance
+ * \param name human-readable application name, e.g. "FooBar player 1.2.3"
+ * \param http HTTP User Agent, e.g. "FooBar/1.2.3 Python/2.6.0"
+ * \version LibVLC 1.1.1 or later
+ */
+VLC_PUBLIC_API
+void libvlc_set_user_agent( libvlc_instance_t *p_instance,
+                            const char *name, const char *http );
+
 /**
  * Retrieve libvlc version.
  *
@@ -181,6 +261,14 @@ VLC_PUBLIC_API const char * libvlc_get_compiler(void);
  */
 VLC_PUBLIC_API const char * libvlc_get_changeset(void);
 
+/**
+ * Frees an heap allocation returned by a LibVLC function.
+ * If you know you're using the same underlying C run-time as the LibVLC
+ * implementation, then you can call ANSI C free() directly instead.
+ *
+ * \param ptr the pointer
+ */
+VLC_PUBLIC_API void libvlc_free( void *ptr );
 
 /** \defgroup libvlc_event LibVLC asynchronous events
  * LibVLC emits asynchronous events.
@@ -211,7 +299,7 @@ typedef int libvlc_event_type_t;
  * \param p_event the event triggering the callback
  */
 typedef void ( *libvlc_callback_t )( const struct libvlc_event_t *, void * );
-    
+
 /**
  * Register for an event notification.
  *