* @{
*/
-typedef struct
+typedef struct libvlc_exception_t
{
int b_raised;
int i_code;
/**@} */
+/*****************************************************************************
+ * Tag Query
+ *****************************************************************************/
+/** defgroup libvlc_tag_query Tag Query
+ * \ingroup libvlc
+ * LibVLC Tag Query support in media descriptor
+ * @{
+ */
+
+typedef struct libvlc_tag_query_t libvlc_tag_query_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;
+
+/**@} */
+
+/*****************************************************************************
+ * 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;
+
+/**@} */
+
/*****************************************************************************
* Playlist
*****************************************************************************/
* @{
*/
-typedef struct {
+typedef struct libvlc_playlist_item_t
+{
int i_id;
char * psz_uri;
char * psz_name;
/**
* Rectangle type for video geometry
*/
-typedef struct
+typedef struct libvlc_rectangle_t
{
int top, left;
int bottom, right;
*/
/**
- * 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_MediaInstanceReachedEnd,
+ libvlc_MediaListItemAdded,
+ libvlc_MediaListItemDeleted,
+ libvlc_MediaListItemChanged,
} libvlc_event_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;
- char reserved[8]; /* For future use */
+ void * p_obj;
+ union event_type_specific
+ {
+ struct
+ {
+ libvlc_meta_t meta_type;
+ } media_descriptor_meta_changed;
+ struct
+ {
+ libvlc_media_descriptor_t * item;
+ int index;
+ } media_list_item_added;
+ struct
+ {
+ libvlc_media_descriptor_t * item;
+ int index;
+ } media_list_item_deleted;
+ struct
+ {
+ libvlc_media_descriptor_t * item;
+ int index;
+ } media_list_item_changed;
+ } u;
} libvlc_event_t;
-
-typedef void ( *libvlc_callback_t )( struct libvlc_instance_t *, 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 * );
/**@} */