libvlc_events.h 5.37 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*****************************************************************************
 * libvlc_events.h:  libvlc_events external API structure
 *****************************************************************************
 * Copyright (C) 1998-2007 the VideoLAN team
 * $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
 * (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.
 *
 * 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.
 *****************************************************************************/

#ifndef _LIBVLC_EVENTS_H
#define _LIBVLC_EVENTS_H 1

# ifdef __cplusplus
extern "C" {
# endif

/*****************************************************************************
 * Events handling
 *****************************************************************************/

/** \defgroup libvlc_events Events
 * \ingroup libvlc
 * LibVLC Available Events
 * @{
 */

typedef enum libvlc_event_type_t {
43
44
45
46
47
48
    libvlc_MediaMetaChanged,
    libvlc_MediaSubItemAdded,
    libvlc_MediaDurationChanged,
    libvlc_MediaPreparsedChanged,
    libvlc_MediaFreed,
    libvlc_MediaStateChanged,
49

50
51
52
53
54
55
56
57
58
    libvlc_MediaPlayerPlayed,
    libvlc_MediaPlayerPaused,
    libvlc_MediaPlayerEndReached,
    libvlc_MediaPlayerStopped,
    libvlc_MediaPlayerEncounteredError,
    libvlc_MediaPlayerTimeChanged,
    libvlc_MediaPlayerPositionChanged,
    libvlc_MediaPlayerSeekableChanged,
    libvlc_MediaPlayerPausableChanged,
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

    libvlc_MediaListItemAdded,
    libvlc_MediaListWillAddItem,
    libvlc_MediaListItemDeleted,
    libvlc_MediaListWillDeleteItem,

    libvlc_MediaListViewItemAdded,
    libvlc_MediaListViewWillAddItem,
    libvlc_MediaListViewItemDeleted,
    libvlc_MediaListViewWillDeleteItem,

    libvlc_MediaListPlayerPlayed,
    libvlc_MediaListPlayerNextItemSet,
    libvlc_MediaListPlayerStopped,

    libvlc_MediaDiscovererStarted,
    libvlc_MediaDiscovererEnded

} libvlc_event_type_t;

/**
 * An Event
 * \param type the even type
 * \param p_obj the sender object
 * \param u Event dependent content
 */

typedef struct libvlc_event_t
{
    libvlc_event_type_t type;
    void * p_obj;
    union event_type_specific
    {
        /* media descriptor */
        struct
        {
            libvlc_meta_t meta_type;
96
        } media_meta_changed;
97
98
        struct
        {
99
100
            libvlc_media_t * new_child;
        } media_subitem_added;
101
102
103
        struct
        {
            vlc_int64_t new_duration;
104
        } media_duration_changed;
105
106
107
        struct
        {
            int new_status;
108
        } media_preparsed_changed;
109
110
        struct
        {
111
112
            libvlc_media_t * md;
        } media_freed;
113
114
115
        struct
        {
            libvlc_state_t new_state;
116
        } media_state_changed;
117
118
119
120
121

        /* media instance */
        struct
        {
            float new_position;
122
        } media_player_position_changed;
123
124
125
        struct
        {
            libvlc_time_t new_time;
126
        } media_player_time_changed;
127
128
129
        struct
        {
            libvlc_time_t new_seekable;
130
        } media_player_seekable_changed;
131
132
133
        struct
        {
            libvlc_time_t new_pausable;
134
        } media_player_pausable_changed;
135
136
137
138

        /* media list */
        struct
        {
139
            libvlc_media_t * item;
140
141
142
143
            int index;
        } media_list_item_added;
        struct
        {
144
            libvlc_media_t * item;
145
146
147
148
            int index;
        } media_list_will_add_item;
        struct
        {
149
            libvlc_media_t * item;
150
151
152
153
            int index;
        } media_list_item_deleted;
        struct
        {
154
            libvlc_media_t * item;
155
156
157
158
159
160
            int index;
        } media_list_will_delete_item;

        /* media list view */
        struct
        {
161
            libvlc_media_t * item;
162
163
164
165
            int index;
        } media_list_view_item_added;
        struct
        {
166
            libvlc_media_t * item;
167
168
169
170
            int index;
        } media_list_view_will_add_item;
        struct
        {
171
            libvlc_media_t * item;
172
173
174
175
            int index;
        } media_list_view_item_deleted;
        struct
        {
176
            libvlc_media_t * item;
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
            int index;
        } media_list_view_will_delete_item;

        /* media discoverer */
        struct
        {
            void * unused;
        } media_media_discoverer_started;
        struct
        {
            void * unused;
        } media_media_discoverer_ended;

    } u;
} libvlc_event_t;

/**
 * Event manager that belongs to a libvlc object, and from whom events can
 * be received.
 */

typedef struct libvlc_event_manager_t libvlc_event_manager_t;

/**
 * Callback function notification
 * \param p_event the event triggering the callback
 */

typedef void ( *libvlc_callback_t )( const libvlc_event_t *, void * );

/**@} */

# ifdef __cplusplus
}
# endif

#endif /* _LIBVLC_EVENTS_H */