Commit a6bb43df authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

libvlc: Split public headers by object and layers.

parent 982400e1
......@@ -58,6 +58,8 @@
extern "C" {
# endif
#include <vlc/libvlc_structures.h>
/*****************************************************************************
* Exception handling
*****************************************************************************/
......@@ -233,1293 +235,72 @@ VLC_PUBLIC_API void libvlc_free( void *ptr );
/** @}*/
/*****************************************************************************
* media
* Event handling
*****************************************************************************/
/** \defgroup libvlc_media libvlc_media
* \ingroup libvlc
* LibVLC Media
* @{
*/
/**
* Create a media with the given MRL.
*
* \param p_instance the instance
* \param psz_mrl the MRL to read
* \param p_e an initialized exception pointer
* \return the newly created media
*/
VLC_PUBLIC_API libvlc_media_t * libvlc_media_new(
libvlc_instance_t *p_instance,
const char * psz_mrl,
libvlc_exception_t *p_e );
/**
* Create a media as an empty node with the passed name.
*
* \param p_instance the instance
* \param psz_name the name of the node
* \param p_e an initialized exception pointer
* \return the new empty media
*/
VLC_PUBLIC_API libvlc_media_t * libvlc_media_new_as_node(
libvlc_instance_t *p_instance,
const char * psz_name,
libvlc_exception_t *p_e );
/**
* Add an option to the media.
*
* This option will be used to determine how the media_player will
* read the media. This allows to use VLC's advanced
* reading/streaming options on a per-media basis.
*
* The options are detailed in vlc --long-help, for instance "--sout-all"
*
* \param p_instance the instance
* \param ppsz_options the options (as a string)
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_media_add_option(
libvlc_media_t * p_md,
const char * ppsz_options,
libvlc_exception_t * p_e );
/**
* Add an option to the media from an untrusted source.
*
* This option will be used to determine how the media_player will
* read the media. This allows to use VLC's advanced
* reading/streaming options on a per-media basis.
*
* The options are detailed in vlc --long-help, for instance "--sout-all"
*
* \param p_instance the instance
* \param ppsz_options the options (as a string)
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_media_add_option_untrusted(
libvlc_media_t * p_md,
const char * ppsz_options,
libvlc_exception_t * p_e );
/**
* Retain a reference to a media descriptor object (libvlc_media_t). Use
* libvlc_media_release() to decrement the reference count of a
* media descriptor object.
*
* \param p_meta_desc a media descriptor object.
*/
VLC_PUBLIC_API void libvlc_media_retain(
libvlc_media_t *p_meta_desc );
/**
* Decrement the reference count of a media descriptor object. If the
* reference count is 0, then libvlc_media_release() will release the
* media descriptor object. It will send out an libvlc_MediaFreed event
* to all listeners. If the media descriptor object has been released it
* should not be used again.
*
* \param p_meta_desc a media descriptor object.
*/
VLC_PUBLIC_API void libvlc_media_release(
libvlc_media_t *p_meta_desc );
/**
* Get the media resource locator (mrl) from a media descriptor object
*
* \param p_md a media descriptor object
* \param p_e an initialized exception object
* \return string with mrl of media descriptor object
*/
VLC_PUBLIC_API char * libvlc_media_get_mrl( libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Duplicate a media descriptor object.
*
* \param p_meta_desc a media descriptor object.
*/
VLC_PUBLIC_API libvlc_media_t * libvlc_media_duplicate( libvlc_media_t * );
/**
* Read the meta of the media.
*
* \param p_meta_desc the media to read
* \param e_meta_desc the meta to read
* \param p_e an initialized exception pointer
* \return the media's meta
*/
VLC_PUBLIC_API char * libvlc_media_get_meta(
libvlc_media_t *p_meta_desc,
libvlc_meta_t e_meta,
libvlc_exception_t *p_e );
/**
* Get current state of media descriptor object. Possible media states
* are defined in libvlc_structures.c ( libvlc_NothingSpecial=0,
* libvlc_Opening, libvlc_Buffering, libvlc_Playing, libvlc_Paused,
* libvlc_Stopped, libvlc_Ended,
* libvlc_Error).
*
* @see libvlc_state_t
* \param p_meta_desc a media descriptor object
* \param p_e an initialized exception object
* \return state of media descriptor object
*/
VLC_PUBLIC_API libvlc_state_t libvlc_media_get_state(
libvlc_media_t *p_meta_desc,
libvlc_exception_t *p_e );
/**
* Get subitems of media descriptor object. This will increment
* the reference count of supplied media descriptor object. Use
* libvlc_media_list_release() to decrement the reference counting.
*
* \param p_md media descriptor object
* \param p_e initalized exception object
* \return list of media descriptor subitems or NULL
*/
VLC_PUBLIC_API libvlc_media_list_t *
libvlc_media_subitems( libvlc_media_t *p_md,
libvlc_exception_t *p_e );
/**
* Get event manager from media descriptor object.
* NOTE: this function doesn't increment reference counting.
*
* \param p_md a media descriptor object
* \param p_e an initialized exception object
* \return event manager object
*/
VLC_PUBLIC_API libvlc_event_manager_t *
libvlc_media_event_manager( libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Get duration of media descriptor object item.
*
* \param p_md media descriptor object
* \param p_e an initialized exception object
* \return duration of media item
*/
VLC_PUBLIC_API libvlc_time_t
libvlc_media_get_duration( libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Get preparsed status for media descriptor object.
*
* \param p_md media descriptor object
* \param p_e an initialized exception object
* \return true if media object has been preparsed otherwise it returns false
*/
VLC_PUBLIC_API int
libvlc_media_is_preparsed( libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Sets media descriptor's user_data. user_data is specialized data
* accessed by the host application, VLC.framework uses it as a pointer to
* an native object that references a libvlc_media_t pointer
*
* \param p_md media descriptor object
* \param p_new_user_data pointer to user data
* \param p_e an initialized exception object
*/
VLC_PUBLIC_API void
libvlc_media_set_user_data( libvlc_media_t * p_md,
void * p_new_user_data,
libvlc_exception_t * p_e);
/**
* Get media descriptor's user_data. user_data is specialized data
* accessed by the host application, VLC.framework uses it as a pointer to
* an native object that references a libvlc_media_t pointer
*
* \param p_md media descriptor object
* \param p_e an initialized exception object
*/
VLC_PUBLIC_API void *
libvlc_media_get_user_data( libvlc_media_t * p_md,
libvlc_exception_t * p_e);
/** @}*/
/*****************************************************************************
* Media Player
*****************************************************************************/
/** \defgroup libvlc_media_player libvlc_media_player
* \ingroup libvlc
* LibVLC Media Player, object that let you play a media
* in a custom drawable
/** \defgroup libvlc_event libvlc_event
* \ingroup libvlc_core
* LibVLC Events
* @{
*/
/**
* 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
*/
VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new( libvlc_instance_t *, libvlc_exception_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
*/
VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new_from_media( libvlc_media_t *, libvlc_exception_t * );
/**
* Release a media_player after use
* Decrement the reference count of a media player object. If the
* reference count is 0, then libvlc_media_player_release() will
* release the media player object. If the media player object
* has been released, then it should not be used again.
*
* \param p_mi the Media Player to free
*/
VLC_PUBLIC_API void libvlc_media_player_release( libvlc_media_player_t * );
/**
* Retain a reference to a media player object. Use
* libvlc_media_player_release() to decrement reference count.
*
* \param p_mi media player object
*/
VLC_PUBLIC_API void libvlc_media_player_retain( libvlc_media_player_t * );
/**
* Set the media that will be used by the media_player. If any,
* previous md will be released.
*
* \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 * );
/**
* 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 * );
/**
* 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 * );
/**
* 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 * );
/**
* Play
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_media_player_play ( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Pause
*
* \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 * );
/**
* Stop
*
* \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 * );
/**
* Set the agl handler where the media player should render its video output.
*
* \param p_mi the Media Player
* \param drawable the agl 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 );
/**
* Get the agl handler previously set with libvlc_media_player_set_agl().
*
* \return the agl handler or 0 if none where set
*/
VLC_PUBLIC_API uint32_t libvlc_media_player_get_nsobject ( libvlc_media_player_t *p_mi );
/**
* Set the agl handler where the media player should render its video output.
*
* \param p_mi the Media Player
* \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 );
/**
* Get the agl handler previously set with libvlc_media_player_set_agl().
*
* \return the agl handler or 0 if none where set
*/
VLC_PUBLIC_API uint32_t libvlc_media_player_get_agl ( libvlc_media_player_t *p_mi );
/**
* Set an X Window System drawable where the media player should render its
* video output. If LibVLC was built without X11 output support, then this has
* no effects.
*
* The specified identifier must correspond to an existing Input/Output class
* X11 window. Pixmaps are <b>not</b> supported. The caller shall ensure that
* the X11 server is the same as the one the VLC instance has been configured
* with.
* If XVideo is <b>not</b> used, it is assumed that the drawable has the
* following properties in common with the default X11 screen: depth, scan line
* pad, black pixel. This is a bug.
*
* \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 );
/**
* Get the X Window System window identifier previously set with
* libvlc_media_player_set_xwindow(). Note that this will return the identifier
* even if VLC is not currently using it (for instance if it is playing an
* audio-only input).
*
* \return an X window ID, or 0 if none where set.
*/
VLC_PUBLIC_API uint32_t libvlc_media_player_get_xwindow ( libvlc_media_player_t *p_mi );
/**
* Set a Win32/Win64 API window handle (HWND) where the media player should
* render its video output. If LibVLC was built without Win32/Win64 API output
* support, then this has no effects.
*
* \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 );
/**
* Get the Windows API window handle (HWND) previously set with
* libvlc_media_player_set_hwnd(). The handle will be returned even if LibVLC
* is not currently outputting any video to it.
*
* \return a window handle or NULL if there are none.
*/
VLC_PUBLIC_API void *libvlc_media_player_get_hwnd ( libvlc_media_player_t *p_mi );
/** \bug This might go away ... to be replaced by a broader system */
/**
* 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).
*/
VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_length( libvlc_media_player_t *, libvlc_exception_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).
*/
VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_time( libvlc_media_player_t *, libvlc_exception_t *);
/**
* Set the movie time (in ms).
*
* \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 *);
/**
* Get movie position.
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return movie position
*/
VLC_PUBLIC_API float libvlc_media_player_get_position( libvlc_media_player_t *, libvlc_exception_t *);
/**
* Set movie position.
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return movie position
*/
VLC_PUBLIC_API void libvlc_media_player_set_position( libvlc_media_player_t *, float, libvlc_exception_t *);
/**
* Set movie chapter
*
* \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 *);
/**
* Get movie chapter
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return chapter number currently playing
*/
VLC_PUBLIC_API int libvlc_media_player_get_chapter( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get movie chapter count
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return number of chapters in movie
*/
VLC_PUBLIC_API int libvlc_media_player_get_chapter_count( libvlc_media_player_t *, libvlc_exception_t *);
VLC_PUBLIC_API int libvlc_media_player_will_play ( libvlc_media_player_t *, libvlc_exception_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
* Event manager that belongs to a libvlc object, and from whom events can
* be received.
*/
VLC_PUBLIC_API int libvlc_media_player_get_chapter_count_for_title(
libvlc_media_player_t *, int, libvlc_exception_t *);
typedef struct libvlc_event_manager_t libvlc_event_manager_t;
typedef struct libvlc_event_t libvlc_event_t;
typedef enum libvlc_event_type_t libvlc_event_type_t;
/**
* Set movie title
*
* \param p_mi the Media Player
* \param i_title title number to play
* \param p_e an initialized exception pointer
* Callback function notification
* \param p_event the event triggering the callback
*/
VLC_PUBLIC_API void libvlc_media_player_set_title( libvlc_media_player_t *, int, libvlc_exception_t *);
typedef void ( *libvlc_callback_t )( const libvlc_event_t *, void * );
/**
* Get movie title
* Register for an event notification.
*
* \param p_mi the Media Player
* \param p_event_manager the event manager to which you want to attach to.
* Generally it is obtained by vlc_my_object_event_manager() where
* my_object is the object you want to listen to.
* \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 title number currently playing
*/
VLC_PUBLIC_API int libvlc_media_player_get_title( libvlc_media_player_t *, libvlc_exception_t *);
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 );
/**
* Get movie title count
* Unregister an event notification.
*
* \param p_mi the Media Player
* \param p_event_manager the 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
* \return title number count
*/
VLC_PUBLIC_API int libvlc_media_player_get_title_count( libvlc_media_player_t *, libvlc_exception_t *);
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 );
/**
* Set previous chapter
* Get an event's type name.
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \param i_event_type the desired event
*/
VLC_PUBLIC_API void libvlc_media_player_previous_chapter( libvlc_media_player_t *, libvlc_exception_t *);
/**
* Set next chapter
*
* \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 *);
/**
* Get movie play rate
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return movie play rate
*/
VLC_PUBLIC_API float libvlc_media_player_get_rate( libvlc_media_player_t *, libvlc_exception_t *);
/**
* Set movie play rate
*
* \param p_mi the Media Player
* \param movie play rate to set
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_media_player_set_rate( libvlc_media_player_t *, float, libvlc_exception_t *);
/**
* 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 *);
/**
* 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
*/
VLC_PUBLIC_API float libvlc_media_player_get_fps( libvlc_media_player_t *, libvlc_exception_t *);
/** end bug */
/**
* 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 *);
/**
* 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 );
/**
* 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 );
/**
* Release (free) libvlc_track_description_t
*
* \param p_track_description the structure to release
*/
VLC_PUBLIC_API void libvlc_track_description_release( libvlc_track_description_t *p_track_description );
/** \defgroup libvlc_video libvlc_video
* \ingroup libvlc_media_player
* LibVLC Video handling
* @{
*/
/**
* Toggle fullscreen status on video output.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_toggle_fullscreen( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Enable or disable fullscreen on a video output.
*
* \param p_mediaplayer the media player
* \param b_fullscreen boolean for fullscreen status
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_set_fullscreen( libvlc_media_player_t *, int, libvlc_exception_t * );
/**
* Get current fullscreen status.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the fullscreen status (boolean)
*/
VLC_PUBLIC_API int libvlc_get_fullscreen( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get current video height.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the video height
*/
VLC_PUBLIC_API int libvlc_video_get_height( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get current video width.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the video width
*/
VLC_PUBLIC_API int libvlc_video_get_width( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get the current video scaling factor.
* See also libvlc_video_set_scale().
*
* \param p_mediaplayer the media player
* \return the currently configured zoom factor, or 0. if the video is set
* to fit to the output window/drawable automatically.
*/
VLC_PUBLIC_API float libvlc_video_get_scale( libvlc_media_player_t *,
libvlc_exception_t *p_e );
/**
* Set the video scaling factor. That is the ratio of the number of pixels on
* screen to the number of pixels in the original decoded video in each
* dimension. Zero is a special value; it will adjust the video to the output
* window/drawable (in windowed mode) or the entire screen.
*
* Note that not all video outputs support scaling.
*
* \param p_mediaplayer the media player
* \param i_factor the scaling factor, or zero
*/
VLC_PUBLIC_API void libvlc_video_set_scale( libvlc_media_player_t *, float,
libvlc_exception_t *p_e );
/**
* Get current video aspect ratio.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the video aspect ratio
*/
VLC_PUBLIC_API char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Set new video aspect ratio.
*
* \param p_mediaplayer the media player
* \param psz_aspect new video aspect-ratio
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_video_set_aspect_ratio( libvlc_media_player_t *, char *, libvlc_exception_t * );
/**
* Get current video subtitle.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the video subtitle selected
*/
VLC_PUBLIC_API int libvlc_video_get_spu( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get the number of available video subtitles.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the number of available video subtitles
*/
VLC_PUBLIC_API int libvlc_video_get_spu_count( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get the description of available video subtitles.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return list containing description of available video subtitles
*/
VLC_PUBLIC_API libvlc_track_description_t *
libvlc_video_get_spu_description( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Set new video subtitle.
*
* \param p_mediaplayer the media player
* \param i_spu new video subtitle to select
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_video_set_spu( libvlc_media_player_t *, int , libvlc_exception_t * );
/**
* Set new video subtitle file.
*
* \param p_mediaplayer the media player
* \param psz_subtitle new video subtitle file
* \param p_e an initialized exception pointer
* \return the success status (boolean)
*/
VLC_PUBLIC_API int libvlc_video_set_subtitle_file( libvlc_media_player_t *, char *, libvlc_exception_t * );
/**
* Get the description of available titles.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return list containing description of available titles
*/
VLC_PUBLIC_API libvlc_track_description_t *
libvlc_video_get_title_description( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get the description of available chapters for specific title.
*
* \param p_mediaplayer the media player
* \param i_title selected title
* \param p_e an initialized exception pointer
* \return list containing description of available chapter for title i_title
*/
VLC_PUBLIC_API libvlc_track_description_t *
libvlc_video_get_chapter_description( libvlc_media_player_t *, int, libvlc_exception_t * );
/**
* Get current crop filter geometry.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the crop filter geometry
*/
VLC_PUBLIC_API char *libvlc_video_get_crop_geometry( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Set new crop filter geometry.
*
* \param p_mediaplayer the media player
* \param psz_geometry new crop filter geometry
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_video_set_crop_geometry( libvlc_media_player_t *, char *, libvlc_exception_t * );
/**
* Toggle teletext transparent status on video output.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
*/
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 * );
/**
* 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
*/
VLC_PUBLIC_API libvlc_track_description_t *
libvlc_video_get_track_description( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get current video track.
*
* \param p_mi media player
* \param p_e an initialized exception pointer
* \return the video track (int)
*/
VLC_PUBLIC_API int libvlc_video_get_track( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Set video track.
*
* \param p_mi media player
* \param i_track the track (int)
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_video_set_track( libvlc_media_player_t *, int, libvlc_exception_t * );
/**
* Take a snapshot of the current video window.
*
* If i_width AND i_height is 0, original size is used.
* If i_width XOR i_height is 0, original aspect-ratio is preserved.
*
* \param p_mi media player instance
* \param psz_filepath the path where to save the screenshot to
* \param i_width the snapshot's width
* \param i_height the snapshot's height
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_video_take_snapshot( libvlc_media_player_t *, const char *,unsigned int, unsigned int, libvlc_exception_t * );
/** @} video */
/** \defgroup libvlc_audio libvlc_audio
* \ingroup libvlc_media_player
* LibVLC Audio handling
* @{
*/
/**
* Audio device types
*/
typedef enum libvlc_audio_output_device_types_t {
libvlc_AudioOutputDevice_Error = -1,
libvlc_AudioOutputDevice_Mono = 1,
libvlc_AudioOutputDevice_Stereo = 2,
libvlc_AudioOutputDevice_2F2R = 4,
libvlc_AudioOutputDevice_3F2R = 5,
libvlc_AudioOutputDevice_5_1 = 6,
libvlc_AudioOutputDevice_6_1 = 7,
libvlc_AudioOutputDevice_7_1 = 8,
libvlc_AudioOutputDevice_SPDIF = 10
} libvlc_audio_output_device_types_t;
/**
* Audio channels
*/
typedef enum libvlc_audio_output_channel_t {
libvlc_AudioChannel_Error = -1,
libvlc_AudioChannel_Stereo = 1,
libvlc_AudioChannel_RStereo = 2,
libvlc_AudioChannel_Left = 3,
libvlc_AudioChannel_Right = 4,
libvlc_AudioChannel_Dolbys = 5
} 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
*/
VLC_PUBLIC_API libvlc_audio_output_t *
libvlc_audio_output_list_get( libvlc_instance_t *,
libvlc_exception_t * );
/**
* Free the list of available audio outputs
*
* \param p_list list with audio outputs for release
*/
VLC_PUBLIC_API void libvlc_audio_output_list_release( libvlc_audio_output_t * );
/**
* Set the audio output.
* Change will be applied after stop and play.
*
* \param p_instance libvlc instance
* \param psz_name name of audio output,
* use psz_name of \see libvlc_audio_output_t
* \return true if function succeded
*/
VLC_PUBLIC_API int libvlc_audio_output_set( libvlc_instance_t *,
const char * );
/**
* Get count of devices for audio output, these devices are hardware oriented
* like analor or digital output of sound card
*
* \param p_instance libvlc instance
* \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
* \return number of devices
*/
VLC_PUBLIC_API int libvlc_audio_output_device_count( libvlc_instance_t *,
const char * );
/**
* Get long name of device, if not available short name given
*
* \param p_instance libvlc instance
* \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
* \param i_device device index
* \return long name of device
*/
VLC_PUBLIC_API char * libvlc_audio_output_device_longname( libvlc_instance_t *,
const char *,
int );
/**
* Get id name of device
*
* \param p_instance libvlc instance
* \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
* \param i_device device index
* \return id name of device, use for setting device, need to be free after use
*/
VLC_PUBLIC_API char * libvlc_audio_output_device_id( libvlc_instance_t *,
const char *,
int );
/**
* Set device for using
*
* \param p_instance libvlc instance
* \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
* \param psz_device_id device
*/
VLC_PUBLIC_API void libvlc_audio_output_device_set( libvlc_instance_t *,
const char *,
const char * );
/**
* Get current audio device type. Device type describes something like
* character of output sound - stereo sound, 2.1, 5.1 etc
*
* \param p_instance vlc instance
* \param p_e an initialized exception pointer
* \return the audio devices type \see libvlc_audio_output_device_types_t
*/
VLC_PUBLIC_API int libvlc_audio_output_get_device_type(
libvlc_instance_t *, libvlc_exception_t * );
/**
* Set current audio device type.
*
* \param p_instance vlc instance
* \param device_type the audio device type,
according to \see libvlc_audio_output_device_types_t
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_audio_output_set_device_type( libvlc_instance_t *,
int,
libvlc_exception_t * );
/**
* Toggle mute status.
*
* \param p_instance libvlc instance
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_audio_toggle_mute( libvlc_instance_t *, libvlc_exception_t * );
/**
* Get current mute status.
*
* \param p_instance libvlc instance
* \param p_e an initialized exception pointer
* \return the mute status (boolean)
*/
VLC_PUBLIC_API int libvlc_audio_get_mute( libvlc_instance_t *, libvlc_exception_t * );
/**
* Set mute status.
*
* \param p_instance libvlc instance
* \param status If status is true then mute, otherwise unmute
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_audio_set_mute( libvlc_instance_t *, int , libvlc_exception_t * );
/**
* Get current audio level.
*
* \param p_instance libvlc instance
* \param p_e an initialized exception pointer
* \return the audio level (int)
*/
VLC_PUBLIC_API int libvlc_audio_get_volume( libvlc_instance_t *, libvlc_exception_t * );
/**
* Set current audio level.
*
* \param p_instance libvlc instance
* \param i_volume the volume (int)
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_audio_set_volume( libvlc_instance_t *, int, libvlc_exception_t *);
/**
* Get number of available audio tracks.
*
* \param p_mi media player
* \param p_e an initialized exception
* \return the number of available audio tracks (int)
*/
VLC_PUBLIC_API int libvlc_audio_get_track_count( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get the description of available audio tracks.
*
* \param p_mi media player
* \param p_e an initialized exception
* \return list with description of available audio tracks
*/
VLC_PUBLIC_API libvlc_track_description_t *
libvlc_audio_get_track_description( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get current audio track.
*
* \param p_mi media player
* \param p_e an initialized exception pointer
* \return the audio track (int)
*/
VLC_PUBLIC_API int libvlc_audio_get_track( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Set current audio track.
*
* \param p_mi media player
* \param i_track the track (int)
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_audio_set_track( libvlc_media_player_t *, int, libvlc_exception_t * );
/**
* Get current audio channel.
*
* \param p_instance vlc instance
* \param p_e an initialized exception pointer
* \return the audio channel \see libvlc_audio_output_channel_t
*/
VLC_PUBLIC_API int
libvlc_audio_get_channel( libvlc_instance_t *, libvlc_exception_t * );
/**
* Set current audio channel.
*
* \param p_instance vlc instance
* \param channel the audio channel, \see libvlc_audio_output_channel_t
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_audio_set_channel( libvlc_instance_t *,
int,
libvlc_exception_t * );
/** @} audio */
/** @} media_player */
/*****************************************************************************
* Event handling
*****************************************************************************/
/** \defgroup libvlc_event libvlc_event
* \ingroup libvlc_core
* LibVLC Events
* @{
*/
/**
* Register for an event notification.
*
* \param p_event_manager the event manager to which you want to attach to.
* Generally it is obtained by vlc_my_object_event_manager() where
* my_object is the object you want to listen to.
* \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
*/
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 );
/**
* Unregister an event notification.
*
* \param p_event_manager the 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 );
/**
* Get an event's type name.
*
* \param i_event_type the desired event
*/
VLC_PUBLIC_API const char * libvlc_event_type_name( libvlc_event_type_t event_type );
VLC_PUBLIC_API const char * libvlc_event_type_name( libvlc_event_type_t event_type );
/** @} */
/*****************************************************************************
* Media Library
*****************************************************************************/
/** \defgroup libvlc_media_library libvlc_media_library
* \ingroup libvlc
* LibVLC Media Library
* @{
*/
VLC_PUBLIC_API libvlc_media_library_t *
libvlc_media_library_new( libvlc_instance_t * p_inst,
libvlc_exception_t * p_e );
/**
* Release media library object. This functions decrements the
* reference count of the media library object. If it reaches 0,
* then the object will be released.
*
* \param p_mlib media library object
*/
VLC_PUBLIC_API void
libvlc_media_library_release( libvlc_media_library_t * p_mlib );
/**
* Retain a reference to a media library object. This function will
* increment the reference counting for this object. Use
* libvlc_media_library_release() to decrement the reference count.
*
* \param p_mlib media library object
*/
VLC_PUBLIC_API void
libvlc_media_library_retain( libvlc_media_library_t * p_mlib );
/**
* Load media library.
*
* \param p_mlib media library object
* \param p_e an initialized exception object.
*/
VLC_PUBLIC_API void
libvlc_media_library_load( libvlc_media_library_t * p_mlib,
libvlc_exception_t * p_e );
/**
* Save media library.
*
* \param p_mlib media library object
* \param p_e an initialized exception object.
*/
VLC_PUBLIC_API void
libvlc_media_library_save( libvlc_media_library_t * p_mlib,
libvlc_exception_t * p_e );
/**
* Get media library subitems.
*
* \param p_mlib media library object
* \param p_e an initialized exception object.
* \return media list subitems
*/
VLC_PUBLIC_API libvlc_media_list_t *
libvlc_media_library_media_list( libvlc_media_library_t * p_mlib,
libvlc_exception_t * p_e );
/** @} */
/*****************************************************************************
* Services/Media Discovery
*****************************************************************************/
/** \defgroup libvlc_media_discoverer libvlc_media_discoverer
* \ingroup libvlc
* LibVLC Media Discoverer
* @{
*/
/**
* Discover media service by name.
*
* \param p_inst libvlc instance
* \param psz_name service name
* \param p_e an initialized exception object
* \return media discover object
*/
VLC_PUBLIC_API libvlc_media_discoverer_t *
libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst,
const char * psz_name,
libvlc_exception_t * p_e );
/**
* Release media discover object. If the reference count reaches 0, then
* the object will be released.
*
* \param p_mdis media service discover object
*/
VLC_PUBLIC_API void libvlc_media_discoverer_release( libvlc_media_discoverer_t * p_mdis );
/**
* Get media service discover object its localized name.
*
* \param media discover object
* \return localized name
*/
VLC_PUBLIC_API char * libvlc_media_discoverer_localized_name( libvlc_media_discoverer_t * p_mdis );
/**
* Get media service discover media list.
*
* \param p_mdis media service discover object
* \return list of media items
*/
VLC_PUBLIC_API libvlc_media_list_t * libvlc_media_discoverer_media_list( libvlc_media_discoverer_t * p_mdis );
/**
* Get event manager from media service discover object.
*
* \param p_mdis media service discover object
* \return event manager object.
*/
VLC_PUBLIC_API libvlc_event_manager_t *
libvlc_media_discoverer_event_manager( libvlc_media_discoverer_t * p_mdis );
/**
* Query if media service discover object is running.
*
* \param p_mdis media service discover object
* \return true if running, false if not
*/
VLC_PUBLIC_API int
libvlc_media_discoverer_is_running( libvlc_media_discoverer_t * p_mdis );
/**@} */
/*****************************************************************************
* Message log handling
*****************************************************************************/
......
......@@ -44,7 +44,7 @@ extern "C" {
* @{
*/
typedef enum libvlc_event_type_t {
enum libvlc_event_type_t {
/* Append new event types at the end.
* Do not remove, insert or re-order any entry. */
libvlc_MediaMetaChanged,
......@@ -90,7 +90,7 @@ typedef enum libvlc_event_type_t {
libvlc_MediaPlayerSnapshotTaken,
libvlc_MediaPlayerLengthChanged,
/* New event types HERE */
} libvlc_event_type_t;
};
/**
* An Event
......@@ -99,7 +99,7 @@ typedef enum libvlc_event_type_t {
* \param u Event dependent content
*/
typedef struct libvlc_event_t
struct libvlc_event_t
{
libvlc_event_type_t type;
void * p_obj;
......@@ -209,21 +209,8 @@ typedef struct libvlc_event_t
libvlc_time_t new_length;
} media_player_length_changed;
} u;
} libvlc_event_t;
};
/**
* Event manager that belongs to a libvlc object, and from whom events can
* be received.
*/
typedef struct libvlc_event_manager_t libvlc_event_manager_t;
/**
* Callback function notification
* \param p_event the event triggering the callback
*/
typedef void ( *libvlc_callback_t )( const libvlc_event_t *, void * );
/**@} */
......
/*****************************************************************************
* libvlc.h: libvlc external API
*****************************************************************************
* Copyright (C) 1998-2009 the VideoLAN team
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Jean-Paul Saman <jpsaman@videolan.org>
* Pierre d'Herbemont <pdherbemont@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/**
* \file
* This file defines libvlc_media external API
*/
#ifndef VLC_LIBVLC_MEDIA_H
#define VLC_LIBVLC_MEDIA_H 1
/*****************************************************************************
* media
*****************************************************************************/
/** \defgroup libvlc_media libvlc_media
* \ingroup libvlc
* LibVLC Media
* @{
*/
typedef struct libvlc_media_t libvlc_media_t;
/* Meta Handling */
/** defgroup libvlc_meta libvlc_meta
* \ingroup libvlc_media
* LibVLC Media Meta
* @{
*/
typedef enum libvlc_meta_t {
libvlc_meta_Title,
libvlc_meta_Artist,
libvlc_meta_Genre,
libvlc_meta_Copyright,
libvlc_meta_Album,
libvlc_meta_TrackNumber,
libvlc_meta_Description,
libvlc_meta_Rating,
libvlc_meta_Date,
libvlc_meta_Setting,
libvlc_meta_URL,
libvlc_meta_Language,
libvlc_meta_NowPlaying,
libvlc_meta_Publisher,
libvlc_meta_EncodedBy,
libvlc_meta_ArtworkURL,
libvlc_meta_TrackID,
/* Add new meta types HERE */
} libvlc_meta_t;
/** @}*/
/**
* Note the order of libvlc_state_t enum must match exactly the order of
* @see mediacontrol_PlayerStatus, @see input_state_e enums,
* and VideoLAN.LibVLC.State (at bindings/cil/src/media.cs).
*
* Expected states by web plugins are:
* IDLE/CLOSE=0, OPENING=1, BUFFERING=2, PLAYING=3, PAUSED=4,
* STOPPING=5, ENDED=6, ERROR=7
*/
typedef enum libvlc_state_t
{
libvlc_NothingSpecial=0,
libvlc_Opening,
libvlc_Buffering,
libvlc_Playing,
libvlc_Paused,
libvlc_Stopped,
libvlc_Ended,
libvlc_Error
} libvlc_state_t;
/**
* Create a media with the given MRL.
*
* \param p_instance the instance
* \param psz_mrl the MRL to read
* \param p_e an initialized exception pointer
* \return the newly created media
*/
VLC_PUBLIC_API libvlc_media_t * libvlc_media_new(
libvlc_instance_t *p_instance,
const char * psz_mrl,
libvlc_exception_t *p_e );
/**
* Create a media as an empty node with the passed name.
*
* \param p_instance the instance
* \param psz_name the name of the node
* \param p_e an initialized exception pointer
* \return the new empty media
*/
VLC_PUBLIC_API libvlc_media_t * libvlc_media_new_as_node(
libvlc_instance_t *p_instance,
const char * psz_name,
libvlc_exception_t *p_e );
/**
* Add an option to the media.
*
* This option will be used to determine how the media_player will
* read the media. This allows to use VLC's advanced
* reading/streaming options on a per-media basis.
*
* The options are detailed in vlc --long-help, for instance "--sout-all"
*
* \param p_instance the instance
* \param ppsz_options the options (as a string)
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_media_add_option(
libvlc_media_t * p_md,
const char * ppsz_options,
libvlc_exception_t * p_e );
/**
* Add an option to the media from an untrusted source.
*
* This option will be used to determine how the media_player will
* read the media. This allows to use VLC's advanced
* reading/streaming options on a per-media basis.
*
* The options are detailed in vlc --long-help, for instance "--sout-all"
*
* \param p_instance the instance
* \param ppsz_options the options (as a string)
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_media_add_option_untrusted(
libvlc_media_t * p_md,
const char * ppsz_options,
libvlc_exception_t * p_e );
/**
* Retain a reference to a media descriptor object (libvlc_media_t). Use
* libvlc_media_release() to decrement the reference count of a
* media descriptor object.
*
* \param p_meta_desc a media descriptor object.
*/
VLC_PUBLIC_API void libvlc_media_retain(
libvlc_media_t *p_meta_desc );
/**
* Decrement the reference count of a media descriptor object. If the
* reference count is 0, then libvlc_media_release() will release the
* media descriptor object. It will send out an libvlc_MediaFreed event
* to all listeners. If the media descriptor object has been released it
* should not be used again.
*
* \param p_meta_desc a media descriptor object.
*/
VLC_PUBLIC_API void libvlc_media_release(
libvlc_media_t *p_meta_desc );
/**
* Get the media resource locator (mrl) from a media descriptor object
*
* \param p_md a media descriptor object
* \param p_e an initialized exception object
* \return string with mrl of media descriptor object
*/
VLC_PUBLIC_API char * libvlc_media_get_mrl( libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Duplicate a media descriptor object.
*
* \param p_meta_desc a media descriptor object.
*/
VLC_PUBLIC_API libvlc_media_t * libvlc_media_duplicate( libvlc_media_t * );
/**
* Read the meta of the media.
*
* \param p_meta_desc the media to read
* \param e_meta_desc the meta to read
* \param p_e an initialized exception pointer
* \return the media's meta
*/
VLC_PUBLIC_API char * libvlc_media_get_meta(
libvlc_media_t *p_meta_desc,
libvlc_meta_t e_meta,
libvlc_exception_t *p_e );
/**
* Get current state of media descriptor object. Possible media states
* are defined in libvlc_structures.c ( libvlc_NothingSpecial=0,
* libvlc_Opening, libvlc_Buffering, libvlc_Playing, libvlc_Paused,
* libvlc_Stopped, libvlc_Ended,
* libvlc_Error).
*
* @see libvlc_state_t
* \param p_meta_desc a media descriptor object
* \param p_e an initialized exception object
* \return state of media descriptor object
*/
VLC_PUBLIC_API libvlc_state_t libvlc_media_get_state(
libvlc_media_t *p_meta_desc,
libvlc_exception_t *p_e );
/**
* Get subitems of media descriptor object. This will increment
* the reference count of supplied media descriptor object. Use
* libvlc_media_list_release() to decrement the reference counting.
*
* \param p_md media descriptor object
* \param p_e initalized exception object
* \return list of media descriptor subitems or NULL
*/
/* This method uses libvlc_media_list_t, however, media_list usage is optionnal
* and this is here for convenience */
#define VLC_FORWARD_DECLARE_OBJECT(a) struct a
VLC_PUBLIC_API VLC_FORWARD_DECLARE_OBJECT(libvlc_media_list_t *)
libvlc_media_subitems( libvlc_media_t *p_md,
libvlc_exception_t *p_e );
/**
* Get event manager from media descriptor object.
* NOTE: this function doesn't increment reference counting.
*
* \param p_md a media descriptor object
* \param p_e an initialized exception object
* \return event manager object
*/
VLC_PUBLIC_API libvlc_event_manager_t *
libvlc_media_event_manager( libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Get duration of media descriptor object item.
*
* \param p_md media descriptor object
* \param p_e an initialized exception object
* \return duration of media item
*/
VLC_PUBLIC_API libvlc_time_t
libvlc_media_get_duration( libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Get preparsed status for media descriptor object.
*
* \param p_md media descriptor object
* \param p_e an initialized exception object
* \return true if media object has been preparsed otherwise it returns false
*/
VLC_PUBLIC_API int
libvlc_media_is_preparsed( libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Sets media descriptor's user_data. user_data is specialized data
* accessed by the host application, VLC.framework uses it as a pointer to
* an native object that references a libvlc_media_t pointer
*
* \param p_md media descriptor object
* \param p_new_user_data pointer to user data
* \param p_e an initialized exception object
*/
VLC_PUBLIC_API void
libvlc_media_set_user_data( libvlc_media_t * p_md,
void * p_new_user_data,
libvlc_exception_t * p_e);
/**
* Get media descriptor's user_data. user_data is specialized data
* accessed by the host application, VLC.framework uses it as a pointer to
* an native object that references a libvlc_media_t pointer
*
* \param p_md media descriptor object
* \param p_e an initialized exception object
*/
VLC_PUBLIC_API void *
libvlc_media_get_user_data( libvlc_media_t * p_md,
libvlc_exception_t * p_e);
/** @}*/
#endif /* VLC_LIBVLC_MEDIA_H */
/*****************************************************************************
* libvlc.h: libvlc external API
*****************************************************************************
* Copyright (C) 1998-2009 the VideoLAN team
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Jean-Paul Saman <jpsaman@videolan.org>
* Pierre d'Herbemont <pdherbemont@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/**
* \file
* This file defines libvlc_media_discoverer external API
*/
#ifndef VLC_LIBVLC_MEDIA_DISCOVERER_H
#define VLC_LIBVLC_MEDIA_DISCOVERER_H 1
/*****************************************************************************
* Services/Media Discovery
*****************************************************************************/
/** \defgroup libvlc_media_discoverer libvlc_media_discoverer
* \ingroup libvlc
* LibVLC Media Discoverer
* @{
*/
typedef struct libvlc_media_discoverer_t libvlc_media_discoverer_t;
/**
* Discover media service by name.
*
* \param p_inst libvlc instance
* \param psz_name service name
* \param p_e an initialized exception object
* \return media discover object
*/
VLC_PUBLIC_API libvlc_media_discoverer_t *
libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst,
const char * psz_name,
libvlc_exception_t * p_e );
/**
* Release media discover object. If the reference count reaches 0, then
* the object will be released.
*
* \param p_mdis media service discover object
*/
VLC_PUBLIC_API void libvlc_media_discoverer_release( libvlc_media_discoverer_t * p_mdis );
/**
* Get media service discover object its localized name.
*
* \param media discover object
* \return localized name
*/
VLC_PUBLIC_API char * libvlc_media_discoverer_localized_name( libvlc_media_discoverer_t * p_mdis );
/**
* Get media service discover media list.
*
* \param p_mdis media service discover object
* \return list of media items
*/
VLC_PUBLIC_API libvlc_media_list_t * libvlc_media_discoverer_media_list( libvlc_media_discoverer_t * p_mdis );
/**
* Get event manager from media service discover object.
*
* \param p_mdis media service discover object
* \return event manager object.
*/
VLC_PUBLIC_API libvlc_event_manager_t *
libvlc_media_discoverer_event_manager( libvlc_media_discoverer_t * p_mdis );
/**
* Query if media service discover object is running.
*
* \param p_mdis media service discover object
* \return true if running, false if not
*/
VLC_PUBLIC_API int
libvlc_media_discoverer_is_running( libvlc_media_discoverer_t * p_mdis );
/**@} */
# ifdef __cplusplus
}
# endif
#endif /* <vlc/libvlc.h> */
/*****************************************************************************
* libvlc.h: libvlc external API
*****************************************************************************
* Copyright (C) 1998-2009 the VideoLAN team
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Jean-Paul Saman <jpsaman@videolan.org>
* Pierre d'Herbemont <pdherbemont@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/**
* \file
* This file defines libvlc_media_library external API
*/
#ifndef VLC_LIBVLC_MEDIA_LIBRARY_H
#define VLC_LIBVLC_MEDIA_LIBRARY_H 1
/*****************************************************************************
* Media Library
*****************************************************************************/
/** \defgroup libvlc_media_library libvlc_media_library
* \ingroup libvlc
* LibVLC Media Library
* @{
*/
typedef struct libvlc_media_library_t libvlc_media_library_t;
VLC_PUBLIC_API libvlc_media_library_t *
libvlc_media_library_new( libvlc_instance_t * p_inst,
libvlc_exception_t * p_e );
/**
* Release media library object. This functions decrements the
* reference count of the media library object. If it reaches 0,
* then the object will be released.
*
* \param p_mlib media library object
*/
VLC_PUBLIC_API void
libvlc_media_library_release( libvlc_media_library_t * p_mlib );
/**
* Retain a reference to a media library object. This function will
* increment the reference counting for this object. Use
* libvlc_media_library_release() to decrement the reference count.
*
* \param p_mlib media library object
*/
VLC_PUBLIC_API void
libvlc_media_library_retain( libvlc_media_library_t * p_mlib );
/**
* Load media library.
*
* \param p_mlib media library object
* \param p_e an initialized exception object.
*/
VLC_PUBLIC_API void
libvlc_media_library_load( libvlc_media_library_t * p_mlib,
libvlc_exception_t * p_e );
/**
* Save media library.
*
* \param p_mlib media library object
* \param p_e an initialized exception object.
*/
VLC_PUBLIC_API void
libvlc_media_library_save( libvlc_media_library_t * p_mlib,
libvlc_exception_t * p_e );
/**
* Get media library subitems.
*
* \param p_mlib media library object
* \param p_e an initialized exception object.
* \return media list subitems
*/
VLC_PUBLIC_API libvlc_media_list_t *
libvlc_media_library_media_list( libvlc_media_library_t * p_mlib,
libvlc_exception_t * p_e );
/** @} */
# ifdef __cplusplus
}
# endif
#endif /* VLC_LIBVLC_MEDIA_LIBRARY_H */
......@@ -42,6 +42,9 @@ extern "C" {
* @{
*/
typedef struct libvlc_media_list_t libvlc_media_list_t;
typedef struct libvlc_media_list_view_t libvlc_media_list_view_t;
/**
* Create an empty media list.
*
......@@ -242,259 +245,6 @@ VLC_PUBLIC_API libvlc_event_manager_t *
libvlc_media_list_event_manager( libvlc_media_list_t *,
libvlc_exception_t * );
/*****************************************************************************
* Media List View
*****************************************************************************/
/** \defgroup libvlc_media_list_view libvlc_media_list_view
* \ingroup libvlc_media_list
* LibVLC Media List View, represent a media_list using a different layout
* @{ */
/**
* Retain reference to a media list view
*
* \param p_mlv a media list view created with libvlc_media_list_view_new()
*/
VLC_PUBLIC_API void
libvlc_media_list_view_retain( libvlc_media_list_view_t * p_mlv );
/**
* Release reference to a media list view. If the refcount reaches 0, then
* the object will be released.
*
* \param p_mlv a media list view created with libvlc_media_list_view_new()
*/
VLC_PUBLIC_API void
libvlc_media_list_view_release( libvlc_media_list_view_t * p_mlv );
/**
* Get libvlc_event_manager from this media list view instance.
* The p_event_manager is immutable, so you don't have to hold the lock
*
* \param p_mlv a media list view instance
* \return libvlc_event_manager
*/
VLC_PUBLIC_API libvlc_event_manager_t *
libvlc_media_list_view_event_manager( libvlc_media_list_view_t * p_mlv );
/**
* Get count on media list view items
*
* \param p_mlv a media list view instance
* \param p_e initialized exception object
* \return number of items in media list view
*/
VLC_PUBLIC_API int
libvlc_media_list_view_count( libvlc_media_list_view_t * p_mlv,
libvlc_exception_t * p_e );
/**
* List media instance in media list view at an index position
*
* \param p_mlv a media list view instance
* \param i_index index position in array where to insert
* \param p_e initialized exception object
* \return media instance at position i_pos and libvlc_media_retain() has been called to increase the refcount on this object.
*/
VLC_PUBLIC_API libvlc_media_t *
libvlc_media_list_view_item_at_index( libvlc_media_list_view_t * p_mlv,
int i_index,
libvlc_exception_t * p_e );
VLC_PUBLIC_API libvlc_media_list_view_t *
libvlc_media_list_view_children_at_index( libvlc_media_list_view_t * p_mlv,
int index,
libvlc_exception_t * p_e );
VLC_PUBLIC_API libvlc_media_list_view_t *
libvlc_media_list_view_children_for_item( libvlc_media_list_view_t * p_mlv,
libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Get index position of media instance in media list view.
* The function will return the first occurence.
*
* \param p_mlv a media list view instance
* \param p_md media instance
* \param p_e initialized exception object
* \return index position in array of p_md
*/
VLC_PUBLIC_API int
libvlc_media_list_view_index_of_item( libvlc_media_list_view_t * p_mlv,
libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Insert media instance in media list view at index position
*
* \param p_mlv a media list view instance
* \param p_md media instance
* \param index position in array where to insert
* \param p_e initialized exception object
*/
VLC_PUBLIC_API void
libvlc_media_list_view_insert_at_index( libvlc_media_list_view_t * p_mlv,
libvlc_media_t * p_md,
int index,
libvlc_exception_t * p_e );
/**
* Remove media instance in media list view from index position
*
* \param p_mlv a media list view instance
* \param index position in array of media instance to remove
* \param p_e initialized exception object
*/
VLC_PUBLIC_API void
libvlc_media_list_view_remove_at_index( libvlc_media_list_view_t * p_mlv,
int index,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_view_add_item( libvlc_media_list_view_t * p_mlv,
libvlc_media_t * p_md,
libvlc_exception_t * p_e );
VLC_PUBLIC_API libvlc_media_list_t *
libvlc_media_list_view_parent_media_list( libvlc_media_list_view_t * p_mlv,
libvlc_exception_t * p_e );
/** @} media_list_view */
/*****************************************************************************
* Media List Player
*****************************************************************************/
/** \defgroup libvlc_media_list_player libvlc_media_list_player
* \ingroup libvlc_media_list_player
* LibVLC Media List Player, play a media_list. You can see that as a media
* instance subclass
* @{
*/
/**
* Create new media_list_player.
*
* \param p_instance libvlc instance
* \param p_e initialized exception instance
* \return media list player instance
*/
VLC_PUBLIC_API libvlc_media_list_player_t *
libvlc_media_list_player_new( libvlc_instance_t * p_instance,
libvlc_exception_t * p_e );
/**
* Release media_list_player.
*
* \param p_mlp media list player instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_release( libvlc_media_list_player_t * p_mlp );
/**
* Replace media player in media_list_player with this instance.
*
* \param p_mlp media list player instance
* \param p_mi media player instance
* \param p_e initialized exception instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_set_media_player(
libvlc_media_list_player_t * p_mlp,
libvlc_media_player_t * p_mi,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_player_set_media_list(
libvlc_media_list_player_t * p_mlp,
libvlc_media_list_t * p_mlist,
libvlc_exception_t * p_e );
/**
* Play media list
*
* \param p_mlp media list player instance
* \param p_e initialized exception instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_play( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
/**
* Pause media list
*
* \param p_mlp media list player instance
* \param p_e initialized exception instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_pause( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
/**
* Is media list playing?
*
* \param p_mlp media list player instance
* \param p_e initialized exception instance
* \return true for playing and false for not playing
*/
VLC_PUBLIC_API int
libvlc_media_list_player_is_playing( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
/**
* Get current libvlc_state of media list player
*
* \param p_mlp media list player instance
* \param p_e initialized exception instance
* \return libvlc_state_t for media list player
*/
VLC_PUBLIC_API libvlc_state_t
libvlc_media_list_player_get_state( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
/**
* Play media list item at position index
*
* \param p_mlp media list player instance
* \param i_index index in media list to play
* \param p_e initialized exception instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_play_item_at_index(
libvlc_media_list_player_t * p_mlp,
int i_index,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_player_play_item(
libvlc_media_list_player_t * p_mlp,
libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Stop playing media list
*
* \param p_mlp media list player instance
* \param p_e initialized exception instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_stop( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
/**
* Play next item from media list
*
* \param p_mlp media list player instance
* \param p_e initialized exception instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_next( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
/* NOTE: shouldn't there also be a libvlc_media_list_player_prev() */
/** @} media_list_player */
/** @} media_list */
# ifdef __cplusplus
......
/*****************************************************************************
* libvlc_media_list.h: libvlc_media_list API
*****************************************************************************
* Copyright (C) 1998-2008 the VideoLAN team
* $Id$
*
* Authors: Pierre d'Herbemont
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef LIBVLC_MEDIA_LIST_PLAYER_H
#define LIBVLC_MEDIA_LIST_PLAYER_H 1
/**
* \file
* This file defines libvlc_media_list_player API
*/
# ifdef __cplusplus
extern "C" {
# endif
/*****************************************************************************
* Media List Player
*****************************************************************************/
/** \defgroup libvlc_media_list_player libvlc_media_list_player
* \ingroup libvlc
* LibVLC Media List Player, play a media_list. You can see that as a media
* instance subclass
* @{
*/
typedef struct libvlc_media_list_player_t libvlc_media_list_player_t;
/**
* Create new media_list_player.
*
* \param p_instance libvlc instance
* \param p_e initialized exception instance
* \return media list player instance
*/
VLC_PUBLIC_API libvlc_media_list_player_t *
libvlc_media_list_player_new( libvlc_instance_t * p_instance,
libvlc_exception_t * p_e );
/**
* Release media_list_player.
*
* \param p_mlp media list player instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_release( libvlc_media_list_player_t * p_mlp );
/**
* Replace media player in media_list_player with this instance.
*
* \param p_mlp media list player instance
* \param p_mi media player instance
* \param p_e initialized exception instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_set_media_player(
libvlc_media_list_player_t * p_mlp,
libvlc_media_player_t * p_mi,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_player_set_media_list(
libvlc_media_list_player_t * p_mlp,
libvlc_media_list_t * p_mlist,
libvlc_exception_t * p_e );
/**
* Play media list
*
* \param p_mlp media list player instance
* \param p_e initialized exception instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_play( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
/**
* Pause media list
*
* \param p_mlp media list player instance
* \param p_e initialized exception instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_pause( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
/**
* Is media list playing?
*
* \param p_mlp media list player instance
* \param p_e initialized exception instance
* \return true for playing and false for not playing
*/
VLC_PUBLIC_API int
libvlc_media_list_player_is_playing( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
/**
* Get current libvlc_state of media list player
*
* \param p_mlp media list player instance
* \param p_e initialized exception instance
* \return libvlc_state_t for media list player
*/
VLC_PUBLIC_API libvlc_state_t
libvlc_media_list_player_get_state( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
/**
* Play media list item at position index
*
* \param p_mlp media list player instance
* \param i_index index in media list to play
* \param p_e initialized exception instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_play_item_at_index(
libvlc_media_list_player_t * p_mlp,
int i_index,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_player_play_item(
libvlc_media_list_player_t * p_mlp,
libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Stop playing media list
*
* \param p_mlp media list player instance
* \param p_e initialized exception instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_stop( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
/**
* Play next item from media list
*
* \param p_mlp media list player instance
* \param p_e initialized exception instance
*/
VLC_PUBLIC_API void
libvlc_media_list_player_next( libvlc_media_list_player_t * p_mlp,
libvlc_exception_t * p_e );
/* NOTE: shouldn't there also be a libvlc_media_list_player_prev() */
/** @} media_list_player */
# ifdef __cplusplus
}
# endif
#endif /* LIBVLC_MEDIA_LIST_PLAYER_H */
/*****************************************************************************
* libvlc_media_list.h: libvlc_media_list API
*****************************************************************************
* Copyright (C) 1998-2008 the VideoLAN team
* $Id$
*
* Authors: Pierre d'Herbemont
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef LIBVLC_MEDIA_LIST_VIEW_H
#define LIBVLC_MEDIA_LIST_VIEW_H 1
/**
* \file
* This file defines libvlc_media_list API
*/
# ifdef __cplusplus
extern "C" {
# endif
/*****************************************************************************
* Media List View
*****************************************************************************/
/** \defgroup libvlc_media_list_view libvlc_media_list_view
* \ingroup libvlc
* LibVLC Media List View, represent a media_list using a different layout
* @{ */
/**
* Retain reference to a media list view
*
* \param p_mlv a media list view created with libvlc_media_list_view_new()
*/
VLC_PUBLIC_API void
libvlc_media_list_view_retain( libvlc_media_list_view_t * p_mlv );
/**
* Release reference to a media list view. If the refcount reaches 0, then
* the object will be released.
*
* \param p_mlv a media list view created with libvlc_media_list_view_new()
*/
VLC_PUBLIC_API void
libvlc_media_list_view_release( libvlc_media_list_view_t * p_mlv );
/**
* Get libvlc_event_manager from this media list view instance.
* The p_event_manager is immutable, so you don't have to hold the lock
*
* \param p_mlv a media list view instance
* \return libvlc_event_manager
*/
VLC_PUBLIC_API libvlc_event_manager_t *
libvlc_media_list_view_event_manager( libvlc_media_list_view_t * p_mlv );
/**
* Get count on media list view items
*
* \param p_mlv a media list view instance
* \param p_e initialized exception object
* \return number of items in media list view
*/
VLC_PUBLIC_API int
libvlc_media_list_view_count( libvlc_media_list_view_t * p_mlv,
libvlc_exception_t * p_e );
/**
* List media instance in media list view at an index position
*
* \param p_mlv a media list view instance
* \param i_index index position in array where to insert
* \param p_e initialized exception object
* \return media instance at position i_pos and libvlc_media_retain() has been called to increase the refcount on this object.
*/
VLC_PUBLIC_API libvlc_media_t *
libvlc_media_list_view_item_at_index( libvlc_media_list_view_t * p_mlv,
int i_index,
libvlc_exception_t * p_e );
VLC_PUBLIC_API libvlc_media_list_view_t *
libvlc_media_list_view_children_at_index( libvlc_media_list_view_t * p_mlv,
int index,
libvlc_exception_t * p_e );
VLC_PUBLIC_API libvlc_media_list_view_t *
libvlc_media_list_view_children_for_item( libvlc_media_list_view_t * p_mlv,
libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Get index position of media instance in media list view.
* The function will return the first occurence.
*
* \param p_mlv a media list view instance
* \param p_md media instance
* \param p_e initialized exception object
* \return index position in array of p_md
*/
VLC_PUBLIC_API int
libvlc_media_list_view_index_of_item( libvlc_media_list_view_t * p_mlv,
libvlc_media_t * p_md,
libvlc_exception_t * p_e );
/**
* Insert media instance in media list view at index position
*
* \param p_mlv a media list view instance
* \param p_md media instance
* \param index position in array where to insert
* \param p_e initialized exception object
*/
VLC_PUBLIC_API void
libvlc_media_list_view_insert_at_index( libvlc_media_list_view_t * p_mlv,
libvlc_media_t * p_md,
int index,
libvlc_exception_t * p_e );
/**
* Remove media instance in media list view from index position
*
* \param p_mlv a media list view instance
* \param index position in array of media instance to remove
* \param p_e initialized exception object
*/
VLC_PUBLIC_API void
libvlc_media_list_view_remove_at_index( libvlc_media_list_view_t * p_mlv,
int index,
libvlc_exception_t * p_e );
VLC_PUBLIC_API void
libvlc_media_list_view_add_item( libvlc_media_list_view_t * p_mlv,
libvlc_media_t * p_md,
libvlc_exception_t * p_e );
VLC_PUBLIC_API libvlc_media_list_t *
libvlc_media_list_view_parent_media_list( libvlc_media_list_view_t * p_mlv,
libvlc_exception_t * p_e );
/** @} media_list_view */
# ifdef __cplusplus
}
# endif
#endif /* LIBVLC_MEDIA_LIST_VIEW_H */
/*****************************************************************************
* libvlc_media_player.h: libvlc_media_player external API
*****************************************************************************
* Copyright (C) 1998-2009 the VideoLAN team
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Jean-Paul Saman <jpsaman@videolan.org>
* Pierre d'Herbemont <pdherbemont@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/**
* \file
* This file defines libvlc_media_player external API
*/
#ifndef VLC_LIBVLC_MEDIA_PLAYER_H
#define VLC_LIBVLC_MEDIA_PLAYER_H 1
/*****************************************************************************
* Media Player
*****************************************************************************/
/** \defgroup libvlc_media_player libvlc_media_player
* \ingroup libvlc
* LibVLC Media Player, object that let you play a media
* in a custom drawable
* @{
*/
typedef struct libvlc_media_player_t libvlc_media_player_t;
/**
* Description for video, audio tracks and subtitles. It contains
* id, name (description string) and pointer to next record.
*/
typedef struct libvlc_track_description_t
{
int i_id;
char *psz_name;
struct libvlc_track_description_t *p_next;
} libvlc_track_description_t;
/**
* Description for audio output. It contains
* name, description and pointer to next record.
*/
typedef struct libvlc_audio_output_t
{
char *psz_name;
char *psz_description;
struct libvlc_audio_output_t *p_next;
} libvlc_audio_output_t;
/**
* Rectangle type for video geometry
*/
typedef struct libvlc_rectangle_t
{
int top, left;
int bottom, right;
} libvlc_rectangle_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
*/
VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new( libvlc_instance_t *, libvlc_exception_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
*/
VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new_from_media( libvlc_media_t *, libvlc_exception_t * );
/**
* Release a media_player after use
* Decrement the reference count of a media player object. If the
* reference count is 0, then libvlc_media_player_release() will
* release the media player object. If the media player object
* has been released, then it should not be used again.
*
* \param p_mi the Media Player to free
*/
VLC_PUBLIC_API void libvlc_media_player_release( libvlc_media_player_t * );
/**
* Retain a reference to a media player object. Use
* libvlc_media_player_release() to decrement reference count.
*
* \param p_mi media player object
*/
VLC_PUBLIC_API void libvlc_media_player_retain( libvlc_media_player_t * );
/**
* Set the media that will be used by the media_player. If any,
* previous md will be released.
*
* \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 * );
/**
* 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 * );
/**
* 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 * );
/**
* 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 * );
/**
* Play
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_media_player_play ( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Pause
*
* \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 * );
/**
* Stop
*
* \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 * );
/**
* Set the agl handler where the media player should render its video output.
*
* \param p_mi the Media Player
* \param drawable the agl 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 );
/**
* Get the agl handler previously set with libvlc_media_player_set_agl().
*
* \return the agl handler or 0 if none where set
*/
VLC_PUBLIC_API uint32_t libvlc_media_player_get_nsobject ( libvlc_media_player_t *p_mi );
/**
* Set the agl handler where the media player should render its video output.
*
* \param p_mi the Media Player
* \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 );
/**
* Get the agl handler previously set with libvlc_media_player_set_agl().
*
* \return the agl handler or 0 if none where set
*/
VLC_PUBLIC_API uint32_t libvlc_media_player_get_agl ( libvlc_media_player_t *p_mi );
/**
* Set an X Window System drawable where the media player should render its
* video output. If LibVLC was built without X11 output support, then this has
* no effects.
*
* The specified identifier must correspond to an existing Input/Output class
* X11 window. Pixmaps are <b>not</b> supported. The caller shall ensure that
* the X11 server is the same as the one the VLC instance has been configured
* with.
* If XVideo is <b>not</b> used, it is assumed that the drawable has the
* following properties in common with the default X11 screen: depth, scan line
* pad, black pixel. This is a bug.
*
* \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 );
/**
* Get the X Window System window identifier previously set with
* libvlc_media_player_set_xwindow(). Note that this will return the identifier
* even if VLC is not currently using it (for instance if it is playing an
* audio-only input).
*
* \return an X window ID, or 0 if none where set.
*/
VLC_PUBLIC_API uint32_t libvlc_media_player_get_xwindow ( libvlc_media_player_t *p_mi );
/**
* Set a Win32/Win64 API window handle (HWND) where the media player should
* render its video output. If LibVLC was built without Win32/Win64 API output
* support, then this has no effects.
*
* \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 );
/**
* Get the Windows API window handle (HWND) previously set with
* libvlc_media_player_set_hwnd(). The handle will be returned even if LibVLC
* is not currently outputting any video to it.
*
* \return a window handle or NULL if there are none.
*/
VLC_PUBLIC_API void *libvlc_media_player_get_hwnd ( libvlc_media_player_t *p_mi );
/** \bug This might go away ... to be replaced by a broader system */
/**
* 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).
*/
VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_length( libvlc_media_player_t *, libvlc_exception_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).
*/
VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_time( libvlc_media_player_t *, libvlc_exception_t *);
/**
* Set the movie time (in ms).
*
* \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 *);
/**
* Get movie position.
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return movie position
*/
VLC_PUBLIC_API float libvlc_media_player_get_position( libvlc_media_player_t *, libvlc_exception_t *);
/**
* Set movie position.
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return movie position
*/
VLC_PUBLIC_API void libvlc_media_player_set_position( libvlc_media_player_t *, float, libvlc_exception_t *);
/**
* Set movie chapter
*
* \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 *);
/**
* Get movie chapter
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return chapter number currently playing
*/
VLC_PUBLIC_API int libvlc_media_player_get_chapter( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get movie chapter count
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return number of chapters in movie
*/
VLC_PUBLIC_API int libvlc_media_player_get_chapter_count( libvlc_media_player_t *, libvlc_exception_t *);
VLC_PUBLIC_API int libvlc_media_player_will_play ( libvlc_media_player_t *, libvlc_exception_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
*/
VLC_PUBLIC_API int libvlc_media_player_get_chapter_count_for_title(
libvlc_media_player_t *, int, libvlc_exception_t *);
/**
* 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 *);
/**
* Get movie title
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return title number currently playing
*/
VLC_PUBLIC_API int libvlc_media_player_get_title( libvlc_media_player_t *, libvlc_exception_t *);
/**
* Get movie title count
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return title number count
*/
VLC_PUBLIC_API int libvlc_media_player_get_title_count( libvlc_media_player_t *, libvlc_exception_t *);
/**
* Set previous chapter
*
* \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 *);
/**
* Set next chapter
*
* \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 *);
/**
* Get movie play rate
*
* \param p_mi the Media Player
* \param p_e an initialized exception pointer
* \return movie play rate
*/
VLC_PUBLIC_API float libvlc_media_player_get_rate( libvlc_media_player_t *, libvlc_exception_t *);
/**
* Set movie play rate
*
* \param p_mi the Media Player
* \param movie play rate to set
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_media_player_set_rate( libvlc_media_player_t *, float, libvlc_exception_t *);
/**
* 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 *);
/**
* 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
*/
VLC_PUBLIC_API float libvlc_media_player_get_fps( libvlc_media_player_t *, libvlc_exception_t *);
/** end bug */
/**
* 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 *);
/**
* 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 );
/**
* 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 );
/**
* Release (free) libvlc_track_description_t
*
* \param p_track_description the structure to release
*/
VLC_PUBLIC_API void libvlc_track_description_release( libvlc_track_description_t *p_track_description );
/** \defgroup libvlc_video libvlc_video
* \ingroup libvlc_media_player
* LibVLC Video handling
* @{
*/
/**
* Toggle fullscreen status on video output.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_toggle_fullscreen( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Enable or disable fullscreen on a video output.
*
* \param p_mediaplayer the media player
* \param b_fullscreen boolean for fullscreen status
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_set_fullscreen( libvlc_media_player_t *, int, libvlc_exception_t * );
/**
* Get current fullscreen status.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the fullscreen status (boolean)
*/
VLC_PUBLIC_API int libvlc_get_fullscreen( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get current video height.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the video height
*/
VLC_PUBLIC_API int libvlc_video_get_height( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get current video width.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the video width
*/
VLC_PUBLIC_API int libvlc_video_get_width( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get the current video scaling factor.
* See also libvlc_video_set_scale().
*
* \param p_mediaplayer the media player
* \return the currently configured zoom factor, or 0. if the video is set
* to fit to the output window/drawable automatically.
*/
VLC_PUBLIC_API float libvlc_video_get_scale( libvlc_media_player_t *,
libvlc_exception_t *p_e );
/**
* Set the video scaling factor. That is the ratio of the number of pixels on
* screen to the number of pixels in the original decoded video in each
* dimension. Zero is a special value; it will adjust the video to the output
* window/drawable (in windowed mode) or the entire screen.
*
* Note that not all video outputs support scaling.
*
* \param p_mediaplayer the media player
* \param i_factor the scaling factor, or zero
*/
VLC_PUBLIC_API void libvlc_video_set_scale( libvlc_media_player_t *, float,
libvlc_exception_t *p_e );
/**
* Get current video aspect ratio.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the video aspect ratio
*/
VLC_PUBLIC_API char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Set new video aspect ratio.
*
* \param p_mediaplayer the media player
* \param psz_aspect new video aspect-ratio
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_video_set_aspect_ratio( libvlc_media_player_t *, char *, libvlc_exception_t * );
/**
* Get current video subtitle.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the video subtitle selected
*/
VLC_PUBLIC_API int libvlc_video_get_spu( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get the number of available video subtitles.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the number of available video subtitles
*/
VLC_PUBLIC_API int libvlc_video_get_spu_count( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get the description of available video subtitles.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return list containing description of available video subtitles
*/
VLC_PUBLIC_API libvlc_track_description_t *
libvlc_video_get_spu_description( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Set new video subtitle.
*
* \param p_mediaplayer the media player
* \param i_spu new video subtitle to select
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_video_set_spu( libvlc_media_player_t *, int , libvlc_exception_t * );
/**
* Set new video subtitle file.
*
* \param p_mediaplayer the media player
* \param psz_subtitle new video subtitle file
* \param p_e an initialized exception pointer
* \return the success status (boolean)
*/
VLC_PUBLIC_API int libvlc_video_set_subtitle_file( libvlc_media_player_t *, char *, libvlc_exception_t * );
/**
* Get the description of available titles.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return list containing description of available titles
*/
VLC_PUBLIC_API libvlc_track_description_t *
libvlc_video_get_title_description( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get the description of available chapters for specific title.
*
* \param p_mediaplayer the media player
* \param i_title selected title
* \param p_e an initialized exception pointer
* \return list containing description of available chapter for title i_title
*/
VLC_PUBLIC_API libvlc_track_description_t *
libvlc_video_get_chapter_description( libvlc_media_player_t *, int, libvlc_exception_t * );
/**
* Get current crop filter geometry.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
* \return the crop filter geometry
*/
VLC_PUBLIC_API char *libvlc_video_get_crop_geometry( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Set new crop filter geometry.
*
* \param p_mediaplayer the media player
* \param psz_geometry new crop filter geometry
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_video_set_crop_geometry( libvlc_media_player_t *, char *, libvlc_exception_t * );
/**
* Toggle teletext transparent status on video output.
*
* \param p_mediaplayer the media player
* \param p_e an initialized exception pointer
*/
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 * );
/**
* 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
*/
VLC_PUBLIC_API libvlc_track_description_t *
libvlc_video_get_track_description( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get current video track.
*
* \param p_mi media player
* \param p_e an initialized exception pointer
* \return the video track (int)
*/
VLC_PUBLIC_API int libvlc_video_get_track( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Set video track.
*
* \param p_mi media player
* \param i_track the track (int)
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_video_set_track( libvlc_media_player_t *, int, libvlc_exception_t * );
/**
* Take a snapshot of the current video window.
*
* If i_width AND i_height is 0, original size is used.
* If i_width XOR i_height is 0, original aspect-ratio is preserved.
*
* \param p_mi media player instance
* \param psz_filepath the path where to save the screenshot to
* \param i_width the snapshot's width
* \param i_height the snapshot's height
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_video_take_snapshot( libvlc_media_player_t *, const char *,unsigned int, unsigned int, libvlc_exception_t * );
/** @} video */
/** \defgroup libvlc_audio libvlc_audio
* \ingroup libvlc_media_player
* LibVLC Audio handling
* @{
*/
/**
* Audio device types
*/
typedef enum libvlc_audio_output_device_types_t {
libvlc_AudioOutputDevice_Error = -1,
libvlc_AudioOutputDevice_Mono = 1,
libvlc_AudioOutputDevice_Stereo = 2,
libvlc_AudioOutputDevice_2F2R = 4,
libvlc_AudioOutputDevice_3F2R = 5,
libvlc_AudioOutputDevice_5_1 = 6,
libvlc_AudioOutputDevice_6_1 = 7,
libvlc_AudioOutputDevice_7_1 = 8,
libvlc_AudioOutputDevice_SPDIF = 10
} libvlc_audio_output_device_types_t;
/**
* Audio channels
*/
typedef enum libvlc_audio_output_channel_t {
libvlc_AudioChannel_Error = -1,
libvlc_AudioChannel_Stereo = 1,
libvlc_AudioChannel_RStereo = 2,
libvlc_AudioChannel_Left = 3,
libvlc_AudioChannel_Right = 4,
libvlc_AudioChannel_Dolbys = 5
} 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
*/
VLC_PUBLIC_API libvlc_audio_output_t *
libvlc_audio_output_list_get( libvlc_instance_t *,
libvlc_exception_t * );
/**
* Free the list of available audio outputs
*
* \param p_list list with audio outputs for release
*/
VLC_PUBLIC_API void libvlc_audio_output_list_release( libvlc_audio_output_t * );
/**
* Set the audio output.
* Change will be applied after stop and play.
*
* \param p_instance libvlc instance
* \param psz_name name of audio output,
* use psz_name of \see libvlc_audio_output_t
* \return true if function succeded
*/
VLC_PUBLIC_API int libvlc_audio_output_set( libvlc_instance_t *,
const char * );
/**
* Get count of devices for audio output, these devices are hardware oriented
* like analor or digital output of sound card
*
* \param p_instance libvlc instance
* \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
* \return number of devices
*/
VLC_PUBLIC_API int libvlc_audio_output_device_count( libvlc_instance_t *,
const char * );
/**
* Get long name of device, if not available short name given
*
* \param p_instance libvlc instance
* \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
* \param i_device device index
* \return long name of device
*/
VLC_PUBLIC_API char * libvlc_audio_output_device_longname( libvlc_instance_t *,
const char *,
int );
/**
* Get id name of device
*
* \param p_instance libvlc instance
* \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
* \param i_device device index
* \return id name of device, use for setting device, need to be free after use
*/
VLC_PUBLIC_API char * libvlc_audio_output_device_id( libvlc_instance_t *,
const char *,
int );
/**
* Set device for using
*
* \param p_instance libvlc instance
* \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
* \param psz_device_id device
*/
VLC_PUBLIC_API void libvlc_audio_output_device_set( libvlc_instance_t *,
const char *,
const char * );
/**
* Get current audio device type. Device type describes something like
* character of output sound - stereo sound, 2.1, 5.1 etc
*
* \param p_instance vlc instance
* \param p_e an initialized exception pointer
* \return the audio devices type \see libvlc_audio_output_device_types_t
*/
VLC_PUBLIC_API int libvlc_audio_output_get_device_type(
libvlc_instance_t *, libvlc_exception_t * );
/**
* Set current audio device type.
*
* \param p_instance vlc instance
* \param device_type the audio device type,
according to \see libvlc_audio_output_device_types_t
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_audio_output_set_device_type( libvlc_instance_t *,
int,
libvlc_exception_t * );
/**
* Toggle mute status.
*
* \param p_instance libvlc instance
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_audio_toggle_mute( libvlc_instance_t *, libvlc_exception_t * );
/**
* Get current mute status.
*
* \param p_instance libvlc instance
* \param p_e an initialized exception pointer
* \return the mute status (boolean)
*/
VLC_PUBLIC_API int libvlc_audio_get_mute( libvlc_instance_t *, libvlc_exception_t * );
/**
* Set mute status.
*
* \param p_instance libvlc instance
* \param status If status is true then mute, otherwise unmute
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_audio_set_mute( libvlc_instance_t *, int , libvlc_exception_t * );
/**
* Get current audio level.
*
* \param p_instance libvlc instance
* \param p_e an initialized exception pointer
* \return the audio level (int)
*/
VLC_PUBLIC_API int libvlc_audio_get_volume( libvlc_instance_t *, libvlc_exception_t * );
/**
* Set current audio level.
*
* \param p_instance libvlc instance
* \param i_volume the volume (int)
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_audio_set_volume( libvlc_instance_t *, int, libvlc_exception_t *);
/**
* Get number of available audio tracks.
*
* \param p_mi media player
* \param p_e an initialized exception
* \return the number of available audio tracks (int)
*/
VLC_PUBLIC_API int libvlc_audio_get_track_count( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get the description of available audio tracks.
*
* \param p_mi media player
* \param p_e an initialized exception
* \return list with description of available audio tracks
*/
VLC_PUBLIC_API libvlc_track_description_t *
libvlc_audio_get_track_description( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Get current audio track.
*
* \param p_mi media player
* \param p_e an initialized exception pointer
* \return the audio track (int)
*/
VLC_PUBLIC_API int libvlc_audio_get_track( libvlc_media_player_t *, libvlc_exception_t * );
/**
* Set current audio track.
*
* \param p_mi media player
* \param i_track the track (int)
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_audio_set_track( libvlc_media_player_t *, int, libvlc_exception_t * );
/**
* Get current audio channel.
*
* \param p_instance vlc instance
* \param p_e an initialized exception pointer
* \return the audio channel \see libvlc_audio_output_channel_t
*/
VLC_PUBLIC_API int
libvlc_audio_get_channel( libvlc_instance_t *, libvlc_exception_t * );
/**
* Set current audio channel.
*
* \param p_instance vlc instance
* \param channel the audio channel, \see libvlc_audio_output_channel_t
* \param p_e an initialized exception pointer
*/
VLC_PUBLIC_API void libvlc_audio_set_channel( libvlc_instance_t *,
int,
libvlc_exception_t * );
/** @} audio */
/** @} media_player */
#endif /* VLC_LIBVLC_MEDIA_PLAYER_H */
......@@ -79,116 +79,10 @@ typedef int64_t libvlc_time_t;
* @{
*/
/* Meta Handling */
/** defgroup libvlc_meta libvlc_meta
* \ingroup libvlc_media
* LibVLC Media Meta
* @{
*/
typedef enum libvlc_meta_t {
libvlc_meta_Title,
libvlc_meta_Artist,
libvlc_meta_Genre,
libvlc_meta_Copyright,
libvlc_meta_Album,
libvlc_meta_TrackNumber,
libvlc_meta_Description,
libvlc_meta_Rating,
libvlc_meta_Date,
libvlc_meta_Setting,
libvlc_meta_URL,
libvlc_meta_Language,
libvlc_meta_NowPlaying,
libvlc_meta_Publisher,
libvlc_meta_EncodedBy,
libvlc_meta_ArtworkURL,
libvlc_meta_TrackID,
/* Add new meta types HERE */
} libvlc_meta_t;
/**@} */
typedef struct libvlc_media_t libvlc_media_t;
/**@} */
/*****************************************************************************
* Media Instance
*****************************************************************************/
/** \defgroup libvlc_media_player libvlc_media_player
* \ingroup libvlc
* LibVLC Media Instance handling
* @{
*/
typedef struct libvlc_media_player_t libvlc_media_player_t;
/**
* Note the order of libvlc_state_t enum must match exactly the order of
* @see mediacontrol_PlayerStatus, @see input_state_e enums,
* and VideoLAN.LibVLC.State (at bindings/cil/src/media.cs).
*
* Expected states by web plugins are:
* IDLE/CLOSE=0, OPENING=1, BUFFERING=2, PLAYING=3, PAUSED=4,
* STOPPING=5, ENDED=6, ERROR=7
*/
typedef enum libvlc_state_t
{
libvlc_NothingSpecial=0,
libvlc_Opening,
libvlc_Buffering,
libvlc_Playing,
libvlc_Paused,
libvlc_Stopped,
libvlc_Ended,
libvlc_Error
} libvlc_state_t;
/**@} */
/*****************************************************************************
* Media List
*****************************************************************************/
/** \defgroup libvlc_media_list libvlc_media_list
* \ingroup libvlc
* LibVLC Media List handling
* @{
*/
typedef struct libvlc_media_list_t libvlc_media_list_t;
typedef struct libvlc_media_list_view_t libvlc_media_list_view_t;
/*****************************************************************************
* Media List Player
*****************************************************************************/
/** \defgroup libvlc_media_list_player libvlc_media_list_player
* \ingroup libvlc_media_list
* LibVLC Media List Player handling
* @{
*/
typedef struct libvlc_media_list_player_t libvlc_media_list_player_t;
/**@} libvlc_media_list_player */
/**@} libvlc_media_list */
/*****************************************************************************
* Media Library
*****************************************************************************/
/** \defgroup libvlc_media_library libvlc_media_library
* \ingroup libvlc
* LibVLC Media Library
* @{
*/
typedef struct libvlc_media_library_t libvlc_media_library_t;
/**@} */
/*****************************************************************************
* Playlist
*****************************************************************************/
......@@ -209,88 +103,6 @@ typedef struct libvlc_playlist_item_t
/**@} */
/*****************************************************************************
* Media Player
*****************************************************************************/
/** \defgroup libvlc_media_player libvlc_media_player
* \ingroup libvlc
* LibVLC Media Player, object that let you play a media
* in a drawable
* @{
*/
/**
* Description for video, audio tracks and subtitles. It contains
* id, name (description string) and pointer to next record.
*/
typedef struct libvlc_track_description_t
{
int i_id;
char *psz_name;
struct libvlc_track_description_t *p_next;
} libvlc_track_description_t;
/**@} */
/*****************************************************************************
* Audio
*****************************************************************************/
/** \defgroup libvlc_audio libvlc_audio
* \ingroup libvlc_media_player
* LibVLC Audio handling
* @{
*/
/**
* Description for audio output. It contains
* name, description and pointer to next record.
*/
typedef struct libvlc_audio_output_t
{
char *psz_name;
char *psz_description;
struct libvlc_audio_output_t *p_next;
} libvlc_audio_output_t;
/**@} */
/*****************************************************************************
* Video
*****************************************************************************/
/** \defgroup libvlc_video libvlc_video
* \ingroup libvlc_media_player
* LibVLC Video handling
* @{
*/
/**
* Rectangle type for video geometry
*/
typedef struct libvlc_rectangle_t
{
int top, left;
int bottom, right;
}
libvlc_rectangle_t;
/**@} */
/*****************************************************************************
* Services/Media Discovery
*****************************************************************************/
/** \defgroup libvlc_media_discoverer libvlc_media_discoverer
* \ingroup libvlc
* LibVLC Media Discoverer
* @{
*/
typedef struct libvlc_media_discoverer_t libvlc_media_discoverer_t;
/**@} */
/*****************************************************************************
* Message log handling
......
......@@ -38,9 +38,15 @@ extern "C" {
# endif
#include <vlc/libvlc_structures.h>
#include <vlc/libvlc_events.h>
#include <vlc/libvlc.h>
#include <vlc/libvlc_media.h>
#include <vlc/libvlc_media_player.h>
#include <vlc/libvlc_media_list.h>
#include <vlc/libvlc_media_list_view.h>
#include <vlc/libvlc_media_list_player.h>
#include <vlc/libvlc_media_library.h>
#include <vlc/libvlc_media_discoverer.h>
#include <vlc/libvlc_events.h>
#include <vlc/libvlc_vlm.h>
#include <vlc/deprecated.h>
......
......@@ -28,9 +28,16 @@ pkginclude_HEADERS = \
../include/vlc/vlc.h \
../include/vlc/deprecated.h \
../include/vlc/libvlc.h \
../include/vlc/libvlc_structures.h \
../include/vlc/libvlc_media_list.h \
../include/vlc/libvlc_events.h \
../include/vlc/libvlc_media_list.h \
../include/vlc/libvlc_media.h \
../include/vlc/libvlc_media_discoverer.h \
../include/vlc/libvlc_media_library.h \
../include/vlc/libvlc_media_list.h \
../include/vlc/libvlc_media_list_player.h \
../include/vlc/libvlc_media_list_view.h \
../include/vlc/libvlc_media_player.h \
../include/vlc/libvlc_structures.h \
../include/vlc/libvlc_vlm.h \
../include/vlc/mediacontrol.h \
../include/vlc/mediacontrol_structures.h \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment