X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc%2Flibvlc.h;h=480774e1949b640b9a1e3b2c43f53a4c8bbd52f1;hb=892f3b5aa68e57dd35c0a95f13c6ac7112ec2d32;hp=6a56774bb95eade041fcfc85962de338462add39;hpb=74e5a0727b83ea8bd5ee87dbce7596b990ef14c1;p=vlc diff --git a/include/vlc/libvlc.h b/include/vlc/libvlc.h index 6a56774bb9..480774e194 100644 --- a/include/vlc/libvlc.h +++ b/include/vlc/libvlc.h @@ -29,9 +29,9 @@ */ /** - * \defgroup libvlc libvlc - * This is libvlc, the base library of the VLC program. - * + * \defgroup libvlc LibVLC + * LibVLC is the external programming interface of the VLC media player. + * It is used to embed VLC into other applications or frameworks. * @{ */ @@ -58,96 +58,67 @@ extern "C" { # endif +#include #include -/***************************************************************************** - * Exception handling - *****************************************************************************/ -/** \defgroup libvlc_exception libvlc_exception - * \ingroup libvlc_core - * LibVLC Exceptions handling +/** \defgroup libvlc_core LibVLC core + * \ingroup libvlc + * Before it can do anything useful, LibVLC must be initialized. + * 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 not compatible. * @{ */ -/** - * Initialize an exception structure. This can be called several times to - * reuse an exception structure. - * - * \param p_exception the exception to initialize +/** \defgroup libvlc_error LibVLC error handling + * \ingroup libvlc_error + * @{ */ -VLC_PUBLIC_API void libvlc_exception_init( libvlc_exception_t *p_exception ); /** - * Has an exception been raised? + * A human-readable error message for the last LibVLC error in the calling + * thread. The resulting string is valid until another error occurs (at least + * until the next LibVLC call). * - * \param p_exception the exception to query - * \return 0 if the exception was raised, 1 otherwise + * @warning + * This will be NULL if there was no error. */ -VLC_PUBLIC_API int -libvlc_exception_raised( const libvlc_exception_t *p_exception ); +VLC_PUBLIC_API const char *libvlc_errmsg (void); /** - * Raise an exception using a user-provided message. - * - * \param p_exception the exception to raise - * \param psz_format the exception message format string - * \param ... the format string arguments + * Clears the LibVLC error status for the current thread. This is optional. + * By default, the error status is automatically overriden when a new error + * occurs, and destroyed when the thread exits. */ -VLC_PUBLIC_API void -libvlc_exception_raise( libvlc_exception_t *p_exception, - const char *psz_format, ... ); +VLC_PUBLIC_API void libvlc_clearerr (void); /** - * Clear an exception object so it can be reused. - * The exception object must have be initialized. - * - * \param p_exception the exception to clear + * Sets the LibVLC error status and message for the current thread. + * Any previous error is overriden. + * @return a nul terminated string in any case */ -VLC_PUBLIC_API void libvlc_exception_clear( libvlc_exception_t * ); +const char *libvlc_vprinterr (const char *fmt, va_list ap); /** - * Get an exception's message. - * - * \param p_exception the exception to query - * \return the exception message or NULL if not applicable (exception not - * raised, for example) + * Sets the LibVLC error status and message for the current thread. + * Any previous error is overriden. + * @return a nul terminated string in any case */ -VLC_PUBLIC_API const char * -libvlc_exception_get_message( const libvlc_exception_t *p_exception ); +const char *libvlc_printerr (const char *fmt, ...); /**@} */ -/***************************************************************************** - * Core handling - *****************************************************************************/ - -/** \defgroup libvlc_core libvlc_core - * \ingroup libvlc - * LibVLC Core - * @{ - */ - /** * Create and initialize a libvlc instance. * * \param argc the number of arguments - * \param argv command-line-type arguments. argv[0] must be the path of the - * calling program. - * \param p_e an initialized exception pointer - * \return the libvlc instance + * \param argv command-line-type arguments + * \return the libvlc instance or NULL in case of error */ VLC_PUBLIC_API libvlc_instance_t * -libvlc_new( int , const char *const *, libvlc_exception_t *); - -/** - * Return a libvlc instance identifier for legacy APIs. Use of this - * function is discouraged, you should convert your program to use the - * new API. - * - * \param p_instance the instance - * \return the instance identifier - */ -VLC_PUBLIC_API int libvlc_get_vlc_id( libvlc_instance_t *p_instance ); +libvlc_new( int argc , const char *const *argv ); /** * Decrement the reference count of a libvlc instance, and destroy it @@ -155,7 +126,7 @@ VLC_PUBLIC_API int libvlc_get_vlc_id( libvlc_instance_t *p_instance ); * * \param p_instance the instance to destroy */ -VLC_PUBLIC_API void libvlc_release( libvlc_instance_t * ); +VLC_PUBLIC_API void libvlc_release( libvlc_instance_t *p_instance ); /** * Increments the reference count of a libvlc instance. @@ -163,18 +134,17 @@ VLC_PUBLIC_API void libvlc_release( libvlc_instance_t * ); * * \param p_instance the instance to reference */ -VLC_PUBLIC_API void libvlc_retain( libvlc_instance_t * ); +VLC_PUBLIC_API void libvlc_retain( libvlc_instance_t *p_instance ); /** * Try to start a user interface for the libvlc instance. * * \param p_instance the instance * \param name interface name, or NULL for default - * \param p_exception an initialized exception pointer + * \return 0 on success, -1 on error. */ VLC_PUBLIC_API -void libvlc_add_intf( libvlc_instance_t *p_instance, const char *name, - libvlc_exception_t *p_exception ); +int libvlc_add_intf( libvlc_instance_t *p_instance, const char *name ); /** * Waits until an interface causes the instance to exit. @@ -188,7 +158,7 @@ void libvlc_wait( libvlc_instance_t *p_instance ); /** * Retrieve libvlc version. * - * Example: "0.9.0-git Grishenko" + * Example: "1.1.0-git The Luggage" * * \return a string containing the libvlc version */ @@ -212,53 +182,36 @@ VLC_PUBLIC_API const char * libvlc_get_compiler(void); */ VLC_PUBLIC_API const char * libvlc_get_changeset(void); -struct vlc_object_t; -/** - * Return the libvlc internal object, the main object that all other depend on. - * Any of of this function should be considered an ugly hack and avoided at all - * cost. E.g. you need to expose some functionality that is not provided by the - * libvlc API directly with libvlccore. - * Remember to release the object with vlc_object_release( obj* ) +/** \defgroup libvlc_event LibVLC asynchronous events + * LibVLC emits asynchronous events. * - * \param p_instance the libvlc instance + * Several LibVLC objects (such @ref libvlc_instance_t as + * @ref libvlc_media_player_t) generate events asynchronously. Each of them + * provides @ref libvlc_event_manager_t event manager. You can subscribe to + * events with libvlc_event_attach() and unsubscribe with + * libvlc_event_detach(). + * @{ */ -VLC_PUBLIC_API struct vlc_object_t *libvlc_get_vlc_instance(libvlc_instance_t *); /** - * Frees an heap allocation (char *) returned by a LibVLC API. - * 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. + * Event manager that belongs to a libvlc object, and from whom events can + * be received. */ -VLC_PUBLIC_API void libvlc_free( void *ptr ); - -/** @}*/ - -/***************************************************************************** - * Event handling - *****************************************************************************/ +typedef struct libvlc_event_manager_t libvlc_event_manager_t; -/** \defgroup libvlc_event libvlc_event - * \ingroup libvlc_core - * LibVLC Events - * @{ - */ +struct libvlc_event_t; /** - * Event manager that belongs to a libvlc object, and from whom events can - * be received. + * Type of a LibVLC event. */ +typedef int libvlc_event_type_t; -typedef struct libvlc_event_manager_t libvlc_event_manager_t; -typedef struct libvlc_event_t libvlc_event_t; -typedef uint32_t libvlc_event_type_t; - /** * Callback function notification * \param p_event the event triggering the callback */ - -typedef void ( *libvlc_callback_t )( const libvlc_event_t *, void * ); +typedef void ( *libvlc_callback_t )( const struct libvlc_event_t *, void * ); /** * Register for an event notification. @@ -269,13 +222,12 @@ typedef void ( *libvlc_callback_t )( const libvlc_event_t *, void * ); * \param i_event_type the desired event to which we want to listen * \param f_callback the function to call when i_event_type occurs * \param user_data user provided data to carry with the event - * \param p_e an initialized exception pointer + * \return 0 on success, ENOMEM on error */ -VLC_PUBLIC_API void libvlc_event_attach( libvlc_event_manager_t *p_event_manager, - libvlc_event_type_t i_event_type, - libvlc_callback_t f_callback, - void *user_data, - libvlc_exception_t *p_e ); +VLC_PUBLIC_API int libvlc_event_attach( libvlc_event_manager_t *p_event_manager, + libvlc_event_type_t i_event_type, + libvlc_callback_t f_callback, + void *user_data ); /** * Unregister an event notification. @@ -284,30 +236,24 @@ VLC_PUBLIC_API void libvlc_event_attach( libvlc_event_manager_t *p_event_manager * \param i_event_type the desired event to which we want to unregister * \param f_callback the function to call when i_event_type occurs * \param p_user_data user provided data to carry with the event - * \param p_e an initialized exception pointer */ VLC_PUBLIC_API void libvlc_event_detach( libvlc_event_manager_t *p_event_manager, libvlc_event_type_t i_event_type, libvlc_callback_t f_callback, - void *p_user_data, - libvlc_exception_t *p_e ); + void *p_user_data ); /** * Get an event's type name. * - * \param i_event_type the desired event + * \param event_type the desired event */ VLC_PUBLIC_API const char * libvlc_event_type_name( libvlc_event_type_t event_type ); /** @} */ -/***************************************************************************** - * Message log handling - *****************************************************************************/ - -/** \defgroup libvlc_log libvlc_log - * \ingroup libvlc_core - * LibVLC Message Logging +/** \defgroup libvlc_log LibVLC logging + * libvlc_log_* functions provide access to the LibVLC messages log. + * This is used for debugging or by advanced users. * @{ */ @@ -315,47 +261,40 @@ VLC_PUBLIC_API const char * libvlc_event_type_name( libvlc_event_type_t event_ty * Return the VLC messaging verbosity level. * * \param p_instance libvlc instance - * \param p_e an initialized exception pointer * \return verbosity level for messages */ -VLC_PUBLIC_API unsigned libvlc_get_log_verbosity( const libvlc_instance_t *p_instance, - libvlc_exception_t *p_e ); +VLC_PUBLIC_API unsigned libvlc_get_log_verbosity( const libvlc_instance_t *p_instance ); /** * Set the VLC messaging verbosity level. * * \param p_instance libvlc log instance * \param level log level - * \param p_e an initialized exception pointer */ -VLC_PUBLIC_API void libvlc_set_log_verbosity( libvlc_instance_t *p_instance, unsigned level, - libvlc_exception_t *p_e ); +VLC_PUBLIC_API void libvlc_set_log_verbosity( libvlc_instance_t *p_instance, unsigned level ); /** * Open a VLC message log instance. * * \param p_instance libvlc instance - * \param p_e an initialized exception pointer - * \return log message instance + * \return log message instance or NULL on error */ -VLC_PUBLIC_API libvlc_log_t *libvlc_log_open( libvlc_instance_t *, libvlc_exception_t *); +VLC_PUBLIC_API libvlc_log_t *libvlc_log_open( libvlc_instance_t *p_instance ); /** * Close a VLC message log instance. * - * \param p_log libvlc log instance - * \param p_e an initialized exception pointer + * \param p_log libvlc log instance or NULL */ -VLC_PUBLIC_API void libvlc_log_close( libvlc_log_t *, libvlc_exception_t *); +VLC_PUBLIC_API void libvlc_log_close( libvlc_log_t *p_log ); /** * Returns the number of messages in a log instance. * - * \param p_log libvlc log instance - * \param p_e an initialized exception pointer - * \return number of log messages + * \param p_log libvlc log instance or NULL + * \return number of log messages, 0 if p_log is NULL */ -VLC_PUBLIC_API unsigned libvlc_log_count( const libvlc_log_t *, libvlc_exception_t *); +VLC_PUBLIC_API unsigned libvlc_log_count( const libvlc_log_t *p_log ); /** * Clear a log instance. @@ -363,52 +302,48 @@ VLC_PUBLIC_API unsigned libvlc_log_count( const libvlc_log_t *, libvlc_exception * All messages in the log are removed. The log should be cleared on a * regular basis to avoid clogging. * - * \param p_log libvlc log instance - * \param p_e an initialized exception pointer + * \param p_log libvlc log instance or NULL */ -VLC_PUBLIC_API void libvlc_log_clear( libvlc_log_t *, libvlc_exception_t *); +VLC_PUBLIC_API void libvlc_log_clear( libvlc_log_t *p_log ); /** * Allocate and returns a new iterator to messages in log. * * \param p_log libvlc log instance - * \param p_e an initialized exception pointer - * \return log iterator object + * \return log iterator object or NULL on error */ -VLC_PUBLIC_API libvlc_log_iterator_t *libvlc_log_get_iterator( const libvlc_log_t *, libvlc_exception_t *); +VLC_PUBLIC_API libvlc_log_iterator_t *libvlc_log_get_iterator( const libvlc_log_t *p_log ); /** * Release a previoulsy allocated iterator. * - * \param p_iter libvlc log iterator - * \param p_e an initialized exception pointer + * \param p_iter libvlc log iterator or NULL */ -VLC_PUBLIC_API void libvlc_log_iterator_free( libvlc_log_iterator_t *p_iter, libvlc_exception_t *p_e ); +VLC_PUBLIC_API void libvlc_log_iterator_free( libvlc_log_iterator_t *p_iter ); /** * Return whether log iterator has more messages. * - * \param p_iter libvlc log iterator - * \param p_e an initialized exception pointer + * \param p_iter libvlc log iterator or NULL * \return true if iterator has more message objects, else false */ -VLC_PUBLIC_API int libvlc_log_iterator_has_next( const libvlc_log_iterator_t *p_iter, libvlc_exception_t *p_e ); +VLC_PUBLIC_API int libvlc_log_iterator_has_next( const libvlc_log_iterator_t *p_iter ); /** * Return the next log message. * * The message contents must not be freed * - * \param p_iter libvlc log iterator + * \param p_iter libvlc log iterator or NULL * \param p_buffer log buffer - * \param p_e an initialized exception pointer - * \return log message object + * \return log message object or NULL if none left */ VLC_PUBLIC_API libvlc_log_message_t *libvlc_log_iterator_next( libvlc_log_iterator_t *p_iter, - libvlc_log_message_t *p_buffer, - libvlc_exception_t *p_e ); + libvlc_log_message_t *p_buffer ); /** @} */ +/** @} */ +/** @} */ # ifdef __cplusplus }