Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1349 lines
76 KiB

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