segment.idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:66k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // Segment.idl : IDL source for devices segments for msvid.dll
  2. //
  3. // This file will be processed by the MIDL tool to
  4. // produce the type library (msvideo.tlb) and marshalling code.
  5. // Copyright (c) Microsoft Corporation 1998-2000
  6. //
  7. cpp_quote("//+-------------------------------------------------------------------------")
  8. cpp_quote("//")
  9. cpp_quote("//  Microsoft Windows")
  10. cpp_quote("//  Copyright (C) Microsoft Corporation, 1999-2000.")
  11. cpp_quote("//")
  12. cpp_quote("//--------------------------------------------------------------------------")
  13. cpp_quote("#pragma once")
  14. #ifndef TUNING_MODEL_ONLY
  15. #include <olectl.h>
  16. cpp_quote("#include <olectl.h>")
  17. #ifndef DO_NO_IMPORTS
  18. import "oaidl.idl";
  19. import "ocidl.idl";
  20. import "strmif.idl";
  21. import "mstve.idl";
  22. import "mstvca.idl";
  23. import "tuner.idl";
  24. #endif
  25. typedef enum {
  26. dispidName,
  27. dispidStatus,
  28. dispidDevImageSourceWidth,
  29. dispidDevImageSourceHeight,
  30. dispidDevCountryCode,
  31. dispidDevOverScan,
  32. dispidSegment,
  33. dispidDevVolume,
  34. dispidDevBalance,
  35. dispidDevPower,
  36. dispidTuneChan,
  37. dispidDevVideoSubchannel,
  38. dispidDevAudioSubchannel,
  39. dispidChannelAvailable,
  40. dispidDevVideoFrequency,
  41. dispidDevAudioFrequency,
  42. dispidCount,
  43. dispidDevFileName,
  44. dispidVisible,
  45. dispidOwner,
  46. dispidMessageDrain,
  47. //dispidPosition,
  48. dispidViewable,
  49. dispidDevView,
  50. dispidKSCat,
  51. dispidCLSID,
  52. dispid_KSCat,
  53. dispid_CLSID,
  54. dispidTune,
  55. dispidTS,
  56. dispidDevSAP,
  57. dispidClip,
  58. dispidRequestedClipRect,
  59. dispidClippedSourceRect,
  60. dispidAvailableSourceRect,
  61. dispidMediaPosition,
  62. dispidDevRun,
  63. dispidDevPause,
  64. dispidDevStop,
  65. dispidCCEnable,
  66. dispidDevStep,
  67. dispidDevCanStep,
  68. dispidSourceSize,
  69. dispid_playtitle,
  70. dispid_playchapterintitle,
  71. dispid_playchapter,
  72. dispid_playchaptersautostop,
  73. dispid_playattime,
  74. dispid_playattimeintitle,
  75. dispid_playperiodintitleautostop,
  76. dispid_replaychapter,
  77. dispid_playprevchapter,
  78. dispid_playnextchapter,
  79. dispid_playforwards,
  80. dispid_playbackwards,
  81. dispid_stilloff,
  82. dispid_audiolanguage,
  83. dispid_showmenu,
  84. dispid_resume,
  85. dispid_returnfromsubmenu,
  86. dispid_buttonsavailable,
  87. dispid_currentbutton,
  88. dispid_SelectAndActivateButton,
  89. dispid_ActivateButton,
  90. dispid_SelectRightButton,
  91. dispid_SelectLeftButton,
  92. dispid_SelectLowerButton,
  93. dispid_SelectUpperButton,
  94. dispid_ActivateAtPosition,
  95. dispid_SelectAtPosition,
  96. dispid_ButtonAtPosition,
  97. dispid_NumberOfChapters,
  98. dispid_TotalTitleTime,
  99. dispid_TitlesAvailable,
  100. dispid_VolumesAvailable,
  101. dispid_CurrentVolume,
  102. dispid_CurrentDiscSide,
  103. dispid_CurrentDomain,
  104. dispid_CurrentChapter,
  105. dispid_CurrentTitle,
  106. dispid_CurrentTime,
  107. dispid_FramesPerSecond,
  108. dispid_DVDTimeCode2bstr,
  109. dispid_DVDDirectory,
  110. dispid_IsSubpictureStreamEnabled,
  111. dispid_IsAudioStreamEnabled,
  112. dispid_CurrentSubpictureStream,
  113. dispid_SubpictureLanguage,
  114. dispid_CurrentAudioStream,
  115. dispid_AudioStreamsAvailable,
  116. dispid_AnglesAvailable,
  117. dispid_CurrentAngle,
  118. dispid_CCActive,
  119. dispid_CurrentCCService,
  120. dispid_SubpictureStreamsAvailable,
  121. dispid_SubpictureOn,
  122. dispid_DVDUniqueID,
  123. dispid_EnableResetOnStop,
  124. dispid_AcceptParentalLevelChange,
  125. dispid_NotifyParentalLevelChange,
  126. dispid_SelectParentalCountry,
  127. dispid_SelectParentalLevel,
  128. dispid_TitleParentalLevels,
  129. dispid_PlayerParentalCountry,
  130. dispid_PlayerParentalLevel,
  131. dispid_Eject,
  132. dispid_UOPValid,
  133. dispid_SPRM,
  134. dispid_GPRM,
  135. dispid_DVDTextStringType,
  136. dispid_DVDTextString,
  137. dispid_DVDTextNumberOfStrings,
  138. dispid_DVDTextNumberOfLanguages,
  139. dispid_DVDTextLanguageLCID,
  140. dispid_RegionChange,
  141. dispid_DVDAdm,
  142. dispid_DeleteBookmark,
  143. dispid_RestoreBookmark,
  144. dispid_SaveBookmark,
  145. dispid_SelectDefaultAudioLanguage,
  146. dispid_SelectDefaultSubpictureLanguage,
  147. dispid_PreferredSubpictureStream,
  148. dispid_DefaultMenuLanguage,
  149. dispid_DefaultSubpictureLanguage,
  150. dispid_DefaultAudioLanguage,
  151. dispid_DefaultSubpictureLanguageExt,
  152. dispid_DefaultAudioLanguageExt,
  153. dispid_LanguageFromLCID,
  154. dispid_KaraokeAudioPresentationMode,
  155. dispid_KaraokeChannelContent,
  156. dispid_KaraokeChannelAssignment,
  157. dispid_RestorePreferredSettings,
  158. dispid_ButtonRect,
  159. dispid_DVDScreenInMouseCoordinates,
  160. dispid_CustomCompositorClass,
  161. dispidCustomCompositorClass,
  162. dispid_CustomCompositor,
  163. dispidMixerBitmap,
  164. dispid_MixerBitmap,
  165. dispidMixerBitmapOpacity,
  166. dispidMixerBitmapRect,
  167. dispidSetupMixerBitmap,
  168. dispidUsingOverlay,
  169. dispidDisplayChange,
  170. dispidRePaint,
  171. dispid_IsEqualDevice,
  172. dispidrate,
  173. dispidposition,
  174. dispidpositionmode,
  175. dispidlength,
  176. dispidChangePassword,
  177. dispidSaveParentalLevel,
  178. dispidSaveParentalCountry,
  179. dispidConfirmPassword,
  180. dispidGetParentalLevel,
  181. dispidGetParentalCountry,
  182. dispidDefaultAudioLCID,
  183. dispidDefaultSubpictureLCID,
  184. dispidDefaultMenuLCID,
  185. dispidBookmarkOnStop,
  186. dispidMaxVidRect,
  187. dispidMinVidRect,
  188. dispidCapture,
  189. dispid_DecimateInput,
  190. LastReservedDeviceDispid=0x3fff
  191. } SegDispidList;
  192. typedef enum {
  193. eventidStateChange,
  194. eventidOnTuneChanged,
  195. eventidEndOfMedia,
  196. eventidDVDNotify,
  197. eventidPlayForwards,
  198. eventidPlayBackwards,
  199. eventidShowMenu,
  200. eventidResume,
  201. eventidSelectOrActivateButton,
  202. eventidStillOff,
  203. eventidPauseOn,
  204. eventidChangeCurrentAudioStream,
  205. eventidChangeCurrentSubpictureStream,
  206. eventidChangeCurrentAngle,
  207. eventidPlayAtTimeInTitle,
  208. eventidPlayAtTime,
  209. eventidPlayChapterInTitle,
  210. eventidPlayChapter,
  211. eventidReplayChapter,
  212. eventidPlayNextChapter,
  213. eventidStop,
  214. eventidReturnFromSubmenu,
  215. eventidPlayTitle,
  216. eventidPlayPrevChapter,
  217. eventidChangeKaraokePresMode,
  218. eventidChangeVideoPresMode,
  219. eventidOverlayUnavailable,
  220. LastReservedDeviceEvent=0x3fff
  221. } SegEventidList;
  222. typedef enum {
  223.     FrameMode,
  224.     TenthsSecondsMode
  225. } PositionModeList;
  226. //*****************************************************************************
  227. //*****************************************************************************
  228. ///////////////////////////////////////////////////////////////////////////////
  229. //
  230. // interfaces
  231. //
  232. ///////////////////////////////////////////////////////////////////////////////
  233. //*****************************************************************************
  234. //*****************************************************************************
  235. //*****************************************************************************
  236. ///////////////////////////////////////////////////////////////////////////////
  237. //
  238. //  Utility Interfaces
  239. //
  240. ///////////////////////////////////////////////////////////////////////////////
  241. //*****************************************************************************
  242. interface IMSVidRect;
  243. [object,
  244.         uuid(7F5000A6-A440-47ca-8ACC-C0E75531A2C2),
  245.         helpstring("Automation Compliant GDI Rect with Automatic HWND Scaling"),
  246.         pointer_default(unique)
  247. ]
  248. interface IMSVidRect : IDispatch {
  249.     [propget, helpstring("Rectangle Top")] HRESULT Top([out, retval] LONG* TopVal);
  250.     [propput, helpstring("Rectangle Top")] HRESULT Top([in] LONG TopVal);
  251.     [propget, helpstring("Rectangle Left")] HRESULT Left([out, retval] LONG* LeftVal);
  252.     [propput, helpstring("Rectangle Left")] HRESULT Left([in] LONG LeftVal);
  253.     [propget, helpstring("Rectangle Width")] HRESULT Width([out, retval] LONG* WidthVal);
  254.     [propput, helpstring("Rectangle Width")] HRESULT Width([in] LONG WidthVal);
  255.     [propget, helpstring("Rectangle Height")] HRESULT Height([out, retval] LONG* HeightVal);
  256.     [propput, helpstring("Rectangle Height")] HRESULT Height([in] LONG HeightVal);
  257.     [propget, helpstring("Coordinates relative to HWnd")] HRESULT HWnd([out, retval] HWND* HWndVal);
  258.     [propput, helpstring("Coordinates relative to HWnd")] HRESULT HWnd([in] HWND HWndVal);
  259.     [propput, helpstring("New Rectangle Values")] HRESULT Rect([in] IMSVidRect* RectVal);
  260. };
  261. interface IMSVidGraphSegmentContainer;
  262. interface IMSVidGraphSegment;
  263. interface IEnumMSVidGraphSegment;
  264. //*****************************************************************************
  265. ///////////////////////////////////////////////////////////////////////////////
  266. //
  267. //  Segment Container interface allowing segments to find and access other segments
  268. //
  269. ///////////////////////////////////////////////////////////////////////////////
  270. //*****************************************************************************
  271.         ///////////////////////////////////////////////////////////////////////////////////////
  272. // if segments need to change the control state(stop, run, pause, etc) or get any stock
  273. // properties that are also made available to clients such as HWND, then they should simply
  274. // QI for the main IMSVidCtl interface.  there's no reason to implement this stuff twice.
  275.         [object,
  276.                 uuid(3DD2903D-E0AA-11d2-B63A-00C04F79498E),
  277.                 helpstring("DShow Graph Segment Container"),
  278.                 pointer_default(unique)
  279.         ]
  280.         interface IMSVidGraphSegmentContainer : IUnknown {
  281.                 [propget, helpstring("Graph")] HRESULT Graph([out] IGraphBuilder **ppGraph);
  282.                 [propget, helpstring("Input Segment")] HRESULT Input([out] IMSVidGraphSegment **pInput);
  283.                 [propget, helpstring("Output Segment")] HRESULT Outputs([out] IEnumMSVidGraphSegment **pOutputs);
  284.                 [propget, helpstring("Video Renderer")] HRESULT VideoRenderer([out] IMSVidGraphSegment **pVR);
  285.                 [propget, helpstring("Audio Renderer")] HRESULT AudioRenderer([out] IMSVidGraphSegment **pAR);
  286.                 [propget, helpstring("Features")] HRESULT Features([out] IEnumMSVidGraphSegment **pOutputs);
  287.                 [propget, helpstring("Composites")] HRESULT Composites([out] IEnumMSVidGraphSegment **pComposites);
  288. [propget, helpstring("Container")] HRESULT ParentContainer([out] IUnknown **ppContainer);  // this allows the segments to get out and walk the dhtml hierarchy
  289.                 HRESULT Decompose(IMSVidGraphSegment *pSegment);
  290. HRESULT IsWindowless(); // the stock hwnd on the main vidctl is only valid if this is set
  291. // be very careful using GetFocus(think twice and then don't).  it is recommended that systems follow the model 
  292. // laid out by atvef and smil wherein the convergence of UI and video are implemented by providing the user interface 
  293. //  as standard html/xml, etc with video incorporated as an element of this standard presentation.   
  294. // however, in the special caseof dvd there is a prexisting standard which is conceptually inside out.
  295. // that is, the UI is embedded in the video stream rather than the stream being embedded in the UI.
  296. // as a consequence, buttons and menus can asynchronously pop up out of the video stream source(dvd navigator) 
  297. // and, may require the focus.  this inside out paradigm is the only situation where
  298. // getfocus should be used.  otherwise, weird non-standard interactions will result.
  299. HRESULT GetFocus();
  300.         };
  301.         
  302. ///////////////////////////////////////////////////////////////////////////////
  303. //
  304. //  Direct Show Segment extension interfaces
  305. //
  306. ///////////////////////////////////////////////////////////////////////////////
  307.         typedef enum MSVidSegmentType {
  308.                 MSVidSEG_SOURCE,
  309.                 MSVidSEG_XFORM,
  310.                 MSVidSEG_DEST,
  311.         } MSVidSegmentType;
  312.         ///////////////////////////////////////////////////////////////////////////////////////
  313.         [object,
  314.                 uuid(1C15D482-911D-11d2-B632-00C04F79498E),
  315.                 helpstring("DShow Graph Segment Builder Interface"),
  316.                 pointer_default(unique)
  317.         ]
  318.         interface IMSVidGraphSegment : IPersist {
  319.         // note: we separate init and load(via put_Container) because we want to associate device object
  320.         // with their device moniker at creation time.  but, we don't want to take the
  321.         // hit of loading their filters until we're ready to build the graph because this segment may not get used
  322.                 [propget] HRESULT Init([out, retval] IUnknown **pInit);
  323.                 [propput] HRESULT Init([in] IUnknown *pInit);
  324.                 HRESULT EnumFilters([out] IEnumFilters **pNewEnum); //filters in seg
  325.                 [propget, helpstring("Graph that contains this segment")] HRESULT Container([out, retval] IMSVidGraphSegmentContainer **ppCtl);
  326.                 [propput, helpstring("Graph that contains this segment")] HRESULT Container([in] IMSVidGraphSegmentContainer *pCtl);
  327.                 [propget, helpstring("Type of Segment")] HRESULT Type([out, retval] MSVidSegmentType *pType);
  328.                 [propget, helpstring("Category this segment is for")] HRESULT Category([out, retval] GUID *pGuid);
  329.                 HRESULT Build();   // used to notify non-composition segment that the build/composition phase is about to start
  330.                 HRESULT PreRun();  // used to notify segments that the graph is built and about to be started
  331.                 HRESULT PostRun(); // called after graph is running
  332.                 HRESULT PreStop(); // used to notify segments that the graph about to be stopped
  333.                 HRESULT PostStop();// called after graph is stopped
  334. HRESULT OnEventNotify(LONG lEventCode, LONG_PTR lEventParm1, LONG_PTR lEventParm2);  //DShow events
  335. HRESULT Decompose();
  336.         };
  337. enum {
  338. // button state 
  339.  MSVIDCTL_LEFT_BUTTON   =0x0001,
  340.  MSVIDCTL_RIGHT_BUTTON  =0x0002,
  341.  MSVIDCTL_MIDDLE_BUTTON =0x0004,
  342.  MSVIDCTL_X_BUTTON1     =0x0008,
  343.  MSVIDCTL_X_BUTTON2     =0x0010,
  344.  // shift state
  345.  MSVIDCTL_SHIFT =0x0001,
  346.  MSVIDCTL_CTRL  =0x0002,
  347.  MSVIDCTL_ALT   =0x0004,
  348. };
  349.         [object,
  350.                 uuid(301C060E-20D9-4587-9B03-F82ED9A9943C),
  351.                 helpstring("DShow Graph Segment Input Events"),
  352.                 pointer_default(unique)
  353.         ]
  354. // this should only be implemented used by input(source) devices with ui in the video 
  355. // stream(specifically dvd).  see discussion of getfocus above
  356.         interface IMSVidGraphSegmentUserInput : IUnknown {
  357. HRESULT Click();
  358. HRESULT DblClick();
  359. HRESULT KeyDown(short* KeyCode, short ShiftState);
  360. HRESULT KeyPress(short* KeyAscii);
  361. HRESULT KeyUp(short* KeyCode, short ShiftState);
  362. HRESULT MouseDown(short ButtonState, short ShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
  363. HRESULT MouseMove(short ButtonState, short ShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
  364. HRESULT MouseUp(short ButtonState, short ShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
  365. }
  366.         ///////////////////////////////////////////////////////////////////////////////////////
  367.         [object,
  368.                 uuid(1C15D483-911D-11d2-B632-00C04F79498E),
  369.                 helpstring("DShow Graph Segment Composition Interface"),
  370.                 pointer_default(unique)
  371.         ]
  372.         interface IMSVidCompositionSegment : IMSVidGraphSegment {
  373.                 HRESULT Compose([in] IMSVidGraphSegment *upstream, [in] IMSVidGraphSegment *downstream);
  374.                 [propget, helpstring("The upstream segment being composed by this composition segment")] HRESULT Up([out] IMSVidGraphSegment **upstream);
  375.                 [propget, helpstring("The downstream segment being composed by this composition segment")] HRESULT Down([out] IMSVidGraphSegment **downstream);
  376.         };
  377.         ///////////////////////////////////////////////////////////////////////////////////////
  378.         [object,
  379.                 uuid(3DD2903E-E0AA-11d2-B63A-00C04F79498E),
  380.                 helpstring("DShow Graph Segment Enumerator"),
  381.                 pointer_default(unique)
  382.         ]
  383.         interface IEnumMSVidGraphSegment : IUnknown {
  384.                 HRESULT Next([in] ULONG celt, [out] IMSVidGraphSegment ** rgelt, [out] ULONG * pceltFetched);
  385.                 HRESULT Skip([in] ULONG celt);
  386.                 HRESULT Reset(void);
  387.                 HRESULT Clone([out] IEnumMSVidGraphSegment** ppenum);
  388.         };
  389.         ///////////////////////////////////////////////////////////////////////////////////////
  390.         [object,
  391.                 uuid(DD47DE3F-9874-4f7b-8B22-7CB2688461E7),
  392.                 helpstring("DShow Video Renderer Graph Segment Builder Interface"),
  393.                 pointer_default(unique)
  394.         ]
  395.         interface IMSVidVRGraphSegment : IMSVidGraphSegment {
  396. // NOTE: because of the way ActiveX controls work there is a tight coupling
  397. // between the video control itself and the video renderer device segment
  398. // as a consequence there are important interfaces such as positioning that
  399. // come through the control via the various ole interfaces which we need to
  400. // pass to the video renderer but we don't want script to access directly
  401. // there are also stock properties such as refresh and autosize that must also be
  402. // implemented directly on the video control and passed through to the video renderer
  403. // from ole interfaces
  404.             [hidden, restricted, propput] HRESULT _VMRendererMode([in] LONG dwMode);
  405.             [hidden, restricted, propput] HRESULT Owner([in] HWND Window);
  406.             [hidden, restricted, propget] HRESULT Owner([out, retval] HWND* Window);
  407. // from ole interfaces
  408.             [hidden, restricted, propget] HRESULT UseOverlay([out, retval] VARIANT_BOOL *UseOverlayVal);
  409.             [hidden, restricted, propput] HRESULT UseOverlay([in] VARIANT_BOOL UseOverlayVal);
  410. // from top-level control visibility state
  411.             [hidden, restricted, propget] HRESULT Visible([out, retval] VARIANT_BOOL* Visible);
  412.             [hidden, restricted, propput] HRESULT Visible([in] VARIANT_BOOL Visible);
  413.     // clients must go through top-level vidctl interfaces to access this.  since vidctl's ondraw
  414.     // actually paints this, it needs to know about it.
  415.             [propget, hidden, restricted] HRESULT ColorKey([out, retval] OLE_COLOR* ColorKey);
  416.             [propput, hidden, restricted] HRESULT ColorKey([in] OLE_COLOR ColorKey);
  417. // from ole interfaces and window msgs
  418.             [propget, hidden, restricted] HRESULT Source([out, retval] LPRECT r);
  419.             [propput, hidden, restricted] HRESULT Source([in] RECT r);
  420. // from ole interfaces and window msgs
  421.             [propget, hidden, restricted] HRESULT Destination([out, retval] LPRECT r);
  422.             [propput, hidden, restricted] HRESULT Destination([in] RECT r);
  423.             [propget, hidden, restricted] HRESULT NativeSize([out] LPSIZE sizeval, [out] LPSIZE aspectratio);
  424. // letterboxing color if we're using 
  425.             [propget, hidden, restricted] HRESULT BorderColor([out, retval] OLE_COLOR* color);
  426.             [propput, hidden, restricted] HRESULT BorderColor([in] OLE_COLOR color);
  427. // letterbox or stretch
  428.             [propget, hidden, restricted] HRESULT MaintainAspectRatio([out, retval] VARIANT_BOOL *fMaintain);
  429.             [propput, hidden, restricted] HRESULT MaintainAspectRatio([in] VARIANT_BOOL fMaintain);
  430. // from top-level control refresh method
  431.             [hidden, restricted] HRESULT Refresh();
  432.             [hidden, restricted] HRESULT DisplayChange();
  433.             [hidden, restricted] HRESULT RePaint([in] HDC hdc);
  434.         };
  435. //*****************************************************************************
  436. ///////////////////////////////////////////////////////////////////////////////
  437. //
  438. //  Automation compliant device object interfaces for bpc video control
  439. //
  440. ///////////////////////////////////////////////////////////////////////////////
  441. //*****************************************************************************
  442. ///////////////////////////////////////////////////////////////////////////////
  443. //
  444. //  input devices
  445. //
  446. ///////////////////////////////////////////////////////////////////////////////
  447.         ///////////////////////////////////////////////////////////////////////////////////////
  448.         [object, dual, oleautomation,
  449.                 uuid(1C15D47C-911D-11d2-B632-00C04F79498E),
  450.                 helpstring("MS Video Control Device Interface"),
  451.                 pointer_default(unique)
  452.         ]
  453.         interface IMSVidDevice : IDispatch {
  454.                 // base device properties
  455.                 [propget, id(dispidName)] HRESULT Name([out, retval] BSTR *Name);
  456.                 [propget, id(dispidStatus)] HRESULT Status([out, retval] long *Status);
  457.                 [propput, id(dispidDevPower)] HRESULT Power([in] VARIANT_BOOL Power);
  458.                 [propget, id(dispidDevPower)] HRESULT Power([retval, out] VARIANT_BOOL *Power);
  459.                 // DShow Associated properties
  460.                 // note: filter can be retrieved by QIing for IMSVidGraphSegment and enumerating
  461.                 [propget, id(dispidKSCat)] HRESULT Category([out, retval] BSTR *Guid);
  462.                 [propget, id(dispidCLSID)] HRESULT ClassID([out, retval] BSTR *Clsid);
  463.                 [propget, id(dispid_KSCat), hidden, restricted] HRESULT _Category([out, retval] GUID* Guid);
  464.                 [propget, id(dispid_CLSID), hidden, restricted] HRESULT _ClassID([out, retval] GUID* Clsid);
  465.                 [id(dispid_IsEqualDevice), helpstring("does the passed in device represent the same underlying hardware")] HRESULT IsEqualDevice([in] IMSVidDevice* Device, [out, retval] VARIANT_BOOL* IsEqual);
  466.         };
  467.         ///////////////////////////////////////////////////////////////////////////////////////
  468.         [object, dual, oleautomation,
  469.                 uuid(37B0353D-A4C8-11d2-B634-00C04F79498E),
  470.                 helpstring("MS Video Control Input Device Interface"),
  471.                 pointer_default(unique)
  472.         ]
  473.         interface IMSVidInputDevice : IMSVidDevice {
  474.                 [id(dispidViewable)]HRESULT IsViewable([in] VARIANT* v, [out, retval] VARIANT_BOOL *pfViewable);  // can this device view this item?
  475.                 [id(dispidDevView)]HRESULT View([in] VARIANT* v);  // set this device to view this item
  476.         };
  477.         ///////////////////////////////////////////////////////////////////////////////////////
  478.         [object, oleautomation,
  479.                 uuid(1C15D480-911D-11d2-B632-00C04F79498E),
  480.                 helpstring("MS Video Control Device Event Interface"),
  481.                 pointer_default(unique)
  482.         ]
  483.         interface IMSVidDeviceEvent : IDispatch {
  484.                 [id(eventidStateChange)]    HRESULT StateChange([in] IMSVidDevice *lpd, [in] long oldState, [in] long newState);
  485.         };
  486.         ///////////////////////////////////////////////////////////////////////////////////////
  487.         [object, oleautomation,
  488.                 uuid(37B0353E-A4C8-11d2-B634-00C04F79498E),
  489.                 helpstring("MS Video Control Input Device Event Interface"),
  490.                 pointer_default(unique)
  491.         ]
  492.         interface IMSVidInputDeviceEvent : IDispatch {
  493.         };
  494.         ///////////////////////////////////////////////////////////////////////////////////////
  495.         [object, dual, oleautomation,
  496.                 uuid(1C15D47F-911D-11d2-B632-00C04F79498E),
  497.                 helpstring("MS Video Control Video Device Interface"),
  498.                 pointer_default(unique)
  499.         ]
  500.         interface IMSVidVideoInputDevice : IMSVidInputDevice {
  501.         };
  502.         ///////////////////////////////////////////////////////////////////////////////////////
  503.         [object, dual, oleautomation,
  504.                 uuid(37B03538-A4C8-11d2-B634-00C04F79498E),
  505.                 helpstring("MS Video Control Playback Device Interface"),
  506.                 pointer_default(unique)
  507.         ]
  508.         interface IMSVidPlayback : IMSVidInputDevice {
  509.                 // note: the following methods control the playback device *NOT* the graph.
  510.                 // if the underlying source filter only supports these functions via
  511.                 // imediacontrol on the graph then this device segment object should return E_NOTIMPL.
  512.                 [propget, id(dispid_EnableResetOnStop), helpstring("EnableResetOnStop")] HRESULT EnableResetOnStop([out, retval] VARIANT_BOOL *pVal);
  513.                 [propput, id(dispid_EnableResetOnStop), helpstring("EnableResetOnStop")] HRESULT EnableResetOnStop([in] VARIANT_BOOL newVal);
  514.                 [id(dispidDevRun)] HRESULT Run();
  515.                 [id(dispidDevPause)] HRESULT Pause();
  516.                 [id(dispidDevStop)] HRESULT Stop();
  517. [propget, id(dispidDevCanStep)] HRESULT CanStep([in] VARIANT_BOOL fBackwards, [out,retval] VARIANT_BOOL *pfCan);
  518. [id(dispidDevStep)] HRESULT Step([in] long lStep);
  519.                 [propput, id(dispidrate), helpstring("Rate")] HRESULT Rate([in] double plRate);
  520.                 [propget, id(dispidrate), helpstring("Rate")] HRESULT Rate([out,retval]double *plRate);
  521.                 [propput, id(dispidposition), helpstring("Position")] HRESULT CurrentPosition([in] long lPosition);
  522.                 [propget, id(dispidposition), helpstring("Position")] HRESULT CurrentPosition([out, retval] long* lPosition);  
  523.                 [propput, id(dispidpositionmode), helpstring("PositionMode")] HRESULT PositionMode([in] PositionModeList lPositionMode);
  524.                 [propget, id(dispidpositionmode), helpstring("PositionMode")] HRESULT PositionMode([out, retval] PositionModeList* lPositionMode); 
  525.                 [propget, id(dispidlength), helpstring("Length")] HRESULT Length([out, retval] long *lLength);
  526.         };
  527.         ///////////////////////////////////////////////////////////////////////////////////////
  528.         [object, oleautomation,
  529.                 uuid(37B0353B-A4C8-11d2-B634-00C04F79498E),
  530.                 helpstring("MS Video Control Playback Device Event Interface"),
  531.                 pointer_default(unique)
  532.         ]
  533.         interface IMSVidPlaybackEvent : IMSVidInputDeviceEvent {
  534.                 [id(eventidEndOfMedia)]    HRESULT EndOfMedia([in] IMSVidPlayback *lpd);
  535.         };
  536.         ///////////////////////////////////////////////////////////////////////////////////////
  537.         [object, dual, oleautomation, hidden,
  538.                 uuid(1C15D47D-911D-11d2-B632-00C04F79498E),
  539.                 helpstring("MS Video Tuner Interface"),
  540.                 pointer_default(unique)
  541.         ]
  542.         interface IMSVidTuner : IMSVidVideoInputDevice {    
  543.                 [propget, id(dispidTune)] HRESULT Tune([out, retval] ITuneRequest **ppTR);
  544.                 [propput, id(dispidTune)] HRESULT Tune([in] ITuneRequest *pTR);
  545.                 [propget, id(dispidTS)] HRESULT TuningSpace([out, retval] ITuningSpace **plTS);
  546.                 [hidden, restricted, propput, id(dispidTS)] HRESULT TuningSpace([in] ITuningSpace* plTS);
  547.         };
  548.         ///////////////////////////////////////////////////////////////////////////////////////
  549.         [object, oleautomation, hidden,
  550.                 uuid(1C15D485-911D-11d2-B632-00C04F79498E),
  551.                 helpstring("MS Video Control Tuner Device Event Interface"),
  552.                 pointer_default(unique)
  553.         ]
  554.         interface IMSVidTunerEvent : IMSVidInputDeviceEvent {
  555.                 [id(eventidOnTuneChanged)]    HRESULT TuneChanged([in] IMSVidTuner *lpd);
  556.         };
  557.         ///////////////////////////////////////////////////////////////////////////////////////
  558.         [object, dual, oleautomation, hidden,
  559.                 uuid(1C15D47E-911D-11d2-B632-00C04F79498E),
  560.                 helpstring("MS Video TV Tuner Interface"),
  561.                 pointer_default(unique)
  562.         ]
  563.         interface IMSVidAnalogTuner : IMSVidTuner {
  564.                 [propget, id(dispidTuneChan)] HRESULT Channel([out, retval] long *Channel);
  565.                 [propput, id(dispidTuneChan)] HRESULT Channel([in] long Channel);
  566.                 [propget, id(dispidDevVideoFrequency)] HRESULT VideoFrequency([retval, out] long *lcc);
  567.                 [propget, id(dispidDevAudioFrequency)] HRESULT AudioFrequency([retval, out] long *lcc);
  568.                 // note: this is not LCID, this is physical location of device using
  569.                 // international dialing code value
  570.                 [propget, id(dispidDevCountryCode)] HRESULT CountryCode([retval, out] long *lcc);
  571.                 [propput, id(dispidDevCountryCode)] HRESULT CountryCode([in] long lcc);
  572. // analog specific shortcut to enabling a different audio component
  573.                 [propget, id(dispidDevSAP)] HRESULT SAP([out, retval] VARIANT_BOOL *pfSapOn);
  574.                 [propput, id(dispidDevSAP)] HRESULT SAP([in] VARIANT_BOOL fSapOn);
  575.                 // methods
  576.                 [id(dispidChannelAvailable)] HRESULT ChannelAvailable([in] long nChannel, [in, out] long *SignalStrength, [retval, out] VARIANT_BOOL *fSignalPresent);
  577.         };
  578.         ///////////////////////////////////////////////////////////////////////////////////////
  579.         [object, oleautomation,
  580.                 uuid(1C15D486-911D-11d2-B632-00C04F79498E),
  581.                 helpstring("MS Video Control TV Tuner Device Event Interface"),
  582.                 pointer_default(unique)
  583.         ]
  584.         interface IMSVidAnalogTunerEvent : IMSVidTunerEvent {
  585.         };
  586.         ///////////////////////////////////////////////////////////////////////////////////////
  587.         [object, dual, oleautomation, hidden,
  588.                 uuid(37B03539-A4C8-11d2-B634-00C04F79498E),
  589.                 helpstring("MS Video Control File Playback Device Interface"),
  590.                 pointer_default(unique)
  591.         ]
  592.         interface IMSVidFilePlayback : IMSVidPlayback {
  593.                 [propget, id(dispidDevFileName)] HRESULT FileName([out, retval] BSTR *FileName);
  594.                 [propput, id(dispidDevFileName)] HRESULT FileName([in] BSTR FileName);
  595.         };
  596.         ///////////////////////////////////////////////////////////////////////////////////////
  597.         [object, oleautomation, hidden,
  598.                 uuid(37B0353A-A4C8-11d2-B634-00C04F79498E),
  599.                 helpstring("MS Video Control File Playback Device Event Interface"),
  600.                 pointer_default(unique)
  601.         ]
  602.         interface IMSVidFilePlaybackEvent : IMSVidPlaybackEvent {
  603.         };
  604.         ///////////////////////////////////////////////////////////////////////////////////////
  605.         typedef enum
  606.         {
  607.             dvdMenu_Title = 2,
  608.             dvdMenu_Root = dvdMenu_Title + 1,
  609.             dvdMenu_Subpicture = dvdMenu_Root + 1,
  610.             dvdMenu_Audio = dvdMenu_Subpicture + 1,
  611.             dvdMenu_Angle = dvdMenu_Audio + 1,
  612.             dvdMenu_Chapter = dvdMenu_Angle + 1
  613.         } DVDMenuIDConstants;
  614.      typedef enum 
  615.         {  
  616.         dvdState_Undefined   = -2, 
  617.         dvdState_Unitialized = dvdState_Undefined + 1,
  618.         dvdState_Stopped   = dvdState_Unitialized + 1,
  619.         dvdState_Paused    = dvdState_Stopped + 1,
  620.         dvdState_Running   = dvdState_Paused + 1
  621.      }  DVDFilterState;
  622.      typedef enum 
  623.      {
  624.      dvdStruct_Volume = 0x1,
  625.      dvdStruct_Title = 0x2,
  626.      dvdStruct_ParentalID = 0x3,
  627.      dvdStruct_PartOfTitle = 0x4,
  628.      dvdStruct_Cell = 0x5,
  629.      dvdStream_Audio = 0x10,
  630.      dvdStream_Subpicture = 0x11,
  631.      dvdStream_Angle = 0x12,
  632.      dvdChannel_Audio = 0x20,
  633.      dvdGeneral_Name = 0x30,
  634.      dvdGeneral_Comments = 0x31,
  635.      dvdTitle_Series = 0x38,
  636.      dvdTitle_Movie = 0x39,
  637.      dvdTitle_Video = 0x3a,
  638.      dvdTitle_Album = 0x3b,
  639.      dvdTitle_Song = 0x3c,
  640.      dvdTitle_Other = 0x3f,
  641.      dvdTitle_Sub_Series = 0x40,
  642.      dvdTitle_Sub_Movie = 0x41,
  643.      dvdTitle_Sub_Video = 0x42,
  644.      dvdTitle_Sub_Album = 0x43,
  645.      dvdTitle_Sub_Song = 0x44,
  646.      dvdTitle_Sub_Other = 0x47,
  647.      dvdTitle_Orig_Series = 0x48,
  648.      dvdTitle_Orig_Movie = 0x49,
  649.      dvdTitle_Orig_Video = 0x4a,
  650.      dvdTitle_Orig_Album = 0x4b,
  651.      dvdTitle_Orig_Song = 0x4c,
  652.      dvdTitle_Orig_Other = 0x4f,
  653.      dvdOther_Scene = 0x50,
  654.      dvdOther_Cut = 0x51,
  655.      dvdOther_Take = 0x52
  656.      } DVDTextStringType;
  657.      typedef enum 
  658.      {
  659.      dvdSPExt_NotSpecified = 0,
  660.      dvdSPExt_Caption_Normal = 1,
  661.      dvdSPExt_Caption_Big = 2,
  662.      dvdSPExt_Caption_Children = 3,
  663.      dvdSPExt_CC_Normal = 5,
  664.      dvdSPExt_CC_Big = 6,
  665.      dvdSPExt_CC_Children = 7,
  666.      dvdSPExt_Forced = 9,
  667.      dvdSPExt_DirectorComments_Normal = 13,
  668.      dvdSPExt_DirectorComments_Big = 14,
  669.      dvdSPExt_DirectorComments_Children = 15
  670.      } DVDSPExt;
  671.         [object, dual, oleautomation, hidden,
  672.             uuid(CF45F88B-AC56-4EE2-A73A-ED04E2885D3C),
  673.             helpstring("IMSVidWebDVD Interface"),
  674.             pointer_default(unique)
  675.         ]
  676.         interface IMSVidWebDVD : IMSVidPlayback {
  677.             HRESULT OnDVDEvent([in]long lEvent, [in]LONG_PTR lParam1, [in]LONG_PTR lParam2);
  678.             [id(dispid_playtitle), helpstring("method PlayTitle")] HRESULT PlayTitle([in] long lTitle);
  679.             [id(dispid_playchapterintitle), helpstring("method PlayChapterInTitle")] HRESULT PlayChapterInTitle([in] long lTitle, [in] long lChapter);
  680.             [id(dispid_playchapter), helpstring("method PlayChapter")] HRESULT PlayChapter([in] long lChapter);
  681.             [id(dispid_playchaptersautostop), helpstring("method PlayChaptersAutoStop")] HRESULT PlayChaptersAutoStop([in] long lTitle, [in] long lstrChapter, [in] long lChapterCount);
  682.             [id(dispid_playattime), helpstring("method PlayAtTime")] HRESULT PlayAtTime([in] BSTR strTime);
  683.             [id(dispid_playattimeintitle), helpstring("method PlayAtTimeInTitle")] HRESULT PlayAtTimeInTitle([in] long lTitle, [in] BSTR strTime);
  684.             [id(dispid_playperiodintitleautostop), helpstring("method PlayPeriodInTitleAutoStop")] HRESULT PlayPeriodInTitleAutoStop([in] long lTitle, [in] BSTR strStartTime, [in] BSTR strEndTime);
  685.             [id(dispid_replaychapter), helpstring("method ReplayChapter")] HRESULT ReplayChapter();
  686.             [id(dispid_playprevchapter), helpstring("method PlayPrevChapter")] HRESULT PlayPrevChapter();
  687.             [id(dispid_playnextchapter), helpstring("method PlayNextChapter")] HRESULT PlayNextChapter();
  688.             [id(dispid_stilloff), helpstring("method StillOff")] HRESULT StillOff();
  689.             [propget, id(dispid_audiolanguage), helpstring("AudioLanguage")] HRESULT AudioLanguage([in] long lStream, [in, defaultvalue(0)] VARIANT_BOOL fFormat, [out, retval] BSTR* strAudioLang);
  690.             [id(dispid_showmenu), helpstring("method ShowMenu")] HRESULT ShowMenu([in] DVDMenuIDConstants MenuID);
  691.             [id(dispid_resume), helpstring("method Resume")] HRESULT Resume();
  692.             [id(dispid_returnfromsubmenu), helpstring("method ReturnFromSubmenu")] HRESULT ReturnFromSubmenu();
  693.             [propget,id(dispid_buttonsavailable), helpstring("ButtonsAvailable")] HRESULT ButtonsAvailable([out, retval] long *pVal);
  694.             [propget,id(dispid_currentbutton), helpstring("CurrentButton")] HRESULT CurrentButton([out, retval] long *pVal);
  695.             [id(dispid_SelectAndActivateButton), helpstring("method SelectAndActivateButton")] HRESULT SelectAndActivateButton([in] long lButton);
  696.             [id(dispid_ActivateButton), helpstring("method ActivateButton")] HRESULT ActivateButton();
  697.             [id(dispid_SelectRightButton), helpstring("method SelectRightButton")] HRESULT SelectRightButton();
  698.             [id(dispid_SelectLeftButton), helpstring("method SelectLeftButton")] HRESULT SelectLeftButton();
  699.             [id(dispid_SelectLowerButton), helpstring("method SelectLowerButton")] HRESULT SelectLowerButton();
  700.             [id(dispid_SelectUpperButton), helpstring("method SelectUpperButton")] HRESULT SelectUpperButton();
  701.             [id(dispid_ActivateAtPosition), helpstring("method ActivateAtPosition")] HRESULT ActivateAtPosition([in] long xPos, [in] long yPos);
  702.             [id(dispid_SelectAtPosition), helpstring("method SelectAtPosition")] HRESULT SelectAtPosition([in] long xPos, [in] long yPos);
  703.             [propget, id(dispid_ButtonAtPosition), helpstring("ButtonAtPosition")] HRESULT ButtonAtPosition([in] long xPos, [in] long yPos, [out, retval] long* plButton);
  704.             [propget, id(dispid_NumberOfChapters), helpstring("NumberOfChapters")] HRESULT NumberOfChapters([in] long lTitle, [out, retval] long *pVal);
  705.             [propget, id(dispid_TotalTitleTime), helpstring("TotalTitleTime")] HRESULT TotalTitleTime([out, retval] BSTR *pVal);
  706.             [propget, id(dispid_TitlesAvailable), helpstring("TitlesAvailable")] HRESULT TitlesAvailable([out, retval] long* pVal);
  707.             [propget, id(dispid_VolumesAvailable), helpstring("VolumesAvailable")] HRESULT VolumesAvailable([out, retval] long *pVal);
  708.             [propget, id(dispid_CurrentVolume), helpstring("CurrentVolume")] HRESULT CurrentVolume([out, retval] long *pVal);
  709.             [propget, id(dispid_CurrentDiscSide), helpstring("CurrentDiscSide")] HRESULT CurrentDiscSide([out, retval] long *pVal);
  710.             [propget, id(dispid_CurrentDomain), helpstring("CurrentDomain")] HRESULT CurrentDomain([out, retval] long *pVal);
  711.             [propget, id(dispid_CurrentChapter), helpstring("CurrentChapter")] HRESULT CurrentChapter([out, retval] long *pVal);
  712.             [propget, id(dispid_CurrentTitle), helpstring("CurrentTitle")] HRESULT CurrentTitle([out, retval] long *pVal);
  713.             [propget, id(dispid_CurrentTime), helpstring("CurrentTime")] HRESULT CurrentTime([out, retval] BSTR *pVal);
  714.             [id(dispid_DVDTimeCode2bstr), helpstring("method DVDTimeCode2bstr")] HRESULT DVDTimeCode2bstr([in] long timeCode, [out, retval] BSTR *pTimeStr);
  715.             [propget, id(dispid_DVDDirectory), helpstring("DVDDirectory")] HRESULT DVDDirectory([out, retval] BSTR *pVal);
  716.             [propput, id(dispid_DVDDirectory), helpstring("DVDDirectory")] HRESULT DVDDirectory([in] BSTR newVal);
  717.             [id(dispid_IsSubpictureStreamEnabled), helpstring("method IsSubpictureStreamEnabled")] HRESULT IsSubpictureStreamEnabled([in] long lstream, [out, retval] VARIANT_BOOL *fEnabled);
  718.             [id(dispid_IsAudioStreamEnabled), helpstring("method IsAudioStreamEnabled")] HRESULT IsAudioStreamEnabled([in] long lstream, [out, retval] VARIANT_BOOL *fEnabled);      
  719.             [propget, id(dispid_CurrentSubpictureStream), helpstring("CurrentSubpictureStream")] HRESULT CurrentSubpictureStream([out, retval] long *pVal);
  720.             [propput, id(dispid_CurrentSubpictureStream), helpstring("CurrentSubpictureStream")] HRESULT CurrentSubpictureStream([in] long newVal);
  721.             [propget, id(dispid_SubpictureLanguage), helpstring("SubpictureLanguage")] HRESULT SubpictureLanguage(long lStream, [out, retval] BSTR* strLanguage);
  722.             [propget, id(dispid_CurrentAudioStream), helpstring("CurrentAudioStream")] HRESULT CurrentAudioStream([out, retval] long *pVal);
  723.             [propput, id(dispid_CurrentAudioStream), helpstring("CurrentAudioStream")] HRESULT CurrentAudioStream([in] long newVal);
  724.             [propget, id(dispid_AudioStreamsAvailable), helpstring("AudioStreamsAvailable")] HRESULT AudioStreamsAvailable([out, retval] long *pVal);
  725.             [propget, id(dispid_AnglesAvailable), helpstring("AnglesAvailable")] HRESULT AnglesAvailable([out, retval] long *pVal);
  726.             [propget, id(dispid_CurrentAngle), helpstring("CurrentAngle")] HRESULT CurrentAngle([out, retval] long *pVal);
  727.             [propput, id(dispid_CurrentAngle), helpstring("CurrentAngle")] HRESULT CurrentAngle([in] long newVal);
  728.             [propget, id(dispid_SubpictureStreamsAvailable), helpstring("SubpictureStreamsAvailable")] HRESULT SubpictureStreamsAvailable([out, retval] long *pVal);
  729.             [propget, id(dispid_SubpictureOn), helpstring("SubpictureOn")] HRESULT SubpictureOn([out, retval] VARIANT_BOOL *pVal);
  730.             [propput, id(dispid_SubpictureOn), helpstring("SubpictureOn")] HRESULT SubpictureOn([in] VARIANT_BOOL newVal);
  731.             [propget, id(dispid_DVDUniqueID), helpstring("DVDUniqueID")] HRESULT DVDUniqueID([out, retval] BSTR *pVal);
  732.             [id(dispid_AcceptParentalLevelChange), helpstring("method AcceptParentalLevelChange")] HRESULT AcceptParentalLevelChange([in] VARIANT_BOOL fAccept, [in] BSTR strUserName, [in] BSTR strPassword);
  733.             [id(dispid_NotifyParentalLevelChange), helpstring("method NotifyParentalLevelChange")] HRESULT NotifyParentalLevelChange([in] VARIANT_BOOL newVal);
  734.             [id(dispid_SelectParentalCountry), helpstring("method SelectParentalCountry")] HRESULT SelectParentalCountry([in] long lCountry, [in] BSTR strUserName, [in] BSTR strPassword);
  735.             [id(dispid_SelectParentalLevel), helpstring("method SelectParentalLevel")] HRESULT SelectParentalLevel([in] long lParentalLevel, [in] BSTR strUserName, [in] BSTR strPassword);
  736.             [propget, id(dispid_TitleParentalLevels), helpstring("TitleParentalLevels")] HRESULT TitleParentalLevels([in] long lTitle, [out, retval] long* plParentalLevels);
  737.             [propget, id(dispid_PlayerParentalCountry), helpstring("PlayerParentalCountry")] HRESULT PlayerParentalCountry([out, retval] long* plCountryCode);
  738.             [propget, id(dispid_PlayerParentalLevel), helpstring("PlayerParentalLevel")] HRESULT PlayerParentalLevel([out, retval] long* plParentalLevel);
  739.             [id(dispid_Eject), helpstring("method Eject")] HRESULT Eject();
  740.             [id(dispid_UOPValid), helpstring("method UOPValid")] HRESULT UOPValid([in] long lUOP, [out, retval] VARIANT_BOOL* pfValid);
  741.             [propget, id(dispid_SPRM), helpstring("SPRM")] HRESULT SPRM([in] long lIndex, [out, retval] short *psSPRM);
  742.             [propget, id(dispid_GPRM), helpstring("GPRM")] HRESULT GPRM([in] long lIndex, [out, retval] short *psSPRM);
  743.             [propput, id(dispid_GPRM), helpstring("GPRM")] HRESULT GPRM([in] long lIndex, [in] short sValue);
  744.             [propget, id(dispid_DVDTextStringType), helpstring("DVDTextStringType")] HRESULT DVDTextStringType([in] long lLangIndex, [in] long lStringIndex,  [out, retval] DVDTextStringType* pType);
  745.             [propget, id(dispid_DVDTextString), helpstring("DVDTextString")] HRESULT DVDTextString([in] long lLangIndex, [in] long lStringIndex,  [out, retval] BSTR* pstrText);
  746.             [propget, id(dispid_DVDTextNumberOfStrings), helpstring("DVDTextNumberOfStrings")] HRESULT DVDTextNumberOfStrings([in] long lLangIndex, [out, retval] long* plNumOfStrings);
  747.             [propget, id(dispid_DVDTextNumberOfLanguages), helpstring("DVDTextNumberOfLanguages")] HRESULT DVDTextNumberOfLanguages([out, retval] long* plNumOfLangs);
  748.             [propget, id(dispid_DVDTextLanguageLCID), helpstring("DVDTextLanguageLCID")] HRESULT DVDTextLanguageLCID([in] long lLangIndex, [out, retval] long* lcid);
  749.             [id(dispid_RegionChange), helpstring("method RegionChange")] HRESULT RegionChange();
  750.             [propget, id(dispid_DVDAdm), helpstring("DVDAdm")] HRESULT DVDAdm([out, retval] IDispatch* *pVal);
  751.             [id(dispid_DeleteBookmark), helpstring("method DeleteBookmark")] HRESULT DeleteBookmark();
  752.             [id(dispid_RestoreBookmark), helpstring("method RestoreBookmark")] HRESULT RestoreBookmark();
  753.             [id(dispid_SaveBookmark), helpstring("method SaveBookmark")] HRESULT SaveBookmark();
  754.             [id(dispid_SelectDefaultAudioLanguage), helpstring("method SelectDefaultAudioLanguage")] HRESULT SelectDefaultAudioLanguage([in] long lang, [in] long ext);
  755.             [id(dispid_SelectDefaultSubpictureLanguage), helpstring("method SelectDefaultSubpictureLanguage")] HRESULT SelectDefaultSubpictureLanguage([in] long lang, [in] DVDSPExt ext);
  756.             [propget, id(dispid_PreferredSubpictureStream), helpstring("PreferredSubpictureStream")] HRESULT PreferredSubpictureStream([out, retval] long *pVal);
  757.             [propget, id(dispid_DefaultMenuLanguage), helpstring("DefaultMenuLanguage")] HRESULT DefaultMenuLanguage([out, retval] long* lang);
  758.             [propput, id(dispid_DefaultMenuLanguage), helpstring("DefaultMenuLanguage")] HRESULT DefaultMenuLanguage([in] long lang);
  759.             [propget, id(dispid_DefaultSubpictureLanguage), helpstring("DefaultSubpictureLanguage")] HRESULT DefaultSubpictureLanguage([out, retval] long* lang);
  760.             [propget, id(dispid_DefaultAudioLanguage), helpstring("DefaultAudioLanguage")] HRESULT DefaultAudioLanguage([out, retval] long *lang);
  761.             [propget, id(dispid_DefaultSubpictureLanguageExt), helpstring("DefaultSubpictureLanguageExt")] HRESULT DefaultSubpictureLanguageExt([out, retval] DVDSPExt* ext);
  762.             [propget, id(dispid_DefaultAudioLanguageExt), helpstring("DefaultAudioLanguageExt")] HRESULT DefaultAudioLanguageExt([out, retval] long *ext);
  763.             [propget, id(dispid_LanguageFromLCID), helpstring("LanguageFromLCID")] HRESULT LanguageFromLCID([in] long lcid, [out, retval] BSTR* lang);
  764.             [propget, id(dispid_KaraokeAudioPresentationMode), helpstring("KaraokeAudioPresentationMode")] HRESULT KaraokeAudioPresentationMode([out, retval] long *pVal);
  765.             [propput, id(dispid_KaraokeAudioPresentationMode), helpstring("KaraokeAudioPresentationMode")] HRESULT KaraokeAudioPresentationMode([in] long newVal);
  766.             [propget, id(dispid_KaraokeChannelContent), helpstring("KaraokeChannelContent")] HRESULT KaraokeChannelContent([in] long lStream, [in] long lChan, [out, retval] long* lContent);
  767.             [propget, id(dispid_KaraokeChannelAssignment), helpstring("KaraokeChannelAssignment")] HRESULT KaraokeChannelAssignment([in] long lStream, [out, retval] long *lChannelAssignment);
  768.             [id(dispid_RestorePreferredSettings), helpstring("method RestorePreferredSettings")] HRESULT RestorePreferredSettings();
  769.             [propget, id(dispid_ButtonRect), helpstring("ButtonRect")] HRESULT ButtonRect([in] long lButton, [out, retval] IMSVidRect** pRect);
  770.             [propget, id(dispid_DVDScreenInMouseCoordinates), helpstring("DVDScreenInMouseCoordinates")] HRESULT DVDScreenInMouseCoordinates([out, retval] IMSVidRect** ppRect);
  771.             [propput, id(dispid_DVDScreenInMouseCoordinates), helpstring("DVDScreenInMouseCoordinates")] HRESULT DVDScreenInMouseCoordinates([in] IMSVidRect* pRect);
  772.         };
  773.         ///////////////////////////////////////////////////////////////////////////////////////
  774.         [object, oleautomation, hidden,
  775.                 uuid(B4F7A674-9B83-49cb-A357-C63B871BE958),
  776.                 helpstring("MS Video Control File Playback Device Event Interface"),
  777.                 pointer_default(unique)
  778.         ]
  779.         interface IMSVidWebDVDEvent : IMSVidPlaybackEvent {
  780.                 [id(eventidDVDNotify), helpstring("Notifies the client about DVD Code")] HRESULT DVDNotify([in]long lEventCode, [in]VARIANT lParam1, [in]VARIANT lParam2);
  781.                 [id(eventidPlayForwards), helpstring("Notifies the client")] HRESULT PlayForwards([in] VARIANT_BOOL bEnabled);
  782.                 [id(eventidPlayBackwards), helpstring("Notifies the client")] HRESULT PlayBackwards([in] VARIANT_BOOL bEnabled);
  783.                 [id(eventidShowMenu), helpstring("Notifies the client")] HRESULT ShowMenu([in]DVDMenuIDConstants, [in] VARIANT_BOOL bEnabled);
  784.                 [id(eventidResume), helpstring("Notifies the client")] HRESULT Resume([in] VARIANT_BOOL bEnabled);
  785.                 [id(eventidSelectOrActivateButton), helpstring("Notifies the client")] HRESULT SelectOrActivateButton([in] VARIANT_BOOL bEnabled);
  786.                 [id(eventidStillOff), helpstring("Notifies the client")] HRESULT StillOff([in] VARIANT_BOOL bEnabled);
  787.                 [id(eventidPauseOn), helpstring("Notifies the client")] HRESULT PauseOn([in] VARIANT_BOOL bEnabled);
  788.                 [id(eventidChangeCurrentAudioStream), helpstring("Notifies the client")] HRESULT ChangeCurrentAudioStream([in] VARIANT_BOOL bEnabled);
  789.                 [id(eventidChangeCurrentSubpictureStream), helpstring("Notifies the client")] HRESULT ChangeCurrentSubpictureStream([in] VARIANT_BOOL bEnabled);
  790.                 [id(eventidChangeCurrentAngle), helpstring("Notifies the client")] HRESULT ChangeCurrentAngle([in] VARIANT_BOOL bEnabled);
  791.                 [id(eventidPlayAtTimeInTitle), helpstring("Notifies the client")] HRESULT PlayAtTimeInTitle([in] VARIANT_BOOL bEnabled);
  792.                 [id(eventidPlayAtTime), helpstring("Notifies the client")] HRESULT PlayAtTime([in] VARIANT_BOOL bEnabled);
  793.                 [id(eventidPlayChapterInTitle), helpstring("Notifies the client")] HRESULT PlayChapterInTitle([in] VARIANT_BOOL bEnabled);
  794.                 [id(eventidPlayChapter), helpstring("Notifies the client")] HRESULT PlayChapter([in] VARIANT_BOOL bEnabled);
  795.                 [id(eventidReplayChapter), helpstring("Notifies the client")] HRESULT ReplayChapter([in] VARIANT_BOOL bEnabled);
  796.                 [id(eventidPlayNextChapter), helpstring("Notifies the client")] HRESULT PlayNextChapter([in] VARIANT_BOOL bEnabled);
  797.                 [id(eventidStop), helpstring("Notifies the client")] HRESULT Stop([in] VARIANT_BOOL bEnabled);
  798.                 [id(eventidReturnFromSubmenu), helpstring("Notifies the client")] HRESULT ReturnFromSubmenu([in] VARIANT_BOOL bEnabled);
  799.                 [id(eventidPlayTitle), helpstring("Notifies the client")] HRESULT PlayTitle([in] VARIANT_BOOL bEnabled);
  800.                 [id(eventidPlayPrevChapter), helpstring("Notifies the client")] HRESULT PlayPrevChapter([in] VARIANT_BOOL bEnabled);
  801.                 [id(eventidChangeKaraokePresMode), helpstring("Notifies the client")] HRESULT ChangeKaraokePresMode([in] VARIANT_BOOL bEnabled);
  802.                 [id(eventidChangeVideoPresMode), helpstring("Notifies the client")] HRESULT ChangeVideoPresMode([in] VARIANT_BOOL bEnabled);
  803.         };
  804.         [object, dual, oleautomation, hidden,
  805.             uuid(B8BE681A-EB2C-47f0-B415-94D5452F0E05),
  806.             helpstring("IMSVidWebDVDAdm Interface"),
  807.             pointer_default(unique)
  808.         ]
  809.         interface IMSVidWebDVDAdm : IDispatch
  810.         {
  811.             [id(dispidChangePassword), helpstring("method ChangePassword")] HRESULT ChangePassword([in]BSTR strUserName, [in]BSTR strOld, [in]BSTR strNew);
  812.             [id(dispidSaveParentalLevel), helpstring("method SaveParentalLevel")] HRESULT SaveParentalLevel([in]long level,[in]BSTR strUserName, [in]BSTR strPassword);
  813.             [id(dispidSaveParentalCountry), helpstring("method SaveParentalCountry")] HRESULT SaveParentalCountry([in]long country,[in]BSTR strUserName, [in]BSTR strPassword);
  814.             [id(dispidConfirmPassword), helpstring("method ConfirmPassword")] HRESULT ConfirmPassword([in]BSTR strUserName, [in]BSTR strPassword, [out, retval] VARIANT_BOOL *pVal);
  815.             [id(dispidGetParentalLevel), helpstring("method GetParentalLevel")] HRESULT GetParentalLevel([out, retval] long *lLevel);
  816.             [id(dispidGetParentalCountry), helpstring("method GetParentalCountry")] HRESULT GetParentalCountry([out, retval] long *lCountry);
  817.             [propget, id(dispidDefaultAudioLCID), helpstring("property DefaultAudioLCID")] HRESULT DefaultAudioLCID([out, retval] long *pVal);
  818.             [propput, id(dispidDefaultAudioLCID), helpstring("property DefaultAudioLCID")] HRESULT DefaultAudioLCID([in] long newVal);
  819.             [propget, id(dispidDefaultSubpictureLCID), helpstring("property DefaultSubpictureLCID")] HRESULT DefaultSubpictureLCID([out, retval] long *pVal);
  820.             [propput, id(dispidDefaultSubpictureLCID), helpstring("property DefaultSubpictureLCID")] HRESULT DefaultSubpictureLCID([in] long newVal);
  821.             [propget, id(dispidDefaultMenuLCID), helpstring("property DefaultMenuLCID")] HRESULT DefaultMenuLCID([out, retval] long *pVal);
  822.             [propput, id(dispidDefaultMenuLCID), helpstring("property DefaultMenuLCID")] HRESULT DefaultMenuLCID([in] long newVal);
  823.             [propget, id(dispidBookmarkOnStop), helpstring("property BookmarkOnStop")] HRESULT BookmarkOnStop([out, retval] VARIANT_BOOL *pVal);
  824.             [propput, id(dispidBookmarkOnStop), helpstring("property BookmarkOnStop")] HRESULT BookmarkOnStop([in] VARIANT_BOOL newVal);
  825.         };
  826. ///////////////////////////////////////////////////////////////////////////////
  827. //
  828. //  output devices
  829. //
  830. ///////////////////////////////////////////////////////////////////////////////
  831.         ///////////////////////////////////////////////////////////////////////////////////////
  832.         [object, dual, oleautomation,
  833.                 uuid(37B03546-A4C8-11d2-B634-00C04F79498E),
  834.                 helpstring("MS Video Control Output Device Interface"),
  835.                 pointer_default(unique)
  836.         ]
  837.         interface IMSVidOutputDevice : IMSVidDevice {
  838.         };
  839.         ///////////////////////////////////////////////////////////////////////////////////////
  840.         [object, oleautomation,
  841.                 uuid(2E6A14E2-571C-11d3-B652-00C04F79498E),
  842.                 helpstring("MS Video Control Output Device Event Interface"),
  843.                 pointer_default(unique)
  844.         ]
  845.         interface IMSVidOutputDeviceEvent : IMSVidDeviceEvent {
  846.         };
  847. ///////////////////////////////////////////////////////////////////////////////
  848. //
  849. //  features
  850. //
  851. ///////////////////////////////////////////////////////////////////////////////
  852.         ///////////////////////////////////////////////////////////////////////////////////////
  853.         [object, dual, oleautomation,
  854.                 uuid(37B03547-A4C8-11d2-B634-00C04F79498E),
  855.                 helpstring("MS Video Control Feature Interface"),
  856.                 pointer_default(unique)
  857.         ]
  858.         interface IMSVidFeature : IMSVidDevice {
  859.         };
  860.         ///////////////////////////////////////////////////////////////////////////////////////
  861.         [object, oleautomation,
  862.                 uuid(3DD2903C-E0AA-11d2-B63A-00C04F79498E),
  863.                 helpstring("MS Video Control Feature Event Interface"),
  864.                 pointer_default(unique)
  865.         ]
  866.         interface IMSVidFeatureEvent : IMSVidDeviceEvent {
  867.         };
  868.         ///////////////////////////////////////////////////////////////////////////////////////
  869.         [object, dual, oleautomation, hidden,
  870.                 uuid(334125C1-77E5-11d3-B653-00C04F79498E),
  871.                 helpstring("MS Video Control Data Services Feature Interface"),
  872.                 pointer_default(unique)
  873.         ]
  874.         interface IMSVidDataServices : IMSVidFeature {
  875.         };
  876.         ///////////////////////////////////////////////////////////////////////////////////////
  877.         [object, oleautomation, hidden,
  878.                 uuid(334125C2-77E5-11d3-B653-00C04F79498E),
  879.                 helpstring("MS Video Control Data Services Feature Event Interface"),
  880.                 pointer_default(unique)
  881.         ]
  882.         interface IMSVidDataServicesEvent : IMSVidDeviceEvent {
  883.         };
  884.         ///////////////////////////////////////////////////////////////////////////////////////
  885.         [object, dual, oleautomation, hidden,
  886.                 uuid(99652EA1-C1F7-414f-BB7B-1C967DE75983),
  887.                 helpstring("MS Video Control Closed Captioning Feature Interface"),
  888.                 pointer_default(unique)
  889.         ]
  890.         interface IMSVidClosedCaptioning : IMSVidFeature {
  891.                 [propget, id(dispidCCEnable)] HRESULT Enable([out, retval] VARIANT_BOOL *On);
  892.                 [propput, id(dispidCCEnable)] HRESULT Enable([in] VARIANT_BOOL On);
  893.         };
  894. ///////////////////////////////////////////////////////////////////////////////////////
  895. [
  896. object, dual, oleautomation, hidden,
  897. uuid(1600D001-6666-4f66-B1E2-BF3C9FBB9BA6),
  898. helpstring("Microsoft TVE Video Control Feature - (Aggregates ITVEFeature)"),
  899. pointer_default(unique)
  900. ] // IMSVidFeature derivatives dispID's must start at 0x4000 or above
  901. interface IMSVidTVEGSeg : IMSVidFeature 
  902. {
  903. [propget, id(4000),  helpstring("property TVEFilter")] HRESULT TVEFilter([out, retval] ITVEFilter* *ppFilter); 
  904. [propget, id(4001),  helpstring("property TVESupervisor")] HRESULT TVESupervisor([out, retval] ITVESupervisor* *ppSuper);
  905. };
  906. ///////////////////////////////////////////////////////////////////////////////////////
  907. [
  908. object, dual, oleautomation,
  909. uuid(1600D101-6666-4f66-B1E2-BF3C9FBB9BA6),
  910. helpstring("Microsoft CA Video Control Feature (Aggregates ICAManager)"),
  911. pointer_default(unique)
  912. ] // IMSVidFeature derivatives dispID's must start at 0x4000 or above
  913. interface IMSVidCAGSeg : IMSVidFeature 
  914. {
  915. // call when graph changes in way that may change policies (add,delete)
  916. [   id(5000), helpstring("method MarkDirty")] HRESULT MarkDirty();
  917. // call when get a new tune request (listen for CAManager to see if it gets denied). Put NULL when closing down
  918. [propput, id(5001), helpstring("property TuneRequest")] HRESULT TuneRequest([in] ITuneRequest *ptunereq);
  919. };
  920. ///////////////////////////////////////////////////////////////////////////////
  921. //
  922. //  video renderer
  923. //
  924. ///////////////////////////////////////////////////////////////////////////////
  925. typedef enum {
  926. sslFullSize,
  927. sslClipByOverScan,
  928. sslClipByClipRect,
  929. } SourceSizeList;
  930.         ///////////////////////////////////////////////////////////////////////////////////////
  931.         [object, dual, oleautomation, hidden,
  932.                 uuid(37B03540-A4C8-11d2-B634-00C04F79498E),
  933.                 helpstring("MS Video Control Video Renderer Device Interface"),
  934.                 pointer_default(unique)
  935.         ]
  936.         interface IMSVidVideoRenderer : IMSVidOutputDevice {
  937. // Properties
  938.             [propget, id(dispidCustomCompositorClass)] HRESULT CustomCompositorClass([out, retval] BSTR *CompositorCLSID);
  939.             [propput, id(dispidCustomCompositorClass)] HRESULT CustomCompositorClass([in] BSTR CompositorCLSID);
  940.             [propget, hidden, restricted, id(dispid_CustomCompositorClass)] HRESULT _CustomCompositorClass([out, retval] GUID* CompositorCLSID);
  941.             [propput, hidden, restricted, id(dispid_CustomCompositorClass)] HRESULT _CustomCompositorClass([in] REFCLSID CompositorCLSID);
  942.             [propget, hidden, restricted, id(dispid_CustomCompositor)] HRESULT _CustomCompositor([out, retval] IVMRImageCompositor** Compositor);
  943.             [propput, hidden, restricted, id(dispid_CustomCompositor)] HRESULT _CustomCompositor([in] IVMRImageCompositor* Compositor);
  944.             //
  945.             [propget, id(dispidMixerBitmap)] HRESULT MixerBitmap([out,retval] IPictureDisp** MixerPictureDisp);          
  946.             [propget, hidden, restricted, id(dispid_MixerBitmap)] HRESULT _MixerBitmap([out, retval] IVMRMixerBitmap ** MixerPicture);
  947.             [propput, id(dispidMixerBitmap)] HRESULT MixerBitmap([in] IPictureDisp* MixerPictureDisp);  
  948.             [propput, hidden, restricted, id(dispid_MixerBitmap)] HRESULT _MixerBitmap([in] VMRALPHABITMAP * MixerPicture);
  949.             [propget, id(dispidMixerBitmapRect)] HRESULT MixerBitmapPositionRect([out,retval] IMSVidRect **rDest);
  950.             [propput, id(dispidMixerBitmapRect)] HRESULT MixerBitmapPositionRect([in] IMSVidRect *rDest);
  951.             [propget, id(dispidMixerBitmapOpacity)] HRESULT MixerBitmapOpacity([out,retval]int *opacity);
  952.             [propput, id(dispidMixerBitmapOpacity)] HRESULT MixerBitmapOpacity([in]int opacity);
  953.             [id(dispidSetupMixerBitmap)] HRESULT SetupMixerBitmap([in] IPictureDisp * MixerPictureDisp, [in] long Opacity, [in] IMSVidRect *rDest);
  954.             // display surface control
  955. [propget, id(dispidSourceSize)] HRESULT SourceSize([retval, out] SourceSizeList *CurrentSize);
  956. [propput, id(dispidSourceSize)] HRESULT SourceSize([in] SourceSizeList NewSize);
  957.             [propget, id(dispidDevOverScan), helpstring("trim each source edge by this amount(in hundredths of percent, e.g. 1.75% == 175)")] HRESULT OverScan([retval, out] long *plPercent);
  958.             [propput, id(dispidDevOverScan), helpstring("trim each source edge by this amount(in hundredths of percent, e.g. 1.75% == 175)")] HRESULT OverScan([in] long lPercent);
  959.             [propget, id(dispidAvailableSourceRect)] HRESULT AvailableSourceRect([out, retval] IMSVidRect **pRect);
  960.             [propget, id(dispidMaxVidRect)] HRESULT MaxVidRect([out, retval] IMSVidRect **ppVidRect);
  961.             [propget, id(dispidMinVidRect)] HRESULT MinVidRect([out, retval] IMSVidRect **ppVidRect); 
  962.             [propget, id(dispidClippedSourceRect)] HRESULT ClippedSourceRect([out, retval] IMSVidRect **pRect);
  963.             [propput, id(dispidClippedSourceRect)] HRESULT ClippedSourceRect([in] IMSVidRect *pRect);
  964.             [propget, id(dispidUsingOverlay)] HRESULT UsingOverlay([out, retval] VARIANT_BOOL *UseOverlayVal);
  965.             [propput, id(dispidUsingOverlay)] HRESULT UsingOverlay([in] VARIANT_BOOL UseOverlayVal);
  966.             [id(dispidCapture)] HRESULT Capture([out, retval] IPictureDisp **currentImage);
  967.             [propget, id(dispid_FramesPerSecond), helpstring("FramesPerSecond")] HRESULT FramesPerSecond([out, retval] long *pVal);
  968. [propget, id(dispid_DecimateInput), helpstring("DecimateInput")] HRESULT DecimateInput([out,retval] VARIANT_BOOL *pDeci);
  969.             [propput, id(dispid_DecimateInput), helpstring("DecimateInput")] HRESULT DecimateInput([in] VARIANT_BOOL pDeci);
  970.             // Methods
  971.         };
  972.         ///////////////////////////////////////////////////////////////////////////////////////
  973.         [object, oleautomation, hidden,
  974.                 uuid(37B03545-A4C8-11d2-B634-00C04F79498E),
  975.                 helpstring("MS Video Control Video Renderer Device Event Interface"),
  976.                 pointer_default(unique)
  977.         ]
  978.         interface IMSVidVideoRendererEvent : IMSVidOutputDeviceEvent {
  979.                 [id(eventidOverlayUnavailable), helpstring("HW Overlay surface in use or not present")] HRESULT OverlayUnavailable();
  980.         };
  981. ///////////////////////////////////////////////////////////////////////////////
  982. //
  983. //  audio renderer
  984. //
  985. ///////////////////////////////////////////////////////////////////////////////
  986.         ///////////////////////////////////////////////////////////////////////////////////////
  987.         [object, dual, oleautomation, hidden,
  988.                 uuid(37B0353F-A4C8-11d2-B634-00C04F79498E),
  989.                 helpstring("MS Video Control Audio Renderer Device Interface"),
  990.                 pointer_default(unique)
  991.         ]
  992.         interface IMSVidAudioRenderer : IMSVidOutputDevice {
  993.             [propput, id(dispidDevVolume)] HRESULT Volume([in] long lVol);
  994.             [propget, id(dispidDevVolume)] HRESULT Volume([retval, out] long *lVol);
  995.             [propput, id(dispidDevBalance)] HRESULT Balance([in] long lBal);
  996.             [propget, id(dispidDevBalance)] HRESULT Balance([retval, out] long *lBal);
  997.         };
  998.         ///////////////////////////////////////////////////////////////////////////////////////
  999.         [object, oleautomation, hidden,
  1000.                 uuid(37B03541-A4C8-11d2-B634-00C04F79498E),
  1001.                 helpstring("MS Video Control Audio Renderer Device Event Interface"),
  1002.                 pointer_default(unique)
  1003.         ]
  1004.         interface IMSVidAudioRendererEvent : IMSVidOutputDeviceEvent {
  1005.         };
  1006. ///////////////////////////////////////////////////////////////////////////////////////
  1007. // device collection
  1008. ///////////////////////////////////////////////////////////////////////////////////////
  1009.         [object, dual, oleautomation, hidden,
  1010.             uuid(C5702CD1-9B79-11d3-B654-00C04F79498E),
  1011.             helpstring("MS Video Control Input Device Writable Collection Interface"),
  1012.             pointer_default(unique)
  1013.         ]
  1014.         interface IMSVidInputDevices : IDispatch {
  1015.                         [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount);
  1016.                         [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD);
  1017.                         [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidInputDevice **pDB);
  1018.                         [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidInputDevice *pDB);
  1019.                         [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v);
  1020.         };
  1021.         [object, dual, oleautomation, hidden,
  1022.             uuid(C5702CD2-9B79-11d3-B654-00C04F79498E),
  1023.             helpstring("MS Video Control Output Device Writable Collection Interface"),
  1024.             pointer_default(unique)
  1025.         ]
  1026.         interface IMSVidOutputDevices : IDispatch {
  1027.                         [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount);
  1028.                         [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD);
  1029.                         [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidOutputDevice **pDB);
  1030.                         [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidOutputDevice *pDB);
  1031.                         [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v);
  1032.         };
  1033.         [object, dual, oleautomation, hidden,
  1034.             uuid(C5702CD3-9B79-11d3-B654-00C04F79498E),
  1035.             helpstring("MS Video Control Video Renderer Device Writable Collection Interface"),
  1036.             pointer_default(unique)
  1037.         ]
  1038.         interface IMSVidVideoRendererDevices : IDispatch {
  1039.                         [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount);
  1040.                         [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD);
  1041.                         [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidVideoRenderer **pDB);
  1042.                         [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidVideoRenderer *pDB);
  1043.                         [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v);
  1044.         };
  1045.         [object, dual, oleautomation, hidden,
  1046.             uuid(C5702CD4-9B79-11d3-B654-00C04F79498E),
  1047.             helpstring("MS Video Control Audio Renderer Device Writable Collection Interface"),
  1048.             pointer_default(unique)
  1049.         ]
  1050.         interface IMSVidAudioRendererDevices : IDispatch {
  1051.                         [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount);
  1052.                         [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD);
  1053.                         [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidAudioRenderer **pDB);
  1054.                         [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidAudioRenderer *pDB);
  1055.                         [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v);
  1056.         };
  1057.         [object, dual, oleautomation, hidden,
  1058.             uuid(C5702CD5-9B79-11d3-B654-00C04F79498E),
  1059.             helpstring("MS Video Control Features Writable Collection Interface"),
  1060.             pointer_default(unique)
  1061.         ]
  1062.         interface IMSVidFeatures: IDispatch {
  1063.                         [propget, id(dispidCount)] HRESULT Count([out, retval] long *lCount);
  1064.                         [propget, id(DISPID_NEWENUM), hidden, restricted] HRESULT _NewEnum([out, retval] IEnumVARIANT **pD);
  1065.                         [propget, id(DISPID_VALUE)] HRESULT Item([in] VARIANT v, [out, retval] IMSVidFeature **pDB);
  1066.                         [id(DISPID_ADDITEM)] HRESULT Add([in] IMSVidFeature *pDB);
  1067.                         [id(DISPID_REMOVEITEM)] HRESULT Remove([in] VARIANT v);
  1068.         };
  1069. #endif // TUNING_MODEL_ONLY
  1070. // end of file segment.idl