]> git.sesse.net Git - vlc/blobdiff - include/vlc/libvlc_events.h
libvlc: libvlc_ScrambledChanged event type added
[vlc] / include / vlc / libvlc_events.h
index bf0e3a2ea28baaaa05d0c905dc568580f946c0e9..f268fb5128ba932b8ce126d150550ea95159a233 100644 (file)
@@ -1,25 +1,25 @@
 /*****************************************************************************
  * libvlc_events.h:  libvlc_events external API structure
  *****************************************************************************
- * Copyright (C) 1998-2008 the VideoLAN team
+ * Copyright (C) 1998-2010 VLC authors and VideoLAN
  * $Id $
  *
  * Authors: Filippo Carone <littlejohn@videolan.org>
  *          Pierre d'Herbemont <pdherbemont@videolan.org>
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
 #ifndef LIBVLC_EVENTS_H
 extern "C" {
 # endif
 
-/*****************************************************************************
- * Events handling
- *****************************************************************************/
-
-/** \defgroup libvlc_event libvlc_event
- * \ingroup libvlc_core
- * LibVLC Available Events
+/**
+ * \ingroup libvlc_event
  * @{
  */
 
-#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,
+/**
+ * Event types
+ */
+enum libvlc_event_e {
+    /* Append new event types at the end of a category.
+     * Do not remove, insert or re-order any entry.
+     * Keep this in sync with lib/event.c:libvlc_event_type_name(). */
+    libvlc_MediaMetaChanged=0,
     libvlc_MediaSubItemAdded,
     libvlc_MediaDurationChanged,
-    libvlc_MediaPreparsedChanged,
+    libvlc_MediaParsedChanged,
     libvlc_MediaFreed,
     libvlc_MediaStateChanged,
+    libvlc_MediaSubItemTreeAdded,
 
+    libvlc_MediaPlayerMediaChanged=0x100,
     libvlc_MediaPlayerNothingSpecial,
     libvlc_MediaPlayerOpening,
     libvlc_MediaPlayerBuffering,
@@ -72,42 +69,50 @@ enum libvlc_event_type_t {
     libvlc_MediaPlayerPositionChanged,
     libvlc_MediaPlayerSeekableChanged,
     libvlc_MediaPlayerPausableChanged,
+    libvlc_MediaPlayerTitleChanged,
+    libvlc_MediaPlayerSnapshotTaken,
+    libvlc_MediaPlayerLengthChanged,
+    libvlc_MediaPlayerVout,
+    libvlc_MediaPlayerScrambledChanged,
 
-    libvlc_MediaListItemAdded,
+    libvlc_MediaListItemAdded=0x200,
     libvlc_MediaListWillAddItem,
     libvlc_MediaListItemDeleted,
     libvlc_MediaListWillDeleteItem,
 
-    libvlc_MediaListViewItemAdded,
+    libvlc_MediaListViewItemAdded=0x300,
     libvlc_MediaListViewWillAddItem,
     libvlc_MediaListViewItemDeleted,
     libvlc_MediaListViewWillDeleteItem,
 
-    libvlc_MediaListPlayerPlayed,
+    libvlc_MediaListPlayerPlayed=0x400,
     libvlc_MediaListPlayerNextItemSet,
     libvlc_MediaListPlayerStopped,
 
-    libvlc_MediaDiscovererStarted,
+    libvlc_MediaDiscovererStarted=0x500,
     libvlc_MediaDiscovererEnded,
 
-    libvlc_MediaPlayerTitleChanged,
-    libvlc_MediaPlayerSnapshotTaken,
-    libvlc_MediaPlayerLengthChanged,
-    /* New event types HERE */
+    libvlc_VlmMediaAdded=0x600,
+    libvlc_VlmMediaRemoved,
+    libvlc_VlmMediaChanged,
+    libvlc_VlmMediaInstanceStarted,
+    libvlc_VlmMediaInstanceStopped,
+    libvlc_VlmMediaInstanceStatusInit,
+    libvlc_VlmMediaInstanceStatusOpening,
+    libvlc_VlmMediaInstanceStatusPlaying,
+    libvlc_VlmMediaInstanceStatusPause,
+    libvlc_VlmMediaInstanceStatusEnd,
+    libvlc_VlmMediaInstanceStatusError
 };
 
 /**
- * An Event
- * \param type the even type
- * \param p_obj the sender object
- * \param u Event dependent content
+ * A LibVLC event
  */
-
-struct libvlc_event_t
+typedef struct libvlc_event_t
 {
-    libvlc_event_type_t type;
-    void * p_obj;
-    union event_type_specific
+    int   type; /**< Event type (see @ref libvlc_event_e) */
+    void *p_obj; /**< Object emitting the event */
+    union
     {
         /* media descriptor */
         struct
@@ -125,7 +130,7 @@ struct libvlc_event_t
         struct
         {
             int new_status;
-        } media_preparsed_changed;
+        } media_parsed_changed;
         struct
         {
             libvlc_media_t * md;
@@ -134,9 +139,17 @@ struct libvlc_event_t
         {
             libvlc_state_t new_state;
         } media_state_changed;
+        struct
+        {
+            libvlc_media_t * item;
+        } media_subitemtree_added;
 
         /* media instance */
         struct
+        {
+            float new_cache;
+        } media_player_buffering;
+        struct
         {
             float new_position;
         } media_player_position_changed;
@@ -150,12 +163,20 @@ struct libvlc_event_t
         } media_player_title_changed;
         struct
         {
-            uint64_t new_seekable; /* FIXME: that's a boolean! */
+            int new_seekable;
         } media_player_seekable_changed;
         struct
         {
-            uint64_t new_pausable; /* FIXME: that's a BOOL!!! */
+            int new_pausable;
         } media_player_pausable_changed;
+        struct
+        {
+            int new_scrambled;
+        } media_player_scrambled_changed;
+        struct
+        {
+            int new_count;
+        } media_player_vout;
 
         /* media list */
         struct
@@ -179,27 +200,11 @@ struct libvlc_event_t
             int index;
         } media_list_will_delete_item;
 
-        /* media list view */
-        struct
-        {
-            libvlc_media_t * item;
-            int index;
-        } media_list_view_item_added;
+        /* media list player */
         struct
         {
             libvlc_media_t * item;
-            int index;
-        } media_list_view_will_add_item;
-        struct
-        {
-            libvlc_media_t * item;
-            int index;
-        } media_list_view_item_deleted;
-        struct
-        {
-            libvlc_media_t * item;
-            int index;
-        } media_list_view_will_delete_item;
+        } media_list_player_next_item_set;
 
         /* snapshot taken */
         struct
@@ -212,8 +217,21 @@ struct libvlc_event_t
         {
             libvlc_time_t   new_length;
         } media_player_length_changed;
-    } u;
-};
+
+        /* VLM media */
+        struct
+        {
+            const char * psz_media_name;
+            const char * psz_instance_name;
+        } vlm_media_event;
+
+        /* Extra MediaPlayer */
+        struct
+        {
+            libvlc_media_t * new_media;
+        } media_player_media_changed;
+    } u; /**< Type-dependent event description */
+} libvlc_event_t;
 
 
 /**@} */