]> git.sesse.net Git - vlc/blobdiff - include/vlc/libvlc_media_player.h
good
[vlc] / include / vlc / libvlc_media_player.h
index 86fbc03dacda4882e529db58c3981ea525463779..28c4f8854140236fa7069364db7034a721adcd29 100644 (file)
 #ifndef VLC_LIBVLC_MEDIA_PLAYER_H
 #define VLC_LIBVLC_MEDIA_PLAYER_H 1
 
+# ifdef __cplusplus
+extern "C" {
+# endif
+
 /*****************************************************************************
  * Media Player
  *****************************************************************************/
@@ -52,7 +56,7 @@ typedef struct libvlc_track_description_t
     int   i_id;
     char *psz_name;
     struct libvlc_track_description_t *p_next;
-    
+
 } libvlc_track_description_t;
 
 /**
@@ -64,7 +68,7 @@ typedef struct libvlc_audio_output_t
     char *psz_name;
     char *psz_description;
     struct libvlc_audio_output_t *p_next;
-    
+
 } libvlc_audio_output_t;
 
 /**
@@ -77,10 +81,11 @@ typedef struct libvlc_rectangle_t
 } libvlc_rectangle_t;
 
 /**
- * Marq int options definition
+ * Marq options definition
  */
-typedef enum libvlc_video_marquee_int_option_t {
-    libvlc_marquee_Enabled = 0,
+typedef enum libvlc_video_marquee_option_t {
+    libvlc_marquee_Enable = 0,
+    libvlc_marquee_Text,               /** string argument */
     libvlc_marquee_Color,
     libvlc_marquee_Opacity,
     libvlc_marquee_Position,
@@ -89,33 +94,25 @@ typedef enum libvlc_video_marquee_int_option_t {
     libvlc_marquee_Timeout,
     libvlc_marquee_X,
     libvlc_marquee_Y
-} libvlc_video_marquee_int_option_t;
-
-/**
- * Marq string options definition
- */
-typedef enum libvlc_video_marquee_string_option_t {
-    libvlc_marquee_Text = 0
-} libvlc_video_marquee_string_option_t;
-
+} libvlc_video_marquee_option_t;
 
 /**
  * Create an empty Media Player object
  *
  * \param p_libvlc_instance the libvlc instance in which the Media Player
  *        should be created.
- * \param p_e an initialized exception pointer
+ * \return a new media player object, or NULL on error.
  */
-VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new( libvlc_instance_t *, libvlc_exception_t * );
+VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new( libvlc_instance_t * );
 
 /**
  * Create a Media Player object from a Media
  *
  * \param p_md the media. Afterwards the p_md can be safely
  *        destroyed.
- * \param p_e an initialized exception pointer
+ * \return a new media player object, or NULL on error.
  */
-VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new_from_media( libvlc_media_t *, libvlc_exception_t * );
+VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new_from_media( libvlc_media_t * );
 
 /**
  * Release a media_player after use
@@ -143,86 +140,73 @@ VLC_PUBLIC_API void libvlc_media_player_retain( libvlc_media_player_t * );
  * \param p_mi the Media Player
  * \param p_md the Media. Afterwards the p_md can be safely
  *        destroyed.
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_media_player_set_media( libvlc_media_player_t *, libvlc_media_t *, libvlc_exception_t * );
+VLC_PUBLIC_API void libvlc_media_player_set_media( libvlc_media_player_t *, libvlc_media_t * );
 
 /**
  * Get the media used by the media_player.
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
  * \return the media associated with p_mi, or NULL if no
  *         media is associated
  */
-VLC_PUBLIC_API libvlc_media_t * libvlc_media_player_get_media( libvlc_media_player_t *, libvlc_exception_t * );
+VLC_PUBLIC_API libvlc_media_t * libvlc_media_player_get_media( libvlc_media_player_t * );
 
 /**
  * Get the Event Manager from which the media player send event.
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
  * \return the event manager associated with p_mi
  */
-VLC_PUBLIC_API libvlc_event_manager_t * libvlc_media_player_event_manager ( libvlc_media_player_t *, libvlc_exception_t * );
+VLC_PUBLIC_API libvlc_event_manager_t * libvlc_media_player_event_manager ( libvlc_media_player_t * );
 
 /**
  * is_playing
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
  * \return 1 if the media player is playing, 0 otherwise
  */
-VLC_PUBLIC_API int libvlc_media_player_is_playing ( libvlc_media_player_t *, libvlc_exception_t * );
+VLC_PUBLIC_API int libvlc_media_player_is_playing ( libvlc_media_player_t * );
 
 /**
  * Play
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
+ * \return 0 if playback started (and was already started), or -1 on error.
  */
-VLC_PUBLIC_API void libvlc_media_player_play ( libvlc_media_player_t *, libvlc_exception_t * );
+VLC_PUBLIC_API int libvlc_media_player_play ( libvlc_media_player_t * );
 
 /**
- * Pause
+ * Toggle pause (no effect if there is no media)
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_media_player_pause ( libvlc_media_player_t *, libvlc_exception_t * );
+VLC_PUBLIC_API void libvlc_media_player_pause ( libvlc_media_player_t * );
 
 /**
- * Stop
+ * Stop (no effect if there is no media)
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_media_player_stop ( libvlc_media_player_t *, libvlc_exception_t * );
+VLC_PUBLIC_API void libvlc_media_player_stop ( libvlc_media_player_t * );
 
 /**
  * Set the NSView handler where the media player should render its video output.
  *
  * The object minimal_macosx expects is of kind NSObject and should
  * respect the protocol:
- * 
- * @protocol VLCOpenGLVoutEmbedding
+ *
+ * @protocol VLCOpenGLVideoViewEmbedding <NSObject>
  * - (void)addVoutSubview:(NSView *)view;
  * - (void)removeVoutSubview:(NSView *)view;
- * 
- * - (void)enterFullscreen;
- * - (void)leaveFullscreen;
- * 
- * - (BOOL)stretchesVideo;
- * - (void)setOnTop: (BOOL)ontop; /* Do we really want that in protocol? */
  * @end
- * 
+ *
  * You can find a live example in VLCVideoView in VLCKit.framework.
- * 
+ *
  * \param p_mi the Media Player
  * \param drawable the NSView handler
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_media_player_set_nsobject ( libvlc_media_player_t *p_mi, void * drawable, libvlc_exception_t *p_e );
+VLC_PUBLIC_API void libvlc_media_player_set_nsobject ( libvlc_media_player_t *p_mi, void * drawable );
 
 /**
  * Get the NSView handler previously set with libvlc_media_player_set_nsobject().
@@ -231,7 +215,7 @@ VLC_PUBLIC_API void libvlc_media_player_set_nsobject ( libvlc_media_player_t *p_
  * \return the NSView handler or 0 if none where set
  */
 VLC_PUBLIC_API void * libvlc_media_player_get_nsobject ( libvlc_media_player_t *p_mi );
-       
+
 /**
  * Set the agl handler where the media player should render its video output.
  *
@@ -239,7 +223,7 @@ VLC_PUBLIC_API void * libvlc_media_player_get_nsobject ( libvlc_media_player_t *
  * \param drawable the agl handler
  * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_media_player_set_agl ( libvlc_media_player_t *p_mi, uint32_t drawable, libvlc_exception_t *p_e );
+VLC_PUBLIC_API void libvlc_media_player_set_agl ( libvlc_media_player_t *p_mi, uint32_t drawable );
 
 /**
  * Get the agl handler previously set with libvlc_media_player_set_agl().
@@ -264,9 +248,8 @@ VLC_PUBLIC_API uint32_t libvlc_media_player_get_agl ( libvlc_media_player_t *p_m
  *
  * \param p_mi the Media Player
  * \param drawable the ID of the X window
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_media_player_set_xwindow ( libvlc_media_player_t *p_mi, uint32_t drawable, libvlc_exception_t *p_e );
+VLC_PUBLIC_API void libvlc_media_player_set_xwindow ( libvlc_media_player_t *p_mi, uint32_t drawable );
 
 /**
  * Get the X Window System window identifier previously set with
@@ -286,9 +269,8 @@ VLC_PUBLIC_API uint32_t libvlc_media_player_get_xwindow ( libvlc_media_player_t
  *
  * \param p_mi the Media Player
  * \param drawable windows handle of the drawable
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_media_player_set_hwnd ( libvlc_media_player_t *p_mi, void *drawable, libvlc_exception_t *p_e );
+VLC_PUBLIC_API void libvlc_media_player_set_hwnd ( libvlc_media_player_t *p_mi, void *drawable );
 
 /**
  * Get the Windows API window handle (HWND) previously set with
@@ -308,172 +290,156 @@ VLC_PUBLIC_API void *libvlc_media_player_get_hwnd ( libvlc_media_player_t *p_mi
  * Get the current movie length (in ms).
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return the movie length (in ms).
+ * \return the movie length (in ms), or -1 if there is no media.
  */
-VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_length( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_length( libvlc_media_player_t * );
 
 /**
  * Get the current movie time (in ms).
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return the movie time (in ms).
+ * \return the movie time (in ms), or -1 if there is no media.
  */
-VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_time( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_time( libvlc_media_player_t * );
 
 /**
- * Set the movie time (in ms).
+ * Set the movie time (in ms). This has no effect if no media is being played.
+ * Not all formats and protocols support this.
  *
  * \param p_mi the Media Player
  * \param the movie time (in ms).
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_media_player_set_time( libvlc_media_player_t *, libvlc_time_t, libvlc_exception_t *);
+VLC_PUBLIC_API void libvlc_media_player_set_time( libvlc_media_player_t *, libvlc_time_t );
 
 /**
  * Get movie position.
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return movie position
+ * \return movie position, or -1. in case of error
  */
-VLC_PUBLIC_API float libvlc_media_player_get_position( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API float libvlc_media_player_get_position( libvlc_media_player_t * );
 
 /**
- * Set movie position.
+ * Set movie position. This has no effect if playback is not enabled.
+ * This might not work depending on the underlying input format and protocol.
  *
  * \param p_mi the Media Player
  * \param f_pos the position
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_media_player_set_position( libvlc_media_player_t *, float, libvlc_exception_t *);
+VLC_PUBLIC_API void libvlc_media_player_set_position( libvlc_media_player_t *, float );
 
 /**
- * Set movie chapter
+ * Set movie chapter (if applicable).
  *
  * \param p_mi the Media Player
  * \param i_chapter chapter number to play
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_media_player_set_chapter( libvlc_media_player_t *, int, libvlc_exception_t *);
+VLC_PUBLIC_API void libvlc_media_player_set_chapter( libvlc_media_player_t *, int );
 
 /**
- * Get movie chapter
+ * Get movie chapter.
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return chapter number currently playing
+ * \return chapter number currently playing, or -1 if there is no media.
  */
-VLC_PUBLIC_API int libvlc_media_player_get_chapter( libvlc_media_player_t *, libvlc_exception_t * );
+VLC_PUBLIC_API int libvlc_media_player_get_chapter( libvlc_media_player_t * );
 
 /**
  * Get movie chapter count
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return number of chapters in movie
+ * \return number of chapters in movie, or -1.
  */
-VLC_PUBLIC_API int libvlc_media_player_get_chapter_count( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API int libvlc_media_player_get_chapter_count( libvlc_media_player_t * );
 
 /**
- * Will the player play
+ * Is the player able to play
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
  * \return boolean
  */
-VLC_PUBLIC_API int libvlc_media_player_will_play        ( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API int libvlc_media_player_will_play( libvlc_media_player_t * );
 
 /**
  * Get title chapter count
  *
  * \param p_mi the Media Player
  * \param i_title title
- * \param p_e an initialized exception pointer
- * \return number of chapters in title
+ * \return number of chapters in title, or -1
  */
 VLC_PUBLIC_API int libvlc_media_player_get_chapter_count_for_title(
-                       libvlc_media_player_t *, int, libvlc_exception_t *);
+                       libvlc_media_player_t *, int );
 
 /**
  * Set movie title
  *
  * \param p_mi the Media Player
  * \param i_title title number to play
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_media_player_set_title( libvlc_media_player_t *, int, libvlc_exception_t *);
+VLC_PUBLIC_API void libvlc_media_player_set_title( libvlc_media_player_t *, int );
 
 /**
  * Get movie title
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return title number currently playing
+ * \return title number currently playing, or -1
  */
-VLC_PUBLIC_API int libvlc_media_player_get_title( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API int libvlc_media_player_get_title( libvlc_media_player_t * );
 
 /**
  * Get movie title count
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return title number count
+ * \return title number count, or -1
  */
-VLC_PUBLIC_API int libvlc_media_player_get_title_count( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API int libvlc_media_player_get_title_count( libvlc_media_player_t * );
 
 /**
- * Set previous chapter
+ * Set previous chapter (if applicable)
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_media_player_previous_chapter( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API void libvlc_media_player_previous_chapter( libvlc_media_player_t * );
 
 /**
- * Set next chapter
+ * Set next chapter (if applicable)
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_media_player_next_chapter( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API void libvlc_media_player_next_chapter( libvlc_media_player_t * );
 
 /**
  * Get movie play rate
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return movie play rate
+ * \return movie play rate, or zero in case of error
  */
-VLC_PUBLIC_API float libvlc_media_player_get_rate( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API float libvlc_media_player_get_rate( libvlc_media_player_t * );
 
 /**
  * Set movie play rate
  *
  * \param p_mi the Media Player
  * \param movie play rate to set
- * \param p_e an initialized exception pointer
+ * \return -1 if an error was detected, 0 otherwise (but even then, it might
+ * not actually work depending on the underlying media protocol)
  */
-VLC_PUBLIC_API void libvlc_media_player_set_rate( libvlc_media_player_t *, float, libvlc_exception_t *);
+VLC_PUBLIC_API int libvlc_media_player_set_rate( libvlc_media_player_t *, float );
 
 /**
  * Get current movie state
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return current movie state as libvlc_state_t
  */
-VLC_PUBLIC_API libvlc_state_t libvlc_media_player_get_state( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API libvlc_state_t libvlc_media_player_get_state( libvlc_media_player_t *);
 
 /**
  * Get movie fps rate
  *
  * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return frames per second (fps) for this playing movie
+ * \return frames per second (fps) for this playing movie, or 0 if unspecified
  */
-VLC_PUBLIC_API float libvlc_media_player_get_fps( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API float libvlc_media_player_get_fps( libvlc_media_player_t * );
 
 /** end bug */
 
@@ -481,35 +447,30 @@ VLC_PUBLIC_API float libvlc_media_player_get_fps( libvlc_media_player_t *, libvl
  * Does this media player have a video output?
  *
  * \param p_md the media player
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API int  libvlc_media_player_has_vout( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API int libvlc_media_player_has_vout( libvlc_media_player_t *, libvlc_exception_t * );
 
 /**
  * Is this media player seekable?
  *
  * \param p_input the input
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API int libvlc_media_player_is_seekable( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e );
+VLC_PUBLIC_API int libvlc_media_player_is_seekable( libvlc_media_player_t *p_mi );
 
 /**
  * Can this media player be paused?
  *
  * \param p_input the input
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API int libvlc_media_player_can_pause( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e );
+VLC_PUBLIC_API int libvlc_media_player_can_pause( libvlc_media_player_t *p_mi );
 
 
 /**
- * Display the next frame
+ * Display the next frame (if supported)
  *
  * \param p_input the libvlc_media_player_t instance
- * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void    libvlc_media_player_next_frame( libvlc_media_player_t *p_input,
-                                                       libvlc_exception_t *p_e );
+VLC_PUBLIC_API void libvlc_media_player_next_frame( libvlc_media_player_t *p_input );
 
 
 
@@ -753,42 +714,23 @@ VLC_PUBLIC_API void libvlc_video_set_crop_geometry( libvlc_media_player_t *, con
  */
 VLC_PUBLIC_API void libvlc_toggle_teletext( libvlc_media_player_t *, libvlc_exception_t * );
 
-/**
- * Get current teletext page requested.
- *
- * \param p_mediaplayer the media player
- * \param p_e an initialized exception pointer
- * \return the current teletext page requested.
- */
-VLC_PUBLIC_API int libvlc_video_get_teletext( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Set new teletext page to retrieve.
- *
- * \param p_mediaplayer the media player
- * \param i_page teletex page number requested
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_video_set_teletext( libvlc_media_player_t *, int, libvlc_exception_t * );
-
 /**
  * Get number of available video tracks.
  *
  * \param p_mi media player
- * \param p_e an initialized exception
  * \return the number of available video tracks (int)
  */
-VLC_PUBLIC_API int libvlc_video_get_track_count( libvlc_media_player_t *,  libvlc_exception_t * );
+VLC_PUBLIC_API int libvlc_video_get_track_count( libvlc_media_player_t *, libvlc_exceptio_t * );
 
 /**
  * Get the description of available video tracks.
  *
  * \param p_mi media player
  * \param p_e an initialized exception
- * \return list with description of available video tracks
+ * \return list with description of available video tracks, or NULL on error
  */
 VLC_PUBLIC_API libvlc_track_description_t *
-        libvlc_video_get_track_description( libvlc_media_player_t *,  libvlc_exception_t * );
+        libvlc_video_get_track_description( libvlc_media_player_t * );
 
 /**
  * Get current video track.
@@ -835,51 +777,98 @@ VLC_PUBLIC_API void libvlc_video_set_deinterlace( libvlc_media_player_t *,
                                                   libvlc_exception_t *);
 
 /**
- * Get an option value (option which return an int)
+ * Get an integer marquee option value
  *
  * \param p_mi libvlc media player
- * \param option marq option to get
+ * \param option marq option to get \see libvlc_video_marquee_int_option_t
  * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API int libvlc_video_get_marquee_option_as_int( libvlc_media_player_t *,
-                                                        libvlc_video_marquee_int_option_t,
-                                                        libvlc_exception_t * );
+VLC_PUBLIC_API int libvlc_video_get_marquee_int( libvlc_media_player_t *,
+                                             unsigned, libvlc_exception_t * );
 
 /**
- * Get an option value (option which return a string)
+ * Get a string marquee option value
  *
  * \param p_mi libvlc media player
- * \param option marq option to get
+ * \param option marq option to get \see libvlc_video_marquee_string_option_t
  * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API char *libvlc_video_get_marquee_option_as_string( libvlc_media_player_t *,
-                                                             libvlc_video_marquee_string_option_t,
-                                                             libvlc_exception_t * );
+VLC_PUBLIC_API char *libvlc_video_get_marquee_string( libvlc_media_player_t *,
+                                             unsigned, libvlc_exception_t * );
 
 /**
- * Enable, disable or set a marq option (only int)
+ * Enable, disable or set an integer marquee option
+ *
+ * Setting libvlc_marquee_Enable has the side effect of enabling (arg !0)
+ * or disabling (arg 0) the marq filter.
  *
  * \param p_mi libvlc media player
- * \param option marq option to set
+ * \param option marq option to set \see libvlc_video_marquee_int_option_t
  * \param i_val marq option value
  * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_video_set_marquee_option_as_int( libvlc_media_player_t *,
-                                                         libvlc_video_marquee_int_option_t,
-                                                         int, libvlc_exception_t * );
+VLC_PUBLIC_API void libvlc_video_set_marquee_int( libvlc_media_player_t *,
+                                        unsigned, int, libvlc_exception_t * );
 
 /**
- * Set a marq option (only string)
+ * Set a marquee string option
  *
  * \param p_mi libvlc media player
- * \param option marq option to set
+ * \param option marq option to set \see libvlc_video_marquee_string_option_t
  * \param psz_text marq option value
  * \param p_e an initialized exception pointer
  */
-VLC_PUBLIC_API void libvlc_video_set_marquee_option_as_string( libvlc_media_player_t *,
-                                                            libvlc_video_marquee_string_option_t,
-                                                            const char *,
-                                                            libvlc_exception_t * );
+VLC_PUBLIC_API void libvlc_video_set_marquee_string( libvlc_media_player_t *,
+                               unsigned, const char *, libvlc_exception_t * );
+
+/** option values for libvlc_video_{get,set}_logo_{int,string} */
+enum libvlc_video_logo_option_t {
+    libvlc_logo_enable,
+    libvlc_logo_file,           /**< string argument, "file,d,t;file,d,t;..." */
+    libvlc_logo_x,
+    libvlc_logo_y,
+    libvlc_logo_delay,
+    libvlc_logo_repeat,
+    libvlc_logo_opacity,
+    libvlc_logo_position,
+};
+
+/**
+ * Get integer logo option.
+ *
+ * \param p_mi libvlc media player instance
+ * \param option logo option to get, values of libvlc_video_logo_option_t
+ * \param p_e an pointer to an initialized exception object
+ */
+VLC_PUBLIC_API int libvlc_video_get_logo_int( libvlc_media_player_t *p_mi,
+                                 unsigned option, libvlc_exception_t *p_e );
+
+/**
+ * Set logo option as integer. Options that take a different type value
+ * cause an invalid argument exception.
+ * Passing libvlc_logo_enable as option value has the side effect of
+ * starting (arg !0) or stopping (arg 0) the logo filter.
+ *
+ * \param p_mi libvlc media player instance
+ * \param option logo option to set, values of libvlc_video_logo_option_t
+ * \param value logo option value
+ * \param p_e an pointer to an initialized exception object
+ */
+VLC_PUBLIC_API void libvlc_video_set_logo_int( libvlc_media_player_t *p_mi,
+                        unsigned option, int value, libvlc_exception_t *p_e );
+
+/**
+ * Set logo option as string. Options that take a different type value
+ * cause an invalid argument exception.
+ *
+ * \param p_mi libvlc media player instance
+ * \param option logo option to set, values of libvlc_video_logo_option_t
+ * \param psz_value logo option value
+ * \param p_e an pointer to an initialized exception object
+ */
+VLC_PUBLIC_API void libvlc_video_set_logo_string( libvlc_media_player_t *p_mi,
+            unsigned option, const char *psz_value, libvlc_exception_t *p_e );
+
 
 /** @} video */
 
@@ -921,13 +910,12 @@ typedef enum libvlc_audio_output_channel_t {
  * Get the list of available audio outputs
  *
  * \param p_instance libvlc instance
- * \param p_e an initialized exception pointer
- * \return list of available audio outputs, at the end free it with
-*          \see libvlc_audio_output_list_release \see libvlc_audio_output_t
+ * \return list of available audio outputs. It must be freed it with
+*          \see libvlc_audio_output_list_release \see libvlc_audio_output_t .
+ *         In case of error, NULL is returned.
  */
 VLC_PUBLIC_API libvlc_audio_output_t *
-        libvlc_audio_output_list_get( libvlc_instance_t *,
-                                      libvlc_exception_t * );
+        libvlc_audio_output_list_get( libvlc_instance_t * );
 
 /**
  * Free the list of available audio outputs
@@ -1121,4 +1109,8 @@ VLC_PUBLIC_API void libvlc_audio_set_channel( libvlc_instance_t *,
 
 /** @} media_player */
 
+# ifdef __cplusplus
+}
+# endif
+
 #endif /* VLC_LIBVLC_MEDIA_PLAYER_H */