forked from ArduPilot/MissionPlanner
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathLibVLCLibrary.MediaPlayer.VideoControls.cs
315 lines (235 loc) · 13.9 KB
/
LibVLCLibrary.MediaPlayer.VideoControls.cs
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
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
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
////////////////////////////////////////////////////////////////////////////////
//
// LibVLCLibrary.MediaPlayer.VideoControls.cs
// - This file is part of LibVLC.NET.
//
// Copyright (C) 2011 Boris Richter <himself@boris-richter.net>
//
// ==========================================================================
//
// LibVLC.NET is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation; either version 2.1 of the License, or (at
// your option) any later version.
//
// LibVLC.NET 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 Lesser General Public
// License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with LibVLC.NET; if not, see http://www.gnu.org/licenses/.
//
// ==========================================================================
//
// $LastChangedRevision$
// $LastChangedDate$
// $LastChangedBy$
//
////////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
#pragma warning disable 1591
namespace LibVLC.NET
{
//****************************************************************************
partial class LibVLCLibrary
{
//void libvlc_toggle_fullscreen (libvlc_media_player_t *p_mi)
//void libvlc_set_fullscreen (libvlc_media_player_t *p_mi, int b_fullscreen)
//int libvlc_get_fullscreen (libvlc_media_player_t *p_mi)
//void libvlc_video_set_key_input (libvlc_media_player_t *p_mi, unsigned on)
//void libvlc_video_set_mouse_input (libvlc_media_player_t *p_mi, unsigned on)
//==========================================================================
// int libvlc_video_get_size (libvlc_media_player_t *p_mi, unsigned num, unsigned *px, unsigned *py)
//==========================================================================
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int libvlc_video_get_size_signature(IntPtr p_mi, uint num, out uint px, out uint py);
//==========================================================================
private readonly libvlc_video_get_size_signature m_libvlc_video_get_size;
//==========================================================================
public int libvlc_video_get_size(IntPtr p_mi, uint num, out uint px, out uint py)
{
VerifyAccess();
return m_libvlc_video_get_size(p_mi, num, out px, out py);
}
//==========================================================================
// int libvlc_video_get_height (libvlc_media_player_t *p_mi)
//==========================================================================
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int libvlc_video_get_height_signature(IntPtr p_mi);
//==========================================================================
private readonly libvlc_video_get_height_signature m_libvlc_video_get_height;
//==========================================================================
[Obsolete]
public int libvlc_video_get_height(IntPtr p_mi)
{
VerifyAccess();
return m_libvlc_video_get_height(p_mi);
}
//==========================================================================
// int libvlc_video_get_width (libvlc_media_player_t *p_mi)
//==========================================================================
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int libvlc_video_get_width_signature(IntPtr p_mi);
//==========================================================================
private readonly libvlc_video_get_width_signature m_libvlc_video_get_width;
//==========================================================================
[Obsolete]
public int libvlc_video_get_width(IntPtr p_mi)
{
VerifyAccess();
return m_libvlc_video_get_width(p_mi);
}
//int libvlc_video_get_cursor (libvlc_media_player_t *p_mi, unsigned num, int *px, int *py)
//float libvlc_video_get_scale (libvlc_media_player_t *p_mi)
//void libvlc_video_set_scale (libvlc_media_player_t *p_mi, float f_factor)
//char * libvlc_video_get_aspect_ratio (libvlc_media_player_t *p_mi)
// void libvlc_video_set_aspect_ratio (libvlc_media_player_t *p_mi, const char *psz_aspect)
//==========================================================================
// int libvlc_video_get_spu (libvlc_media_player_t *p_mi)
//==========================================================================
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int libvlc_video_get_spu_signature(IntPtr p_mi);
//==========================================================================
private readonly libvlc_video_get_spu_signature m_libvlc_video_get_spu;
//==========================================================================
public int libvlc_video_get_spu(IntPtr p_mi)
{
VerifyAccess();
return m_libvlc_video_get_spu(p_mi);
}
//int libvlc_video_get_spu_count (libvlc_media_player_t *p_mi)
//==========================================================================
//libvlc_track_description_t * libvlc_video_get_spu_description (libvlc_media_player_t *p_mi)
//==========================================================================
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr libvlc_video_get_spu_description_signature(IntPtr p_mi);
//==========================================================================
private readonly libvlc_video_get_spu_description_signature m_libvlc_video_get_spu_description;
//==========================================================================
public libvlc_track_description_t libvlc_video_get_spu_description(IntPtr p_mi)
{
VerifyAccess();
IntPtr pointer = m_libvlc_video_get_spu_description(p_mi);
if(pointer == IntPtr.Zero)
return null;
internal_libvlc_track_description_t track_description = (internal_libvlc_track_description_t)Marshal.PtrToStructure(pointer, typeof(internal_libvlc_track_description_t));
libvlc_track_description_t result = new libvlc_track_description_t { i_id = track_description.i_id, psz_name = track_description.psz_name };
libvlc_track_description_t current = result;
while(track_description.p_next != IntPtr.Zero)
{
track_description = (internal_libvlc_track_description_t)Marshal.PtrToStructure(track_description.p_next, typeof(internal_libvlc_track_description_t));
current.p_next = new libvlc_track_description_t { i_id = track_description.i_id, psz_name = track_description.psz_name };
current = current.p_next;
}
current.p_next = null;
m_libvlc_track_description_list_release(pointer);
return result;
}
//==========================================================================
// int libvlc_video_set_spu (libvlc_media_player_t *p_mi, unsigned i_spu)
//==========================================================================
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int libvlc_video_set_spu_signature(IntPtr p_mi, int i_spu);
//==========================================================================
private readonly libvlc_video_set_spu_signature m_libvlc_video_set_spu;
//==========================================================================
public int libvlc_video_set_spu(IntPtr p_mi, int i_spu)
{
VerifyAccess();
return m_libvlc_video_set_spu(p_mi, i_spu);
}
//int libvlc_video_set_subtitle_file (libvlc_media_player_t *p_mi, const char *psz_subtitle)
//libvlc_track_description_t * libvlc_video_get_title_description (libvlc_media_player_t *p_mi)
//libvlc_track_description_t * libvlc_video_get_chapter_description (libvlc_media_player_t *p_mi, int i_title)
//char * libvlc_video_get_crop_geometry (libvlc_media_player_t *p_mi)
//void libvlc_video_set_crop_geometry (libvlc_media_player_t *p_mi, const char *psz_geometry)
//int libvlc_video_get_teletext (libvlc_media_player_t *p_mi)
//void libvlc_video_set_teletext (libvlc_media_player_t *p_mi, int i_page)
//void libvlc_toggle_teletext (libvlc_media_player_t *p_mi)
//==========================================================================
// int libvlc_video_get_track_count (libvlc_media_player_t *p_mi)
//==========================================================================
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int libvlc_video_get_track_count_signature(IntPtr p_mi);
//==========================================================================
private readonly libvlc_video_get_track_count_signature m_libvlc_video_get_track_count;
//==========================================================================
public int libvlc_video_get_track_count(IntPtr p_mi)
{
VerifyAccess();
return m_libvlc_video_get_track_count(p_mi);
}
//==========================================================================
// libvlc_track_description_t * libvlc_video_get_track_description (libvlc_media_player_t *p_mi)
//==========================================================================
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate IntPtr libvlc_video_get_track_description_signature(IntPtr p_mi);
//==========================================================================
private readonly libvlc_video_get_track_description_signature m_libvlc_video_get_track_description;
//==========================================================================
public libvlc_track_description_t libvlc_video_get_track_description(IntPtr p_mi)
{
VerifyAccess();
IntPtr pointer = m_libvlc_video_get_track_description(p_mi);
if(pointer == IntPtr.Zero)
return null;
// I still have no clue whether the returned descriptions have to be freed
// in any way; but i assume not
internal_libvlc_track_description_t track_description = (internal_libvlc_track_description_t)Marshal.PtrToStructure(pointer, typeof(internal_libvlc_track_description_t));
libvlc_track_description_t result = new libvlc_track_description_t { i_id = track_description.i_id, psz_name = track_description.psz_name };
libvlc_track_description_t current = result;
while(track_description.p_next != IntPtr.Zero)
{
track_description = (internal_libvlc_track_description_t)Marshal.PtrToStructure(track_description.p_next, typeof(internal_libvlc_track_description_t));
current.p_next = new libvlc_track_description_t { i_id = track_description.i_id, psz_name = track_description.psz_name };
current = current.p_next;
}
current.p_next = null;
m_libvlc_track_description_list_release(pointer);
return result;
}
//==========================================================================
// int libvlc_video_get_track (libvlc_media_player_t *p_mi)
//==========================================================================
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int libvlc_video_get_track_signature(IntPtr p_mi);
//==========================================================================
private readonly libvlc_video_get_track_signature m_libvlc_video_get_track;
//==========================================================================
public int libvlc_video_get_track(IntPtr p_mi)
{
VerifyAccess();
return m_libvlc_video_get_track(p_mi);
}
//==========================================================================
// int libvlc_video_set_track (libvlc_media_player_t *p_mi, int i_track)
//==========================================================================
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int libvlc_video_set_track_signature(IntPtr p_mi, int i_track);
//==========================================================================
private readonly libvlc_video_set_track_signature m_libvlc_video_set_track;
//==========================================================================
public int libvlc_video_set_track(IntPtr p_mi, int i_track)
{
VerifyAccess();
return m_libvlc_video_set_track(p_mi, i_track);
}
//int libvlc_video_take_snapshot (libvlc_media_player_t *p_mi, unsigned num, const char *psz_filepath, unsigned int i_width, unsigned int i_height)
//void libvlc_video_set_deinterlace (libvlc_media_player_t *p_mi, const char *psz_mode)
//int libvlc_video_get_marquee_int (libvlc_media_player_t *p_mi, unsigned option)
//char * libvlc_video_get_marquee_string (libvlc_media_player_t *p_mi, unsigned option)
//void libvlc_video_set_marquee_int (libvlc_media_player_t *p_mi, unsigned option, int i_val)
//void libvlc_video_set_marquee_string (libvlc_media_player_t *p_mi, unsigned option, const char *psz_text)
//int libvlc_video_get_logo_int (libvlc_media_player_t *p_mi, unsigned option)
//void libvlc_video_set_logo_int (libvlc_media_player_t *p_mi, unsigned option, int value)
//void libvlc_video_set_logo_string (libvlc_media_player_t *p_mi, unsigned option, const char *psz_value)
//int libvlc_video_get_adjust_int (libvlc_media_player_t *p_mi, unsigned option)
//void libvlc_video_set_adjust_int (libvlc_media_player_t *p_mi, unsigned option, int value)
//float libvlc_video_get_adjust_float (libvlc_media_player_t *p_mi, unsigned option)
//void libvlc_video_set_adjust_float (libvlc_media_player_t *p_mi, unsigned option, float value)
} // class LibVLCLibrary
}