]> git.sesse.net Git - vlc/blobdiff - include/vlc/libvlc_events.h
Handle VLM events in libvlc
[vlc] / include / vlc / libvlc_events.h
index 849f3e708daeb6e49412194c96ea50111081c5b9..9373896861d48bad3a496ab5a51fe55655728e52 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * libvlc_events.h:  libvlc_events external API structure
  *****************************************************************************
- * Copyright (C) 1998-2007 the VideoLAN team
+ * Copyright (C) 1998-2008 the VideoLAN team
  * $Id $
  *
  * Authors: Filippo Carone <littlejohn@videolan.org>
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#ifndef _LIBVLC_EVENTS_H
-#define _LIBVLC_EVENTS_H 1
+#ifndef LIBVLC_EVENTS_H
+#define LIBVLC_EVENTS_H 1
+
+/**
+ * \file
+ * This file defines libvlc_event external API
+ */
 
 # ifdef __cplusplus
 extern "C" {
@@ -33,28 +38,40 @@ extern "C" {
  * Events handling
  *****************************************************************************/
 
-/** \defgroup libvlc_events Events
- * \ingroup libvlc
+/** \defgroup libvlc_event libvlc_event
+ * \ingroup libvlc_core
  * LibVLC Available Events
  * @{
  */
 
-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,
+#ifdef __cplusplus
+enum libvlc_event_type_e {
+#else
+enum libvlc_event_type_t {
+#endif
+    /* Append new event types at the end.
+     * Do not remove, insert or re-order any entry. */
+    libvlc_MediaMetaChanged,
+    libvlc_MediaSubItemAdded,
+    libvlc_MediaDurationChanged,
+    libvlc_MediaPreparsedChanged,
+    libvlc_MediaFreed,
+    libvlc_MediaStateChanged,
+
+    libvlc_MediaPlayerNothingSpecial,
+    libvlc_MediaPlayerOpening,
+    libvlc_MediaPlayerBuffering,
+    libvlc_MediaPlayerPlaying,
+    libvlc_MediaPlayerPaused,
+    libvlc_MediaPlayerStopped,
+    libvlc_MediaPlayerForward,
+    libvlc_MediaPlayerBackward,
+    libvlc_MediaPlayerEndReached,
+    libvlc_MediaPlayerEncounteredError,
+    libvlc_MediaPlayerTimeChanged,
+    libvlc_MediaPlayerPositionChanged,
+    libvlc_MediaPlayerSeekableChanged,
+    libvlc_MediaPlayerPausableChanged,
 
     libvlc_MediaListItemAdded,
     libvlc_MediaListWillAddItem,
@@ -71,9 +88,19 @@ typedef enum libvlc_event_type_t {
     libvlc_MediaListPlayerStopped,
 
     libvlc_MediaDiscovererStarted,
-    libvlc_MediaDiscovererEnded
+    libvlc_MediaDiscovererEnded,
 
-} libvlc_event_type_t;
+    libvlc_MediaPlayerTitleChanged,
+    libvlc_MediaPlayerSnapshotTaken,
+    libvlc_MediaPlayerLengthChanged,
+
+    libvlc_VlmMediaAdded,
+    libvlc_VlmMediaRemoved,
+    libvlc_VlmMediaChanged,
+    libvlc_VlmMediaInstanceStarted,
+    libvlc_VlmMediaInstanceStopped,
+    /* New event types HERE */
+};
 
 /**
  * An Event
@@ -82,7 +109,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;
@@ -92,116 +119,115 @@ typedef struct libvlc_event_t
         struct
         {
             libvlc_meta_t meta_type;
-        } media_descriptor_meta_changed;
+        } media_meta_changed;
         struct
         {
-            libvlc_media_descriptor_t * new_child;
-        } media_descriptor_subitem_added;
+            libvlc_media_t * new_child;
+        } media_subitem_added;
         struct
         {
-            vlc_int64_t new_duration;
-        } media_descriptor_duration_changed;
+            int64_t new_duration;
+        } media_duration_changed;
         struct
         {
             int new_status;
-        } media_descriptor_preparsed_changed;
+        } media_preparsed_changed;
         struct
         {
-            libvlc_media_descriptor_t * md;
-        } media_descriptor_freed;
+            libvlc_media_t * md;
+        } media_freed;
         struct
         {
             libvlc_state_t new_state;
-        } media_descriptor_state_changed;
+        } media_state_changed;
 
         /* media instance */
         struct
         {
             float new_position;
-        } media_instance_position_changed;
+        } media_player_position_changed;
         struct
         {
             libvlc_time_t new_time;
-        } media_instance_time_changed;
+        } media_player_time_changed;
         struct
         {
-            libvlc_time_t new_seekable;
-        } media_instance_seekable_changed;
+            int new_title;
+        } media_player_title_changed;
         struct
         {
-            libvlc_time_t new_pausable;
-        } media_instance_pausable_changed;
+            uint64_t new_seekable; /* FIXME: that's a boolean! */
+        } media_player_seekable_changed;
+        struct
+        {
+            uint64_t new_pausable; /* FIXME: that's a BOOL!!! */
+        } media_player_pausable_changed;
 
         /* media list */
         struct
         {
-            libvlc_media_descriptor_t * item;
+            libvlc_media_t * item;
             int index;
         } media_list_item_added;
         struct
         {
-            libvlc_media_descriptor_t * item;
+            libvlc_media_t * item;
             int index;
         } media_list_will_add_item;
         struct
         {
-            libvlc_media_descriptor_t * item;
+            libvlc_media_t * item;
             int index;
         } media_list_item_deleted;
         struct
         {
-            libvlc_media_descriptor_t * item;
+            libvlc_media_t * item;
             int index;
         } media_list_will_delete_item;
 
         /* media list view */
         struct
         {
-            libvlc_media_descriptor_t * item;
+            libvlc_media_t * item;
             int index;
         } media_list_view_item_added;
         struct
         {
-            libvlc_media_descriptor_t * item;
+            libvlc_media_t * item;
             int index;
         } media_list_view_will_add_item;
         struct
         {
-            libvlc_media_descriptor_t * item;
+            libvlc_media_t * item;
             int index;
         } media_list_view_item_deleted;
         struct
         {
-            libvlc_media_descriptor_t * item;
+            libvlc_media_t * item;
             int index;
         } media_list_view_will_delete_item;
 
-        /* media discoverer */
+        /* snapshot taken */
         struct
         {
-            void * unused;
-        } media_media_discoverer_started;
+             char* psz_filename ;
+        } media_player_snapshot_taken ;
+
+        /* Length changed */
         struct
         {
-            void * unused;
-        } media_media_discoverer_ended;
-
-    } u;
-} libvlc_event_t;
+            libvlc_time_t   new_length;
+        } media_player_length_changed;
 
-/**
- * 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;
+        /* VLM media */
+        struct
+        {
+            const char * psz_media_name;
+        } vlm_media_event;
 
-/**
- * Callback function notification
- * \param p_event the event triggering the callback
- */
+    } u;
+};
 
-typedef void ( *libvlc_callback_t )( const libvlc_event_t *, void * );
 
 /**@} */