vlccontrol2.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:18k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * vlccontrol.h: ActiveX control for VLC
  3.  *****************************************************************************
  4.  * Copyright (C) 2006 the VideoLAN team
  5.  *
  6.  * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
  7.  *          Jean-Paul Saman <jpsaman _at_ m2x _dot_ nl>
  8.  *
  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.
  13.  *
  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.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22.  *****************************************************************************/
  23. #ifndef _VLCCONTROL2_H_
  24. #define _VLCCONTROL2_H_
  25. #include "axvlc_idl.h"
  26. #include <vlc/libvlc.h>
  27. class VLCAudio : public IVLCAudio
  28. {
  29. public:
  30.     VLCAudio(VLCPlugin *p_instance) :
  31.         _p_instance(p_instance), _p_typeinfo(NULL) {};
  32.     virtual ~VLCAudio();
  33.     // IUnknown methods
  34.     STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
  35.     {
  36.         if( NULL == ppv )
  37.           return E_POINTER;
  38.         if( (IID_IUnknown == riid)
  39.          || (IID_IDispatch == riid)
  40.          || (IID_IVLCAudio == riid) )
  41.         {
  42.             AddRef();
  43.             *ppv = reinterpret_cast<LPVOID>(this);
  44.             return NOERROR;
  45.         }
  46.         // behaves as a standalone object
  47.         return E_NOINTERFACE;
  48.     };
  49.     STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
  50.     STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
  51.     // IDispatch methods
  52.     STDMETHODIMP GetTypeInfoCount(UINT*);
  53.     STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
  54.     STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
  55.     STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
  56.     // IVLCAudio methods
  57.     STDMETHODIMP get_mute(VARIANT_BOOL*);
  58.     STDMETHODIMP put_mute(VARIANT_BOOL);
  59.     STDMETHODIMP get_volume(long*);
  60.     STDMETHODIMP put_volume(long);
  61.     STDMETHODIMP get_track(long*);
  62.     STDMETHODIMP put_track(long);
  63.     STDMETHODIMP get_channel(long*);
  64.     STDMETHODIMP put_channel(long);
  65.     STDMETHODIMP toggleMute();
  66. protected:
  67.     HRESULT loadTypeInfo();
  68. private:
  69.     VLCPlugin*      _p_instance;
  70.     ITypeInfo*      _p_typeinfo;
  71. };
  72. class VLCInput : public IVLCInput
  73. {
  74. public:
  75.     VLCInput(VLCPlugin *p_instance) :
  76.         _p_instance(p_instance), _p_typeinfo(NULL) {};
  77.     virtual ~VLCInput();
  78.     // IUnknown methods
  79.     STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
  80.     {
  81.         if( NULL == ppv )
  82.           return E_POINTER;
  83.         if( (IID_IUnknown == riid)
  84.          || (IID_IDispatch == riid)
  85.          || (IID_IVLCInput == riid) )
  86.         {
  87.             AddRef();
  88.             *ppv = reinterpret_cast<LPVOID>(this);
  89.             return NOERROR;
  90.         }
  91.         // behaves as a standalone object
  92.         return E_NOINTERFACE;
  93.     };
  94.     STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
  95.     STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
  96.     // IDispatch methods
  97.     STDMETHODIMP GetTypeInfoCount(UINT*);
  98.     STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
  99.     STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
  100.     STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
  101.     // IVLCInput methods
  102.     STDMETHODIMP get_length(double*);
  103.     STDMETHODIMP get_position(double*);
  104.     STDMETHODIMP put_position(double);
  105.     STDMETHODIMP get_time(double*);
  106.     STDMETHODIMP put_time(double);
  107.     STDMETHODIMP get_state(long*);
  108.     STDMETHODIMP get_rate(double*);
  109.     STDMETHODIMP put_rate(double);
  110.     STDMETHODIMP get_fps(double*);
  111.     STDMETHODIMP get_hasVout(VARIANT_BOOL*);
  112. protected:
  113.     HRESULT loadTypeInfo();
  114. private:
  115.     VLCPlugin*      _p_instance;
  116.     ITypeInfo*      _p_typeinfo;
  117. };
  118. class VLCMessage: public IVLCMessage
  119. {
  120. public:
  121.     VLCMessage(VLCPlugin *p_instance, struct libvlc_log_message_t &msg) :
  122.         _p_instance(p_instance),
  123.         _p_typeinfo(NULL),
  124.         _refcount(1),
  125.         _msg(msg) {};
  126.     virtual ~VLCMessage();
  127.     // IUnknown methods
  128.     STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
  129.     {
  130.         if( NULL == ppv )
  131.           return E_POINTER;
  132.         if( (IID_IUnknown == riid)
  133.          || (IID_IDispatch == riid)
  134.          || (IID_IVLCMessage == riid) )
  135.         {
  136.             AddRef();
  137.             *ppv = reinterpret_cast<LPVOID>(this);
  138.             return NOERROR;
  139.         }
  140.         // behaves as a standalone object
  141.         return E_NOINTERFACE;
  142.     };
  143.     STDMETHODIMP_(ULONG) AddRef(void) { return InterlockedIncrement(&_refcount); };
  144.     STDMETHODIMP_(ULONG) Release(void)
  145.     {
  146.         ULONG refcount = InterlockedDecrement(&_refcount);
  147.         if( 0 == refcount )
  148.         {
  149.             delete this;
  150.             return 0;
  151.         }
  152.         return refcount;
  153.     };
  154.     // IDispatch methods
  155.     STDMETHODIMP GetTypeInfoCount(UINT*);
  156.     STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
  157.     STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
  158.     STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
  159.     // IVLCMessage methods
  160.     STDMETHODIMP get__Value(VARIANT *);
  161.     STDMETHODIMP get_severity(long *);
  162.     STDMETHODIMP get_type(BSTR *);
  163.     STDMETHODIMP get_name(BSTR *);
  164.     STDMETHODIMP get_header(BSTR *);
  165.     STDMETHODIMP get_message(BSTR *);
  166. protected:
  167.     HRESULT loadTypeInfo();
  168. private:
  169.     VLCPlugin*      _p_instance;
  170.     ITypeInfo*      _p_typeinfo;
  171.     LONG            _refcount;
  172.     struct libvlc_log_message_t _msg;
  173. };
  174. class VLCLog;
  175. class VLCMessageIterator : public IVLCMessageIterator
  176. {
  177. public:
  178.     VLCMessageIterator(VLCPlugin *p_instance, VLCLog* p_vlclog);
  179.     virtual ~VLCMessageIterator();
  180.     // IUnknown methods
  181.     STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
  182.     {
  183.         if( NULL == ppv )
  184.           return E_POINTER;
  185.         if( (IID_IUnknown == riid)
  186.          || (IID_IDispatch == riid)
  187.          || (IID_IVLCMessageIterator == riid) )
  188.         {
  189.             AddRef();
  190.             *ppv = reinterpret_cast<LPVOID>(this);
  191.             return NOERROR;
  192.         }
  193.         // behaves as a standalone object
  194.         return E_NOINTERFACE;
  195.     };
  196.     STDMETHODIMP_(ULONG) AddRef(void) { return InterlockedIncrement(&_refcount); };
  197.     STDMETHODIMP_(ULONG) Release(void)
  198.     {
  199.         ULONG refcount = InterlockedDecrement(&_refcount);
  200.         if( 0 == refcount )
  201.         {
  202.             delete this;
  203.             return 0;
  204.         }
  205.         return refcount;
  206.     };
  207.     // IDispatch methods
  208.     STDMETHODIMP GetTypeInfoCount(UINT*);
  209.     STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
  210.     STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
  211.     STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
  212.     // IVLCMessageIterator methods
  213.     STDMETHODIMP get_hasNext(VARIANT_BOOL*);
  214.     STDMETHODIMP next(IVLCMessage**);
  215.  
  216. protected:
  217.     HRESULT loadTypeInfo();
  218. private:
  219.     VLCPlugin*      _p_instance;
  220.     ITypeInfo*      _p_typeinfo;
  221.     LONG            _refcount;
  222.     VLCLog*                 _p_vlclog;
  223.     libvlc_log_iterator_t*  _p_iter;
  224. };
  225. class VLCMessages : public IVLCMessages
  226. {
  227. public:
  228.     VLCMessages(VLCPlugin *p_instance, VLCLog *p_vlclog) :
  229.         _p_vlclog(p_vlclog),
  230.         _p_instance(p_instance),
  231.         _p_typeinfo(NULL) {}
  232.     virtual ~VLCMessages();
  233.     // IUnknown methods
  234.     STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
  235.     {
  236.         if( NULL == ppv )
  237.           return E_POINTER;
  238.         if( (IID_IUnknown == riid)
  239.          || (IID_IDispatch == riid)
  240.          || (IID_IVLCMessages == riid) )
  241.         {
  242.             AddRef();
  243.             *ppv = reinterpret_cast<LPVOID>(this);
  244.             return NOERROR;
  245.         }
  246.         // behaves as a standalone object
  247.         return E_NOINTERFACE;
  248.     };
  249.     STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
  250.     STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
  251.     // IDispatch methods
  252.     STDMETHODIMP GetTypeInfoCount(UINT*);
  253.     STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
  254.     STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
  255.     STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
  256.     // IVLCMessages methods
  257.     STDMETHODIMP get__NewEnum(LPUNKNOWN*);
  258.     STDMETHODIMP clear();
  259.     STDMETHODIMP get_count(long*);
  260.     STDMETHODIMP iterator(IVLCMessageIterator**);
  261. protected:
  262.     HRESULT loadTypeInfo();
  263.     VLCLog*     _p_vlclog;
  264. private:
  265.     VLCPlugin*  _p_instance;
  266.     ITypeInfo*  _p_typeinfo;
  267. };
  268.  
  269. class VLCLog : public IVLCLog
  270. {
  271. public:
  272.     friend class VLCMessages;
  273.     friend class VLCMessageIterator;
  274.     VLCLog(VLCPlugin *p_instance) :
  275.         _p_log(NULL),
  276.         _p_instance(p_instance),
  277.         _p_typeinfo(NULL),
  278.         _p_vlcmessages(NULL)
  279.     {
  280.         _p_vlcmessages = new VLCMessages(p_instance, this);
  281.     };
  282.     virtual ~VLCLog();
  283.     // IUnknown methods
  284.     STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
  285.     {
  286.         if( NULL == ppv )
  287.           return E_POINTER;
  288.         if( (IID_IUnknown == riid)
  289.          || (IID_IDispatch == riid)
  290.          || (IID_IVLCLog == riid) )
  291.         {
  292.             AddRef();
  293.             *ppv = reinterpret_cast<LPVOID>(this);
  294.             return NOERROR;
  295.         }
  296.         // behaves as a standalone object
  297.         return E_NOINTERFACE;
  298.     };
  299.     STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
  300.     STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
  301.     // IDispatch methods
  302.     STDMETHODIMP GetTypeInfoCount(UINT*);
  303.     STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
  304.     STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
  305.     STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
  306.     // IVLCLog methods
  307.     STDMETHODIMP get_messages(IVLCMessages**);
  308.     STDMETHODIMP get_verbosity(long *);
  309.     STDMETHODIMP put_verbosity(long);
  310. protected:
  311.     HRESULT loadTypeInfo();
  312.     libvlc_log_t    *_p_log;
  313. private:
  314.     VLCPlugin*      _p_instance;
  315.     ITypeInfo*      _p_typeinfo;
  316.     VLCMessages*    _p_vlcmessages;
  317. };
  318. class VLCPlaylistItems : public IVLCPlaylistItems
  319. {
  320. public:
  321.     VLCPlaylistItems(VLCPlugin *p_instance) :
  322.         _p_instance(p_instance), _p_typeinfo(NULL) {};
  323.     virtual ~VLCPlaylistItems();
  324.     // IUnknown methods
  325.     STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
  326.     {
  327.         if( NULL == ppv )
  328.           return E_POINTER;
  329.         if( (IID_IUnknown == riid)
  330.          || (IID_IDispatch == riid)
  331.          || (IID_IVLCPlaylistItems == riid) )
  332.         {
  333.             AddRef();
  334.             *ppv = reinterpret_cast<LPVOID>(this);
  335.             return NOERROR;
  336.         }
  337.         // behaves as a standalone object
  338.         return E_NOINTERFACE;
  339.     };
  340.     STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
  341.     STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
  342.     // IDispatch methods
  343.     STDMETHODIMP GetTypeInfoCount(UINT*);
  344.     STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
  345.     STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
  346.     STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
  347.     // IVLCPlaylistItems methods
  348.     STDMETHODIMP get_count(long*);
  349.     STDMETHODIMP clear();
  350.     STDMETHODIMP remove(long);
  351. protected:
  352.     HRESULT loadTypeInfo();
  353. private:
  354.     VLCPlugin*  _p_instance;
  355.     ITypeInfo*  _p_typeinfo;
  356. };
  357. class VLCPlaylist : public IVLCPlaylist
  358. {
  359. public:
  360.     VLCPlaylist(VLCPlugin *p_instance) :
  361.         _p_instance(p_instance),
  362.         _p_typeinfo(NULL),
  363.         _p_vlcplaylistitems(NULL)
  364.     {
  365.         _p_vlcplaylistitems = new VLCPlaylistItems(p_instance);
  366.     };
  367.     virtual ~VLCPlaylist();
  368.     // IUnknown methods
  369.     STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
  370.     {
  371.         if( NULL == ppv )
  372.           return E_POINTER;
  373.         if( (IID_IUnknown == riid)
  374.          || (IID_IDispatch == riid)
  375.          || (IID_IVLCPlaylist == riid) )
  376.         {
  377.             AddRef();
  378.             *ppv = reinterpret_cast<LPVOID>(this);
  379.             return NOERROR;
  380.         }
  381.         // behaves as a standalone object
  382.         return E_NOINTERFACE;
  383.     };
  384.     STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
  385.     STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
  386.     // IDispatch methods
  387.     STDMETHODIMP GetTypeInfoCount(UINT*);
  388.     STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
  389.     STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
  390.     STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
  391.     // IVLCPlaylist methods
  392.     STDMETHODIMP get_itemCount(long*);
  393.     STDMETHODIMP get_isPlaying(VARIANT_BOOL*);
  394.     STDMETHODIMP add(BSTR, VARIANT, VARIANT, long*);
  395.     STDMETHODIMP play();
  396.     STDMETHODIMP playItem(long);
  397.     STDMETHODIMP togglePause();
  398.     STDMETHODIMP stop();
  399.     STDMETHODIMP next();
  400.     STDMETHODIMP prev();
  401.     STDMETHODIMP clear();
  402.     STDMETHODIMP removeItem(long);
  403.     STDMETHODIMP get_items(IVLCPlaylistItems**);
  404. protected:
  405.     HRESULT loadTypeInfo();
  406. private:
  407.     VLCPlugin*  _p_instance;
  408.     ITypeInfo*  _p_typeinfo;
  409.     VLCPlaylistItems*    _p_vlcplaylistitems;
  410. };
  411. class VLCVideo : public IVLCVideo
  412. {
  413. public:
  414.     VLCVideo(VLCPlugin *p_instance) :
  415.         _p_instance(p_instance), _p_typeinfo(NULL) {};
  416.     virtual ~VLCVideo();
  417.     // IUnknown methods
  418.     STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
  419.     {
  420.         if( NULL == ppv )
  421.           return E_POINTER;
  422.         if( (IID_IUnknown == riid)
  423.          || (IID_IDispatch == riid)
  424.          || (IID_IVLCVideo == riid) )
  425.         {
  426.             AddRef();
  427.             *ppv = reinterpret_cast<LPVOID>(this);
  428.             return NOERROR;
  429.         }
  430.         // behaves as a standalone object
  431.         return E_NOINTERFACE;
  432.     };
  433.     STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
  434.     STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
  435.     // IDispatch methods
  436.     STDMETHODIMP GetTypeInfoCount(UINT*);
  437.     STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
  438.     STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
  439.     STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
  440.     // IVLCVideo methods
  441.     STDMETHODIMP get_fullscreen(VARIANT_BOOL*);
  442.     STDMETHODIMP put_fullscreen(VARIANT_BOOL);
  443.     STDMETHODIMP get_width(long*);
  444.     STDMETHODIMP get_height(long*);
  445.     STDMETHODIMP get_aspectRatio(BSTR*);
  446.     STDMETHODIMP put_aspectRatio(BSTR);
  447.     STDMETHODIMP get_subtitle(long*);
  448.     STDMETHODIMP put_subtitle(long);
  449.     STDMETHODIMP get_crop(BSTR*);
  450.     STDMETHODIMP put_crop(BSTR);
  451.     STDMETHODIMP get_teletext(long*);
  452.     STDMETHODIMP put_teletext(long);
  453.     STDMETHODIMP takeSnapshot(LPPICTUREDISP*);
  454.     STDMETHODIMP toggleFullscreen();
  455.     STDMETHODIMP toggleTeletext();
  456. protected:
  457.     HRESULT loadTypeInfo();
  458. private:
  459.     VLCPlugin*      _p_instance;
  460.     ITypeInfo*      _p_typeinfo;
  461. };
  462. class VLCControl2 : public IVLCControl2
  463. {
  464. public:
  465.     VLCControl2(VLCPlugin *p_instance);
  466.     virtual ~VLCControl2();
  467.     // IUnknown methods
  468.     STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
  469.     {
  470.         if( NULL == ppv )
  471.           return E_POINTER;
  472.         if( (IID_IUnknown == riid)
  473.          || (IID_IDispatch == riid)
  474.          || (IID_IVLCControl2 == riid) )
  475.         {
  476.             AddRef();
  477.             *ppv = reinterpret_cast<LPVOID>(this);
  478.             return NOERROR;
  479.         }
  480.         return _p_instance->pUnkOuter->QueryInterface(riid, ppv);
  481.     };
  482.     STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
  483.     STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
  484.     // IDispatch methods
  485.     STDMETHODIMP GetTypeInfoCount(UINT*);
  486.     STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
  487.     STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
  488.     STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
  489.     // IVLCControl2 methods
  490.     STDMETHODIMP get_AutoLoop(VARIANT_BOOL *autoloop);
  491.     STDMETHODIMP put_AutoLoop(VARIANT_BOOL autoloop);
  492.     STDMETHODIMP get_AutoPlay(VARIANT_BOOL *autoplay);
  493.     STDMETHODIMP put_AutoPlay(VARIANT_BOOL autoplay);
  494.     STDMETHODIMP get_BaseURL(BSTR *url);
  495.     STDMETHODIMP put_BaseURL(BSTR url);
  496.     STDMETHODIMP get_MRL(BSTR *mrl);
  497.     STDMETHODIMP put_MRL(BSTR mrl);
  498.     STDMETHODIMP get_Toolbar(VARIANT_BOOL *visible);
  499.     STDMETHODIMP put_Toolbar(VARIANT_BOOL visible);
  500.     STDMETHODIMP get_StartTime(long *seconds);
  501.     STDMETHODIMP put_StartTime(long seconds);
  502.     STDMETHODIMP get_VersionInfo(BSTR *version);
  503.     STDMETHODIMP get_Visible(VARIANT_BOOL *visible);
  504.     STDMETHODIMP put_Visible(VARIANT_BOOL visible);
  505.     STDMETHODIMP get_Volume(long *volume);
  506.     STDMETHODIMP put_Volume(long volume);
  507.     STDMETHODIMP get_BackColor(OLE_COLOR *backcolor);
  508.     STDMETHODIMP put_BackColor(OLE_COLOR backcolor);
  509.     STDMETHODIMP get_audio(IVLCAudio**);
  510.     STDMETHODIMP get_input(IVLCInput**);
  511.     STDMETHODIMP get_log(IVLCLog**);
  512.     STDMETHODIMP get_playlist(IVLCPlaylist**);
  513.     STDMETHODIMP get_video(IVLCVideo**);
  514. protected:
  515.     HRESULT loadTypeInfo();
  516. private:
  517.     VLCPlugin*      _p_instance;
  518.     ITypeInfo*      _p_typeinfo;
  519.     VLCAudio*       _p_vlcaudio;
  520.     VLCInput*       _p_vlcinput;
  521.     VLCLog  *       _p_vlclog;
  522.     VLCPlaylist*    _p_vlcplaylist;
  523.     VLCVideo*       _p_vlcvideo;
  524. };
  525. #endif