home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2009 March / ME_03_2009.iso / Software / Multimedia / vlc-0.9.8a-intel.dmg / VLC.app / Contents / MacOS / include / vlc / libvlc.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-03  |  39.0 KB  |  1,279 lines

  1. /*****************************************************************************
  2.  * libvlc.h:  libvlc external API
  3.  *****************************************************************************
  4.  * Copyright (C) 1998-2005 the VideoLAN team
  5.  * $Id: 7f2f384d446b47bc9688d1f984fecd3233713a67 $
  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. /**
  27.  * \file
  28.  * This file defines libvlc external API
  29.  */
  30.  
  31. /**
  32.  * \defgroup libvlc libvlc
  33.  * This is libvlc, the base library of the VLC program.
  34.  *
  35.  * @{
  36.  */
  37.  
  38. #ifndef VLC_LIBVLC_H
  39. #define VLC_LIBVLC_H 1
  40.  
  41. #if defined (WIN32) && defined (DLL_EXPORT)
  42. # define VLC_PUBLIC_API __declspec(dllexport)
  43. #else
  44. # define VLC_PUBLIC_API
  45. #endif
  46.  
  47. #ifdef __LIBVLC__
  48. /* Avoid unuseful warnings from libvlc with our deprecated APIs */
  49. #   define VLC_DEPRECATED_API VLC_PUBLIC_API
  50. #elif defined(__GNUC__) && \
  51.       (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ > 0)
  52. # define VLC_DEPRECATED_API VLC_PUBLIC_API __attribute__((deprecated))
  53. #else
  54. # define VLC_DEPRECATED_API VLC_PUBLIC_API
  55. #endif
  56.  
  57. # ifdef __cplusplus
  58. extern "C" {
  59. # endif
  60.  
  61. /*****************************************************************************
  62.  * Exception handling
  63.  *****************************************************************************/
  64. /** \defgroup libvlc_exception libvlc_exception
  65.  * \ingroup libvlc_core
  66.  * LibVLC Exceptions handling
  67.  * @{
  68.  */
  69.  
  70. /**
  71.  * Initialize an exception structure. This can be called several times to
  72.  * reuse an exception structure.
  73.  *
  74.  * \param p_exception the exception to initialize
  75.  */
  76. VLC_PUBLIC_API void libvlc_exception_init( libvlc_exception_t *p_exception );
  77.  
  78. /**
  79.  * Has an exception been raised?
  80.  *
  81.  * \param p_exception the exception to query
  82.  * \return 0 if the exception was raised, 1 otherwise
  83.  */
  84. VLC_PUBLIC_API int
  85. libvlc_exception_raised( const libvlc_exception_t *p_exception );
  86.  
  87. /**
  88.  * Raise an exception using a user-provided message.
  89.  *
  90.  * \param p_exception the exception to raise
  91.  * \param psz_format the exception message format string
  92.  * \param ... the format string arguments
  93.  */
  94. VLC_PUBLIC_API void
  95. libvlc_exception_raise( libvlc_exception_t *p_exception,
  96.                         const char *psz_format, ... );
  97.  
  98. /**
  99.  * Clear an exception object so it can be reused.
  100.  * The exception object must have be initialized.
  101.  *
  102.  * \param p_exception the exception to clear
  103.  */
  104. VLC_PUBLIC_API void libvlc_exception_clear( libvlc_exception_t * );
  105.  
  106. /**
  107.  * Get an exception's message.
  108.  *
  109.  * \param p_exception the exception to query
  110.  * \return the exception message or NULL if not applicable (exception not
  111.  *         raised, for example)
  112.  */
  113. VLC_PUBLIC_API const char *
  114. libvlc_exception_get_message( const libvlc_exception_t *p_exception );
  115.  
  116. /**@} */
  117.  
  118. /*****************************************************************************
  119.  * Core handling
  120.  *****************************************************************************/
  121.  
  122. /** \defgroup libvlc_core libvlc_core
  123.  * \ingroup libvlc
  124.  * LibVLC Core
  125.  * @{
  126.  */
  127.  
  128. /**
  129.  * Create and initialize a libvlc instance.
  130.  *
  131.  * \param argc the number of arguments
  132.  * \param argv command-line-type arguments. argv[0] must be the path of the
  133.  *        calling program.
  134.  * \param p_e an initialized exception pointer
  135.  * \return the libvlc instance
  136.  */
  137. VLC_PUBLIC_API libvlc_instance_t *
  138. libvlc_new( int , const char *const *, libvlc_exception_t *);
  139.  
  140. /**
  141.  * Return a libvlc instance identifier for legacy APIs. Use of this
  142.  * function is discouraged, you should convert your program to use the
  143.  * new API.
  144.  *
  145.  * \param p_instance the instance
  146.  * \return the instance identifier
  147.  */
  148. VLC_PUBLIC_API int libvlc_get_vlc_id( libvlc_instance_t *p_instance );
  149.  
  150. /**
  151.  * Decrement the reference count of a libvlc instance, and destroy it
  152.  * if it reaches zero.
  153.  *
  154.  * \param p_instance the instance to destroy
  155.  */
  156. VLC_PUBLIC_API void libvlc_release( libvlc_instance_t * );
  157.  
  158. /**
  159.  * Increments the reference count of a libvlc instance.
  160.  * The initial reference count is 1 after libvlc_new() returns.
  161.  *
  162.  * \param p_instance the instance to reference
  163.  */
  164. VLC_PUBLIC_API void libvlc_retain( libvlc_instance_t * );
  165.  
  166. /**
  167.  * Try to start a user interface for the libvlc instance, and wait until the
  168.  * user exits.
  169.  *
  170.  * \param p_instance the instance
  171.  * \param name interface name, or NULL for default
  172.  * \param p_exception an initialized exception pointer
  173.  */
  174. VLC_PUBLIC_API
  175. void libvlc_add_intf( libvlc_instance_t *p_instance, const char *name,
  176.                       libvlc_exception_t *p_exception );
  177.  
  178. /**
  179.  * Waits until an interface causes the instance to exit.
  180.  * You should start at least one interface first, using libvlc_add_intf().
  181.  *
  182.  * \param p_instance the instance
  183.  */
  184. VLC_PUBLIC_API
  185. void libvlc_wait( libvlc_instance_t *p_instance );
  186.  
  187. /**
  188.  * Retrieve libvlc version.
  189.  *
  190.  * Example: "0.9.0-git Grishenko"
  191.  *
  192.  * \return a string containing the libvlc version
  193.  */
  194. VLC_PUBLIC_API const char * libvlc_get_version(void);
  195.  
  196. /**
  197.  * Retrieve libvlc compiler version.
  198.  *
  199.  * Example: "gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu6)"
  200.  *
  201.  * \return a string containing the libvlc compiler version
  202.  */
  203. VLC_PUBLIC_API const char * libvlc_get_compiler(void);
  204.  
  205. /**
  206.  * Retrieve libvlc changeset.
  207.  *
  208.  * Example: "aa9bce0bc4"
  209.  *
  210.  * \return a string containing the libvlc changeset
  211.  */
  212. VLC_PUBLIC_API const char * libvlc_get_changeset(void);
  213.  
  214. /** @}*/
  215.  
  216. /*****************************************************************************
  217.  * media
  218.  *****************************************************************************/
  219. /** \defgroup libvlc_media libvlc_media
  220.  * \ingroup libvlc
  221.  * LibVLC Media
  222.  * @{
  223.  */
  224.  
  225. /**
  226.  * Create a media with the given MRL.
  227.  *
  228.  * \param p_instance the instance
  229.  * \param psz_mrl the MRL to read
  230.  * \param p_e an initialized exception pointer
  231.  * \return the newly created media
  232.  */
  233. VLC_PUBLIC_API libvlc_media_t * libvlc_media_new(
  234.                                    libvlc_instance_t *p_instance,
  235.                                    const char * psz_mrl,
  236.                                    libvlc_exception_t *p_e );
  237.  
  238. /**
  239.  * Create a media as an empty node with the passed name.
  240.  *
  241.  * \param p_instance the instance
  242.  * \param psz_name the name of the node
  243.  * \param p_e an initialized exception pointer
  244.  * \return the new empty media
  245.  */
  246. VLC_PUBLIC_API libvlc_media_t * libvlc_media_new_as_node(
  247.                                    libvlc_instance_t *p_instance,
  248.                                    const char * psz_name,
  249.                                    libvlc_exception_t *p_e );
  250.  
  251. /**
  252.  * Add an option to the media.
  253.  *
  254.  * This option will be used to determine how the media_player will
  255.  * read the media. This allows to use VLC's advanced
  256.  * reading/streaming options on a per-media basis.
  257.  *
  258.  * The options are detailed in vlc --long-help, for instance "--sout-all"
  259.  *
  260.  * \param p_instance the instance
  261.  * \param ppsz_options the options (as a string)
  262.  * \param p_e an initialized exception pointer
  263.  */
  264. VLC_PUBLIC_API void libvlc_media_add_option(
  265.                                    libvlc_media_t * p_md,
  266.                                    const char * ppsz_options,
  267.                                    libvlc_exception_t * p_e );
  268.  
  269. /**
  270.  * Retain a reference to a media descriptor object (libvlc_media_t). Use
  271.  * libvlc_media_release() to decrement the reference count of a 
  272.  * media descriptor object.
  273.  *
  274.  * \param p_meta_desc a media descriptor object.
  275.  */
  276. VLC_PUBLIC_API void libvlc_media_retain(
  277.                                    libvlc_media_t *p_meta_desc );
  278.  
  279. /**
  280.  * Decrement the reference count of a media descriptor object. If the
  281.  * reference count is 0, then libvlc_media_release() will release the
  282.  * media descriptor object. It will send out an libvlc_MediaFreed event
  283.  * to all listeners. If the media descriptor object has been released it
  284.  * should not be used again.
  285.  *
  286.  * \param p_meta_desc a media descriptor object.
  287.  */
  288. VLC_PUBLIC_API void libvlc_media_release(
  289.                                    libvlc_media_t *p_meta_desc );
  290.  
  291.  
  292. /**
  293.  * Get the media resource locator (mrl) from a media descriptor object
  294.  *
  295.  * \param p_md a media descriptor object
  296.  * \param p_e an initialized exception object
  297.  * \return string with mrl of media descriptor object
  298.  */
  299. VLC_PUBLIC_API char * libvlc_media_get_mrl( libvlc_media_t * p_md,
  300.                                                        libvlc_exception_t * p_e );
  301.  
  302. /**
  303.  * Duplicate a media descriptor object.
  304.  *
  305.  * \param p_meta_desc a media descriptor object.
  306.  */
  307. VLC_PUBLIC_API libvlc_media_t * libvlc_media_duplicate( libvlc_media_t * );
  308.  
  309. /**
  310.  * Read the meta of the media.
  311.  *
  312.  * \param p_meta_desc the media to read
  313.  * \param e_meta_desc the meta to read
  314.  * \param p_e an initialized exception pointer
  315.  * \return the media's meta
  316.  */
  317. VLC_PUBLIC_API char * libvlc_media_get_meta(
  318.                                    libvlc_media_t *p_meta_desc,
  319.                                    libvlc_meta_t e_meta,
  320.                                    libvlc_exception_t *p_e );
  321. /**
  322.  * Get current state of media descriptor object. Possible media states
  323.  * are defined in libvlc_structures.c ( libvlc_NothingSpecial=0,
  324.  * libvlc_Opening, libvlc_Buffering, libvlc_Playing, libvlc_Paused,
  325.  * libvlc_Stopped, libvlc_Forward, libvlc_Backward, libvlc_Ended,
  326.  * libvlc_Error).
  327.  *
  328.  * @see libvlc_state_t
  329.  * \param p_meta_desc a media descriptor object
  330.  * \param p_e an initialized exception object
  331.  * \return state of media descriptor object
  332.  */
  333. VLC_PUBLIC_API libvlc_state_t libvlc_media_get_state(
  334.                                    libvlc_media_t *p_meta_desc,
  335.                                    libvlc_exception_t *p_e );
  336.  
  337. /**
  338.  * Get subitems of media descriptor object. This will increment
  339.  * the reference count of supplied media descriptor object. Use
  340.  * libvlc_media_list_release() to decrement the reference counting.
  341.  *
  342.  * \param p_md media descriptor object
  343.  * \param p_e initalized exception object
  344.  * \return list of media descriptor subitems or NULL
  345.  */
  346. VLC_PUBLIC_API libvlc_media_list_t *
  347.     libvlc_media_subitems( libvlc_media_t *p_md,
  348.                                       libvlc_exception_t *p_e );
  349. /**
  350.  * Get event manager from media descriptor object.
  351.  * NOTE: this function doesn't increment reference counting.
  352.  *
  353.  * \param p_md a media descriptor object
  354.  * \param p_e an initialized exception object
  355.  * \return event manager object
  356.  */
  357. VLC_PUBLIC_API libvlc_event_manager_t *
  358.     libvlc_media_event_manager( libvlc_media_t * p_md,
  359.                                            libvlc_exception_t * p_e );
  360.  
  361. /**
  362.  * Get duration of media descriptor object item.
  363.  *
  364.  * \param p_md media descriptor object
  365.  * \param p_e an initialized exception object
  366.  * \return duration of media item
  367.  */
  368. VLC_PUBLIC_API libvlc_time_t
  369.    libvlc_media_get_duration( libvlc_media_t * p_md,
  370.                                          libvlc_exception_t * p_e );
  371.  
  372. /**
  373.  * Get preparsed status for media descriptor object.
  374.  *
  375.  * \param p_md media descriptor object
  376.  * \param p_e an initialized exception object
  377.  * \return true if media object has been preparsed otherwise it returns false
  378.  */
  379. VLC_PUBLIC_API int
  380.    libvlc_media_is_preparsed( libvlc_media_t * p_md,
  381.                                          libvlc_exception_t * p_e );
  382.  
  383. /**
  384.  * Sets media descriptor's user_data. user_data is specialized data 
  385.  * accessed by the host application, VLC.framework uses it as a pointer to 
  386.  * an native object that references a libvlc_media_t pointer
  387.  *
  388.  * \param p_md media descriptor object
  389.  * \param p_new_user_data pointer to user data
  390.  * \param p_e an initialized exception object
  391.  */
  392. VLC_PUBLIC_API void
  393.     libvlc_media_set_user_data( libvlc_media_t * p_md,
  394.                                            void * p_new_user_data,
  395.                                            libvlc_exception_t * p_e);
  396.  
  397. /**
  398.  * Get media descriptor's user_data. user_data is specialized data 
  399.  * accessed by the host application, VLC.framework uses it as a pointer to 
  400.  * an native object that references a libvlc_media_t pointer
  401.  *
  402.  * \param p_md media descriptor object
  403.  * \param p_e an initialized exception object
  404.  */
  405. VLC_PUBLIC_API void *
  406.     libvlc_media_get_user_data( libvlc_media_t * p_md,
  407.                                            libvlc_exception_t * p_e);
  408.  
  409. /** @}*/
  410.  
  411. /*****************************************************************************
  412.  * Media Player
  413.  *****************************************************************************/
  414. /** \defgroup libvlc_media_player libvlc_media_player
  415.  * \ingroup libvlc
  416.  * LibVLC Media Player, object that let you play a media
  417.  * in a libvlc_drawable_t
  418.  * @{
  419.  */
  420.  
  421. /**
  422.  * Create an empty Media Player object
  423.  *
  424.  * \param p_libvlc_instance the libvlc instance in which the Media Player
  425.  *        should be created.
  426.  * \param p_e an initialized exception pointer
  427.  */
  428. VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new( libvlc_instance_t *, libvlc_exception_t * );
  429.  
  430. /**
  431.  * Create a Media Player object from a Media
  432.  *
  433.  * \param p_md the media. Afterwards the p_md can be safely
  434.  *        destroyed.
  435.  * \param p_e an initialized exception pointer
  436.  */
  437. VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new_from_media( libvlc_media_t *, libvlc_exception_t * );
  438.  
  439. /**
  440.  * Release a media_player after use
  441.  * Decrement the reference count of a media player object. If the
  442.  * reference count is 0, then libvlc_media_player_release() will 
  443.  * release the media player object. If the media player object 
  444.  * has been released, then it should not be used again.
  445.  *
  446.  * \param p_mi the Media Player to free
  447.  */
  448. VLC_PUBLIC_API void libvlc_media_player_release( libvlc_media_player_t * );
  449.  
  450. /**
  451.  * Retain a reference to a media player object. Use
  452.  * libvlc_media_player_release() to decrement reference count.
  453.  *
  454.  * \param p_mi media player object
  455.  */
  456. VLC_PUBLIC_API void libvlc_media_player_retain( libvlc_media_player_t * );
  457.  
  458. /** 
  459.  * Set the media that will be used by the media_player. If any,
  460.  * previous md will be released.
  461.  *
  462.  * \param p_mi the Media Player
  463.  * \param p_md the Media. Afterwards the p_md can be safely
  464.  *        destroyed.
  465.  * \param p_e an initialized exception pointer
  466.  */
  467. VLC_PUBLIC_API void libvlc_media_player_set_media( libvlc_media_player_t *, libvlc_media_t *, libvlc_exception_t * );
  468.  
  469. /**
  470.  * Get the media used by the media_player.
  471.  *
  472.  * \param p_mi the Media Player
  473.  * \param p_e an initialized exception pointer
  474.  * \return the media associated with p_mi, or NULL if no
  475.  *         media is associated
  476.  */
  477. VLC_PUBLIC_API libvlc_media_t * libvlc_media_player_get_media( libvlc_media_player_t *, libvlc_exception_t * );
  478.  
  479. /**
  480.  * Get the Event Manager from which the media player send event.
  481.  *
  482.  * \param p_mi the Media Player
  483.  * \param p_e an initialized exception pointer
  484.  * \return the event manager associated with p_mi
  485.  */
  486. VLC_PUBLIC_API libvlc_event_manager_t * libvlc_media_player_event_manager ( libvlc_media_player_t *, libvlc_exception_t * );
  487.  
  488. /**
  489.  * Play
  490.  *
  491.  * \param p_mi the Media Player
  492.  * \param p_e an initialized exception pointer
  493.  */
  494. VLC_PUBLIC_API void libvlc_media_player_play ( libvlc_media_player_t *, libvlc_exception_t * );
  495.  
  496. /**
  497.  * Pause
  498.  *
  499.  * \param p_mi the Media Player
  500.  * \param p_e an initialized exception pointer
  501.  */
  502. VLC_PUBLIC_API void libvlc_media_player_pause ( libvlc_media_player_t *, libvlc_exception_t * );
  503.  
  504. /**
  505.  * Stop
  506.  *
  507.  * \param p_mi the Media Player
  508.  * \param p_e an initialized exception pointer
  509.  */
  510. VLC_PUBLIC_API void libvlc_media_player_stop ( libvlc_media_player_t *, libvlc_exception_t * );
  511.  
  512. /**
  513.  * Set the drawable where the media player should render its video output
  514.  *
  515.  * \param p_mi the Media Player
  516.  * \param drawable the libvlc_drawable_t where the media player
  517.  *        should render its video
  518.  * \param p_e an initialized exception pointer
  519.  */
  520. VLC_PUBLIC_API void libvlc_media_player_set_drawable ( libvlc_media_player_t *, libvlc_drawable_t, libvlc_exception_t * );
  521.  
  522. /**
  523.  * Get the drawable where the media player should render its video output
  524.  *
  525.  * \param p_mi the Media Player
  526.  * \param p_e an initialized exception pointer
  527.  * \return the libvlc_drawable_t where the media player
  528.  *         should render its video
  529.  */
  530. VLC_PUBLIC_API libvlc_drawable_t
  531.                     libvlc_media_player_get_drawable ( libvlc_media_player_t *, libvlc_exception_t * );
  532.  
  533. /** \bug This might go away ... to be replaced by a broader system */
  534.  
  535. /**
  536.  * Get the current movie length (in ms).
  537.  *
  538.  * \param p_mi the Media Player
  539.  * \param p_e an initialized exception pointer
  540.  * \return the movie length (in ms).
  541.  */
  542. VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_length( libvlc_media_player_t *, libvlc_exception_t *);
  543.  
  544. /**
  545.  * Get the current movie time (in ms).
  546.  *
  547.  * \param p_mi the Media Player
  548.  * \param p_e an initialized exception pointer
  549.  * \return the movie time (in ms).
  550.  */
  551. VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_time( libvlc_media_player_t *, libvlc_exception_t *);
  552.  
  553. /**
  554.  * Set the movie time (in ms).
  555.  *
  556.  * \param p_mi the Media Player
  557.  * \param the movie time (in ms).
  558.  * \param p_e an initialized exception pointer
  559.  */
  560. VLC_PUBLIC_API void libvlc_media_player_set_time( libvlc_media_player_t *, libvlc_time_t, libvlc_exception_t *);
  561.  
  562. /**
  563.  * Get movie position.
  564.  *
  565.  * \param p_mi the Media Player
  566.  * \param p_e an initialized exception pointer
  567.  * \return movie position
  568.  */
  569. VLC_PUBLIC_API float libvlc_media_player_get_position( libvlc_media_player_t *, libvlc_exception_t *);
  570.  
  571. /**
  572.  * Set movie position.
  573.  *
  574.  * \param p_mi the Media Player
  575.  * \param p_e an initialized exception pointer
  576.  * \return movie position
  577.  */
  578. VLC_PUBLIC_API void libvlc_media_player_set_position( libvlc_media_player_t *, float, libvlc_exception_t *);
  579.  
  580. /**
  581.  * Set movie chapter
  582.  *
  583.  * \param p_mi the Media Player
  584.  * \param i_chapter chapter number to play
  585.  * \param p_e an initialized exception pointer
  586.  */
  587. VLC_PUBLIC_API void libvlc_media_player_set_chapter( libvlc_media_player_t *, int, libvlc_exception_t *);
  588.  
  589. /**
  590.  * Get movie chapter
  591.  *
  592.  * \param p_mi the Media Player
  593.  * \param p_e an initialized exception pointer
  594.  * \return chapter number currently playing
  595.  */
  596. VLC_PUBLIC_API int libvlc_media_player_get_chapter( libvlc_media_player_t *, libvlc_exception_t * );
  597.  
  598. /**
  599.  * Get movie chapter count
  600.  *
  601.  * \param p_mi the Media Player
  602.  * \param p_e an initialized exception pointer
  603.  * \return number of chapters in movie
  604.  */
  605. VLC_PUBLIC_API int libvlc_media_player_get_chapter_count( libvlc_media_player_t *, libvlc_exception_t *);
  606. VLC_PUBLIC_API int libvlc_media_player_will_play        ( libvlc_media_player_t *, libvlc_exception_t *);
  607.  
  608. /**
  609.  * Get movie play rate
  610.  *
  611.  * \param p_mi the Media Player
  612.  * \param p_e an initialized exception pointer
  613.  * \return movie play rate
  614.  */
  615. VLC_PUBLIC_API float libvlc_media_player_get_rate( libvlc_media_player_t *, libvlc_exception_t *);
  616.  
  617. /**
  618.  * Set movie play rate
  619.  *
  620.  * \param p_mi the Media Player
  621.  * \param movie play rate to set
  622.  * \param p_e an initialized exception pointer
  623.  */
  624. VLC_PUBLIC_API void libvlc_media_player_set_rate( libvlc_media_player_t *, float, libvlc_exception_t *);
  625.  
  626. /**
  627.  * Get current movie state
  628.  *
  629.  * \param p_mi the Media Player
  630.  * \param p_e an initialized exception pointer
  631.  * \return current movie state as libvlc_state_t
  632.  */
  633. VLC_PUBLIC_API libvlc_state_t libvlc_media_player_get_state( libvlc_media_player_t *, libvlc_exception_t *);
  634.  
  635. /**
  636.  * Get movie fps rate
  637.  *
  638.  * \param p_mi the Media Player
  639.  * \param p_e an initialized exception pointer
  640.  * \return frames per second (fps) for this playing movie
  641.  */
  642. VLC_PUBLIC_API float libvlc_media_player_get_fps( libvlc_media_player_t *, libvlc_exception_t *);
  643.  
  644. /** end bug */
  645.  
  646. /**
  647.  * Does this media player have a video output?
  648.  *
  649.  * \param p_md the media player
  650.  * \param p_e an initialized exception pointer
  651.  */
  652. VLC_PUBLIC_API int  libvlc_media_player_has_vout( libvlc_media_player_t *, libvlc_exception_t *);
  653.  
  654. /**
  655.  * Is this media player seekable?
  656.  *
  657.  * \param p_input the input
  658.  * \param p_e an initialized exception pointer
  659.  */
  660. VLC_PUBLIC_API int libvlc_media_player_is_seekable( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e );
  661.  
  662. /**
  663.  * Can this media player be paused?
  664.  *
  665.  * \param p_input the input
  666.  * \param p_e an initialized exception pointer
  667.  */
  668. VLC_PUBLIC_API int libvlc_media_player_can_pause( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e );
  669.  
  670. /** \defgroup libvlc_video libvlc_video
  671.  * \ingroup libvlc_media_player
  672.  * LibVLC Video handling
  673.  * @{
  674.  */
  675.  
  676. /**
  677.  * Toggle fullscreen status on video output.
  678.  *
  679.  * \param p_mediaplayer the media player
  680.  * \param p_e an initialized exception pointer
  681.  */
  682. VLC_PUBLIC_API void libvlc_toggle_fullscreen( libvlc_media_player_t *, libvlc_exception_t * );
  683.  
  684. /**
  685.  * Enable or disable fullscreen on a video output.
  686.  *
  687.  * \param p_mediaplayer the media player
  688.  * \param b_fullscreen boolean for fullscreen status
  689.  * \param p_e an initialized exception pointer
  690.  */
  691. VLC_PUBLIC_API void libvlc_set_fullscreen( libvlc_media_player_t *, int, libvlc_exception_t * );
  692.  
  693. /**
  694.  * Get current fullscreen status.
  695.  *
  696.  * \param p_mediaplayer the media player
  697.  * \param p_e an initialized exception pointer
  698.  * \return the fullscreen status (boolean)
  699.  */
  700. VLC_PUBLIC_API int libvlc_get_fullscreen( libvlc_media_player_t *, libvlc_exception_t * );
  701.  
  702. /**
  703.  * Get current video height.
  704.  *
  705.  * \param p_mediaplayer the media player
  706.  * \param p_e an initialized exception pointer
  707.  * \return the video height
  708.  */
  709. VLC_PUBLIC_API int libvlc_video_get_height( libvlc_media_player_t *, libvlc_exception_t * );
  710.  
  711. /**
  712.  * Get current video width.
  713.  *
  714.  * \param p_mediaplayer the media player
  715.  * \param p_e an initialized exception pointer
  716.  * \return the video width
  717.  */
  718. VLC_PUBLIC_API int libvlc_video_get_width( libvlc_media_player_t *, libvlc_exception_t * );
  719.  
  720. /**
  721.  * Get current video aspect ratio.
  722.  *
  723.  * \param p_mediaplayer the media player
  724.  * \param p_e an initialized exception pointer
  725.  * \return the video aspect ratio
  726.  */
  727. VLC_PUBLIC_API char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *, libvlc_exception_t * );
  728.  
  729. /**
  730.  * Set new video aspect ratio.
  731.  *
  732.  * \param p_mediaplayer the media player
  733.  * \param psz_aspect new video aspect-ratio
  734.  * \param p_e an initialized exception pointer
  735.  */
  736. VLC_PUBLIC_API void libvlc_video_set_aspect_ratio( libvlc_media_player_t *, char *, libvlc_exception_t * );
  737.  
  738. /**
  739.  * Get current video subtitle.
  740.  *
  741.  * \param p_mediaplayer the media player
  742.  * \param p_e an initialized exception pointer
  743.  * \return the video subtitle selected
  744.  */
  745. VLC_PUBLIC_API int libvlc_video_get_spu( libvlc_media_player_t *, libvlc_exception_t * );
  746.  
  747. /**
  748.  * Set new video subtitle.
  749.  *
  750.  * \param p_mediaplayer the media player
  751.  * \param i_spu new video subtitle to select
  752.  * \param p_e an initialized exception pointer
  753.  */
  754. VLC_PUBLIC_API void libvlc_video_set_spu( libvlc_media_player_t *, int , libvlc_exception_t * );
  755.  
  756. /**
  757.  * Set new video subtitle file.
  758.  *
  759.  * \param p_mediaplayer the media player
  760.  * \param psz_subtitle new video subtitle file
  761.  * \param p_e an initialized exception pointer
  762.  * \return the success status (boolean)
  763.  */
  764. VLC_PUBLIC_API int libvlc_video_set_subtitle_file( libvlc_media_player_t *, char *, libvlc_exception_t * );
  765.  
  766. /**
  767.  * Get current crop filter geometry.
  768.  *
  769.  * \param p_mediaplayer the media player
  770.  * \param p_e an initialized exception pointer
  771.  * \return the crop filter geometry
  772.  */
  773. VLC_PUBLIC_API char *libvlc_video_get_crop_geometry( libvlc_media_player_t *, libvlc_exception_t * );
  774.  
  775. /**
  776.  * Set new crop filter geometry.
  777.  *
  778.  * \param p_mediaplayer the media player
  779.  * \param psz_geometry new crop filter geometry
  780.  * \param p_e an initialized exception pointer
  781.  */
  782. VLC_PUBLIC_API void libvlc_video_set_crop_geometry( libvlc_media_player_t *, char *, libvlc_exception_t * );
  783.  
  784. /**
  785.  * Toggle teletext transparent status on video output.
  786.  *
  787.  * \param p_mediaplayer the media player
  788.  * \param p_e an initialized exception pointer
  789.  */
  790. VLC_PUBLIC_API void libvlc_toggle_teletext( libvlc_media_player_t *, libvlc_exception_t * );
  791.  
  792. /**
  793.  * Get current teletext page requested.
  794.  *
  795.  * \param p_mediaplayer the media player
  796.  * \param p_e an initialized exception pointer
  797.  * \return the current teletext page requested.
  798.  */
  799. VLC_PUBLIC_API int libvlc_video_get_teletext( libvlc_media_player_t *, libvlc_exception_t * );
  800.  
  801. /**
  802.  * Set new teletext page to retrieve.
  803.  *
  804.  * \param p_mediaplayer the media player
  805.  * \param i_page teletex page number requested
  806.  * \param p_e an initialized exception pointer
  807.  */
  808. VLC_PUBLIC_API void libvlc_video_set_teletext( libvlc_media_player_t *, int, libvlc_exception_t * );
  809.  
  810. /**
  811.  * Take a snapshot of the current video window.
  812.  *
  813.  * If i_width AND i_height is 0, original size is used.
  814.  * If i_width XOR i_height is 0, original aspect-ratio is preserved.
  815.  *
  816.  * \param p_mediaplayer the media player
  817.  * \param psz_filepath the path where to save the screenshot to
  818.  * \param i_width the snapshot's width
  819.  * \param i_height the snapshot's height
  820.  * \param p_e an initialized exception pointer
  821.  */
  822. VLC_PUBLIC_API void libvlc_video_take_snapshot( libvlc_media_player_t *, char *,unsigned int, unsigned int, libvlc_exception_t * );
  823.  
  824. /**
  825.  * Resize the current video output window.
  826.  *
  827.  * \param p_instance libvlc instance
  828.  * \param width new width for video output window
  829.  * \param height new height for video output window
  830.  * \param p_e an initialized exception pointer
  831.  * \return the success status (boolean)
  832.  */
  833. VLC_PUBLIC_API void libvlc_video_resize( libvlc_media_player_t *, int, int, libvlc_exception_t *);
  834.  
  835. /**
  836.  * Change the parent for the current the video output.
  837.  *
  838.  * \param p_instance libvlc instance
  839.  * \param drawable the new parent window (Drawable on X11, CGrafPort on MacOSX, HWND on Win32)
  840.  * \param p_e an initialized exception pointer
  841.  * \return the success status (boolean)
  842.  */
  843. VLC_PUBLIC_API int libvlc_video_reparent( libvlc_media_player_t *, libvlc_drawable_t, libvlc_exception_t * );
  844.  
  845. /**
  846.  * Tell windowless video output to redraw rectangular area (MacOS X only).
  847.  *
  848.  * \param p_instance libvlc instance
  849.  * \param area coordinates within video drawable
  850.  * \param p_e an initialized exception pointer
  851.  */
  852. VLC_PUBLIC_API void libvlc_video_redraw_rectangle( libvlc_media_player_t *, const libvlc_rectangle_t *, libvlc_exception_t * );
  853.  
  854. /**
  855.  * Set the default video output size.
  856.  *
  857.  * This setting will be used as default for all video outputs.
  858.  *
  859.  * \param p_instance libvlc instance
  860.  * \param width new width for video drawable
  861.  * \param height new height for video drawable
  862.  * \param p_e an initialized exception pointer
  863.  */
  864. VLC_PUBLIC_API void libvlc_video_set_size( libvlc_instance_t *, int, int, libvlc_exception_t * );
  865.  
  866. /**
  867.  * Set the default video output viewport for a windowless video output
  868.  * (MacOS X only).
  869.  *
  870.  * This setting will be used as default for all video outputs.
  871.  *
  872.  * \param p_instance libvlc instance
  873.  * \param view coordinates within video drawable
  874.  * \param clip coordinates within video drawable
  875.  * \param p_e an initialized exception pointer
  876.  */
  877. VLC_PUBLIC_API void libvlc_video_set_viewport( libvlc_instance_t *, const libvlc_rectangle_t *, const libvlc_rectangle_t *, libvlc_exception_t * );
  878.  
  879. /** @} video */
  880.  
  881. /** \defgroup libvlc_audio libvlc_audio
  882.  * \ingroup libvlc_media_player
  883.  * LibVLC Audio handling
  884.  * @{
  885.  */
  886.  
  887. /**
  888.  * Toggle mute status.
  889.  *
  890.  * \param p_instance libvlc instance
  891.  * \param p_e an initialized exception pointer
  892.  */
  893. VLC_PUBLIC_API void libvlc_audio_toggle_mute( libvlc_instance_t *, libvlc_exception_t * );
  894.  
  895. /**
  896.  * Get current mute status.
  897.  *
  898.  * \param p_instance libvlc instance
  899.  * \param p_e an initialized exception pointer
  900.  * \return the mute status (boolean)
  901.  */
  902. VLC_PUBLIC_API int libvlc_audio_get_mute( libvlc_instance_t *, libvlc_exception_t * );
  903.  
  904. /**
  905.  * Set mute status.
  906.  *
  907.  * \param p_instance libvlc instance
  908.  * \param status If status is true then mute, otherwise unmute
  909.  * \param p_e an initialized exception pointer
  910.  */
  911. VLC_PUBLIC_API void libvlc_audio_set_mute( libvlc_instance_t *, int , libvlc_exception_t * );
  912.  
  913. /**
  914.  * Get current audio level.
  915.  *
  916.  * \param p_instance libvlc instance
  917.  * \param p_e an initialized exception pointer
  918.  * \return the audio level (int)
  919.  */
  920. VLC_PUBLIC_API int libvlc_audio_get_volume( libvlc_instance_t *, libvlc_exception_t * );
  921.  
  922. /**
  923.  * Set current audio level.
  924.  *
  925.  * \param p_instance libvlc instance
  926.  * \param i_volume the volume (int)
  927.  * \param p_e an initialized exception pointer
  928.  */
  929. VLC_PUBLIC_API void libvlc_audio_set_volume( libvlc_instance_t *, int, libvlc_exception_t *);
  930.  
  931. /**
  932.  * Get number of available audio tracks.
  933.  *
  934.  * \param p_mi media player
  935.  * \param p_e an initialized exception
  936.  * \return the number of available audio tracks (int)
  937.  */
  938. VLC_PUBLIC_API int libvlc_audio_get_track_count( libvlc_media_player_t *,  libvlc_exception_t * );
  939.  
  940. /**
  941.  * Get current audio track.
  942.  *
  943.  * \param p_mi media player
  944.  * \param p_e an initialized exception pointer
  945.  * \return the audio track (int)
  946.  */
  947. VLC_PUBLIC_API int libvlc_audio_get_track( libvlc_media_player_t *, libvlc_exception_t * );
  948.  
  949. /**
  950.  * Set current audio track.
  951.  *
  952.  * \param p_mi media player
  953.  * \param i_track the track (int)
  954.  * \param p_e an initialized exception pointer
  955.  */
  956. VLC_PUBLIC_API void libvlc_audio_set_track( libvlc_media_player_t *, int, libvlc_exception_t * );
  957.  
  958. /**
  959.  * Get current audio channel.
  960.  *
  961.  * \param p_instance vlc instance
  962.  * \param p_e an initialized exception pointer
  963.  * \return the audio channel (int)
  964.  */
  965. VLC_PUBLIC_API int libvlc_audio_get_channel( libvlc_instance_t *, libvlc_exception_t * );
  966.  
  967. /**
  968.  * Set current audio channel.
  969.  *
  970.  * \param p_instance vlc instance
  971.  * \param i_channel the audio channel (int)
  972.  * \param p_e an initialized exception pointer
  973.  */
  974. VLC_PUBLIC_API void libvlc_audio_set_channel( libvlc_instance_t *, int, libvlc_exception_t * );
  975.  
  976. /** @} audio */
  977.  
  978. /** @} media_player */
  979.  
  980. /*****************************************************************************
  981.  * Event handling
  982.  *****************************************************************************/
  983.  
  984. /** \defgroup libvlc_event libvlc_event
  985.  * \ingroup libvlc_core
  986.  * LibVLC Events
  987.  * @{
  988.  */
  989.  
  990. /**
  991.  * Register for an event notification.
  992.  *
  993.  * \param p_event_manager the event manager to which you want to attach to.
  994.  *        Generally it is obtained by vlc_my_object_event_manager() where
  995.  *        my_object is the object you want to listen to.
  996.  * \param i_event_type the desired event to which we want to listen
  997.  * \param f_callback the function to call when i_event_type occurs
  998.  * \param user_data user provided data to carry with the event
  999.  * \param p_e an initialized exception pointer
  1000.  */
  1001. VLC_PUBLIC_API void libvlc_event_attach( libvlc_event_manager_t *p_event_manager,
  1002.                                          libvlc_event_type_t i_event_type,
  1003.                                          libvlc_callback_t f_callback,
  1004.                                          void *user_data,
  1005.                                          libvlc_exception_t *p_e );
  1006.  
  1007. /**
  1008.  * Unregister an event notification.
  1009.  *
  1010.  * \param p_event_manager the event manager
  1011.  * \param i_event_type the desired event to which we want to unregister
  1012.  * \param f_callback the function to call when i_event_type occurs
  1013.  * \param p_user_data user provided data to carry with the event
  1014.  * \param p_e an initialized exception pointer
  1015.  */
  1016. VLC_PUBLIC_API void libvlc_event_detach( libvlc_event_manager_t *p_event_manager,
  1017.                                          libvlc_event_type_t i_event_type,
  1018.                                          libvlc_callback_t f_callback,
  1019.                                          void *p_user_data,
  1020.                                          libvlc_exception_t *p_e );
  1021.  
  1022. /**
  1023.  * Get an event's type name.
  1024.  *
  1025.  * \param i_event_type the desired event
  1026.  */
  1027. VLC_PUBLIC_API const char * libvlc_event_type_name( libvlc_event_type_t event_type );
  1028.  
  1029. /** @} */
  1030.  
  1031. /*****************************************************************************
  1032.  * Media Library
  1033.  *****************************************************************************/
  1034. /** \defgroup libvlc_media_library libvlc_media_library
  1035.  * \ingroup libvlc
  1036.  * LibVLC Media Library
  1037.  * @{
  1038.  */
  1039. VLC_PUBLIC_API libvlc_media_library_t *
  1040.     libvlc_media_library_new( libvlc_instance_t * p_inst,
  1041.                               libvlc_exception_t * p_e );
  1042.  
  1043. /**
  1044.  * Release media library object. This functions decrements the
  1045.  * reference count of the media library object. If it reaches 0,
  1046.  * then the object will be released.
  1047.  *
  1048.  * \param p_mlib media library object
  1049.  */
  1050. VLC_PUBLIC_API void
  1051.     libvlc_media_library_release( libvlc_media_library_t * p_mlib );
  1052.  
  1053. /**
  1054.  * Retain a reference to a media library object. This function will
  1055.  * increment the reference counting for this object. Use 
  1056.  * libvlc_media_library_release() to decrement the reference count.
  1057.  *
  1058.  * \param p_mlib media library object
  1059.  */
  1060. VLC_PUBLIC_API void
  1061.     libvlc_media_library_retain( libvlc_media_library_t * p_mlib );
  1062.  
  1063. /**
  1064.  * Load media library.
  1065.  *
  1066.  * \param p_mlib media library object
  1067.  * \param p_e an initialized exception object.
  1068.  */
  1069. VLC_PUBLIC_API void
  1070.     libvlc_media_library_load( libvlc_media_library_t * p_mlib,
  1071.                                libvlc_exception_t * p_e );
  1072.  
  1073. /**
  1074.  * Save media library.
  1075.  *
  1076.  * \param p_mlib media library object
  1077.  * \param p_e an initialized exception object.
  1078.  */
  1079. VLC_PUBLIC_API void
  1080.     libvlc_media_library_save( libvlc_media_library_t * p_mlib,
  1081.                                libvlc_exception_t * p_e );
  1082.  
  1083. /**
  1084.  * Get media library subitems.
  1085.  *
  1086.  * \param p_mlib media library object
  1087.  * \param p_e an initialized exception object.
  1088.  * \return media list subitems
  1089.  */
  1090. VLC_PUBLIC_API libvlc_media_list_t *
  1091.     libvlc_media_library_media_list( libvlc_media_library_t * p_mlib,
  1092.                                      libvlc_exception_t * p_e );
  1093.  
  1094.  
  1095. /** @} */
  1096.  
  1097.  
  1098. /*****************************************************************************
  1099.  * Services/Media Discovery
  1100.  *****************************************************************************/
  1101. /** \defgroup libvlc_media_discoverer libvlc_media_discoverer
  1102.  * \ingroup libvlc
  1103.  * LibVLC Media Discoverer
  1104.  * @{
  1105.  */
  1106.  
  1107. /**
  1108.  * Discover media service by name.
  1109.  *
  1110.  * \param p_inst libvlc instance
  1111.  * \param psz_name service name
  1112.  * \param p_e an initialized exception object
  1113.  * \return media discover object
  1114.  */
  1115. VLC_PUBLIC_API libvlc_media_discoverer_t *
  1116. libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst,
  1117.                                        const char * psz_name,
  1118.                                        libvlc_exception_t * p_e );
  1119.  
  1120. /**
  1121.  * Release media discover object. If the reference count reaches 0, then
  1122.  * the object will be released.
  1123.  *
  1124.  * \param p_mdis media service discover object
  1125.  */
  1126. VLC_PUBLIC_API void   libvlc_media_discoverer_release( libvlc_media_discoverer_t * p_mdis );
  1127.  
  1128. /**
  1129.  * Get media service discover object its localized name.
  1130.  *
  1131.  * \param media discover object
  1132.  * \return localized name
  1133.  */
  1134. VLC_PUBLIC_API char * libvlc_media_discoverer_localized_name( libvlc_media_discoverer_t * p_mdis );
  1135.  
  1136. /**
  1137.  * Get media service discover media list.
  1138.  *
  1139.  * \param p_mdis media service discover object
  1140.  * \return list of media items
  1141.  */
  1142. VLC_PUBLIC_API libvlc_media_list_t * libvlc_media_discoverer_media_list( libvlc_media_discoverer_t * p_mdis );
  1143.  
  1144. /**
  1145.  * Get event manager from media service discover object.
  1146.  *
  1147.  * \param p_mdis media service discover object
  1148.  * \return event manager object.
  1149.  */
  1150. VLC_PUBLIC_API libvlc_event_manager_t *
  1151.         libvlc_media_discoverer_event_manager( libvlc_media_discoverer_t * p_mdis );
  1152.  
  1153. /**
  1154.  * Query if media service discover object is running.
  1155.  *
  1156.  * \param p_mdis media service discover object
  1157.  * \return true if running, false if not
  1158.  */
  1159. VLC_PUBLIC_API int
  1160.         libvlc_media_discoverer_is_running( libvlc_media_discoverer_t * p_mdis );
  1161.  
  1162. /**@} */
  1163.  
  1164.  
  1165. /*****************************************************************************
  1166.  * Message log handling
  1167.  *****************************************************************************/
  1168.  
  1169. /** \defgroup libvlc_log libvlc_log
  1170.  * \ingroup libvlc_core
  1171.  * LibVLC Message Logging
  1172.  * @{
  1173.  */
  1174.  
  1175. /**
  1176.  * Return the VLC messaging verbosity level.
  1177.  *
  1178.  * \param p_instance libvlc instance
  1179.  * \param p_e an initialized exception pointer
  1180.  * \return verbosity level for messages
  1181.  */
  1182. VLC_PUBLIC_API unsigned libvlc_get_log_verbosity( const libvlc_instance_t *p_instance,
  1183.                                                   libvlc_exception_t *p_e );
  1184.  
  1185. /**
  1186.  * Set the VLC messaging verbosity level.
  1187.  *
  1188.  * \param p_instance libvlc log instance
  1189.  * \param level log level
  1190.  * \param p_e an initialized exception pointer
  1191.  */
  1192. VLC_PUBLIC_API void libvlc_set_log_verbosity( libvlc_instance_t *p_instance, unsigned level,
  1193.                                               libvlc_exception_t *p_e );
  1194.  
  1195. /**
  1196.  * Open a VLC message log instance.
  1197.  *
  1198.  * \param p_instance libvlc instance
  1199.  * \param p_e an initialized exception pointer
  1200.  * \return log message instance
  1201.  */
  1202. VLC_PUBLIC_API libvlc_log_t *libvlc_log_open( libvlc_instance_t *, libvlc_exception_t *);
  1203.  
  1204. /**
  1205.  * Close a VLC message log instance.
  1206.  *
  1207.  * \param p_log libvlc log instance
  1208.  * \param p_e an initialized exception pointer
  1209.  */
  1210. VLC_PUBLIC_API void libvlc_log_close( libvlc_log_t *, libvlc_exception_t *);
  1211.  
  1212. /**
  1213.  * Returns the number of messages in a log instance.
  1214.  *
  1215.  * \param p_log libvlc log instance
  1216.  * \param p_e an initialized exception pointer
  1217.  * \return number of log messages
  1218.  */
  1219. VLC_PUBLIC_API unsigned libvlc_log_count( const libvlc_log_t *, libvlc_exception_t *);
  1220.  
  1221. /**
  1222.  * Clear a log instance.
  1223.  *
  1224.  * All messages in the log are removed. The log should be cleared on a
  1225.  * regular basis to avoid clogging.
  1226.  *
  1227.  * \param p_log libvlc log instance
  1228.  * \param p_e an initialized exception pointer
  1229.  */
  1230. VLC_PUBLIC_API void libvlc_log_clear( libvlc_log_t *, libvlc_exception_t *);
  1231.  
  1232. /**
  1233.  * Allocate and returns a new iterator to messages in log.
  1234.  *
  1235.  * \param p_log libvlc log instance
  1236.  * \param p_e an initialized exception pointer
  1237.  * \return log iterator object
  1238.  */
  1239. VLC_PUBLIC_API libvlc_log_iterator_t *libvlc_log_get_iterator( const libvlc_log_t *, libvlc_exception_t *);
  1240.  
  1241. /**
  1242.  * Release a previoulsy allocated iterator.
  1243.  *
  1244.  * \param p_iter libvlc log iterator
  1245.  * \param p_e an initialized exception pointer
  1246.  */
  1247. VLC_PUBLIC_API void libvlc_log_iterator_free( libvlc_log_iterator_t *p_iter, libvlc_exception_t *p_e );
  1248.  
  1249. /**
  1250.  * Return whether log iterator has more messages.
  1251.  *
  1252.  * \param p_iter libvlc log iterator
  1253.  * \param p_e an initialized exception pointer
  1254.  * \return true if iterator has more message objects, else false
  1255.  */
  1256. VLC_PUBLIC_API int libvlc_log_iterator_has_next( const libvlc_log_iterator_t *p_iter, libvlc_exception_t *p_e );
  1257.  
  1258. /**
  1259.  * Return the next log message.
  1260.  *
  1261.  * The message contents must not be freed
  1262.  *
  1263.  * \param p_iter libvlc log iterator
  1264.  * \param p_buffer log buffer
  1265.  * \param p_e an initialized exception pointer
  1266.  * \return log message object
  1267.  */
  1268. VLC_PUBLIC_API libvlc_log_message_t *libvlc_log_iterator_next( libvlc_log_iterator_t *p_iter,
  1269.                                                                libvlc_log_message_t *p_buffer,
  1270.                                                                libvlc_exception_t *p_e );
  1271.  
  1272. /** @} */
  1273.  
  1274. # ifdef __cplusplus
  1275. }
  1276. # endif
  1277.  
  1278. #endif /* <vlc/libvlc.h> */
  1279.