1/*****************************************************************************
2 * libvlc_events.h: libvlc_events external API structure
3 *****************************************************************************
4 * Copyright (C) 1998-2010 VLC authors and VideoLAN
5 * $Id $
6 *
7 * Authors: Filippo Carone <littlejohn@videolan.org>
8 * Pierre d'Herbemont <pdherbemont@videolan.org>
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU Lesser General Public License as published by
12 * the Free Software Foundation; either version 2.1 of the License, or
13 * (at your option) any later version.
14 *
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 Lesser General Public License for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public License
21 * along with this program; if not, write to the Free Software Foundation,
22 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23 *****************************************************************************/
24
25#ifndef LIBVLC_EVENTS_H
26#define LIBVLC_EVENTS_H 1
27
28/**
29 * \file
30 * This file defines libvlc_event external API
31 */
32
33# ifdef __cplusplus
34extern "C" {
35# endif
36
37typedef struct libvlc_renderer_item_t libvlc_renderer_item_t;
38
39/**
40 * \ingroup libvlc_event
41 * @{
42 */
43
44/**
45 * Event types
46 */
47enum libvlc_event_e {
48 /* Append new event types at the end of a category.
49 * Do not remove, insert or re-order any entry.
50 * Keep this in sync with lib/event.c:libvlc_event_type_name(). */
51 libvlc_MediaMetaChanged=0,
52 libvlc_MediaSubItemAdded,
53 libvlc_MediaDurationChanged,
54 libvlc_MediaParsedChanged,
55 libvlc_MediaFreed,
56 libvlc_MediaStateChanged,
57 libvlc_MediaSubItemTreeAdded,
58
59 libvlc_MediaPlayerMediaChanged=0x100,
60 libvlc_MediaPlayerNothingSpecial,
61 libvlc_MediaPlayerOpening,
62 libvlc_MediaPlayerBuffering,
63 libvlc_MediaPlayerPlaying,
64 libvlc_MediaPlayerPaused,
65 libvlc_MediaPlayerStopped,
66 libvlc_MediaPlayerForward,
67 libvlc_MediaPlayerBackward,
68 libvlc_MediaPlayerEndReached,
69 libvlc_MediaPlayerEncounteredError,
70 libvlc_MediaPlayerTimeChanged,
71 libvlc_MediaPlayerPositionChanged,
72 libvlc_MediaPlayerSeekableChanged,
73 libvlc_MediaPlayerPausableChanged,
74 libvlc_MediaPlayerTitleChanged,
75 libvlc_MediaPlayerSnapshotTaken,
76 libvlc_MediaPlayerLengthChanged,
77 libvlc_MediaPlayerVout,
78 libvlc_MediaPlayerScrambledChanged,
79 libvlc_MediaPlayerESAdded,
80 libvlc_MediaPlayerESDeleted,
81 libvlc_MediaPlayerESSelected,
82 libvlc_MediaPlayerCorked,
83 libvlc_MediaPlayerUncorked,
84 libvlc_MediaPlayerMuted,
85 libvlc_MediaPlayerUnmuted,
86 libvlc_MediaPlayerAudioVolume,
87 libvlc_MediaPlayerAudioDevice,
88 libvlc_MediaPlayerChapterChanged,
89
90 libvlc_MediaListItemAdded=0x200,
91 libvlc_MediaListWillAddItem,
92 libvlc_MediaListItemDeleted,
93 libvlc_MediaListWillDeleteItem,
94 libvlc_MediaListEndReached,
95
96 libvlc_MediaListViewItemAdded=0x300,
97 libvlc_MediaListViewWillAddItem,
98 libvlc_MediaListViewItemDeleted,
99 libvlc_MediaListViewWillDeleteItem,
100
101 libvlc_MediaListPlayerPlayed=0x400,
102 libvlc_MediaListPlayerNextItemSet,
103 libvlc_MediaListPlayerStopped,
104
105 /**
106 * \deprecated Useless event, it will be triggered only when calling
107 * libvlc_media_discoverer_start()
108 */
109 libvlc_MediaDiscovererStarted=0x500,
110 /**
111 * \deprecated Useless event, it will be triggered only when calling
112 * libvlc_media_discoverer_stop()
113 */
114 libvlc_MediaDiscovererEnded,
115
116 libvlc_RendererDiscovererItemAdded,
117 libvlc_RendererDiscovererItemDeleted,
118
119 libvlc_VlmMediaAdded=0x600,
120 libvlc_VlmMediaRemoved,
121 libvlc_VlmMediaChanged,
122 libvlc_VlmMediaInstanceStarted,
123 libvlc_VlmMediaInstanceStopped,
124 libvlc_VlmMediaInstanceStatusInit,
125 libvlc_VlmMediaInstanceStatusOpening,
126 libvlc_VlmMediaInstanceStatusPlaying,
127 libvlc_VlmMediaInstanceStatusPause,
128 libvlc_VlmMediaInstanceStatusEnd,
129 libvlc_VlmMediaInstanceStatusError
130};
131
132/**
133 * A LibVLC event
134 */
135typedef struct libvlc_event_t
136{
137 int type; /**< Event type (see @ref libvlc_event_e) */
138 void *p_obj; /**< Object emitting the event */
139 union
140 {
141 /* media descriptor */
142 struct
143 {
144 libvlc_meta_t meta_type;
145 } media_meta_changed;
146 struct
147 {
148 libvlc_media_t * new_child;
149 } media_subitem_added;
150 struct
151 {
152 int64_t new_duration;
153 } media_duration_changed;
154 struct
155 {
156 int new_status; /**< see @ref libvlc_media_parsed_status_t */
157 } media_parsed_changed;
158 struct
159 {
160 libvlc_media_t * md;
161 } media_freed;
162 struct
163 {
164 int new_state; /**< see @ref libvlc_state_t */
165 } media_state_changed;
166 struct
167 {
168 libvlc_media_t * item;
169 } media_subitemtree_added;
170
171 /* media instance */
172 struct
173 {
174 float new_cache;
175 } media_player_buffering;
176 struct
177 {
178 int new_chapter;
179 } media_player_chapter_changed;
180 struct
181 {
182 float new_position;
183 } media_player_position_changed;
184 struct
185 {
186 libvlc_time_t new_time;
187 } media_player_time_changed;
188 struct
189 {
190 int new_title;
191 } media_player_title_changed;
192 struct
193 {
194 int new_seekable;
195 } media_player_seekable_changed;
196 struct
197 {
198 int new_pausable;
199 } media_player_pausable_changed;
200 struct
201 {
202 int new_scrambled;
203 } media_player_scrambled_changed;
204 struct
205 {
206 int new_count;
207 } media_player_vout;
208
209 /* media list */
210 struct
211 {
212 libvlc_media_t * item;
213 int index;
214 } media_list_item_added;
215 struct
216 {
217 libvlc_media_t * item;
218 int index;
219 } media_list_will_add_item;
220 struct
221 {
222 libvlc_media_t * item;
223 int index;
224 } media_list_item_deleted;
225 struct
226 {
227 libvlc_media_t * item;
228 int index;
229 } media_list_will_delete_item;
230
231 /* media list player */
232 struct
233 {
234 libvlc_media_t * item;
235 } media_list_player_next_item_set;
236
237 /* snapshot taken */
238 struct
239 {
240 char* psz_filename ;
241 } media_player_snapshot_taken ;
242
243 /* Length changed */
244 struct
245 {
246 libvlc_time_t new_length;
247 } media_player_length_changed;
248
249 /* VLM media */
250 struct
251 {
252 const char * psz_media_name;
253 const char * psz_instance_name;
254 } vlm_media_event;
255
256 /* Extra MediaPlayer */
257 struct
258 {
259 libvlc_media_t * new_media;
260 } media_player_media_changed;
261
262 struct
263 {
264 libvlc_track_type_t i_type;
265 int i_id;
266 } media_player_es_changed;
267
268 struct
269 {
270 float volume;
271 } media_player_audio_volume;
272
273 struct
274 {
275 const char *device;
276 } media_player_audio_device;
277
278 struct
279 {
280 libvlc_renderer_item_t *item;
281 } renderer_discoverer_item_added;
282 struct
283 {
284 libvlc_renderer_item_t *item;
285 } renderer_discoverer_item_deleted;
286 } u; /**< Type-dependent event description */
287} libvlc_event_t;
288
289
290/**@} */
291
292# ifdef __cplusplus
293}
294# endif
295
296#endif /* _LIBVLC_EVENTS_H */
297

source code of include/vlc/libvlc_events.h