1 /*****************************************************************************
2 * libvlc_events.h: libvlc_events external API structure
3 *****************************************************************************
4 * Copyright (C) 1998-2010 the VideoLAN team
7 * Authors: Filippo Carone <littlejohn@videolan.org>
8 * Pierre d'Herbemont <pdherbemont@videolan.org>
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License along
21 * with this program; if not, write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23 *****************************************************************************/
25 #ifndef LIBVLC_EVENTS_H
26 #define LIBVLC_EVENTS_H 1
30 * This file defines libvlc_event external API
37 /*****************************************************************************
39 *****************************************************************************/
41 /** \defgroup libvlc_event libvlc_event
42 * \ingroup libvlc_core
43 * LibVLC Available Events
47 /* Append new event types at the end. Do not remove, insert or
48 * re-order any entry. The cpp will prepend libvlc_ to the symbols. */
49 #define DEFINE_LIBVLC_EVENT_TYPES \
50 DEF( MediaMetaChanged ), \
51 DEF( MediaSubItemAdded ), \
52 DEF( MediaDurationChanged ), \
53 DEF( MediaPreparsedChanged ), \
55 DEF( MediaStateChanged ), \
57 DEF( MediaPlayerNothingSpecial ), \
58 DEF( MediaPlayerOpening ), \
59 DEF( MediaPlayerBuffering ), \
60 DEF( MediaPlayerPlaying ), \
61 DEF( MediaPlayerPaused ), \
62 DEF( MediaPlayerStopped ), \
63 DEF( MediaPlayerForward ), \
64 DEF( MediaPlayerBackward ), \
65 DEF( MediaPlayerEndReached ), \
66 DEF( MediaPlayerEncounteredError ), \
67 DEF( MediaPlayerTimeChanged ), \
68 DEF( MediaPlayerPositionChanged ), \
69 DEF( MediaPlayerSeekableChanged ), \
70 DEF( MediaPlayerPausableChanged ), \
72 DEF( MediaListItemAdded ), \
73 DEF( MediaListWillAddItem ), \
74 DEF( MediaListItemDeleted ), \
75 DEF( MediaListWillDeleteItem ), \
77 DEF( MediaListViewItemAdded ), \
78 DEF( MediaListViewWillAddItem ), \
79 DEF( MediaListViewItemDeleted ), \
80 DEF( MediaListViewWillDeleteItem ), \
82 DEF( MediaListPlayerPlayed ), \
83 DEF( MediaListPlayerNextItemSet ), \
84 DEF( MediaListPlayerStopped ), \
86 DEF( MediaDiscovererStarted ), \
87 DEF( MediaDiscovererEnded ), \
89 DEF( MediaPlayerTitleChanged ), \
90 DEF( MediaPlayerSnapshotTaken ), \
91 DEF( MediaPlayerLengthChanged ), \
93 DEF( VlmMediaAdded ), \
94 DEF( VlmMediaRemoved ), \
95 DEF( VlmMediaChanged ), \
96 DEF( VlmMediaInstanceStarted ), \
97 DEF( VlmMediaInstanceStopped ), \
98 DEF( VlmMediaInstanceStatusInit ), \
99 DEF( VlmMediaInstanceStatusOpening ), \
100 DEF( VlmMediaInstanceStatusPlaying ), \
101 DEF( VlmMediaInstanceStatusPause ), \
102 DEF( VlmMediaInstanceStatusEnd ), \
103 DEF( VlmMediaInstanceStatusError ), \
105 DEF( MediaPlayerMediaChanged ), \
107 DEF( MediaPlayerMouseMoved ), \
108 DEF( MediaPlayerMouseButton ), \
109 DEF( MediaPlayerMouseClick ), \
110 DEF( MediaPlayerMouseObject ), \
112 /* New event types HERE */
115 enum libvlc_event_type_e {
117 enum libvlc_event_type_t {
119 #define DEF(a) libvlc_##a
120 DEFINE_LIBVLC_EVENT_TYPES
121 libvlc_num_event_types
125 /* Implementing libvlc_event_type_name() needs the definition too. */
126 #ifndef LIBVLC_EVENT_TYPES_KEEP_DEFINE
127 #undef DEFINE_LIBVLC_EVENT_TYPES
132 * \param type the even type
133 * \param p_obj the sender object
134 * \param u Event dependent content
137 struct libvlc_event_t
139 libvlc_event_type_t type;
141 union event_type_specific
143 /* media descriptor */
146 libvlc_meta_t meta_type;
147 } media_meta_changed;
150 libvlc_media_t * new_child;
151 } media_subitem_added;
154 int64_t new_duration;
155 } media_duration_changed;
159 } media_preparsed_changed;
166 libvlc_state_t new_state;
167 } media_state_changed;
173 } media_player_position_changed;
176 libvlc_time_t new_time;
177 } media_player_time_changed;
181 } media_player_title_changed;
185 } media_player_seekable_changed;
189 } media_player_pausable_changed;
194 libvlc_media_t * item;
196 } media_list_item_added;
199 libvlc_media_t * item;
201 } media_list_will_add_item;
204 libvlc_media_t * item;
206 } media_list_item_deleted;
209 libvlc_media_t * item;
211 } media_list_will_delete_item;
213 /* media list player */
216 libvlc_media_t * item;
217 } media_list_player_next_item_set;
223 } media_player_snapshot_taken ;
228 libvlc_time_t new_length;
229 } media_player_length_changed;
234 const char * psz_media_name;
235 const char * psz_instance_name;
238 /* Extra MediaPlayer */
241 libvlc_media_t * new_media;
242 } media_player_media_changed;
249 } media_player_mouse_moved;
258 } media_player_mouse_button;
263 } media_player_mouse_clicked;
268 } media_player_mouse_object;
280 #endif /* _LIBVLC_EVENTS_H */