X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc%2Flibvlc.h;h=8278c2da86f5cb7605894c0a77b2e8c591b40f77;hb=c77ca8993953545df0afd6cfbe06a50cdf76f9de;hp=fd5704056ae56444ed8981e7fd28e308bf1e6ec3;hpb=a901551063376ccf6dce57fdf39d28913bd3fd0f;p=vlc diff --git a/include/vlc/libvlc.h b/include/vlc/libvlc.h index fd5704056a..8278c2da86 100644 --- a/include/vlc/libvlc.h +++ b/include/vlc/libvlc.h @@ -102,7 +102,7 @@ libvlc_exception_get_message( const libvlc_exception_t *p_exception ); */ /** - * Create an initialized libvlc instance + * Create an initialized libvlc instance. * \param argc the number of arguments * \param argv command-line-type arguments * \param exception an initialized exception pointer @@ -119,10 +119,17 @@ libvlc_new( int , const char *const *, libvlc_exception_t *); VLC_PUBLIC_API int libvlc_get_vlc_id( libvlc_instance_t *p_instance ); /** - * Destroy a libvlc instance. + * Decrements the reference count of a libvlc instance, and destroys it + * if it reaches zero. * \param p_instance the instance to destroy */ -VLC_PUBLIC_API void libvlc_destroy( libvlc_instance_t *, libvlc_exception_t * ); +VLC_PUBLIC_API void libvlc_release( libvlc_instance_t *, libvlc_exception_t * ); + +/** + * Increments the reference count of a libvlc instance. + * The reference count is initially one when libvlc_new() returns. + */ +VLC_PUBLIC_API void libvlc_retain( libvlc_instance_t * ); /** @}*/ @@ -145,6 +152,31 @@ VLC_PUBLIC_API libvlc_media_descriptor_t * libvlc_media_descriptor_new( const char * psz_mrl, libvlc_exception_t *p_e ); +/** + * Create a media descriptor as an empty node with the passed name. + * \param p_instance the instance + * \param psz_name the name of the node + */ +VLC_PUBLIC_API libvlc_media_descriptor_t * libvlc_media_descriptor_new_as_node( + libvlc_instance_t *p_instance, + const char * psz_name, + libvlc_exception_t *p_e ); + +/** + * Add an option to the media descriptor, + * This option will be used to determine how the media_instance will + * read the media_descriptor. This allow to use VLC advanced + * reading/streaming options in a per-media basis. + * + * The options are detailled in vlc --long-help, for instance "--sout-all" + * \param p_instance the instance + * \param psz_mrl the mrl to read + */ +VLC_PUBLIC_API void libvlc_media_descriptor_add_option( + libvlc_media_descriptor_t * p_md, + const char * ppsz_options, + libvlc_exception_t * p_e ); + VLC_PUBLIC_API void libvlc_media_descriptor_retain( libvlc_media_descriptor_t *p_meta_desc ); @@ -154,6 +186,8 @@ VLC_PUBLIC_API void libvlc_media_descriptor_release( VLC_PUBLIC_API char * libvlc_media_descriptor_get_mrl( libvlc_media_descriptor_t * p_md, libvlc_exception_t * p_e ); +VLC_PUBLIC_API libvlc_media_descriptor_t * libvlc_media_descriptor_duplicate( libvlc_media_descriptor_t * ); + /** * Read the meta of the media descriptor. * \param p_meta_desc the media descriptor to read @@ -164,6 +198,10 @@ VLC_PUBLIC_API char * libvlc_media_descriptor_get_meta( libvlc_meta_t e_meta, libvlc_exception_t *p_e ); +VLC_PUBLIC_API libvlc_state_t libvlc_media_descriptor_get_state( + libvlc_media_descriptor_t *p_meta_desc, + libvlc_exception_t *p_e ); + /* Tags */ VLC_PUBLIC_API void libvlc_media_descriptor_add_tag( libvlc_media_descriptor_t *p_md, const char * key, @@ -194,7 +232,7 @@ VLC_PUBLIC_API libvlc_event_manager_t * libvlc_media_descriptor_event_manager( libvlc_media_descriptor_t * p_md, libvlc_exception_t * p_e ); -VLC_PUBLIC_API vlc_int64_t +VLC_PUBLIC_API libvlc_time_t libvlc_media_descriptor_get_duration( libvlc_media_descriptor_t * p_md, libvlc_exception_t * p_e ); @@ -338,7 +376,7 @@ VLC_PUBLIC_API int libvlc_playlist_add_extended( libvlc_instance_t *, const char VLC_PUBLIC_API int libvlc_playlist_delete_item( libvlc_instance_t *, int, libvlc_exception_t * ); -/* Get the input that is currently being played by the playlist +/** Get the input that is currently being played by the playlist * \param p_instance the instance to use * \param p_exception an initialized excecption * \return an input object @@ -346,6 +384,14 @@ VLC_PUBLIC_API int libvlc_playlist_delete_item( libvlc_instance_t *, int, VLC_PUBLIC_API libvlc_media_instance_t * libvlc_playlist_get_media_instance( libvlc_instance_t *, libvlc_exception_t * ); +VLC_PUBLIC_API vlc_bool_t libvlc_media_instance_is_seekable( + libvlc_media_instance_t *p_mi, + libvlc_exception_t *p_e ); + +VLC_PUBLIC_API vlc_bool_t libvlc_media_instance_can_pause( + libvlc_media_instance_t *p_mi, + libvlc_exception_t *p_e ); + /** @}*/ /***************************************************************************** @@ -399,17 +445,22 @@ VLC_PUBLIC_API void libvlc_media_instance_pause ( libvlc_media_instance_t *, lib VLC_PUBLIC_API void libvlc_media_instance_stop ( libvlc_media_instance_t *, libvlc_exception_t * ); VLC_PUBLIC_API void libvlc_media_instance_set_drawable ( libvlc_media_instance_t *, libvlc_drawable_t, libvlc_exception_t * ); - -/// \bug This might go away ... to be replaced by a broader system -VLC_PUBLIC_API vlc_int64_t libvlc_media_instance_get_length ( libvlc_media_instance_t *, libvlc_exception_t *); -VLC_PUBLIC_API vlc_int64_t libvlc_media_instance_get_time ( libvlc_media_instance_t *, libvlc_exception_t *); -VLC_PUBLIC_API void libvlc_media_instance_set_time ( libvlc_media_instance_t *, vlc_int64_t, libvlc_exception_t *); -VLC_PUBLIC_API float libvlc_media_instance_get_position ( libvlc_media_instance_t *, libvlc_exception_t *); -VLC_PUBLIC_API void libvlc_media_instance_set_position ( libvlc_media_instance_t *, float, libvlc_exception_t *); -VLC_PUBLIC_API vlc_bool_t libvlc_media_instance_will_play ( libvlc_media_instance_t *, libvlc_exception_t *); -VLC_PUBLIC_API float libvlc_media_instance_get_rate ( libvlc_media_instance_t *, libvlc_exception_t *); -VLC_PUBLIC_API void libvlc_media_instance_set_rate ( libvlc_media_instance_t *, float, libvlc_exception_t *); -VLC_PUBLIC_API libvlc_state_t libvlc_media_instance_get_state ( libvlc_media_instance_t *, libvlc_exception_t *); +VLC_PUBLIC_API libvlc_drawable_t + libvlc_media_instance_get_drawable ( libvlc_media_instance_t *, libvlc_exception_t * ); + +/** \bug This might go away ... to be replaced by a broader system */ +VLC_PUBLIC_API libvlc_time_t libvlc_media_instance_get_length ( libvlc_media_instance_t *, libvlc_exception_t *); +VLC_PUBLIC_API libvlc_time_t libvlc_media_instance_get_time ( libvlc_media_instance_t *, libvlc_exception_t *); +VLC_PUBLIC_API void libvlc_media_instance_set_time ( libvlc_media_instance_t *, libvlc_time_t, libvlc_exception_t *); +VLC_PUBLIC_API float libvlc_media_instance_get_position ( libvlc_media_instance_t *, libvlc_exception_t *); +VLC_PUBLIC_API void libvlc_media_instance_set_position ( libvlc_media_instance_t *, float, libvlc_exception_t *); +VLC_PUBLIC_API void libvlc_media_instance_set_chapter ( libvlc_media_instance_t *, int, libvlc_exception_t *); +VLC_PUBLIC_API int libvlc_media_instance_get_chapter (libvlc_media_instance_t *, libvlc_exception_t *); +VLC_PUBLIC_API int libvlc_media_instance_get_chapter_count( libvlc_media_instance_t *, libvlc_exception_t *); +VLC_PUBLIC_API vlc_bool_t libvlc_media_instance_will_play ( libvlc_media_instance_t *, libvlc_exception_t *); +VLC_PUBLIC_API float libvlc_media_instance_get_rate ( libvlc_media_instance_t *, libvlc_exception_t *); +VLC_PUBLIC_API void libvlc_media_instance_set_rate ( libvlc_media_instance_t *, float, libvlc_exception_t *); +VLC_PUBLIC_API libvlc_state_t libvlc_media_instance_get_state ( libvlc_media_instance_t *, libvlc_exception_t *); /** * Does this input have a video output ? @@ -507,18 +558,30 @@ VLC_PUBLIC_API int libvlc_media_descriptor_t *, libvlc_exception_t * ); +/* This indicates if this media list is read-only from a user point of view */ +VLC_PUBLIC_API vlc_bool_t + libvlc_media_list_is_readonly( libvlc_media_list_t * p_mlist ); + VLC_PUBLIC_API void libvlc_media_list_lock( libvlc_media_list_t * ); VLC_PUBLIC_API void libvlc_media_list_unlock( libvlc_media_list_t * ); -VLC_PUBLIC_API libvlc_media_list_t * - libvlc_media_list_flat_media_list( libvlc_media_list_t *, - libvlc_exception_t * ); +VLC_PUBLIC_API libvlc_media_list_view_t * + libvlc_media_list_flat_view( libvlc_media_list_t *, + libvlc_exception_t * ); + +VLC_PUBLIC_API libvlc_media_list_view_t * + libvlc_media_list_hierarchical_view( libvlc_media_list_t *, + libvlc_exception_t * ); + +VLC_PUBLIC_API libvlc_media_list_view_t * + libvlc_media_list_hierarchical_node_view( libvlc_media_list_t *, + libvlc_exception_t * ); VLC_PUBLIC_API libvlc_event_manager_t * libvlc_media_list_event_manager( libvlc_media_list_t *, - libvlc_exception_t * ); + libvlc_exception_t * ); /** @} */ @@ -536,6 +599,9 @@ VLC_PUBLIC_API void VLC_PUBLIC_API void libvlc_media_list_view_release( libvlc_media_list_view_t * p_mlv ); +VLC_PUBLIC_API libvlc_event_manager_t * + libvlc_media_list_view_event_manager( libvlc_media_list_view_t * p_mlv ); + VLC_PUBLIC_API int libvlc_media_list_view_count( libvlc_media_list_view_t * p_mlv, libvlc_exception_t * p_e ); @@ -545,6 +611,12 @@ VLC_PUBLIC_API libvlc_media_descriptor_t * int 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 int libvlc_media_list_view_index_of_item( libvlc_media_list_view_t * p_mlv, libvlc_media_descriptor_t * p_md, @@ -566,6 +638,10 @@ VLC_PUBLIC_API void libvlc_media_descriptor_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 ); + /** @} */ /***************************************************************************** @@ -659,7 +735,7 @@ VLC_PUBLIC_API void libvlc_media_list_player_pause( libvlc_media_list_player_t * p_mlp, libvlc_exception_t * p_e ); -VLC_PUBLIC_API int +VLC_PUBLIC_API vlc_bool_t libvlc_media_list_player_is_playing( libvlc_media_list_player_t * p_mlp, libvlc_exception_t * p_e ); @@ -781,6 +857,13 @@ VLC_PUBLIC_API char *libvlc_video_get_crop_geometry( libvlc_media_instance_t *, */ VLC_PUBLIC_API void libvlc_video_set_crop_geometry( libvlc_media_instance_t *, char *, libvlc_exception_t * ); +/** + * Toggle teletext transparent status on video output + * \param p_input the input + * \param p_exception an initialized exception + */ +VLC_PUBLIC_API void libvlc_toggle_teletext( libvlc_media_instance_t *, libvlc_exception_t * ); + /** * Get current teletext page requested. * \param p_input the input @@ -799,11 +882,15 @@ VLC_PUBLIC_API void libvlc_video_set_teletext( libvlc_media_instance_t *, int, l /** * 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_input the input * \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_exception an initialized exception */ -VLC_PUBLIC_API void libvlc_video_take_snapshot( libvlc_media_instance_t *, char *, libvlc_exception_t * ); +VLC_PUBLIC_API void libvlc_video_take_snapshot( libvlc_media_instance_t *, char *,unsigned int, unsigned int, libvlc_exception_t * ); VLC_PUBLIC_API int libvlc_video_destroy( libvlc_media_instance_t *, libvlc_exception_t *); @@ -921,6 +1008,14 @@ VLC_PUBLIC_API int libvlc_audio_get_volume( libvlc_instance_t *, libvlc_exceptio */ 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 instance + * \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_instance_t *, libvlc_exception_t * ); + /** + * Get current audio track + * \param p_input input instance @@ -973,6 +1068,12 @@ VLC_PUBLIC_API char * libvlc_media_discoverer_localized_name( libvlc_media_disco VLC_PUBLIC_API libvlc_media_list_t * libvlc_media_discoverer_media_list( libvlc_media_discoverer_t * p_mdis ); +VLC_PUBLIC_API libvlc_event_manager_t * + libvlc_media_discoverer_event_manager( libvlc_media_discoverer_t * p_mdis ); + +VLC_PUBLIC_API vlc_bool_t + libvlc_media_discoverer_is_running( libvlc_media_discoverer_t * p_mdis ); + /**@} */ /***************************************************************************** @@ -1162,7 +1263,7 @@ VLC_PUBLIC_API void libvlc_set_log_verbosity( libvlc_instance_t *p_instance, uns * \param p_instance libvlc instance * \param exception an initialized exception pointer */ -VLC_PUBLIC_API libvlc_log_t *libvlc_log_open( const libvlc_instance_t *, libvlc_exception_t *); +VLC_PUBLIC_API libvlc_log_t *libvlc_log_open( libvlc_instance_t *, libvlc_exception_t *); /** * Close an instance of VLC message log @@ -1262,7 +1363,7 @@ VLC_PUBLIC_API void libvlc_event_detach( libvlc_event_manager_t *p_event_manager * Get an event type name * \param i_event_type the desired event */ -#define libvlc_event_type_name(a) #a +VLC_PUBLIC_API const char * libvlc_event_type_name( libvlc_event_type_t event_type ); /** @} */