]> git.sesse.net Git - vlc/blob - projects/activex/axvlc.idl
activex: missing media_list lock/unlock
[vlc] / projects / activex / axvlc.idl
1 /*****************************************************************************\r
2  * axvlc.idl: ActiveX control for VLC\r
3  *****************************************************************************\r
4  * Copyright (C) 2006 the VideoLAN team\r
5  * Copyright (C) 2010 M2X BV\r
6  *\r
7  * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>\r
8  *          Jean-Paul Saman <jpsaman _at_ m2x _dot_ nl>\r
9  *\r
10  * This program is free software; you can redistribute it and/or modify\r
11  * it under the terms of the GNU General Public License as published by\r
12  * the Free Software Foundation; either version 2 of the License, or\r
13  * (at your option) any later version.\r
14  *\r
15  * This program is distributed in the hope that it will be useful,\r
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
18  * GNU General Public License for more details.\r
19  *\r
20  * You should have received a copy of the GNU General Public License\r
21  * along with this program; if not, write to the Free Software\r
22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.\r
23  *****************************************************************************/\r
24 \r
25 // comments terminated by [t] are by tonsofpcs, regarding the string\r
26 // review. April 02, 2006. [t]\r
27 // Possibly change all instances of "the current playlist" to "the\r
28 // playlist" and "current playlist" to "the playlist" [t]\r
29 \r
30 import "ocidl.idl";\r
31 \r
32 [\r
33   uuid(DF2BBE39-40A8-433b-A279-073F48DA94B6),\r
34   version(1.0),\r
35   helpstring("VideoLAN VLC ActiveX Plugin")\r
36 ]\r
37 library AXVLC\r
38 {\r
39     // Forward declare all types defined in this typelib\r
40     interface IVLCControl;\r
41     interface IVLCAudio;\r
42     interface IVLCInput;\r
43     interface IVLCLogo;\r
44     interface IVLCDeinterlace;\r
45     interface IVLCMarquee;\r
46     interface IVLCPlaylist;\r
47     interface IVLCSubtitle;\r
48     interface IVLCVideo;\r
49     interface IVLCControl2;\r
50     dispinterface DVLCEvents;\r
51 \r
52     importlib("stdole2.tlb");\r
53 \r
54     typedef [public] enum VLCPlaylistMode\r
55     {\r
56         VLCPlayListInsert       =  1,\r
57         VLCPlayListInsertAndGo  =  9,\r
58         VLCPlayListReplace      =  2,\r
59         VLCPlayListReplaceAndGo = 10,\r
60         VLCPlayListAppend       =  4,\r
61         VLCPlayListAppendAndGo  = 12,\r
62         VLCPlayListCheckInsert  = 16\r
63     } eVLCPlaylistMode;\r
64 \r
65     // playlist target position\r
66     const int VLCPlayListEnd    = -666;\r
67 \r
68     // DISPID definitions\r
69     const int DISPID_BackColor  = -501;\r
70 \r
71     const int DISPID_Visible    = 100;\r
72     const int DISPID_Playing    = 101;\r
73     const int DISPID_Position   = 102;\r
74     const int DISPID_Time       = 103;\r
75     const int DISPID_Length     = 104;\r
76     const int DISPID_Volume     = 105;\r
77     const int DISPID_MRL        = 106;\r
78     const int DISPID_AutoPlay   = 107;\r
79     const int DISPID_AutoLoop   = 108;\r
80     const int DISPID_StartTime  = 109;\r
81     const int DISPID_BaseURL    = 110;\r
82     const int DISPID_Toolbar     = 111;\r
83 \r
84     [\r
85       odl,\r
86       uuid(C2FA41D0-B113-476e-AC8C-9BD14999C1C1),\r
87       helpstring("VLC Control (deprecated)"),\r
88       dual,\r
89       oleautomation\r
90     ]\r
91     interface IVLCControl : IDispatch\r
92     {\r
93         [id(DISPID_Visible), propget, bindable, helpstring("Returns/sets a value that determines whether viewing area is visible or hidden.")]\r
94         HRESULT Visible([out, retval] VARIANT_BOOL* visible);\r
95         [id(DISPID_Visible), propput, bindable, helpstring("Returns/sets a value that determines whether viewing area is visible or hidden.")]\r
96         HRESULT Visible([in] VARIANT_BOOL visible);\r
97         [helpstring("Play current target in playlist.")]\r
98         HRESULT play();\r
99         [helpstring("Pause playback.")]\r
100         HRESULT pause();\r
101         [helpstring("Stop playback.")]\r
102         HRESULT stop();\r
103         [id(DISPID_Playing), hidden, propget, helpstring("Returns a value that determines whether VLC is currently playing.")]\r
104         HRESULT Playing([out, retval] VARIANT_BOOL* isPlaying);\r
105         [id(DISPID_Position), propget, helpstring("Returns/sets playback position within the current item. Position is a relative value ranging from 0.0 to 1.0.")]\r
106         HRESULT Position([out, retval] float* position);\r
107         [id(DISPID_Position), propput, helpstring("Returns/sets playback position within the current item. Position is a relative value ranging from 0.0 to 1.0.")]\r
108         HRESULT Position([in] float position);\r
109         [id(DISPID_Time), propget, helpstring("Returns/sets playback time relative to the start of the current item.")]\r
110         HRESULT Time([out, retval] int* seconds);\r
111         [id(DISPID_Time), propput, helpstring("Returns/sets playback time relative to the start of the current item.")]\r
112         HRESULT Time([in] int seconds);\r
113         [helpstring("Advance or backtrack playback time, relative to current time.")]  //possibly find a better word to replace 'backtrack' [t]\r
114         HRESULT shuttle([in] int seconds);\r
115         [helpstring("Switch video between normal and fullscreen view modes.")]\r
116         HRESULT fullscreen();\r
117         [id(DISPID_Length), propget, hidden, helpstring("Returns the total length, in seconds, of the current item, may be unknown.")]\r
118         HRESULT Length([out, retval] int* seconds);\r
119         [helpstring("Increases playback speed. Possible speeds are: 1x, 2x, 4x, 8x.")]\r
120         HRESULT playFaster();\r
121         [helpstring("Decreases playback speed. Possible speeds are: 1x, 2x, 4x, 8x.")]\r
122         HRESULT playSlower();\r
123         [id(DISPID_Volume), propget, helpstring("Returns/sets playback volume, ranges from 0 to 200%.")]  //possibly remove % from 'ranges', change to 'values', and specify that 200 is equivilant to 200% (remember, 200% == 2.0, but this gets an int not a float) [t]\r
124         HRESULT Volume([out, retval] int* volume);\r
125         [id(DISPID_Volume), propput, helpstring("Returns/sets playback volume, ranges from 0 to 200%.")]\r
126         HRESULT Volume([in] int volume);\r
127         [helpstring("Mute/unmute playback audio.")]\r
128         HRESULT toggleMute();\r
129         [helpstring("Sets the value of a VLC variable.")]\r
130         HRESULT setVariable([in] BSTR name, [in] VARIANT value);\r
131         [helpstring("Returns the value of a VLC variable.")]\r
132         HRESULT getVariable([in] BSTR name, [out, retval] VARIANT *value);\r
133 \r
134 /*\r
135 ** use VARIANT rather than a SAFEARRAY as argument type\r
136 ** for compatibility with some scripting language (JScript)\r
137 */\r
138 \r
139         [helpstring("Add an item to the playlist.")]\r
140         HRESULT addTarget([in] BSTR uri, [in] VARIANT options, [in] enum VLCPlaylistMode mode, [in] int position);\r
141         [propget, helpstring("Returns index of current item in playlist.")]\r
142         HRESULT PlaylistIndex([out, retval] int* index);\r
143         [propget, helpstring("Returns number of items in playlist.")]\r
144         HRESULT PlaylistCount([out, retval] int* index);\r
145         [helpstring("Advance to next item in playlist.")]\r
146         HRESULT playlistNext();\r
147         [helpstring("Advance to previous item in playlist.")]\r
148         HRESULT playlistPrev();\r
149         [helpstring("Remove all items from playlist.")]\r
150         HRESULT playlistClear();\r
151         [propget, hidden, helpstring("Returns VLC Version.")]\r
152         HRESULT VersionInfo([out, retval] BSTR* version);\r
153         [id(DISPID_MRL), propget, helpstring("Returns/sets the first MRL in playlist, used for AutoPlay")]\r
154         HRESULT MRL([out, retval] BSTR* mrl);\r
155         [id(DISPID_MRL), propput, helpstring("Returns/sets the first MRL in playlist, used for AutoPlay")]\r
156         HRESULT MRL([in] BSTR mrl);\r
157         [id(DISPID_AutoPlay), propget, helpstring("Returns/sets a value that determines whether the playlist is played on startup")]\r
158         HRESULT AutoPlay([out, retval] VARIANT_BOOL* autoplay);\r
159         [id(DISPID_AutoPlay), propput, helpstring("Returns/Sets a value that determines whether the playlist is played on startup")]\r
160         HRESULT AutoPlay([in] VARIANT_BOOL autoplay);\r
161         [id(DISPID_AutoLoop), propget, helpstring("Returns/sets a value that determines whether the playlist is looped")]\r
162         HRESULT AutoLoop([out, retval] VARIANT_BOOL* autoloop);\r
163         [id(DISPID_AutoLoop), propput, helpstring("Returns/sets a value that determines whether the playlist is looped")]\r
164         HRESULT AutoLoop([in] VARIANT_BOOL autoloop);\r
165     };\r
166 \r
167     const int DISPID_PlayEvent  = 100;\r
168     const int DISPID_PauseEvent = 101;\r
169     const int DISPID_StopEvent  = 102;\r
170 \r
171     /* async events from libvlc */\r
172     const int DISPID_NothingSpecialEvent = 200;\r
173     const int DISPID_OpeningEvent = 201;\r
174     const int DISPID_BufferingEvent = 202;\r
175     const int DISPID_PlayingEvent = 203;\r
176     const int DISPID_PausedEvent = 204;\r
177     const int DISPID_ForwardEvent = 205;\r
178     const int DISPID_BackwardEvent = 206;\r
179     const int DISPID_EncounteredErrorEvent = 207;\r
180     const int DISPID_EndReachedEvent = 208;\r
181     const int DISPID_StoppedEvent = 209;\r
182 \r
183     const int DISPID_TimeChangedEvent = 210;\r
184     const int DISPID_PositionChangedEvent = 211;\r
185     const int DISPID_SeekableChangedEvent = 212;\r
186     const int DISPID_PausableChangedEvent = 213;\r
187 \r
188     const int DISPID_MouseButtonEvent = 214;\r
189     const int DISPID_MouseMovedEvent = 215;\r
190     const int DISPID_MouseClickedEvent = 216;\r
191     const int DISPID_MouseObjectEvent = 217;\r
192 \r
193     [\r
194       uuid(DF48072F-5EF8-434e-9B40-E2F3AE759B5F),\r
195       helpstring("Event interface for VLC control"),\r
196     ]\r
197     dispinterface DVLCEvents\r
198     {\r
199         properties:\r
200         methods:\r
201             [id(DISPID_PlayEvent), helpstring("Playing")]\r
202             void play();\r
203             [id(DISPID_PauseEvent), helpstring("Paused")]\r
204             void pause();\r
205             [id(DISPID_StopEvent), helpstring("Stopped")]\r
206             void stop();\r
207 \r
208             /* asyn events from libvlc */\r
209             [id(DISPID_NothingSpecialEvent), helpstring("Idle state")]\r
210             void idle();\r
211             [id(DISPID_OpeningEvent), helpstring("Opening media")]\r
212             void opening();\r
213             [id(DISPID_BufferingEvent), helpstring("Buffering media")]\r
214             void buffering();\r
215             [id(DISPID_PlayingEvent), helpstring("Media is playing")]\r
216             void playing();\r
217             [id(DISPID_PausedEvent), helpstring("Media is paused")]\r
218             void paused();\r
219             [id(DISPID_ForwardEvent), helpstring("Forward playback")]\r
220             void forward();\r
221             [id(DISPID_BackwardEvent), helpstring("Backward playback")]\r
222             void backward();\r
223             [id(DISPID_EncounteredErrorEvent), helpstring("An error has been encountered")]\r
224             void error();\r
225             [id(DISPID_EndReachedEvent), helpstring("End of playback reached")]\r
226             void ended();\r
227             [id(DISPID_StoppedEvent), helpstring("Playback stopped")]\r
228             void stopped();\r
229 \r
230             [id(DISPID_TimeChangedEvent), helpstring("Time changed")]\r
231             void TimeChanged([in] long time);\r
232             [id(DISPID_PositionChangedEvent), helpstring("Position changed")]\r
233             void PositionChanged([in] long position);\r
234             [id(DISPID_SeekableChangedEvent), helpstring("Seek changed")]\r
235             void SeekableChanged([in] VARIANT_BOOL seekable);\r
236             [id(DISPID_PausableChangedEvent), helpstring("Pause setting changed")]\r
237             void PausableChanged([in] VARIANT_BOOL pausable);\r
238 \r
239             [id(DISPID_MouseButtonEvent), helpstring("Mouse button pressed")]\r
240             void MouseButton([in] VARIANT_BOOL btn_right, [in] VARIANT_BOOL btn_center,\r
241                 [in] VARIANT_BOOL btn_left, [in] VARIANT_BOOL btn_wheel_up,\r
242                 [in] VARIANT_BOOL bnt_wheel_down);\r
243             [id(DISPID_MouseMovedEvent), helpstring("Mouse moved")]\r
244             void MouseMoved([in] long x, [in] long y);\r
245             [id(DISPID_MouseClickedEvent), helpstring("Mouse clicked")]\r
246             void MouseClicked([in] VARIANT_BOOL clicked);\r
247             [id(DISPID_MouseObjectEvent), helpstring("Mouse selected holds object")]\r
248             void MouseObject([in] VARIANT_BOOL moved);\r
249     };\r
250 \r
251     [\r
252       odl,\r
253       uuid(9E0BD17B-2D3C-4656-B94D-03084F3FD9D4),\r
254       helpstring("VLC Audio APIs"),\r
255       dual,\r
256       oleautomation\r
257     ]\r
258     interface IVLCAudio : IDispatch\r
259     {\r
260         [propget, helpstring("Returns/sets the audio mute state.")]\r
261         HRESULT mute([out, retval] VARIANT_BOOL* muted);\r
262         [propput, helpstring("Returns/sets the audio mute state.")]\r
263         HRESULT mute([in] VARIANT_BOOL muted);\r
264 \r
265         [propget, helpstring("Returns/sets audio volume as a percent value.")]\r
266         HRESULT volume([out, retval] long* volume);\r
267         [propput, helpstring("Returns/sets audio volume as a percent value.")]\r
268         HRESULT volume([in] long volume);\r
269 \r
270         [helpstring("Mute/unmute audio playback.")]\r
271         HRESULT toggleMute();\r
272 \r
273         [propget, helpstring("Returns/sets audio track used/to use.")]\r
274         HRESULT track([out, retval] long* track);\r
275         [propput, helpstring("Returns/sets audio track used/to use.")]\r
276         HRESULT track([in] long track);\r
277 \r
278         [propget, helpstring("Returns the number of audio tracks available.")]\r
279         HRESULT count([out, retval] long* trackNumber);\r
280         [helpstring("Returns audio track name.")]\r
281         HRESULT description([in] long trackID, [out, retval] BSTR* name);\r
282 \r
283         [propget, helpstring("Returns audio channel [1-5] indicating; stereo, reverse stereo, left, right, dolby.")]\r
284         HRESULT channel([out, retval] long* channel);\r
285         [propput, helpstring("Sets audio channel to [1-5] indicating; stereo, reverse stereo, left, right, dolby.")]\r
286         HRESULT channel([in] long channel);\r
287     };\r
288 \r
289     [\r
290       odl,\r
291       uuid(49E0DBD1-9440-466C-9C97-95C67190C603),\r
292       helpstring("VLC Input APIs"),\r
293       dual,\r
294       oleautomation\r
295     ]\r
296     interface IVLCInput : IDispatch\r
297     {\r
298         [propget, helpstring("Returns the clip length, in milliseconds.")]\r
299         HRESULT length([out, retval] double* length);\r
300 \r
301         [propget, helpstring("Returns/sets playback position in current clip.  Position is ranging from 0.0 to 1.0.")]\r
302         HRESULT position([out, retval] double* position);\r
303         [propput, helpstring("Returns/sets playback position in the current clip.  Position ranging from 0.0 to 1.0.")]\r
304         HRESULT position([in] double position);\r
305 \r
306         [propget, helpstring("Returns/sets playback time in current clip, in milliseconds.")]\r
307         HRESULT time([out, retval] double* time);\r
308         [propput, helpstring("Returns/sets playback time in the current clip, in milliseconds.")]\r
309         HRESULT time([in] double time);\r
310 \r
311         [propget, helpstring("Returns current playback state.")]\r
312         HRESULT state([out, retval] long* state);\r
313 \r
314         [propget, helpstring("Returns/sets current playback rate, normal rate is 1.0 ")]\r
315         HRESULT rate([out, retval] double* rate);\r
316         [propput, helpstring("Returns/sets current playback rate, normal rate is 1.0.")]\r
317         HRESULT rate([in] double rate);\r
318 \r
319         [propget, helpstring("Returns current playback frames per seconds if available.")]\r
320         HRESULT fps([out, retval] double* fps);\r
321 \r
322         [propget, helpstring("Returns whether current playback displays video.")]\r
323         HRESULT hasVout([out, retval] VARIANT_BOOL* hasVout);\r
324     };\r
325 \r
326     [\r
327       odl,\r
328       uuid(FD37FE32-82BC-4A25-B056-315F4DBB194D),\r
329       helpstring("VLC Playlist Items collection"),\r
330       dual,\r
331       oleautomation\r
332     ]\r
333     interface IVLCPlaylistItems : IDispatch\r
334     {\r
335         [propget, helpstring("Returns number of items in playlist.")]\r
336         HRESULT count([out, retval] long* count);\r
337 \r
338         [helpstring("Remove all items from playlist.")]\r
339         HRESULT clear();\r
340 \r
341         [helpstring("remove item from playlist.")]\r
342         HRESULT remove([in] long itemId);\r
343     };\r
344 \r
345     [\r
346       odl,\r
347       uuid(54613049-40BF-4035-9E70-0A9312C0188D),\r
348       helpstring("VLC Playlist APIs"),\r
349       dual,\r
350       oleautomation\r
351     ]\r
352     interface IVLCPlaylist : IDispatch\r
353     {\r
354         [hidden, propget, helpstring("Returns number of items in playlist. (deprecated)")]\r
355         HRESULT itemCount([out, retval] long* count);\r
356 \r
357         [propget, helpstring("Returns whether playback displays video.")]\r
358         HRESULT isPlaying([out, retval] VARIANT_BOOL* playing);\r
359 \r
360         [helpstring("Add a playlist item.")]\r
361         HRESULT add([in] BSTR uri, [in, optional] VARIANT name, [in, optional] VARIANT options, [out, retval] long* itemId);\r
362 \r
363         [helpstring("Play/Resume the playlist.")]\r
364         HRESULT play();\r
365 \r
366         [helpstring("Play item in playlist.")]\r
367         HRESULT playItem([in] long itemId);\r
368 \r
369         [helpstring("Play/Pause current clip.")]\r
370         HRESULT togglePause();\r
371 \r
372         [helpstring("Stop current clip.")]\r
373         HRESULT stop();\r
374 \r
375         [helpstring("Advance to next item in playlist.")]\r
376         HRESULT next();\r
377 \r
378         [helpstring("Advance to previous item in playlist.")]\r
379         HRESULT prev();\r
380 \r
381         [hidden, helpstring("Remove all items from playlist. (deprecated)")]\r
382         HRESULT clear();\r
383 \r
384         [hidden, helpstring("Remove item from playlist. (deprecated)")]\r
385         HRESULT removeItem([in] long item);\r
386 \r
387         [propget, helpstring("Returns the playlist items collection object.")]\r
388         HRESULT items([out, retval] IVLCPlaylistItems** obj);\r
389     };\r
390 \r
391     [\r
392       odl,\r
393       uuid(465E787A-0556-452F-9477-954E4A940003),\r
394       helpstring("VLC Subtitle APIs"),\r
395       dual,\r
396       oleautomation\r
397     ]\r
398     interface IVLCSubtitle : IDispatch\r
399     {\r
400         [propget, helpstring("Returns video subtitle used.")]\r
401         HRESULT track([out, retval] long* spu);\r
402         [propput, helpstring("Sets video subtitle to use.")]\r
403         HRESULT track([in] long spu);\r
404 \r
405         [propget, helpstring("Returns the number of video subtitles available.")]\r
406         HRESULT count([out, retval] long* spuNumber);\r
407         [helpstring("Returns video subtitle name.")]\r
408         HRESULT description([in] long nameID, [out, retval] BSTR* name);\r
409     };\r
410 \r
411     [\r
412       odl,\r
413       uuid(8D076AD6-9B6F-4150-A0FD-5D7E8C8CB02C),\r
414       helpstring("VLC Marquee Filter"),\r
415       dual,\r
416       oleautomation\r
417     ]\r
418     interface IVLCMarquee : IDispatch\r
419     {\r
420         [helpstring("enable Marquee Filter.")]\r
421         HRESULT enable();\r
422         [helpstring("disable Marquee Filter.")]\r
423         HRESULT disable();\r
424 \r
425         [propget, helpstring("Retrieve marquee text.")]\r
426         HRESULT text([out, retval] BSTR* val);\r
427         [propput, helpstring("Change marquee text.")]\r
428         HRESULT text([in] BSTR val);\r
429 \r
430         [propget, helpstring("Retrieve text color.")]\r
431         HRESULT color([out, retval] LONG* val);\r
432         [propput, helpstring("Change text color.")]\r
433         HRESULT color([in] LONG val);\r
434         [propget, helpstring("Retrieve text opacity.")]\r
435         HRESULT opacity([out, retval] LONG* val);\r
436         [propput, helpstring("Set text opacity (0=transparent, 255=opaque).")]\r
437         HRESULT opacity([in] LONG val);\r
438         [propget, helpstring("Retrieve text position.")]\r
439         HRESULT position([out, retval] BSTR* val);\r
440         [propput, helpstring("Text positioning relative to: center, left, right, top, bottom, top-left, top-right, bottom-left, bottom-right.")]\r
441         HRESULT position([in] BSTR val);\r
442         [propget, helpstring("Retrieve text refresh time.")]\r
443         HRESULT refresh([out, retval] LONG* val);\r
444         [propput, helpstring("Set text refresh time.")]\r
445         HRESULT refresh([in] LONG val);\r
446         [propget, helpstring("Retrieve text size.")]\r
447         HRESULT size([out, retval] LONG* val);\r
448         [propput, helpstring("Set text size.")]\r
449         HRESULT size([in] LONG val);\r
450         [propget, helpstring("Retrieve timeout.")]\r
451         HRESULT timeout([out, retval] LONG* val);\r
452         [propput, helpstring("Change timeout.")]\r
453         HRESULT timeout([in] LONG val);\r
454         [propget, helpstring("Retrieve text abcissa.")]\r
455         HRESULT x([out, retval] LONG* val);\r
456         [propput, helpstring("Change text abcissa.")]\r
457         HRESULT x([in] LONG val);\r
458         [propget, helpstring("Retrieve text ordinate.")]\r
459         HRESULT y([out, retval] LONG* val);\r
460         [propput, helpstring("Change text ordinate.")]\r
461         HRESULT y([in] LONG val);\r
462     };\r
463 \r
464     [\r
465       odl,\r
466       uuid(8a4a20c2-93f3-44e8-8644-beb2e3487e84),\r
467       helpstring("VLC Logo Filter"),\r
468       dual,\r
469       oleautomation\r
470     ]\r
471     interface IVLCLogo : IDispatch\r
472     {\r
473         [helpstring("Enable the logo filter.")]\r
474         HRESULT enable();\r
475         [helpstring("Disable the logo filter.")]\r
476         HRESULT disable();\r
477 \r
478         [helpstring("specify input file[[,delay],alpha].")]\r
479         HRESULT file([in] BSTR fname);\r
480 \r
481         [propget, helpstring("")]\r
482         HRESULT delay([out, retval] long* val);\r
483         [propput, helpstring("Set delay-to-next-picture in miliseconds.")]\r
484         HRESULT delay([in] long val);\r
485 \r
486         [propget, helpstring("")]\r
487         HRESULT repeat([out, retval] long* val);\r
488         [propput, helpstring("Repeat: -1 continuous (default), 0 no repeat, ....")]\r
489         HRESULT repeat([in] long val);\r
490 \r
491         [propget, helpstring("Returns the `global' alpha value.")]\r
492         HRESULT opacity([out, retval] long* val);\r
493         [propput, helpstring("Alpha value: 0 opaque to 255 fully transparent")]\r
494         HRESULT opacity([in] long val);\r
495 \r
496         [propget, helpstring("Retrieve picture position.")]\r
497         HRESULT position([out, retval] BSTR* val);\r
498         [propput, helpstring("Picture positioning relative to: center, left, right, top, bottom, top-left, top-right, bottom-left, bottom-right.")]\r
499         HRESULT position([in] BSTR val);\r
500 \r
501         [propget, helpstring("Picture x offset.")]\r
502         HRESULT x([out, retval] long* val);\r
503         [propput, helpstring("Picture x offset.")]\r
504         HRESULT x([in] long val);\r
505         [propget, helpstring("Picture y offset.")]\r
506         HRESULT y([out, retval] long* val);\r
507         [propput, helpstring("Picture y offset.")]\r
508         HRESULT y([in] long val);\r
509 \r
510     };\r
511     [\r
512       odl,\r
513       uuid(bc97469f-cb11-4037-8dce-5fc9f5f85307),\r
514       helpstring("VLC Deinterlace Filter"),\r
515       dual,\r
516       oleautomation\r
517     ]\r
518     interface IVLCDeinterlace : IDispatch\r
519     {\r
520         [helpstring("Enable deinterlace filter and set method.")]\r
521         HRESULT enable([in] BSTR mode);\r
522         [helpstring("Disable deinterlace filter.")]\r
523         HRESULT disable();\r
524 \r
525     };\r
526 \r
527     [\r
528       odl,\r
529       uuid(0AAEDF0B-D333-4B27-A0C6-BBF31413A42E),\r
530       helpstring("VLC Video APIs"),\r
531       dual,\r
532       oleautomation\r
533     ]\r
534     interface IVLCVideo : IDispatch\r
535     {\r
536         [propget, helpstring("Returns/sets the fullscreen state.")]\r
537         HRESULT fullscreen([out, retval] VARIANT_BOOL* fullscreen);\r
538 \r
539         [propput, helpstring("Returns/sets the fullscreen state.")]\r
540         HRESULT fullscreen([in] VARIANT_BOOL fullscreen);\r
541 \r
542         [propget, helpstring("Returns video original width.")]\r
543         HRESULT width([out, retval] long* width);\r
544 \r
545         [propget, helpstring("Returns video original height.")]\r
546         HRESULT height([out, retval] long* height);\r
547 \r
548         [propget, helpstring("Returns video aspect ratio.")]\r
549         HRESULT aspectRatio([out, retval] BSTR* aspect);\r
550         [propput, helpstring("Sets video aspect ratio.")]\r
551         HRESULT aspectRatio([in] BSTR aspect);\r
552 \r
553         [propget, helpstring("Returns video subtitle used.")]\r
554         HRESULT subtitle([out, retval] long* spu);\r
555         [propput, helpstring("Sets video subtitle to use.")]\r
556         HRESULT subtitle([in] long spu);\r
557 \r
558         [propget, helpstring("Returns crop filter geometry.")]\r
559         HRESULT crop([out, retval] BSTR* geometry);\r
560         [propput, helpstring("Sets crop filter geometry.")]\r
561         HRESULT crop([in] BSTR geometry);\r
562 \r
563         [propget, helpstring("Returns teletext page used.")]\r
564         HRESULT teletext([out, retval] long* page);\r
565         [propput, helpstring("Sets teletext page to use.")]\r
566         HRESULT teletext([in] long page);\r
567 \r
568         [helpstring("toggle fullscreen/windowed state.")]\r
569         HRESULT toggleFullscreen();\r
570 \r
571         [helpstring("take video snapshot and save it into picture object.")]\r
572         HRESULT takeSnapshot([out, retval] IPictureDisp** picture);\r
573 \r
574         [helpstring("toggle teletext transparent state.")]\r
575         HRESULT toggleTeletext();\r
576 \r
577         [propget, helpstring("Returns the marquee object.")]\r
578         HRESULT marquee([out, retval] IVLCMarquee** obj);\r
579 \r
580         [propget, helpstring("Returns the logo object.")]\r
581         HRESULT logo([out, retval] IVLCLogo** obj);\r
582 \r
583         [propget, helpstring("Returns the logo object.")]\r
584         HRESULT deinterlace([out, retval] IVLCDeinterlace** obj);\r
585     };\r
586 \r
587     [\r
588       odl,\r
589       uuid(2D719729-5333-406C-BF12-8DE787FD65E3),\r
590       helpstring("VLC Control"),\r
591       dual,\r
592       oleautomation\r
593     ]\r
594     interface IVLCControl2 : IDispatch\r
595     {\r
596         [id(DISPID_AutoLoop), propget, helpstring("Returns/sets a value that determines whether the playlist is looped")]\r
597         HRESULT AutoLoop([out, retval] VARIANT_BOOL* autoloop);\r
598         [id(DISPID_AutoLoop), propput, helpstring("Returns/sets a value that determines whether the playlist is looped")]\r
599         HRESULT AutoLoop([in] VARIANT_BOOL autoloop);\r
600 \r
601         [id(DISPID_AutoPlay), propget, helpstring("Returns/sets a value that determines whether the playlist is played on startup")]\r
602         HRESULT AutoPlay([out, retval] VARIANT_BOOL* autoplay);\r
603         [id(DISPID_AutoPlay), propput, helpstring("Returns/Sets a value that determines whether the playlist is played on startup")]\r
604         HRESULT AutoPlay([in] VARIANT_BOOL autoplay);\r
605 \r
606         [id(DISPID_BaseURL), propget, helpstring("Returns/sets the base URL for relative paths")]\r
607         HRESULT BaseURL([out, retval] BSTR* url);\r
608         [id(DISPID_BaseURL), propput, helpstring("Returns/sets the base URL for relative paths")]\r
609         HRESULT BaseURL([in] BSTR url);\r
610 \r
611         [id(DISPID_StartTime), propget, helpstring("Returns/sets playback start time of URL.")]\r
612         HRESULT StartTime([out, retval] long* seconds);\r
613         [id(DISPID_StartTime), propput, helpstring("Returns/sets playback start time of URL.")]\r
614         HRESULT StartTime([in] long seconds);\r
615 \r
616         [id(DISPID_MRL), propget, helpstring("Returns/sets the default MRL in playlist")]\r
617         HRESULT MRL([out, retval] BSTR* mrl);\r
618         [id(DISPID_MRL), propput, helpstring("Returns/sets the default MRL in playlist")]\r
619         HRESULT MRL([in] BSTR mrl);\r
620 \r
621         [propget, helpstring("Returns VLC Version.")]\r
622         HRESULT VersionInfo([out, retval] BSTR* version);\r
623 \r
624         [id(DISPID_Visible), propget, helpstring("Returns/sets a value that determines whether viewing area is visible or hidden.")]\r
625         HRESULT Visible([out, retval] VARIANT_BOOL* visible);\r
626         [id(DISPID_Visible), propput, helpstring("Returns/sets a value that determines whether viewing area is visible or hidden.")]\r
627         HRESULT Visible([in] VARIANT_BOOL visible);\r
628 \r
629         [id(DISPID_Volume), propget, helpstring("Returns/sets default audio volume.")]\r
630         HRESULT Volume([out, retval] long* volume);\r
631         [id(DISPID_Volume), propput, helpstring("Returns/sets default audio volume.")]\r
632         HRESULT Volume([in] long volume);\r
633 \r
634         [id(DISPID_BackColor), propget, helpstring("Returns/sets background color.")]\r
635         HRESULT BackColor([out, retval] OLE_COLOR* backcolor);\r
636         [id(DISPID_BackColor), propput, helpstring("Returns/sets background color.")]\r
637         HRESULT BackColor([in] OLE_COLOR backcolor);\r
638 \r
639         /*\r
640          * caution: vlcobject.toolbar:bool does not yet exists in Firefox\r
641          * plugin. Official usage is through "toolbar" property for now,\r
642          * which is compatibile with Firefox.\r
643          */\r
644         [id(DISPID_Toolbar), propget, helpstring("Returns/sets visibility of the toolbar")]\r
645         HRESULT Toolbar([out, retval] VARIANT_BOOL* visible);\r
646         [id(DISPID_Toolbar), propput, helpstring("Returns/sets visibility of the toolbar")]\r
647         HRESULT Toolbar([in] VARIANT_BOOL visible);\r
648 \r
649         [propget, helpstring("Returns the audio object.")]\r
650         HRESULT audio([out, retval] IVLCAudio** obj);\r
651 \r
652         [propget, helpstring("Returns the audio object.")]\r
653         HRESULT input([out, retval] IVLCInput** obj);\r
654 \r
655         [propget, helpstring("Returns the playlist object.")]\r
656         HRESULT playlist([out, retval] IVLCPlaylist** obj);\r
657 \r
658         [propget, helpstring("Returns the audio object.")]\r
659         HRESULT subtitle([out, retval] IVLCSubtitle** obj);\r
660 \r
661         [propget, helpstring("Returns the audio object.")]\r
662         HRESULT video([out, retval] IVLCVideo** obj);\r
663     };\r
664 \r
665     [\r
666       uuid(E23FE9C6-778E-49D4-B537-38FCDE4887D8),\r
667       helpstring("VLC control (deprecated)"),\r
668       control\r
669     ]\r
670     coclass VLCPlugin\r
671     {\r
672         [default] interface IVLCControl;\r
673         interface IVLCControl2;\r
674         [default, source] dispinterface DVLCEvents;\r
675     };\r
676 \r
677     [\r
678       uuid(9BE31822-FDAD-461B-AD51-BE1D1C159921),\r
679       helpstring("VLC control"),\r
680       control\r
681     ]\r
682     coclass VLCPlugin2\r
683     {\r
684         [default] interface IVLCControl2;\r
685         interface IVLCControl;\r
686         [default, source] dispinterface DVLCEvents;\r
687     };\r
688 };\r