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 |
34 | extern "C" { |
35 | # endif |
36 | |
37 | typedef struct libvlc_renderer_item_t libvlc_renderer_item_t; |
38 | |
39 | /** |
40 | * \ingroup libvlc_event |
41 | * @{ |
42 | */ |
43 | |
44 | /** |
45 | * Event types |
46 | */ |
47 | enum 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 | */ |
135 | typedef 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 | |