1 /*****************************************************************************
2 * libvlc_events.h: libvlc_events external API structure
3 *****************************************************************************
4 * Copyright (C) 1998-2008 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 ), \
106 /* New event types HERE */
109 enum libvlc_event_type_e {
111 enum libvlc_event_type_t {
113 #define DEF(a) libvlc_##a
114 DEFINE_LIBVLC_EVENT_TYPES
115 libvlc_num_event_types
119 /* Implementing libvlc_event_type_name() needs the definition too. */
120 #ifndef LIBVLC_EVENT_TYPES_KEEP_DEFINE
121 #undef DEFINE_LIBVLC_EVENT_TYPES
126 * \param type the even type
127 * \param p_obj the sender object
128 * \param u Event dependent content
131 struct libvlc_event_t
133 libvlc_event_type_t type;
135 union event_type_specific
137 /* media descriptor */
140 libvlc_meta_t meta_type;
141 } media_meta_changed;
144 libvlc_media_t * new_child;
145 } media_subitem_added;
148 int64_t new_duration;
149 } media_duration_changed;
153 } media_preparsed_changed;
160 libvlc_state_t new_state;
161 } media_state_changed;
167 } media_player_position_changed;
170 libvlc_time_t new_time;
171 } media_player_time_changed;
175 } media_player_title_changed;
179 } media_player_seekable_changed;
183 } media_player_pausable_changed;
188 libvlc_media_t * item;
190 } media_list_item_added;
193 libvlc_media_t * item;
195 } media_list_will_add_item;
198 libvlc_media_t * item;
200 } media_list_item_deleted;
203 libvlc_media_t * item;
205 } media_list_will_delete_item;
207 /* media list player */
210 libvlc_media_t * item;
211 } media_list_player_next_item_set;
217 } media_player_snapshot_taken ;
222 libvlc_time_t new_length;
223 } media_player_length_changed;
228 const char * psz_media_name;
229 const char * psz_instance_name;
232 /* Extra MediaPlayer */
235 libvlc_media_t * new_media;
236 } media_player_media_changed;
247 #endif /* _LIBVLC_EVENTS_H */