]> git.sesse.net Git - vlc/blobdiff - include/vlc/libvlc_structures.h
vlc.h: Don't actually put the __attribute__((deprecated)) when the header is used...
[vlc] / include / vlc / libvlc_structures.h
index 7bc53a65f497e2228608e8e6d0a5abfd5653feb3..067f1b8077bf2607233f0a23e178a5a3e6cf39b4 100644 (file)
@@ -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,33 @@ 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;
+
+/**@} */
+
+/*****************************************************************************
+ * Time
+ *****************************************************************************/
+/** defgroup libvlc_time Time
+ * \ingroup libvlc
+ * LibVLC Time support in libvlc
+ * @{
+ */
+
+typedef vlc_int64_t libvlc_time_t;
+
+/**@} */
+
 /*****************************************************************************
  * Media Descriptor
  *****************************************************************************/
@@ -68,22 +95,111 @@ typedef struct
  * @{
  */
 
-typedef enum {
+typedef enum libvlc_meta_t {
     libvlc_meta_Title,
-    libvlc_meta_Artist
+    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;
+
+/**@} */
 
-typedef struct {
-    bool                b_preparsed;
-    input_item_t      * p_input_item;
-    libvlc_instance_t * p_libvlc_instance;
-} 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;
+
+typedef enum libvlc_state_t
+{
+    libvlc_NothingSpecial,
+    libvlc_Stopped,
+    libvlc_Opening,
+    libvlc_Buffering,
+    libvlc_Ended,
+    libvlc_Error,
+    libvlc_Playing,
+    libvlc_Paused
+} libvlc_state_t;
 
 /**@} */
 
+/*****************************************************************************
+ * Media List
+ *****************************************************************************/
+/** defgroup libvlc_media_list MediaList
+ * \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;
+
+/**@} */
+
+/*****************************************************************************
+ * 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
@@ -94,7 +210,8 @@ typedef struct {
  * @{
  */
 
-typedef struct {
+typedef struct libvlc_playlist_item_t
+{
     int i_id;
     char * psz_uri;
     char * psz_name;
@@ -112,7 +229,7 @@ typedef struct {
  * LibVLC Video handling
  * @{
  */
-    
 /**
 * Downcast to this general type as placeholder for a platform specific one, such as:
 *  Drawable on X11,
@@ -124,7 +241,7 @@ typedef int libvlc_drawable_t;
 /**
 * Rectangle type for video geometry
 */
-typedef struct
+typedef struct libvlc_rectangle_t
 {
     int top, left;
     int bottom, right;
@@ -134,6 +251,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
  *****************************************************************************/
@@ -171,42 +301,175 @@ typedef struct libvlc_log_message_t
  * LibVLC Event Callbacks
  * @{
  */
-    
 /**
- * Available events:
- * - libvlc_VolumeChanged
- * - libvlc_InputPositionChanged
+ * Available events: (XXX: being reworked)
+ * - libvlc_MediaInstanceReachedEnd
  */
 
-typedef enum {
-    libvlc_VolumeChanged,
-    libvlc_InputPositionChanged,
+typedef enum libvlc_event_type_t {
+    libvlc_MediaDescriptorMetaChanged,
+    libvlc_MediaDescriptorSubItemAdded,
+    libvlc_MediaDescriptorDurationChanged,
+    libvlc_MediaDescriptorPreparsedChanged,
+    libvlc_MediaDescriptorFreed,
+    libvlc_MediaDescriptorStateChanged,
+
+    libvlc_MediaInstancePlayed,
+    libvlc_MediaInstancePaused,
+    libvlc_MediaInstanceReachedEnd,
+    libvlc_MediaInstanceEncounteredError,
+    libvlc_MediaInstanceTimeChanged,
+    libvlc_MediaInstancePositionChanged,
+    libvlc_MediaInstanceSeekableChanged,
+    libvlc_MediaInstancePausableChanged,
+
+    libvlc_MediaListItemAdded,
+    libvlc_MediaListWillAddItem,
+    libvlc_MediaListItemDeleted,
+    libvlc_MediaListWillDeleteItem,
+
+    libvlc_MediaListViewItemAdded,
+    libvlc_MediaListViewWillAddItem,
+    libvlc_MediaListViewItemDeleted,
+    libvlc_MediaListViewWillDeleteItem,
+
+    libvlc_MediaListPlayerPlayed,
+    libvlc_MediaListPlayerNextItemSet,
+    libvlc_MediaListPlayerStopped,
+
+    libvlc_MediaDiscovererStarted,
+    libvlc_MediaDiscovererEnded
+
 } 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;
-    union
+    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;
+        struct
+        {
+            vlc_int64_t new_duration;
+        } media_descriptor_duration_changed;
+        struct
+        {
+            int new_status;
+        } media_descriptor_preparsed_changed;
+        struct
+        {
+            libvlc_media_descriptor_t * md;
+        } media_descriptor_freed;
+        struct
+        {
+            libvlc_state_t new_state;
+        } media_descriptor_state_changed;
+            
+        /* media instance */
+        struct
+        {
+            float new_position;
+        } media_instance_position_changed;
         struct
         {
-            int new_volume;
-        } volume_changed;
+            libvlc_time_t new_time;
+        } media_instance_time_changed;
         struct
         {
-            vlc_int64_t new_position;
-        } input_position_changed;
+            libvlc_time_t new_seekable;
+        } media_instance_seekable_changed;
+        struct
+        {
+            libvlc_time_t new_pausable;
+        } media_instance_pausable_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_will_add_item;
+        struct
+        {
+            libvlc_media_descriptor_t * item;
+            int index;
+        } media_list_item_deleted;
+        struct
+        {
+            libvlc_media_descriptor_t * item;
+            int index;
+        } media_list_will_delete_item;
+
+        /* media list view */
+        struct
+        {
+            libvlc_media_descriptor_t * item;
+            int index;
+        } media_list_view_item_added;
+        struct
+        {
+            libvlc_media_descriptor_t * item;
+            int index;
+        } media_list_view_will_add_item;
+        struct
+        {
+            libvlc_media_descriptor_t * item;
+            int index;
+        } media_list_view_item_deleted;
+        struct
+        {
+            libvlc_media_descriptor_t * item;
+            int index;
+        } media_list_view_will_delete_item;
+
+        /* media discoverer */
+        struct
+        {
+            void * unused;
+        } media_media_discoverer_started;
+        struct
+        {
+            void * unused;
+        } media_media_discoverer_ended;
+
     } 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 * );
 
 /**@} */