X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc%2Flibvlc_structures.h;h=e6b8f1942e9d87f5b30360eef960ffc5270d4778;hb=103b8ce89f28046abe275f1123aea4ed630f401a;hp=145f190ad61730b48a899ce3f4aa059cc71ca47b;hpb=be07ad9457b6756f96629b7ad1d3a267ebf2c8d9;p=vlc diff --git a/include/vlc/libvlc_structures.h b/include/vlc/libvlc_structures.h index 145f190ad6..e6b8f1942e 100644 --- a/include/vlc/libvlc_structures.h +++ b/include/vlc/libvlc_structures.h @@ -43,7 +43,7 @@ typedef struct libvlc_instance_t libvlc_instance_t; * @{ */ -typedef struct +typedef struct libvlc_exception_t { int b_raised; int i_code; @@ -52,6 +52,129 @@ typedef struct /**@} */ +/***************************************************************************** + * Tag + *****************************************************************************/ +/** defgroup libvlc_tag Tag + * \ingroup libvlc + * LibVLC Tag support in media descriptor + * @{ + */ + +typedef struct libvlc_tag_query_t libvlc_tag_query_t; +typedef char * libvlc_tag_t; + +/**@} */ + +/***************************************************************************** + * Media Descriptor + *****************************************************************************/ +/** defgroup libvlc_media_descriptor MediaDescriptor + * \ingroup libvlc + * LibVLC Media Descriptor handling + * @{ + */ + +/* Meta Handling */ +/** defgroup libvlc_meta Meta + * \ingroup libvlc_media_descriptor + * 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 +} libvlc_meta_t; + +/**@} */ + +typedef struct libvlc_media_descriptor_t libvlc_media_descriptor_t; + +/**@} */ + + +/***************************************************************************** + * Media Instance + *****************************************************************************/ +/** defgroup libvlc_media_instance MediaInstance + * \ingroup libvlc + * LibVLC Media Instance handling + * @{ + */ + +typedef struct libvlc_media_instance_t libvlc_media_instance_t; + +/**@} */ + +/***************************************************************************** + * Media List + *****************************************************************************/ +/** defgroup libvlc_media_list MediaList + * \ingroup libvlc + * LibVLC Media List handling + * @{ + */ + +typedef struct libvlc_media_list_t libvlc_media_list_t; + +/**@} */ + +/***************************************************************************** + * Dynamic Media List + *****************************************************************************/ +/** defgroup libvlc_media_list MediaList + * \ingroup libvlc + * LibVLC Dynamic Media list: Media list with content synchronized with + * an other playlist + * @{ + */ + +typedef struct libvlc_dynamic_media_list_t libvlc_dynamic_media_list_t; + +/**@} */ + +/***************************************************************************** + * Media List Player + *****************************************************************************/ +/** defgroup libvlc_media_list_player MediaListPlayer + * \ingroup libvlc + * LibVLC Media List Player handling + * @{ + */ + +typedef struct libvlc_media_list_player_t libvlc_media_list_player_t; + +/**@} */ + +/***************************************************************************** + * Media Library + *****************************************************************************/ +/** defgroup libvlc_media_library Media Library + * \ingroup libvlc + * LibVLC Media Library + * @{ + */ + +typedef struct libvlc_media_library_t libvlc_media_library_t; + +/**@} */ + /***************************************************************************** * Playlist *****************************************************************************/ @@ -61,7 +184,8 @@ typedef struct * @{ */ -typedef struct { +typedef struct libvlc_playlist_item_t +{ int i_id; char * psz_uri; char * psz_name; @@ -91,7 +215,7 @@ typedef int libvlc_drawable_t; /** * Rectangle type for video geometry */ -typedef struct +typedef struct libvlc_rectangle_t { int top, left; int bottom, right; @@ -101,6 +225,19 @@ libvlc_rectangle_t; /**@} */ +/***************************************************************************** + * Services/Media Discovery + *****************************************************************************/ +/** defgroup libvlc_media_discoverer Media Discoverer + * \ingroup libvlc + * LibVLC Media Discoverer + * @{ + */ + +typedef struct libvlc_media_discoverer_t libvlc_media_discoverer_t; + +/**@} */ + /***************************************************************************** * Message log handling *****************************************************************************/ @@ -140,45 +277,84 @@ typedef struct libvlc_log_message_t */ /** - * Available events: - * - VOLUME_CHANGED - * - INPUT_POSITION_CHANGED + * Available events: (XXX: being reworked) + * - libvlc_MediaInstanceReachedEnd */ -typedef enum { - VOLUME_CHANGED, - INPUT_POSITION_CHANGED, +typedef enum libvlc_event_type_t { + libvlc_MediaDescriptorMetaChanged, + libvlc_MediaDescriptorSubItemAdded, + + libvlc_MediaInstancePlayed, + libvlc_MediaInstancePaused, + libvlc_MediaInstanceReachedEnd, + libvlc_MediaInstancePositionChanged, + + libvlc_MediaListItemAdded, + libvlc_MediaListItemDeleted, + + libvlc_MediaListPlayerPlayed, + libvlc_MediaListPlayerNextItemSet, + libvlc_MediaListPlayerStopped, + } libvlc_event_type_t; -typedef enum { - INT_EVENT, - BOOLEAN_EVENT, - FLOAT_EVENT, - STRING_EVENT, - ADDRESS_EVENT, - OBJECT_EVENT, - LIST_EVENT, - TIME_EVENT, - VAR_EVENT, -} libvlc_event_value_type_t; - -typedef struct +/** + * An Event + * \param type the even type + * \param p_obj the sender object + * \param u Event dependent content + */ + +typedef struct libvlc_event_t { libvlc_event_type_t type; - libvlc_event_value_type_t value_type; - vlc_value_t old_value; - vlc_value_t new_value; - char reserved[8]; /* For future use */ + void * p_obj; + union event_type_specific + { + /* media descriptor */ + struct + { + libvlc_meta_t meta_type; + } media_descriptor_meta_changed; + struct + { + libvlc_media_descriptor_t * new_child; + } media_descriptor_subitem_added; + + /* media instance */ + struct + { + long int new_position; + } media_instance_position_changed; + + /* media list */ + struct + { + libvlc_media_descriptor_t * item; + int index; + } media_list_item_added; + struct + { + libvlc_media_descriptor_t * item; + int index; + } media_list_item_deleted; + } 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_instance the libvlc instance * \param p_event the event triggering the callback - * \param p_user_data user provided data */ -typedef void ( *libvlc_callback_t )( struct libvlc_instance_t *, libvlc_event_t *, void * ); +typedef void ( *libvlc_callback_t )( const libvlc_event_t *, void * ); /**@} */