libvlc.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:13k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * libvlc.h:  libvlc external API
  3.  *****************************************************************************
  4.  * Copyright (C) 1998-2009 the VideoLAN team
  5.  * $Id: 6a56774bb95eade041fcfc85962de338462add39 $
  6.  *
  7.  * Authors: Clément Stenac <zorglub@videolan.org>
  8.  *          Jean-Paul Saman <jpsaman@videolan.org>
  9.  *          Pierre d'Herbemont <pdherbemont@videolan.org>
  10.  *
  11.  * This program is free software; you can redistribute it and/or modify
  12.  * it under the terms of the GNU General Public License as published by
  13.  * the Free Software Foundation; either version 2 of the License, or
  14.  * (at your option) any later version.
  15.  *
  16.  * This program is distributed in the hope that it will be useful,
  17.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  * GNU General Public License for more details.
  20.  *
  21.  * You should have received a copy of the GNU General Public License
  22.  * along with this program; if not, write to the Free Software
  23.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  24.  *****************************************************************************/
  25. /**
  26.  * file
  27.  * This file defines libvlc external API
  28.  */
  29. /**
  30.  * defgroup libvlc libvlc
  31.  * This is libvlc, the base library of the VLC program.
  32.  *
  33.  * @{
  34.  */
  35. #ifndef VLC_LIBVLC_H
  36. #define VLC_LIBVLC_H 1
  37. #if defined (WIN32) && defined (DLL_EXPORT)
  38. # define VLC_PUBLIC_API __declspec(dllexport)
  39. #else
  40. # define VLC_PUBLIC_API
  41. #endif
  42. #ifdef __LIBVLC__
  43. /* Avoid unuseful warnings from libvlc with our deprecated APIs */
  44. #   define VLC_DEPRECATED_API VLC_PUBLIC_API
  45. #elif defined(__GNUC__) && 
  46.       (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ > 0)
  47. # define VLC_DEPRECATED_API VLC_PUBLIC_API __attribute__((deprecated))
  48. #else
  49. # define VLC_DEPRECATED_API VLC_PUBLIC_API
  50. #endif
  51. # ifdef __cplusplus
  52. extern "C" {
  53. # endif
  54. #include <vlc/libvlc_structures.h>
  55. /*****************************************************************************
  56.  * Exception handling
  57.  *****************************************************************************/
  58. /** defgroup libvlc_exception libvlc_exception
  59.  * ingroup libvlc_core
  60.  * LibVLC Exceptions handling
  61.  * @{
  62.  */
  63. /**
  64.  * Initialize an exception structure. This can be called several times to
  65.  * reuse an exception structure.
  66.  *
  67.  * param p_exception the exception to initialize
  68.  */
  69. VLC_PUBLIC_API void libvlc_exception_init( libvlc_exception_t *p_exception );
  70. /**
  71.  * Has an exception been raised?
  72.  *
  73.  * param p_exception the exception to query
  74.  * return 0 if the exception was raised, 1 otherwise
  75.  */
  76. VLC_PUBLIC_API int
  77. libvlc_exception_raised( const libvlc_exception_t *p_exception );
  78. /**
  79.  * Raise an exception using a user-provided message.
  80.  *
  81.  * param p_exception the exception to raise
  82.  * param psz_format the exception message format string
  83.  * param ... the format string arguments
  84.  */
  85. VLC_PUBLIC_API void
  86. libvlc_exception_raise( libvlc_exception_t *p_exception,
  87.                         const char *psz_format, ... );
  88. /**
  89.  * Clear an exception object so it can be reused.
  90.  * The exception object must have be initialized.
  91.  *
  92.  * param p_exception the exception to clear
  93.  */
  94. VLC_PUBLIC_API void libvlc_exception_clear( libvlc_exception_t * );
  95. /**
  96.  * Get an exception's message.
  97.  *
  98.  * param p_exception the exception to query
  99.  * return the exception message or NULL if not applicable (exception not
  100.  *         raised, for example)
  101.  */
  102. VLC_PUBLIC_API const char *
  103. libvlc_exception_get_message( const libvlc_exception_t *p_exception );
  104. /**@} */
  105. /*****************************************************************************
  106.  * Core handling
  107.  *****************************************************************************/
  108. /** defgroup libvlc_core libvlc_core
  109.  * ingroup libvlc
  110.  * LibVLC Core
  111.  * @{
  112.  */
  113. /**
  114.  * Create and initialize a libvlc instance.
  115.  *
  116.  * param argc the number of arguments
  117.  * param argv command-line-type arguments. argv[0] must be the path of the
  118.  *        calling program.
  119.  * param p_e an initialized exception pointer
  120.  * return the libvlc instance
  121.  */
  122. VLC_PUBLIC_API libvlc_instance_t *
  123. libvlc_new( int , const char *const *, libvlc_exception_t *);
  124. /**
  125.  * Return a libvlc instance identifier for legacy APIs. Use of this
  126.  * function is discouraged, you should convert your program to use the
  127.  * new API.
  128.  *
  129.  * param p_instance the instance
  130.  * return the instance identifier
  131.  */
  132. VLC_PUBLIC_API int libvlc_get_vlc_id( libvlc_instance_t *p_instance );
  133. /**
  134.  * Decrement the reference count of a libvlc instance, and destroy it
  135.  * if it reaches zero.
  136.  *
  137.  * param p_instance the instance to destroy
  138.  */
  139. VLC_PUBLIC_API void libvlc_release( libvlc_instance_t * );
  140. /**
  141.  * Increments the reference count of a libvlc instance.
  142.  * The initial reference count is 1 after libvlc_new() returns.
  143.  *
  144.  * param p_instance the instance to reference
  145.  */
  146. VLC_PUBLIC_API void libvlc_retain( libvlc_instance_t * );
  147. /**
  148.  * Try to start a user interface for the libvlc instance.
  149.  *
  150.  * param p_instance the instance
  151.  * param name interface name, or NULL for default
  152.  * param p_exception an initialized exception pointer
  153.  */
  154. VLC_PUBLIC_API
  155. void libvlc_add_intf( libvlc_instance_t *p_instance, const char *name,
  156.                       libvlc_exception_t *p_exception );
  157. /**
  158.  * Waits until an interface causes the instance to exit.
  159.  * You should start at least one interface first, using libvlc_add_intf().
  160.  *
  161.  * param p_instance the instance
  162.  */
  163. VLC_PUBLIC_API
  164. void libvlc_wait( libvlc_instance_t *p_instance );
  165. /**
  166.  * Retrieve libvlc version.
  167.  *
  168.  * Example: "0.9.0-git Grishenko"
  169.  *
  170.  * return a string containing the libvlc version
  171.  */
  172. VLC_PUBLIC_API const char * libvlc_get_version(void);
  173. /**
  174.  * Retrieve libvlc compiler version.
  175.  *
  176.  * Example: "gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu6)"
  177.  *
  178.  * return a string containing the libvlc compiler version
  179.  */
  180. VLC_PUBLIC_API const char * libvlc_get_compiler(void);
  181. /**
  182.  * Retrieve libvlc changeset.
  183.  *
  184.  * Example: "aa9bce0bc4"
  185.  *
  186.  * return a string containing the libvlc changeset
  187.  */
  188. VLC_PUBLIC_API const char * libvlc_get_changeset(void);
  189. struct vlc_object_t;
  190. /**
  191.  * Return the libvlc internal object, the main object that all other depend on.
  192.  * Any of of this function should be considered an ugly hack and avoided at all
  193.  * cost. E.g. you need to expose some functionality that is not provided by the
  194.  * libvlc API directly with libvlccore.
  195.  * Remember to release the object with vlc_object_release( obj* )
  196.  *
  197.  * param p_instance the libvlc instance
  198.  */
  199. VLC_PUBLIC_API struct vlc_object_t *libvlc_get_vlc_instance(libvlc_instance_t *);
  200. /**
  201.  * Frees an heap allocation (char *) returned by a LibVLC API.
  202.  * If you know you're using the same underlying C run-time as the LibVLC
  203.  * implementation, then you can call ANSI C free() directly instead.
  204.  */
  205. VLC_PUBLIC_API void libvlc_free( void *ptr );
  206. /** @}*/
  207. /*****************************************************************************
  208.  * Event handling
  209.  *****************************************************************************/
  210. /** defgroup libvlc_event libvlc_event
  211.  * ingroup libvlc_core
  212.  * LibVLC Events
  213.  * @{
  214.  */
  215. /**
  216.  * Event manager that belongs to a libvlc object, and from whom events can
  217.  * be received.
  218.  */
  219. typedef struct libvlc_event_manager_t libvlc_event_manager_t;
  220. typedef struct libvlc_event_t libvlc_event_t;
  221. typedef uint32_t libvlc_event_type_t;
  222.     
  223. /**
  224.  * Callback function notification
  225.  * param p_event the event triggering the callback
  226.  */
  227. typedef void ( *libvlc_callback_t )( const libvlc_event_t *, void * );
  228.     
  229. /**
  230.  * Register for an event notification.
  231.  *
  232.  * param p_event_manager the event manager to which you want to attach to.
  233.  *        Generally it is obtained by vlc_my_object_event_manager() where
  234.  *        my_object is the object you want to listen to.
  235.  * param i_event_type the desired event to which we want to listen
  236.  * param f_callback the function to call when i_event_type occurs
  237.  * param user_data user provided data to carry with the event
  238.  * param p_e an initialized exception pointer
  239.  */
  240. VLC_PUBLIC_API void libvlc_event_attach( libvlc_event_manager_t *p_event_manager,
  241.                                          libvlc_event_type_t i_event_type,
  242.                                          libvlc_callback_t f_callback,
  243.                                          void *user_data,
  244.                                          libvlc_exception_t *p_e );
  245. /**
  246.  * Unregister an event notification.
  247.  *
  248.  * param p_event_manager the event manager
  249.  * param i_event_type the desired event to which we want to unregister
  250.  * param f_callback the function to call when i_event_type occurs
  251.  * param p_user_data user provided data to carry with the event
  252.  * param p_e an initialized exception pointer
  253.  */
  254. VLC_PUBLIC_API void libvlc_event_detach( libvlc_event_manager_t *p_event_manager,
  255.                                          libvlc_event_type_t i_event_type,
  256.                                          libvlc_callback_t f_callback,
  257.                                          void *p_user_data,
  258.                                          libvlc_exception_t *p_e );
  259. /**
  260.  * Get an event's type name.
  261.  *
  262.  * param i_event_type the desired event
  263.  */
  264. VLC_PUBLIC_API const char * libvlc_event_type_name( libvlc_event_type_t event_type );
  265. /** @} */
  266. /*****************************************************************************
  267.  * Message log handling
  268.  *****************************************************************************/
  269. /** defgroup libvlc_log libvlc_log
  270.  * ingroup libvlc_core
  271.  * LibVLC Message Logging
  272.  * @{
  273.  */
  274. /**
  275.  * Return the VLC messaging verbosity level.
  276.  *
  277.  * param p_instance libvlc instance
  278.  * param p_e an initialized exception pointer
  279.  * return verbosity level for messages
  280.  */
  281. VLC_PUBLIC_API unsigned libvlc_get_log_verbosity( const libvlc_instance_t *p_instance,
  282.                                                   libvlc_exception_t *p_e );
  283. /**
  284.  * Set the VLC messaging verbosity level.
  285.  *
  286.  * param p_instance libvlc log instance
  287.  * param level log level
  288.  * param p_e an initialized exception pointer
  289.  */
  290. VLC_PUBLIC_API void libvlc_set_log_verbosity( libvlc_instance_t *p_instance, unsigned level,
  291.                                               libvlc_exception_t *p_e );
  292. /**
  293.  * Open a VLC message log instance.
  294.  *
  295.  * param p_instance libvlc instance
  296.  * param p_e an initialized exception pointer
  297.  * return log message instance
  298.  */
  299. VLC_PUBLIC_API libvlc_log_t *libvlc_log_open( libvlc_instance_t *, libvlc_exception_t *);
  300. /**
  301.  * Close a VLC message log instance.
  302.  *
  303.  * param p_log libvlc log instance
  304.  * param p_e an initialized exception pointer
  305.  */
  306. VLC_PUBLIC_API void libvlc_log_close( libvlc_log_t *, libvlc_exception_t *);
  307. /**
  308.  * Returns the number of messages in a log instance.
  309.  *
  310.  * param p_log libvlc log instance
  311.  * param p_e an initialized exception pointer
  312.  * return number of log messages
  313.  */
  314. VLC_PUBLIC_API unsigned libvlc_log_count( const libvlc_log_t *, libvlc_exception_t *);
  315. /**
  316.  * Clear a log instance.
  317.  *
  318.  * All messages in the log are removed. The log should be cleared on a
  319.  * regular basis to avoid clogging.
  320.  *
  321.  * param p_log libvlc log instance
  322.  * param p_e an initialized exception pointer
  323.  */
  324. VLC_PUBLIC_API void libvlc_log_clear( libvlc_log_t *, libvlc_exception_t *);
  325. /**
  326.  * Allocate and returns a new iterator to messages in log.
  327.  *
  328.  * param p_log libvlc log instance
  329.  * param p_e an initialized exception pointer
  330.  * return log iterator object
  331.  */
  332. VLC_PUBLIC_API libvlc_log_iterator_t *libvlc_log_get_iterator( const libvlc_log_t *, libvlc_exception_t *);
  333. /**
  334.  * Release a previoulsy allocated iterator.
  335.  *
  336.  * param p_iter libvlc log iterator
  337.  * param p_e an initialized exception pointer
  338.  */
  339. VLC_PUBLIC_API void libvlc_log_iterator_free( libvlc_log_iterator_t *p_iter, libvlc_exception_t *p_e );
  340. /**
  341.  * Return whether log iterator has more messages.
  342.  *
  343.  * param p_iter libvlc log iterator
  344.  * param p_e an initialized exception pointer
  345.  * return true if iterator has more message objects, else false
  346.  */
  347. VLC_PUBLIC_API int libvlc_log_iterator_has_next( const libvlc_log_iterator_t *p_iter, libvlc_exception_t *p_e );
  348. /**
  349.  * Return the next log message.
  350.  *
  351.  * The message contents must not be freed
  352.  *
  353.  * param p_iter libvlc log iterator
  354.  * param p_buffer log buffer
  355.  * param p_e an initialized exception pointer
  356.  * return log message object
  357.  */
  358. VLC_PUBLIC_API libvlc_log_message_t *libvlc_log_iterator_next( libvlc_log_iterator_t *p_iter,
  359.                                                                libvlc_log_message_t *p_buffer,
  360.                                                                libvlc_exception_t *p_e );
  361. /** @} */
  362. # ifdef __cplusplus
  363. }
  364. # endif
  365. #endif /* <vlc/libvlc.h> */