1 /*****************************************************************************
2 * vlccontrol.h: ActiveX control for VLC
3 *****************************************************************************
4 * Copyright (C) 2006 the VideoLAN team
6 * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
7 * Jean-Paul Saman <jpsaman _at_ m2x _dot_ nl>
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License along
20 * with this program; if not, write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22 *****************************************************************************/
24 #ifndef _VLCCONTROL2_H_
25 #define _VLCCONTROL2_H_
27 #include "axvlc_idl.h"
29 #include <vlc/libvlc.h>
32 class VLCAudio : public IVLCAudio
35 VLCAudio(VLCPlugin *p_instance) :
36 _p_instance(p_instance), _p_typeinfo(NULL) {};
40 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
44 if( (IID_IUnknown == riid)
45 || (IID_IDispatch == riid)
46 || (IID_IVLCAudio == riid) )
49 *ppv = reinterpret_cast<LPVOID>(this);
52 // behaves as a standalone object
56 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
57 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
60 STDMETHODIMP GetTypeInfoCount(UINT*);
61 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
62 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
63 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
66 STDMETHODIMP get_mute(VARIANT_BOOL*);
67 STDMETHODIMP put_mute(VARIANT_BOOL);
68 STDMETHODIMP get_volume(long*);
69 STDMETHODIMP put_volume(long);
70 STDMETHODIMP get_track(long*);
71 STDMETHODIMP put_track(long);
72 STDMETHODIMP get_count(long*);
73 STDMETHODIMP get_channel(long*);
74 STDMETHODIMP put_channel(long);
75 STDMETHODIMP toggleMute();
76 STDMETHODIMP description(long, BSTR*);
79 HRESULT loadTypeInfo();
80 HRESULT exception_bridge(libvlc_exception_t *ex);
83 VLCPlugin* _p_instance;
84 ITypeInfo* _p_typeinfo;
88 class VLCInput : public IVLCInput
92 VLCInput(VLCPlugin *p_instance) :
93 _p_instance(p_instance), _p_typeinfo(NULL) {};
97 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
101 if( (IID_IUnknown == riid)
102 || (IID_IDispatch == riid)
103 || (IID_IVLCInput == riid) )
106 *ppv = reinterpret_cast<LPVOID>(this);
109 // behaves as a standalone object
110 return E_NOINTERFACE;
113 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
114 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
117 STDMETHODIMP GetTypeInfoCount(UINT*);
118 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
119 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
120 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
123 STDMETHODIMP get_length(double*);
124 STDMETHODIMP get_position(double*);
125 STDMETHODIMP put_position(double);
126 STDMETHODIMP get_time(double*);
127 STDMETHODIMP put_time(double);
128 STDMETHODIMP get_state(long*);
129 STDMETHODIMP get_rate(double*);
130 STDMETHODIMP put_rate(double);
131 STDMETHODIMP get_fps(double*);
132 STDMETHODIMP get_hasVout(VARIANT_BOOL*);
135 HRESULT loadTypeInfo();
136 HRESULT exception_bridge(libvlc_exception_t *ex);
139 VLCPlugin* _p_instance;
140 ITypeInfo* _p_typeinfo;
144 class VLCMessage: public IVLCMessage
148 VLCMessage(VLCPlugin *p_instance, struct libvlc_log_message_t &msg) :
149 _p_instance(p_instance),
153 virtual ~VLCMessage();
156 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
160 if( (IID_IUnknown == riid)
161 || (IID_IDispatch == riid)
162 || (IID_IVLCMessage == riid) )
165 *ppv = reinterpret_cast<LPVOID>(this);
168 // behaves as a standalone object
169 return E_NOINTERFACE;
172 STDMETHODIMP_(ULONG) AddRef(void) { return InterlockedIncrement(&_refcount); };
173 STDMETHODIMP_(ULONG) Release(void)
175 ULONG refcount = InterlockedDecrement(&_refcount);
185 STDMETHODIMP GetTypeInfoCount(UINT*);
186 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
187 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
188 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
190 // IVLCMessage methods
191 STDMETHODIMP get__Value(VARIANT *);
192 STDMETHODIMP get_severity(long *);
193 STDMETHODIMP get_type(BSTR *);
194 STDMETHODIMP get_name(BSTR *);
195 STDMETHODIMP get_header(BSTR *);
196 STDMETHODIMP get_message(BSTR *);
199 HRESULT loadTypeInfo();
202 VLCPlugin* _p_instance;
203 ITypeInfo* _p_typeinfo;
206 struct libvlc_log_message_t _msg;
211 class VLCMessageIterator : public IVLCMessageIterator
215 VLCMessageIterator(VLCPlugin *p_instance, VLCLog* p_vlclog);
216 virtual ~VLCMessageIterator();
219 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
223 if( (IID_IUnknown == riid)
224 || (IID_IDispatch == riid)
225 || (IID_IVLCMessageIterator == riid) )
228 *ppv = reinterpret_cast<LPVOID>(this);
231 // behaves as a standalone object
232 return E_NOINTERFACE;
235 STDMETHODIMP_(ULONG) AddRef(void) { return InterlockedIncrement(&_refcount); };
236 STDMETHODIMP_(ULONG) Release(void)
238 ULONG refcount = InterlockedDecrement(&_refcount);
248 STDMETHODIMP GetTypeInfoCount(UINT*);
249 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
250 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
251 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
253 // IVLCMessageIterator methods
254 STDMETHODIMP get_hasNext(VARIANT_BOOL*);
255 STDMETHODIMP next(IVLCMessage**);
258 HRESULT loadTypeInfo();
259 HRESULT exception_bridge(libvlc_exception_t *ex);
262 VLCPlugin* _p_instance;
263 ITypeInfo* _p_typeinfo;
267 libvlc_log_iterator_t* _p_iter;
270 class VLCMessages : public IVLCMessages
274 VLCMessages(VLCPlugin *p_instance, VLCLog *p_vlclog) :
276 _p_instance(p_instance),
278 virtual ~VLCMessages();
281 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
285 if( (IID_IUnknown == riid)
286 || (IID_IDispatch == riid)
287 || (IID_IVLCMessages == riid) )
290 *ppv = reinterpret_cast<LPVOID>(this);
293 // behaves as a standalone object
294 return E_NOINTERFACE;
297 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
298 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
301 STDMETHODIMP GetTypeInfoCount(UINT*);
302 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
303 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
304 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
306 // IVLCMessages methods
307 STDMETHODIMP get__NewEnum(LPUNKNOWN*);
308 STDMETHODIMP clear();
309 STDMETHODIMP get_count(long*);
310 STDMETHODIMP iterator(IVLCMessageIterator**);
313 HRESULT loadTypeInfo();
314 HRESULT exception_bridge(libvlc_exception_t *ex);
319 VLCPlugin* _p_instance;
320 ITypeInfo* _p_typeinfo;
323 class VLCLog : public IVLCLog
327 friend class VLCMessages;
328 friend class VLCMessageIterator;
330 VLCLog(VLCPlugin *p_instance) :
332 _p_instance(p_instance),
336 _p_vlcmessages = new VLCMessages(p_instance, this);
341 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
345 if( (IID_IUnknown == riid)
346 || (IID_IDispatch == riid)
347 || (IID_IVLCLog == riid) )
350 *ppv = reinterpret_cast<LPVOID>(this);
353 // behaves as a standalone object
354 return E_NOINTERFACE;
357 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
358 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
361 STDMETHODIMP GetTypeInfoCount(UINT*);
362 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
363 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
364 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
367 STDMETHODIMP get_messages(IVLCMessages**);
368 STDMETHODIMP get_verbosity(long *);
369 STDMETHODIMP put_verbosity(long);
372 HRESULT loadTypeInfo();
373 HRESULT exception_bridge(libvlc_exception_t *ex);
375 libvlc_log_t *_p_log;
378 VLCPlugin* _p_instance;
379 ITypeInfo* _p_typeinfo;
381 VLCMessages* _p_vlcmessages;
384 class VLCMarquee : public IVLCMarquee
387 VLCMarquee(VLCPlugin *p_instance) :
388 _p_instance(p_instance), _p_typeinfo(NULL) {};
389 virtual ~VLCMarquee();
392 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
396 if( (IID_IUnknown == riid)
397 || (IID_IDispatch == riid)
398 || (IID_IVLCMarquee == riid) )
401 *ppv = reinterpret_cast<LPVOID>(this);
404 // behaves as a standalone object
405 return E_NOINTERFACE;
408 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
409 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
412 STDMETHODIMP GetTypeInfoCount(UINT*);
413 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
414 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
415 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
417 // IVLCMarquee methods
418 STDMETHODIMP enable() { return do_put_int(libvlc_marquee_Enable, true); }
419 STDMETHODIMP disable() { return do_put_int(libvlc_marquee_Enable, false); }
421 STDMETHODIMP get_text(BSTR *);
422 STDMETHODIMP put_text(BSTR);
423 STDMETHODIMP get_position(BSTR *);
424 STDMETHODIMP put_position(BSTR);
426 #define PROP_INT( a, b ) \
427 STDMETHODIMP get_##a(LONG *val) { return do_get_int(b,val); } \
428 STDMETHODIMP put_##a(LONG val) { return do_put_int(b,val); }
430 PROP_INT( color, libvlc_marquee_Color )
431 PROP_INT( opacity, libvlc_marquee_Opacity )
432 PROP_INT( refresh, libvlc_marquee_Refresh )
433 PROP_INT( size, libvlc_marquee_Size )
434 PROP_INT( timeout, libvlc_marquee_Timeout )
435 PROP_INT( x, libvlc_marquee_X )
436 PROP_INT( y, libvlc_marquee_Y )
441 HRESULT loadTypeInfo();
442 HRESULT exception_bridge(libvlc_exception_t *ex);
444 VLCPlugin* _p_instance;
445 ITypeInfo* _p_typeinfo;
447 HRESULT do_put_int(unsigned idx, LONG val);
448 HRESULT do_get_int(unsigned idx, LONG *val);
452 class VLCLogo : public IVLCLogo
455 VLCLogo(VLCPlugin *p): _p_instance(p), _p_typeinfo(NULL) { }
456 virtual ~VLCLogo() { if( _p_typeinfo ) _p_typeinfo->Release(); }
459 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
463 if( (IID_IUnknown == riid)
464 || (IID_IDispatch == riid)
465 || (IID_IVLCLogo == riid) )
468 *ppv = reinterpret_cast<LPVOID>(this);
471 // behaves as a standalone object
472 return E_NOINTERFACE;
475 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); }
476 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); }
479 STDMETHODIMP GetTypeInfoCount(UINT*);
480 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
481 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
482 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
484 STDMETHODIMP enable() { return do_put_int(libvlc_logo_enable, true); }
485 STDMETHODIMP disable() { return do_put_int(libvlc_logo_enable, false); }
487 STDMETHODIMP file(BSTR fname);
489 #define PROP_INT( a ) \
490 STDMETHODIMP get_##a(LONG *val) \
491 { return do_get_int(libvlc_logo_##a,val); } \
492 STDMETHODIMP put_##a(LONG val) \
493 { return do_put_int(libvlc_logo_##a,val); }
503 STDMETHODIMP get_position(BSTR* val);
504 STDMETHODIMP put_position(BSTR val);
507 HRESULT loadTypeInfo();
508 HRESULT exception_bridge(libvlc_exception_t *ex);
511 VLCPlugin* _p_instance;
512 ITypeInfo* _p_typeinfo;
514 HRESULT do_put_int(unsigned idx, LONG val);
515 HRESULT do_get_int(unsigned idx, LONG *val);
518 class VLCPlaylistItems : public IVLCPlaylistItems
521 VLCPlaylistItems(VLCPlugin *p_instance) :
522 _p_instance(p_instance), _p_typeinfo(NULL) {};
523 virtual ~VLCPlaylistItems();
526 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
530 if( (IID_IUnknown == riid)
531 || (IID_IDispatch == riid)
532 || (IID_IVLCPlaylistItems == riid) )
535 *ppv = reinterpret_cast<LPVOID>(this);
538 // behaves as a standalone object
539 return E_NOINTERFACE;
542 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
543 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
546 STDMETHODIMP GetTypeInfoCount(UINT*);
547 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
548 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
549 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
551 // IVLCPlaylistItems methods
552 STDMETHODIMP get_count(long*);
553 STDMETHODIMP clear();
554 STDMETHODIMP remove(long);
557 HRESULT loadTypeInfo();
558 HRESULT exception_bridge(libvlc_exception_t *ex);
561 VLCPlugin* _p_instance;
562 ITypeInfo* _p_typeinfo;
566 class VLCPlaylist : public IVLCPlaylist
569 VLCPlaylist(VLCPlugin *p_instance) :
570 _p_instance(p_instance),
572 _p_vlcplaylistitems(NULL)
574 _p_vlcplaylistitems = new VLCPlaylistItems(p_instance);
576 virtual ~VLCPlaylist();
579 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
583 if( (IID_IUnknown == riid)
584 || (IID_IDispatch == riid)
585 || (IID_IVLCPlaylist == riid) )
588 *ppv = reinterpret_cast<LPVOID>(this);
591 // behaves as a standalone object
592 return E_NOINTERFACE;
595 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
596 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
599 STDMETHODIMP GetTypeInfoCount(UINT*);
600 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
601 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
602 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
604 // IVLCPlaylist methods
605 STDMETHODIMP get_itemCount(long*);
606 STDMETHODIMP get_isPlaying(VARIANT_BOOL*);
607 STDMETHODIMP add(BSTR, VARIANT, VARIANT, long*);
609 STDMETHODIMP playItem(long);
610 STDMETHODIMP togglePause();
614 STDMETHODIMP clear();
615 STDMETHODIMP removeItem(long);
616 STDMETHODIMP get_items(IVLCPlaylistItems**);
619 HRESULT loadTypeInfo();
620 HRESULT exception_bridge(libvlc_exception_t *ex);
623 VLCPlugin* _p_instance;
624 ITypeInfo* _p_typeinfo;
626 VLCPlaylistItems* _p_vlcplaylistitems;
629 class VLCSubtitle : public IVLCSubtitle
632 VLCSubtitle(VLCPlugin *p_instance) :
633 _p_instance(p_instance), _p_typeinfo(NULL) {};
634 virtual ~VLCSubtitle();
637 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
641 if( (IID_IUnknown == riid)
642 || (IID_IDispatch == riid)
643 || (IID_IVLCSubtitle == riid) )
646 *ppv = reinterpret_cast<LPVOID>(this);
649 // behaves as a standalone object
650 return E_NOINTERFACE;
653 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
654 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
657 STDMETHODIMP GetTypeInfoCount(UINT*);
658 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
659 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
660 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
662 // IVLCSubtitle methods
663 STDMETHODIMP get_track(long*);
664 STDMETHODIMP put_track(long);
665 STDMETHODIMP get_count(long*);
666 STDMETHODIMP description(long, BSTR*);
669 HRESULT loadTypeInfo();
670 HRESULT exception_bridge(libvlc_exception_t *ex);
673 VLCPlugin* _p_instance;
674 ITypeInfo* _p_typeinfo;
678 class VLCVideo : public IVLCVideo
681 VLCVideo(VLCPlugin *p_instance) :
682 _p_instance(p_instance),
684 _p_vlcmarquee(new VLCMarquee(p_instance)),
685 _p_vlclogo(new VLCLogo(p_instance)) { }
689 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
693 if( (IID_IUnknown == riid)
694 || (IID_IDispatch == riid)
695 || (IID_IVLCVideo == riid) )
698 *ppv = reinterpret_cast<LPVOID>(this);
701 // behaves as a standalone object
702 return E_NOINTERFACE;
705 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
706 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
709 STDMETHODIMP GetTypeInfoCount(UINT*);
710 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
711 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
712 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
715 STDMETHODIMP get_fullscreen(VARIANT_BOOL*);
716 STDMETHODIMP put_fullscreen(VARIANT_BOOL);
717 STDMETHODIMP get_width(long*);
718 STDMETHODIMP get_height(long*);
719 STDMETHODIMP get_aspectRatio(BSTR*);
720 STDMETHODIMP put_aspectRatio(BSTR);
721 STDMETHODIMP get_subtitle(long*);
722 STDMETHODIMP put_subtitle(long);
723 STDMETHODIMP get_crop(BSTR*);
724 STDMETHODIMP put_crop(BSTR);
725 STDMETHODIMP get_teletext(long*);
726 STDMETHODIMP put_teletext(long);
727 STDMETHODIMP get_marquee(IVLCMarquee**);
728 STDMETHODIMP get_logo(IVLCLogo**);
729 STDMETHODIMP deinterlaceDisable();
730 STDMETHODIMP deinterlaceEnable(BSTR);
731 STDMETHODIMP takeSnapshot(LPPICTUREDISP*);
732 STDMETHODIMP toggleFullscreen();
733 STDMETHODIMP toggleTeletext();
736 HRESULT loadTypeInfo();
737 HRESULT exception_bridge(libvlc_exception_t *ex);
740 VLCPlugin* _p_instance;
741 ITypeInfo* _p_typeinfo;
742 VLCMarquee* _p_vlcmarquee;
746 class VLCControl2 : public IVLCControl2
750 VLCControl2(VLCPlugin *p_instance);
751 virtual ~VLCControl2();
754 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
758 if( (IID_IUnknown == riid)
759 || (IID_IDispatch == riid)
760 || (IID_IVLCControl2 == riid) )
763 *ppv = reinterpret_cast<LPVOID>(this);
766 return _p_instance->pUnkOuter->QueryInterface(riid, ppv);
769 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
770 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
773 STDMETHODIMP GetTypeInfoCount(UINT*);
774 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
775 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
776 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
778 // IVLCControl2 methods
779 STDMETHODIMP get_AutoLoop(VARIANT_BOOL *autoloop);
780 STDMETHODIMP put_AutoLoop(VARIANT_BOOL autoloop);
781 STDMETHODIMP get_AutoPlay(VARIANT_BOOL *autoplay);
782 STDMETHODIMP put_AutoPlay(VARIANT_BOOL autoplay);
783 STDMETHODIMP get_BaseURL(BSTR *url);
784 STDMETHODIMP put_BaseURL(BSTR url);
785 STDMETHODIMP get_MRL(BSTR *mrl);
786 STDMETHODIMP put_MRL(BSTR mrl);
787 STDMETHODIMP get_Toolbar(VARIANT_BOOL *visible);
788 STDMETHODIMP put_Toolbar(VARIANT_BOOL visible);
789 STDMETHODIMP get_StartTime(long *seconds);
790 STDMETHODIMP put_StartTime(long seconds);
791 STDMETHODIMP get_VersionInfo(BSTR *version);
792 STDMETHODIMP get_Visible(VARIANT_BOOL *visible);
793 STDMETHODIMP put_Visible(VARIANT_BOOL visible);
794 STDMETHODIMP get_Volume(long *volume);
795 STDMETHODIMP put_Volume(long volume);
796 STDMETHODIMP get_BackColor(OLE_COLOR *backcolor);
797 STDMETHODIMP put_BackColor(OLE_COLOR backcolor);
799 STDMETHODIMP get_audio(IVLCAudio**);
800 STDMETHODIMP get_input(IVLCInput**);
801 STDMETHODIMP get_log(IVLCLog**);
802 STDMETHODIMP get_playlist(IVLCPlaylist**);
803 STDMETHODIMP get_subtitle(IVLCSubtitle**);
804 STDMETHODIMP get_video(IVLCVideo**);
807 HRESULT loadTypeInfo();
810 VLCPlugin* _p_instance;
811 ITypeInfo* _p_typeinfo;
813 VLCAudio* _p_vlcaudio;
814 VLCInput* _p_vlcinput;
816 VLCPlaylist* _p_vlcplaylist;
817 VLCSubtitle* _p_vlcsubtitle;
818 VLCVideo* _p_vlcvideo;