]> git.sesse.net Git - vlc/blobdiff - activex/axvlc.idl
Handle I/O errors properly
[vlc] / activex / axvlc.idl
index 497c3739d45bee6e54ea6a3462c9841b6a258e36..bc2e1844c92d257abf5f4e817bbe2cb2e0b11e59 100644 (file)
@@ -1,9 +1,10 @@
 /*****************************************************************************\r
  * axvlc.idl: ActiveX control for VLC\r
  *****************************************************************************\r
- * Copyright (C) 2005 the VideoLAN team\r
+ * Copyright (C) 2006 the VideoLAN team\r
  *\r
  * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>\r
+ *          Jean-Paul Saman <jpsaman _at_ m2x _dot_ nl>\r
  *\r
  * This program is free software; you can redistribute it and/or modify\r
  * it under the terms of the GNU General Public License as published by\r
  *\r
  * You should have received a copy of the GNU General Public License\r
  * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.\r
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.\r
  *****************************************************************************/\r
 \r
+//comments terminated by [t] are by tonsofpcs, regarding the string review.  April 02, 2006. [t]\r
+//Possibly change all instances of "the current playlist" to "the playlist" and "current playlist" to "the playlist" [t]\r
+\r
+import "oaidl.idl";\r
+\r
 [\r
   uuid(DF2BBE39-40A8-433b-A279-073F48DA94B6),\r
   version(1.0),\r
-  helpstring("VideoLAN VLC ActiveX Plugin"),\r
+  helpstring("VideoLAN VLC ActiveX Plugin")\r
 ]\r
 library AXVLC\r
 {\r
-    importlib("stdole2.tlb");\r
-\r
     // Forward declare all types defined in this typelib\r
     interface IVLCControl;\r
+    interface IVLCAudio;\r
+    interface IVLCInput;\r
+    interface IVLCLog;\r
+    interface IVLCMessage;\r
+    interface IVLCMessageIterator;\r
+    interface IVLCMessages;\r
+    interface IVLCPlaylist;\r
+    interface IVLCVideo;\r
+    interface IVLCControl2;\r
     dispinterface DVLCEvents;\r
 \r
-    enum VLCPlaylistMode\r
+    importlib("stdole2.tlb");\r
+\r
+    typedef [public] enum VLCPlaylistMode\r
     {\r
         VLCPlayListInsert       =  1,\r
         VLCPlayListInsertAndGo  =  9,\r
@@ -42,7 +57,7 @@ library AXVLC
         VLCPlayListAppend       =  4,\r
         VLCPlayListAppendAndGo  = 12,\r
         VLCPlayListCheckInsert  = 16\r
-    };\r
+    } eVLCPlaylistMode;\r
 \r
     // playlist target position\r
     const int VLCPlayListEnd    = -666;\r
@@ -57,20 +72,21 @@ library AXVLC
     const int DISPID_MRL        = 106;\r
     const int DISPID_AutoPlay   = 107;\r
     const int DISPID_AutoLoop   = 108;\r
+    const int DISPID_StartTime  = 109;\r
+    const int DISPID_BaseURL    = 110;\r
 \r
     [\r
       odl,\r
       uuid(C2FA41D0-B113-476e-AC8C-9BD14999C1C1),\r
-      helpstring("VLC Control"),\r
+      helpstring("VLC Control (deprecated)"),\r
       dual,\r
-      hidden,\r
       oleautomation\r
     ]\r
     interface IVLCControl : IDispatch\r
     {\r
-        [id(DISPID_Visible), propget, bindable, helpstring("Shows or hides plugin.")]\r
+        [id(DISPID_Visible), propget, bindable, helpstring("Returns/sets a value that determines whether viewing area is visible or hidden.")]\r
         HRESULT Visible([out, retval] VARIANT_BOOL* visible);\r
-        [id(DISPID_Visible), propput, bindable, helpstring("Shows or hides plugin.")]\r
+        [id(DISPID_Visible), propput, bindable, helpstring("Returns/sets a value that determines whether viewing area is visible or hidden.")]\r
         HRESULT Visible([in] VARIANT_BOOL visible);\r
         [helpstring("Play current target in playlist.")]\r
         HRESULT play();\r
@@ -78,37 +94,37 @@ library AXVLC
         HRESULT pause();\r
         [helpstring("Stop playback.")]\r
         HRESULT stop();\r
-        [id(DISPID_Playing), hidden, propget, helpstring("Returns whether VLC is playing.")]\r
+        [id(DISPID_Playing), hidden, propget, helpstring("Returns a value that determines whether VLC is currently playing.")]\r
         HRESULT Playing([out, retval] VARIANT_BOOL* isPlaying);\r
-        [id(DISPID_Position), propget, helpstring("Specifies playback position within current target in playlist, position is a relative value ranging from 0.0 to 1.0.")]\r
+        [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
         HRESULT Position([out, retval] float* position);\r
-        [id(DISPID_Position), propput, helpstring("Specifies playback position within current target in playlist, position is a relative value ranging from 0.0 to 1.0.")]\r
+        [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
         HRESULT Position([in] float position);\r
-        [id(DISPID_Time), propget, helpstring("Specifies playback time relative to the start of current target in playlist.")]\r
+        [id(DISPID_Time), propget, helpstring("Returns/sets playback time relative to the start of the current item.")]\r
         HRESULT Time([out, retval] int* seconds);\r
-        [id(DISPID_Time), propput, helpstring("Specifies playback time relative to the start of current target in playlist.")]\r
+        [id(DISPID_Time), propput, helpstring("Returns/sets playback time relative to the start of the current item.")]\r
         HRESULT Time([in] int seconds);\r
-        [helpstring("Advance or backtrack playback time, relative to current time.")]\r
+        [helpstring("Advance or backtrack playback time, relative to current time.")]  //possibly find a better word to replace 'backtrack' [t]\r
         HRESULT shuttle([in] int seconds);\r
-        [helpstring("Switch between normal and fullscreen video.")]\r
+        [helpstring("Switch video between normal and fullscreen view modes.")]\r
         HRESULT fullscreen();\r
-        [id(DISPID_Length), propget, hidden, helpstring("Returns total length in seconds of current target in playlist, may be unknown.")]\r
+        [id(DISPID_Length), propget, hidden, helpstring("Returns the total length, in seconds, of the current item, may be unknown.")]\r
         HRESULT Length([out, retval] int* seconds);\r
-        [helpstring("Increases playback speed, one of 1x, 2x, 4x, 8x.")]\r
+        [helpstring("Increases playback speed. Possible speeds are: 1x, 2x, 4x, 8x.")]\r
         HRESULT playFaster();\r
-        [helpstring("Decreases playback speed, one of 1x, 2x, 4x, 8x.")]\r
+        [helpstring("Decreases playback speed. Possible speeds are: 1x, 2x, 4x, 8x.")]\r
         HRESULT playSlower();\r
-        [id(DISPID_Volume), propget, helpstring("Specifies playback sound volume, ranges from 0 to 200%.")]\r
+        [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
         HRESULT Volume([out, retval] int* volume);\r
-        [id(DISPID_Volume), propput, helpstring("Specifies playback sound volume, ranges from 0 to 200%.")]\r
+        [id(DISPID_Volume), propput, helpstring("Returns/sets playback volume, ranges from 0 to 200%.")]\r
         HRESULT Volume([in] int volume);\r
-        [helpstring("Mute/unmute playback sound volume.")]\r
+        [helpstring("Mute/unmute playback audio.")]\r
         HRESULT toggleMute();\r
-        [helpstring("Set a value to a VLC variable.")]\r
+        [helpstring("Sets the value of a VLC variable.")]\r
         HRESULT setVariable([in] BSTR name, [in] VARIANT value);\r
-        [helpstring("Retrieve the value of a VLC variable.")]\r
+        [helpstring("Returns the value of a VLC variable.")]\r
         HRESULT getVariable([in] BSTR name, [out, retval] VARIANT *value);\r
-        [helpstring("Add a target to the current playlist.")]\r
+        [helpstring("Add an item to the playlist.")]\r
 \r
 /*\r
 ** use VARIANT rather than a SAFEARRAY as argument type\r
@@ -116,7 +132,7 @@ library AXVLC
 */\r
 \r
         HRESULT addTarget([in] BSTR uri, [in] VARIANT options, [in] enum VLCPlaylistMode mode, [in] int position);\r
-        [propget, helpstring("Returns index of current target in playlist.")]\r
+        [propget, helpstring("Returns index of current item in playlist.")]\r
         HRESULT PlaylistIndex([out, retval] int* index);\r
         [propget, helpstring("Returns number of items in playlist.")]\r
         HRESULT PlaylistCount([out, retval] int* index);\r
@@ -128,17 +144,17 @@ library AXVLC
         HRESULT playlistClear();\r
         [propget, hidden, helpstring("Returns VLC Version.")]\r
         HRESULT VersionInfo([out, retval] BSTR* version);\r
-        [id(DISPID_MRL), propget, helpstring("Returns initial MRL in default playlist")]\r
+        [id(DISPID_MRL), propget, helpstring("Returns/sets the first MRL in playlist, used for AutoPlay")]\r
         HRESULT MRL([out, retval] BSTR* mrl);\r
-        [id(DISPID_MRL), propput, helpstring("Specifies initial MRL in default playlist")]\r
+        [id(DISPID_MRL), propput, helpstring("Returns/sets the first MRL in playlist, used for AutoPlay")]\r
         HRESULT MRL([in] BSTR mrl);\r
-        [id(DISPID_AutoPlay), propget, helpstring("Specifies whether default playlist is played on startup")]\r
+        [id(DISPID_AutoPlay), propget, helpstring("Returns/sets a value that determines whether the playlist is played on startup")]\r
         HRESULT AutoPlay([out, retval] VARIANT_BOOL* autoplay);\r
-        [id(DISPID_AutoPlay), propput, helpstring("Returns whether default playlist is played on startup")]\r
+        [id(DISPID_AutoPlay), propput, helpstring("Returns/Sets a value that determines whether the playlist is played on startup")]\r
         HRESULT AutoPlay([in] VARIANT_BOOL autoplay);\r
-        [id(DISPID_AutoLoop), propget, helpstring("Specifies whether default playlist is looped")]\r
+        [id(DISPID_AutoLoop), propget, helpstring("Returns/sets a value that determines whether the playlist is looped")]\r
         HRESULT AutoLoop([out, retval] VARIANT_BOOL* autoloop);\r
-        [id(DISPID_AutoLoop), propput, helpstring("Returns whether default playlist is looped")]\r
+        [id(DISPID_AutoLoop), propput, helpstring("Returns/sets a value that determines whether the playlist is looped")]\r
         HRESULT AutoLoop([in] VARIANT_BOOL autoloop);\r
     };\r
 \r
@@ -149,28 +165,363 @@ library AXVLC
     [\r
       uuid(DF48072F-5EF8-434e-9B40-E2F3AE759B5F),\r
       helpstring("Event interface for VLC control"),\r
-      hidden\r
     ]\r
     dispinterface DVLCEvents\r
     {\r
         properties:\r
         methods:\r
-            [id(DISPID_PlayEvent), helpstring("Playback in progress")]\r
+            [id(DISPID_PlayEvent), helpstring("Playing")]\r
             void play();\r
-            [id(DISPID_PauseEvent), helpstring("Playback has paused")]\r
+            [id(DISPID_PauseEvent), helpstring("Paused")]\r
             void pause();\r
-            [id(DISPID_StopEvent), helpstring("Playback has stopped")]\r
+            [id(DISPID_StopEvent), helpstring("Stopped")]\r
             void stop();\r
     };\r
 \r
+    [\r
+      odl,\r
+      uuid(9E0BD17B-2D3C-4656-B94D-03084F3FD9D4),\r
+      helpstring("VLC Audio APIs"),\r
+      dual,\r
+      oleautomation\r
+    ]\r
+    interface IVLCAudio : IDispatch\r
+    {\r
+        [propget, helpstring("Returns/sets the audio mute state.")]\r
+        HRESULT mute([out, retval] VARIANT_BOOL* muted);\r
+        [propput, helpstring("Returns/sets the audio mute state.")]\r
+        HRESULT mute([in] VARIANT_BOOL muted);\r
+\r
+        [propget, helpstring("Returns/sets audio volume as a percent value.")]\r
+        HRESULT volume([out, retval] long* volume);\r
+        [propput, helpstring("Returns/sets audio volume as a percent value.")]\r
+        HRESULT volume([in] long volume);\r
+\r
+        [helpstring("Mute/unmute audio playback.")]\r
+        HRESULT toggleMute();\r
+\r
+        [propget, helpstring("Returns/sets audio track used/to use.")]\r
+        HRESULT track([out, retval] long* track);\r
+        [propput, helpstring("Returns/sets audio track used/to use.")]\r
+        HRESULT track([in] long track);\r
+\r
+        [propget, helpstring("Returns audio channel [1-5] indicating; stereo, reverse stereo, left, right, dolby.")]\r
+        HRESULT channel([out, retval] long* channel);\r
+        [propput, helpstring("Sets audio channel to [1-5] indicating; stereo, reverse stereo, left, right, dolby.")]\r
+        HRESULT channel([in] long channel);\r
+    };\r
+\r
+    [\r
+      odl,\r
+      uuid(49E0DBD1-9440-466C-9C97-95C67190C603),\r
+      helpstring("VLC Input APIs"),\r
+      dual,\r
+      oleautomation\r
+    ]\r
+    interface IVLCInput : IDispatch\r
+    {\r
+        [propget, helpstring("Returns the clip length, in milliseconds.")]\r
+        HRESULT length([out, retval] double* length);\r
+\r
+        [propget, helpstring("Returns/sets playback position in current clip.  Position is ranging from 0.0 to 1.0.")]\r
+        HRESULT position([out, retval] double* position);\r
+        [propput, helpstring("Returns/sets playback position in the current clip.  Position ranging from 0.0 to 1.0.")]\r
+        HRESULT position([in] double position);\r
+\r
+        [propget, helpstring("Returns/sets playback time in current clip, in milliseconds.")]\r
+        HRESULT time([out, retval] double* time);\r
+        [propput, helpstring("Returns/sets playback time in the current clip, in milliseconds.")]\r
+        HRESULT time([in] double time);\r
+\r
+        [propget, helpstring("Returns current playback state.")]\r
+        HRESULT state([out, retval] long* state);\r
+\r
+        [propget, helpstring("Returns/sets current playback rate, normal rate is 1.0 ")]\r
+        HRESULT rate([out, retval] double* rate);\r
+        [propput, helpstring("Returns/sets current playback rate, normal rate is 1.0.")]\r
+        HRESULT rate([in] double rate);\r
+\r
+        [propget, helpstring("Returns current playback frames per seconds if available.")]\r
+        HRESULT fps([out, retval] double* fps);\r
+\r
+        [propget, helpstring("Returns whether current playback displays video.")]\r
+        HRESULT hasVout([out, retval] VARIANT_BOOL* hasVout);\r
+    };\r
+\r
+    [\r
+      odl,\r
+      uuid(9ED00AFA-7BCD-4FFF-8D48-7DD4DB2C800D),\r
+      helpstring("VLC Log Message"),\r
+      dual,\r
+      oleautomation\r
+    ]\r
+    interface IVLCMessage: IDispatch\r
+    {\r
+        [id(DISPID_VALUE), propget]\r
+        HRESULT _Value([out, retval] VARIANT* message);\r
+\r
+        [propget, helpstring("Returns message severity.")]\r
+        HRESULT severity([out, retval] long* level);\r
+\r
+        [propget, helpstring("Returns message issuer type.")]\r
+        HRESULT type([out, retval] BSTR* type);\r
+\r
+        [propget, helpstring("Returns message issuer name.")]\r
+        HRESULT name([out, retval] BSTR* name);\r
+\r
+        [propget, helpstring("Returns message header.")]\r
+        HRESULT header([out, retval] BSTR* header);\r
+\r
+        [propget, helpstring("Returns message content.")]\r
+        HRESULT message([out, retval] BSTR* message);\r
+    };\r
+\r
+    [\r
+      odl,\r
+      uuid(15179CD8-CC12-4242-A58E-E412217FF343),\r
+      helpstring("VLC Log iterator"),\r
+      dual,\r
+      oleautomation\r
+    ]\r
+    interface IVLCMessageIterator : IDispatch\r
+    {\r
+        [propget, helpstring("Returns whether a message is available.")]\r
+        HRESULT hasNext([out, retval] VARIANT_BOOL* hasNext);\r
+\r
+        [helpstring("Returns next message.")]\r
+        HRESULT next([out, retval] IVLCMessage** msg);\r
+    };\r
+\r
+    [\r
+      odl,\r
+      uuid(6C5CE55D-2D6C-4AAD-8299-C62D2371F106),\r
+      helpstring("VLC Log Messages Collection."),\r
+      dual,\r
+      oleautomation\r
+    ]\r
+    interface IVLCMessages : IDispatch\r
+    {\r
+        [id(DISPID_NEWENUM), propget]\r
+        HRESULT _NewEnum([out, retval] IUnknown** _NewEnum);\r
+\r
+        [helpstring("Clear all messages from log.")]\r
+        HRESULT clear();\r
+\r
+        [propget, helpstring("Returns the number of messages.")]\r
+        HRESULT count([out, retval] long* count);\r
+\r
+        [helpstring("Returns an iterator for messages in log")]\r
+        HRESULT iterator([out, retval] IVLCMessageIterator** iter);\r
+    };\r
+\r
+    [\r
+      odl,\r
+      uuid(8E3BC3D9-62E9-48FB-8A6D-993F9ABC4A0A),\r
+      helpstring("VLC Log APIs"),\r
+      dual,\r
+      oleautomation\r
+    ]\r
+    interface IVLCLog : IDispatch\r
+    {\r
+        [propget, helpstring("Returns messages in log")]\r
+        HRESULT messages([out, retval] IVLCMessages** iter);\r
+\r
+        [propget, helpstring("Returns/Sets the log versbosity level.")]\r
+        HRESULT verbosity([out, retval] long* level);\r
+        [propput, helpstring("Returns/Sets the log versbosity level.")]\r
+        HRESULT verbosity([in] long level);\r
+    };\r
+\r
+    [\r
+      odl,\r
+      uuid(FD37FE32-82BC-4A25-B056-315F4DBB194D),\r
+      helpstring("VLC Playlist Items collection"),\r
+      dual,\r
+      oleautomation\r
+    ]\r
+    interface IVLCPlaylistItems : IDispatch\r
+    {\r
+        [propget, helpstring("Returns number of items in playlist.")]\r
+        HRESULT count([out, retval] long* count);\r
+\r
+        [helpstring("Remove all items from playlist.")]\r
+        HRESULT clear();\r
+\r
+        [helpstring("remove item from playlist.")]\r
+        HRESULT remove([in] long itemId);\r
+    };\r
+\r
+    [\r
+      odl,\r
+      uuid(54613049-40BF-4035-9E70-0A9312C0188D),\r
+      helpstring("VLC Playlist APIs"),\r
+      dual,\r
+      oleautomation\r
+    ]\r
+    interface IVLCPlaylist : IDispatch\r
+    {\r
+        [hidden, propget, helpstring("Returns number of items in playlist. (deprecated)")]\r
+        HRESULT itemCount([out, retval] long* count);\r
+\r
+        [propget, helpstring("Returns whether playback displays video.")]\r
+        HRESULT isPlaying([out, retval] VARIANT_BOOL* playing);\r
+\r
+        [helpstring("Add a playlist item.")]\r
+        HRESULT add([in] BSTR uri, [in, optional] VARIANT name, [in, optional] VARIANT options, [out, retval] long* itemId);\r
+\r
+        [helpstring("Play/Resume the playlist.")]\r
+        HRESULT play();\r
+\r
+        [helpstring("Play item in playlist.")]\r
+        HRESULT playItem([in] long itemId);\r
+\r
+        [helpstring("Play/Pause current clip.")]\r
+        HRESULT togglePause();\r
+\r
+        [helpstring("Stop current clip.")]\r
+        HRESULT stop();\r
+\r
+        [helpstring("Advance to next item in playlist.")]\r
+        HRESULT next();\r
+\r
+        [helpstring("Advance to previous item in playlist.")]\r
+        HRESULT prev();\r
+\r
+        [hidden, helpstring("Remove all items from playlist. (deprecated)")]\r
+        HRESULT clear();\r
+\r
+        [hidden, helpstring("Remove item from playlist. (deprecated)")]\r
+        HRESULT removeItem([in] long item);\r
+\r
+        [propget, helpstring("Returns the playlist items collection object.")]\r
+        HRESULT items([out, retval] IVLCPlaylistItems** obj);\r
+    };\r
+\r
+    [\r
+      odl,\r
+      uuid(0AAEDF0B-D333-4B27-A0C6-BBF31413A42E),\r
+      helpstring("VLC Video APIs"),\r
+      dual,\r
+      oleautomation\r
+    ]\r
+    interface IVLCVideo : IDispatch\r
+    {\r
+        [propget, helpstring("Returns/sets the fullscreen state.")]\r
+        HRESULT fullscreen([out, retval] VARIANT_BOOL* fullscreen);\r
+        [propput, helpstring("Returns/sets the fullscreen state.")]\r
+        HRESULT fullscreen([in] VARIANT_BOOL fullscreen);\r
+\r
+        [propget, helpstring("Returns video original width.")]\r
+        HRESULT width([out, retval] long* width);\r
+\r
+        [propget, helpstring("Returns video original height.")]\r
+        HRESULT height([out, retval] long* height);\r
+\r
+        [propget, helpstring("Returns video aspect ratio.")]\r
+        HRESULT aspectRatio([out, retval] BSTR* aspect);\r
+        [propput, helpstring("Sets video aspect ratio.")]\r
+        HRESULT aspectRatio([in] BSTR aspect);\r
+\r
+        [propget, helpstring("Returns video subtitle used.")]\r
+        HRESULT subtitle([out, retval] long* spu);\r
+        [propput, helpstring("Sets video subtitle to use.")]\r
+        HRESULT subtitle([in] long spu);\r
+\r
+        [propget, helpstring("Returns crop filter geometry.")]\r
+        HRESULT crop([out, retval] BSTR* geometry);\r
+        [propput, helpstring("Sets crop filter geometry.")]\r
+        HRESULT crop([in] BSTR geometry);\r
+\r
+        [helpstring("toggle fullscreen/windowed state.")]\r
+        HRESULT toggleFullscreen();\r
+\r
+        [helpstring("take video snapshot and save into into filePath.")]\r
+        HRESULT takeSnapshot(BSTR filePath);\r
+    };\r
+\r
+    [\r
+      odl,\r
+      uuid(2D719729-5333-406C-BF12-8DE787FD65E3),\r
+      helpstring("VLC Control"),\r
+      dual,\r
+      oleautomation\r
+    ]\r
+    interface IVLCControl2 : IDispatch\r
+    {\r
+        [id(DISPID_AutoLoop), propget, helpstring("Returns/sets a value that determines whether the playlist is looped")]\r
+        HRESULT AutoLoop([out, retval] VARIANT_BOOL* autoloop);\r
+        [id(DISPID_AutoLoop), propput, helpstring("Returns/sets a value that determines whether the playlist is looped")]\r
+        HRESULT AutoLoop([in] VARIANT_BOOL autoloop);\r
+\r
+        [id(DISPID_AutoPlay), propget, helpstring("Returns/sets a value that determines whether the playlist is played on startup")]\r
+        HRESULT AutoPlay([out, retval] VARIANT_BOOL* autoplay);\r
+        [id(DISPID_AutoPlay), propput, helpstring("Returns/Sets a value that determines whether the playlist is played on startup")]\r
+        HRESULT AutoPlay([in] VARIANT_BOOL autoplay);\r
+\r
+        [id(DISPID_BaseURL), propget, helpstring("Returns/sets the base URL for relative paths")]\r
+        HRESULT BaseURL([out, retval] BSTR* url);\r
+        [id(DISPID_BaseURL), propput, helpstring("Returns/sets the base URL for relative paths")]\r
+        HRESULT BaseURL([in] BSTR url);\r
+\r
+        [id(DISPID_StartTime), propget, helpstring("Returns/sets playback start time of URL.")]\r
+        HRESULT StartTime([out, retval] long* seconds);\r
+        [id(DISPID_StartTime), propput, helpstring("Returns/sets playback start time of URL.")]\r
+        HRESULT StartTime([in] long seconds);\r
+\r
+        [id(DISPID_MRL), propget, helpstring("Returns/sets the default MRL in playlist")]\r
+        HRESULT MRL([out, retval] BSTR* mrl);\r
+        [id(DISPID_MRL), propput, helpstring("Returns/sets the default MRL in playlist")]\r
+        HRESULT MRL([in] BSTR mrl);\r
+\r
+        [propget, helpstring("Returns VLC Version.")]\r
+        HRESULT VersionInfo([out, retval] BSTR* version);\r
+\r
+        [id(DISPID_Visible), propget, helpstring("Returns/sets a value that determines whether viewing area is visible or hidden.")]\r
+        HRESULT Visible([out, retval] VARIANT_BOOL* visible);\r
+        [id(DISPID_Visible), propput, helpstring("Returns/sets a value that determines whether viewing area is visible or hidden.")]\r
+        HRESULT Visible([in] VARIANT_BOOL visible);\r
+\r
+        [id(DISPID_Volume), propget, helpstring("Returns/sets default audio volume.")]\r
+        HRESULT Volume([out, retval] long* volume);\r
+        [id(DISPID_Volume), propput, helpstring("Returns/sets default audio volume.")]\r
+        HRESULT Volume([in] long volume);\r
+\r
+        [propget, helpstring("Returns the audio object.")]\r
+        HRESULT audio([out, retval] IVLCAudio** obj);\r
+\r
+        [propget, helpstring("Returns the audio object.")]\r
+        HRESULT input([out, retval] IVLCInput** obj);\r
+\r
+        [propget, helpstring("Returns the log object.")]\r
+        HRESULT log([out, retval] IVLCLog** obj);\r
+\r
+        [propget, helpstring("Returns the playlist object.")]\r
+        HRESULT playlist([out, retval] IVLCPlaylist** obj);\r
+\r
+        [propget, helpstring("Returns the audio object.")]\r
+        HRESULT video([out, retval] IVLCVideo** obj);\r
+    };\r
+\r
     [\r
       uuid(E23FE9C6-778E-49D4-B537-38FCDE4887D8),\r
-      helpstring("VLC control"),\r
+      helpstring("VLC control (deprecated)"),\r
       control\r
     ]\r
     coclass VLCPlugin\r
     {\r
         [default] interface IVLCControl;\r
+        interface IVLCControl2;\r
         [default, source] dispinterface DVLCEvents;\r
     };\r
+\r
+    [\r
+      uuid(9BE31822-FDAD-461B-AD51-BE1D1C159921),\r
+      helpstring("VLC control"),\r
+      control\r
+    ]\r
+    coclass VLCPlugin2\r
+    {\r
+        [default] interface IVLCControl2;\r
+        interface IVLCControl;\r
+    };\r
 };\r