axextend.idl 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929
  1. /*
  2. * Copyright (C) 2002 Robert Shearman
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library; if not, write to the Free Software
  16. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17. */
  18. interface IAMAnalogVideoDecoder;
  19. interface IAMAnalogVideoEncoder;
  20. interface IAMAudioInputMixer;
  21. interface IAMAudioRendererStats;
  22. interface IAMBufferNegotiation;
  23. interface IAMCameraControl;
  24. interface IAMCopyCaptureFileProgress;
  25. interface IAMCrossbar;
  26. interface IAMDevMemoryAllocator;
  27. interface IAMDevMemoryControl;
  28. interface IAMDroppedFrames;
  29. interface IAMExtDevice;
  30. interface IAMExtTransport;
  31. interface IAMGraphStreams;
  32. interface IAMLatency;
  33. interface IAMOpenProgress;
  34. interface IAMOverlayFX;
  35. interface IAMPhysicalPinInfo;
  36. interface IAMPushSource;
  37. interface IAMStreamConfig;
  38. interface IAMTimecodeDisplay;
  39. interface IAMTimecodeGenerator;
  40. interface IAMTimecodeReader;
  41. interface IAMTVTuner;
  42. interface IAMVfwCaptureDialogs;
  43. interface IAMVfwCompressDialogs;
  44. interface IAMVideoCompression;
  45. interface IAMVideoDecimationProperties;
  46. interface IAMVideoProcAmp;
  47. interface ICaptureGraphBuilder;
  48. interface ICaptureGraphBuilder2;
  49. interface IConfigAviMux;
  50. interface IConfigInterleaving;
  51. interface IDecimateVideoImage;
  52. interface IDrawVideoImage;
  53. interface IEnumRegFilters;
  54. interface IEnumStreamIdMap;
  55. interface IFileSourceFilter;
  56. interface IFileSinkFilter;
  57. interface IFileSinkFilter2;
  58. interface IFilterMapper;
  59. interface IFilterMapper2;
  60. interface IGraphBuilder;
  61. interface IKsPropertySet;
  62. interface IMediaEventSink;
  63. interface IMpeg2Demultiplexer;
  64. interface IMPEG2StreamIdMap;
  65. interface IOverlay;
  66. interface IOverlayNotify;
  67. interface IOverlayNotify2;
  68. interface IQualityControl;
  69. interface ISeekingPassThru;
  70. typedef struct
  71. {
  72. CLSID Clsid;
  73. LPWSTR Name;
  74. } REGFILTER;
  75. [
  76. object,
  77. uuid(56a868a4-0ad4-11ce-b03a-0020af0ba770),
  78. pointer_default(unique)
  79. ]
  80. interface IEnumRegFilters : IUnknown
  81. {
  82. HRESULT Next
  83. ( [in] ULONG cFilters,
  84. [out] REGFILTER ** apRegFilter,
  85. [out] ULONG * pcFetched
  86. );
  87. HRESULT Skip(
  88. [in] ULONG cFilters
  89. );
  90. HRESULT Reset(void);
  91. HRESULT Clone(
  92. [out] IEnumRegFilters **ppEnum
  93. );
  94. }
  95. typedef IEnumRegFilters *PENUMREGFILTERS;
  96. [
  97. object,
  98. uuid(56a868a3-0ad4-11ce-b03a-0020af0ba770),
  99. pointer_default(unique)
  100. ]
  101. interface IFilterMapper : IUnknown
  102. {
  103. enum { MERIT_PREFERRED = 0x800000,
  104. MERIT_NORMAL = 0x600000,
  105. MERIT_UNLIKELY = 0x400000,
  106. MERIT_DO_NOT_USE = 0x200000,
  107. MERIT_SW_COMPRESSOR = 0x100000,
  108. MERIT_HW_COMPRESSOR = 0x100050
  109. };
  110. HRESULT RegisterFilter
  111. ( [in] CLSID clsid,
  112. [in] LPCWSTR Name,
  113. [in] DWORD dwMerit
  114. );
  115. HRESULT RegisterFilterInstance
  116. ( [in] CLSID clsid,
  117. [in] LPCWSTR Name,
  118. [out] CLSID *MRId
  119. );
  120. HRESULT RegisterPin
  121. ( [in] CLSID Filter,
  122. [in] LPCWSTR Name,
  123. [in] BOOL bRendered,
  124. [in] BOOL bOutput,
  125. [in] BOOL bZero,
  126. [in] BOOL bMany,
  127. [in] CLSID ConnectsToFilter,
  128. [in] LPCWSTR ConnectsToPin
  129. );
  130. HRESULT RegisterPinType
  131. ( [in] CLSID clsFilter,
  132. [in] LPCWSTR strName,
  133. [in] CLSID clsMajorType,
  134. [in] CLSID clsSubType
  135. );
  136. HRESULT UnregisterFilter
  137. ( [in] CLSID Filter
  138. );
  139. HRESULT UnregisterFilterInstance
  140. ( [in] CLSID MRId
  141. );
  142. HRESULT UnregisterPin
  143. ( [in] CLSID Filter,
  144. [in] LPCWSTR Name
  145. );
  146. HRESULT EnumMatchingFilters
  147. ( [out] IEnumRegFilters **ppEnum,
  148. [in] DWORD dwMerit,
  149. [in] BOOL bInputNeeded,
  150. [in] CLSID clsInMaj,
  151. [in] CLSID clsInSub,
  152. [in] BOOL bRender,
  153. [in] BOOL bOututNeeded,
  154. [in] CLSID clsOutMaj,
  155. [in] CLSID clsOutSub
  156. );
  157. }
  158. typedef struct
  159. {
  160. const CLSID * clsMajorType;
  161. const CLSID * clsMinorType;
  162. } REGPINTYPES;
  163. typedef struct
  164. {
  165. LPWSTR strName;
  166. BOOL bRendered;
  167. BOOL bOutput;
  168. BOOL bZero;
  169. BOOL bMany;
  170. const CLSID * clsConnectsToFilter;
  171. const WCHAR * strConnectsToPin;
  172. UINT nMediaTypes;
  173. const REGPINTYPES * lpMediaType;
  174. } REGFILTERPINS;
  175. typedef struct
  176. {
  177. CLSID clsMedium;
  178. DWORD dw1;
  179. DWORD dw2;
  180. } REGPINMEDIUM;
  181. enum
  182. {
  183. REG_PINFLAG_B_ZERO = 0x1,
  184. REG_PINFLAG_B_RENDERER = 0x2,
  185. REG_PINFLAG_B_MANY = 0x4,
  186. REG_PINFLAG_B_OUTPUT = 0x8
  187. };
  188. typedef struct
  189. {
  190. DWORD dwFlags;
  191. UINT cInstances;
  192. UINT nMediaTypes;
  193. [size_is(nMediaTypes)] const REGPINTYPES * lpMediaType;
  194. UINT nMediums;
  195. [size_is(nMediums)] const REGPINMEDIUM *lpMedium;
  196. const CLSID *clsPinCategory;
  197. } REGFILTERPINS2;
  198. typedef struct
  199. {
  200. DWORD dwVersion;
  201. DWORD dwMerit;
  202. [switch_is(dwVersion)] [switch_type(DWORD)] union
  203. {
  204. [case(1)]
  205. struct
  206. {
  207. ULONG cPins;
  208. [size_is(cPins)] const REGFILTERPINS *rgPins;
  209. } DUMMYSTRUCTNAME;
  210. [case(2)]
  211. struct
  212. {
  213. ULONG cPins2;
  214. [size_is(cPins2)] const REGFILTERPINS2 *rgPins2;
  215. } DUMMYSTRUCTNAME1;
  216. [default]
  217. ;
  218. } DUMMYUNIONNAME;
  219. } REGFILTER2;
  220. [
  221. object,
  222. uuid(b79bb0b0-33c1-11d1-abe1-00a0c905f375),
  223. pointer_default(unique)
  224. ]
  225. interface IFilterMapper2 : IUnknown
  226. {
  227. HRESULT CreateCategory
  228. ( [in] REFCLSID clsidCategory,
  229. [in] DWORD dwCategoryMerit,
  230. [in] LPCWSTR Description
  231. );
  232. HRESULT UnregisterFilter
  233. ( [in] const CLSID *pclsidCategory,
  234. [in] const OLECHAR *szInstance,
  235. [in] REFCLSID Filter
  236. );
  237. HRESULT RegisterFilter
  238. ( [in] REFCLSID clsidFilter,
  239. [in] LPCWSTR Name,
  240. [in, out] IMoniker **ppMoniker,
  241. [in] const CLSID *pclsidCategory,
  242. [in] const OLECHAR *szInstance,
  243. [in] const REGFILTER2 *prf2
  244. );
  245. HRESULT EnumMatchingFilters
  246. ( [out] IEnumMoniker **ppEnum,
  247. [in] DWORD dwFlags,
  248. [in] BOOL bExactMatch,
  249. [in] DWORD dwMerit,
  250. [in] BOOL bInputNeeded,
  251. [in] DWORD cInputTypes,
  252. [size_is(cInputTypes*2)] const GUID *pInputTypes,
  253. [in] const REGPINMEDIUM *pMedIn,
  254. [in] const CLSID *pPinCategoryIn,
  255. [in] BOOL bRender,
  256. [in] BOOL bOutputNeeded,
  257. [in] DWORD cOutputTypes,
  258. [size_is(cOutputTypes*2)] const GUID *pOutputTypes,
  259. [in] const REGPINMEDIUM *pMedOut,
  260. [in] const CLSID *pPinCategoryOut
  261. );
  262. }
  263. [
  264. object,
  265. uuid(b79bb0b1-33c1-11d1-abe1-00a0c905f375),
  266. pointer_default(unique)
  267. ]
  268. interface IFilterMapper3 : IFilterMapper2
  269. {
  270. HRESULT GetICreateDevEnum( [out] ICreateDevEnum **ppEnum );
  271. }
  272. typedef enum tagQualityMessageType
  273. {
  274. Famine,
  275. Flood
  276. } QualityMessageType;
  277. typedef struct tagQuality
  278. {
  279. QualityMessageType Type;
  280. long Proportion;
  281. REFERENCE_TIME Late;
  282. REFERENCE_TIME TimeStamp;
  283. } Quality;
  284. typedef IQualityControl *PQUALITYCONTROL;
  285. [
  286. object,
  287. uuid(56a868a5-0ad4-11ce-b03a-0020af0ba770),
  288. pointer_default(unique)
  289. ]
  290. interface IQualityControl : IUnknown
  291. {
  292. HRESULT Notify
  293. ( [in] IBaseFilter * pSelf,
  294. [in] Quality q
  295. );
  296. HRESULT SetSink
  297. ( [in] IQualityControl * piqc
  298. );
  299. }
  300. enum
  301. {
  302. CK_NOCOLORKEY = 0x0,
  303. CK_INDEX = 0x1,
  304. CK_RGB = 0x2
  305. };
  306. typedef struct tagCOLORKEY
  307. {
  308. DWORD KeyType;
  309. DWORD PaletteIndex;
  310. COLORREF LowColorValue;
  311. COLORREF HighColorValue;
  312. } COLORKEY;
  313. enum
  314. {
  315. ADVISE_NONE = 0x0,
  316. ADVISE_CLIPPING = 0x1,
  317. ADVISE_PALETTE = 0x2,
  318. ADVISE_COLORKEY = 0x4,
  319. ADVISE_POSITION = 0x8,
  320. ADVISE_DISPLAY_CHANGE = 0x10
  321. };
  322. const DWORD ADVISE_ALL = ADVISE_CLIPPING |
  323. ADVISE_PALETTE |
  324. ADVISE_COLORKEY |
  325. ADVISE_POSITION;
  326. const DWORD ADVISE_ALL2 = ADVISE_ALL |
  327. ADVISE_DISPLAY_CHANGE;
  328. cpp_quote("#ifndef _WINGDI_")
  329. /* already defined in wingdi.h, but needed for WIDL */
  330. typedef struct _RGNDATAHEADER
  331. {
  332. DWORD dwSize;
  333. DWORD iType;
  334. DWORD nCount;
  335. DWORD nRgnSize;
  336. RECT rcBound;
  337. } RGNDATAHEADER;
  338. typedef struct _RGNDATA
  339. {
  340. RGNDATAHEADER rdh;
  341. char Buffer[1];
  342. } RGNDATA;
  343. cpp_quote("#endif /* _WINGDI_ */")
  344. [
  345. object,
  346. local,
  347. uuid(56a868a0-0ad4-11ce-b03a-0020af0ba770),
  348. pointer_default(unique)
  349. ]
  350. interface IOverlayNotify : IUnknown
  351. {
  352. HRESULT OnPaletteChange(
  353. [in] DWORD dwColors,
  354. [in] const PALETTEENTRY *pPalette);
  355. HRESULT OnClipChange(
  356. [in] const RECT *pSourceRect,
  357. [in] const RECT *pDestinationRect,
  358. [in] const RGNDATA *pRgnData);
  359. HRESULT OnColorKeyChange([in] const COLORKEY *pColorKey);
  360. HRESULT OnPositionChange([in] const RECT *pSourceRect,
  361. [in] const RECT *pDestinationRect);
  362. }
  363. typedef IOverlayNotify *POVERLAYNOTIFY;
  364. cpp_quote("#if 0")
  365. typedef HANDLE HMONITOR;
  366. cpp_quote("#endif /* 0 */")
  367. [
  368. object,
  369. local,
  370. uuid(680EFA10-D535-11D1-87C8-00A0C9223196),
  371. pointer_default(unique)
  372. ]
  373. interface IOverlayNotify2 : IOverlayNotify
  374. {
  375. HRESULT OnDisplayChange(
  376. HMONITOR hMonitor);
  377. }
  378. typedef IOverlayNotify2 *POVERLAYNOTIFY2;
  379. [
  380. object,
  381. local,
  382. uuid(56a868a1-0ad4-11ce-b03a-0020af0ba770),
  383. pointer_default(unique)
  384. ]
  385. interface IOverlay : IUnknown
  386. {
  387. HRESULT GetPalette(
  388. [out] DWORD *pdwColors,
  389. [out] PALETTEENTRY **ppPalette);
  390. HRESULT SetPalette(
  391. [in] DWORD dwColors,
  392. [in] PALETTEENTRY *pPalette);
  393. HRESULT GetDefaultColorKey([out] COLORKEY *pColorKey);
  394. HRESULT GetColorKey([out] COLORKEY *pColorKey);
  395. HRESULT SetColorKey([in,out] COLORKEY *pColorKey);
  396. HRESULT GetWindowHandle([out] HWND *pHwnd);
  397. HRESULT GetClipList([out] RECT *pSourceRect,
  398. [out] RECT *pDestinationRect,
  399. [out] RGNDATA **ppRgnData);
  400. HRESULT GetVideoPosition([out] RECT *pSourceRect,
  401. [out] RECT *pDestinationRect);
  402. HRESULT Advise(
  403. [in] IOverlayNotify *pOverlayNotify,
  404. [in] DWORD dwInterests);
  405. HRESULT Unadvise();
  406. }
  407. typedef IOverlay *POVERLAY;
  408. [
  409. object,
  410. uuid(56a868a2-0ad4-11ce-b03a-0020af0ba770),
  411. pointer_default(unique)
  412. ]
  413. interface IMediaEventSink : IUnknown
  414. {
  415. HRESULT Notify(
  416. [in] long EventCode,
  417. [in] LONG_PTR EventParam1,
  418. [in] LONG_PTR EventParam2
  419. );
  420. }
  421. typedef IMediaEventSink *PMEDIAEVENTSINK;
  422. [
  423. object,
  424. uuid(56a868a6-0ad4-11ce-b03a-0020af0ba770),
  425. pointer_default(unique)
  426. ]
  427. interface IFileSourceFilter : IUnknown
  428. {
  429. HRESULT Load(
  430. [in] LPCOLESTR pszFileName,
  431. [in, unique] const AM_MEDIA_TYPE *pmt
  432. );
  433. HRESULT GetCurFile(
  434. [out] LPOLESTR *ppszFileName,
  435. [out] AM_MEDIA_TYPE *pmt
  436. );
  437. }
  438. typedef IFileSourceFilter *PFILTERFILESOURCE;
  439. [
  440. object,
  441. uuid(a2104830-7c70-11cf-8bce-00aa00a3f1a6),
  442. pointer_default(unique)
  443. ]
  444. interface IFileSinkFilter : IUnknown
  445. {
  446. HRESULT SetFileName(
  447. [in] LPCOLESTR pszFileName,
  448. [in, unique] const AM_MEDIA_TYPE *pmt
  449. );
  450. HRESULT GetCurFile(
  451. [out] LPOLESTR *ppszFileName,
  452. [out] AM_MEDIA_TYPE *pmt
  453. );
  454. }
  455. typedef IFileSinkFilter *PFILTERFILESINK;
  456. [
  457. object,
  458. uuid(00855B90-CE1B-11d0-BD4F-00A0C911CE86),
  459. pointer_default(unique)
  460. ]
  461. interface IFileSinkFilter2 : IFileSinkFilter
  462. {
  463. HRESULT SetMode(
  464. [in] DWORD dwFlags
  465. );
  466. HRESULT GetMode(
  467. [out] DWORD *pdwFlags
  468. );
  469. }
  470. typedef IFileSinkFilter2 *PFILESINKFILTER2;
  471. typedef enum
  472. {
  473. AM_FILE_OVERWRITE = 0x00000001,
  474. } AM_FILESINK_FLAGS;
  475. [
  476. object,
  477. uuid(56a868a9-0ad4-11ce-b03a-0020af0ba770),
  478. pointer_default(unique)
  479. ]
  480. interface IGraphBuilder : IFilterGraph
  481. {
  482. HRESULT Connect
  483. ( [in] IPin * ppinOut,
  484. [in] IPin * ppinIn
  485. );
  486. HRESULT Render
  487. ( [in] IPin * ppinOut
  488. );
  489. HRESULT RenderFile
  490. ( [in] LPCWSTR lpcwstrFile,
  491. [in, unique] LPCWSTR lpcwstrPlayList
  492. );
  493. HRESULT AddSourceFilter
  494. ( [in] LPCWSTR lpcwstrFileName,
  495. [in, unique] LPCWSTR lpcwstrFilterName,
  496. [out] IBaseFilter* *ppFilter
  497. );
  498. HRESULT SetLogFile
  499. ( [in] DWORD_PTR hFile
  500. );
  501. HRESULT Abort();
  502. HRESULT ShouldOperationContinue();
  503. }
  504. [
  505. object,
  506. uuid(bf87b6e0-8c27-11d0-b3f0-00aa003761c5),
  507. pointer_default(unique)
  508. ]
  509. interface ICaptureGraphBuilder : IUnknown {
  510. HRESULT SetFiltergraph(
  511. [in] IGraphBuilder *pfg);
  512. HRESULT GetFiltergraph(
  513. [out] IGraphBuilder **ppfg);
  514. HRESULT SetOutputFileName(
  515. [in] const GUID *pType,
  516. [in] LPCOLESTR lpstrFile,
  517. [out] IBaseFilter **ppf,
  518. [out] IFileSinkFilter **ppSink);
  519. [local] HRESULT FindInterface(
  520. [in, unique] const GUID *pCategory,
  521. [in] IBaseFilter *pf,
  522. [in] REFIID riid,
  523. [out] void **ppint);
  524. [call_as(FindInterface)] HRESULT RemoteFindInterface(
  525. [in, unique] const GUID *pCategory,
  526. [in] IBaseFilter *pf,
  527. [in] REFIID riid,
  528. [out] IUnknown **ppint);
  529. HRESULT RenderStream(
  530. [in] const GUID *pCategory,
  531. [in] IUnknown *pSource,
  532. [in] IBaseFilter *pfCompressor,
  533. [in] IBaseFilter *pfRenderer);
  534. HRESULT ControlStream(
  535. [in] const GUID *pCategory,
  536. [in] IBaseFilter *pFilter,
  537. [in] REFERENCE_TIME *pstart,
  538. [in] REFERENCE_TIME *pstop,
  539. [in] WORD wStartCookie,
  540. [in] WORD wStopCookie);
  541. HRESULT AllocCapFile(
  542. [in] LPCOLESTR lpstr,
  543. [in] DWORDLONG dwlSize);
  544. HRESULT CopyCaptureFile(
  545. [in] LPOLESTR lpwstrOld,
  546. [in] LPOLESTR lpwstrNew,
  547. [in] int fAllowEscAbort,
  548. [in] IAMCopyCaptureFileProgress *pCallback);
  549. }
  550. [
  551. object,
  552. uuid(670d1d20-a068-11d0-b3f0-00aa003761c5),
  553. pointer_default(unique)
  554. ]
  555. interface IAMCopyCaptureFileProgress : IUnknown
  556. {
  557. HRESULT Progress(
  558. [in] int iProgress);
  559. }
  560. [
  561. object,
  562. uuid(93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D),
  563. pointer_default(unique)
  564. ]
  565. interface ICaptureGraphBuilder2 : IUnknown
  566. {
  567. HRESULT SetFiltergraph(
  568. [in] IGraphBuilder *pfg);
  569. HRESULT GetFiltergraph(
  570. [out] IGraphBuilder **ppfg);
  571. HRESULT SetOutputFileName(
  572. [in] const GUID *pType,
  573. [in] LPCOLESTR lpstrFile,
  574. [out] IBaseFilter **ppf,
  575. [out] IFileSinkFilter **ppSink);
  576. [local] HRESULT FindInterface(
  577. [in] const GUID *pCategory,
  578. [in] const GUID *pType,
  579. [in] IBaseFilter *pf,
  580. [in] REFIID riid,
  581. [out] void **ppint);
  582. [call_as(FindInterface)] HRESULT RemoteFindInterface(
  583. [in] const GUID *pCategory,
  584. [in] const GUID *pType,
  585. [in] IBaseFilter *pf,
  586. [in] REFIID riid,
  587. [out] IUnknown **ppint);
  588. HRESULT RenderStream(
  589. [in] const GUID *pCategory,
  590. [in] const GUID *pType,
  591. [in] IUnknown *pSource,
  592. [in] IBaseFilter *pfCompressor,
  593. [in] IBaseFilter *pfRenderer);
  594. HRESULT ControlStream(
  595. [in] const GUID *pCategory,
  596. [in] const GUID *pType,
  597. [in] IBaseFilter *pFilter,
  598. [in] REFERENCE_TIME *pstart,
  599. [in] REFERENCE_TIME *pstop,
  600. [in] WORD wStartCookie,
  601. [in] WORD wStopCookie);
  602. HRESULT AllocCapFile(
  603. [in] LPCOLESTR lpstr,
  604. [in] DWORDLONG dwlSize);
  605. HRESULT CopyCaptureFile(
  606. [in] LPOLESTR lpwstrOld,
  607. [in] LPOLESTR lpwstrNew,
  608. [in] int fAllowEscAbort,
  609. [in] IAMCopyCaptureFileProgress *pCallback);
  610. HRESULT FindPin(
  611. [in] IUnknown *pSource,
  612. [in] PIN_DIRECTION pindir,
  613. [in] const GUID *pCategory,
  614. [in] const GUID *pType,
  615. [in] BOOL fUnconnected,
  616. [in] int num,
  617. [out] IPin **ppPin);
  618. }
  619. enum _AM_RENSDEREXFLAGS
  620. {
  621. AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x01
  622. };
  623. [
  624. object,
  625. uuid(36b73882-c2c8-11cf-8b46-00805f6cef60),
  626. pointer_default(unique)
  627. ]
  628. interface IFilterGraph2: IGraphBuilder
  629. {
  630. HRESULT AddSourceFilterForMoniker(
  631. [in] IMoniker *pMoniker,
  632. [in] IBindCtx *pCtx,
  633. [in, unique] LPCWSTR lpcwstrFilterName,
  634. [out] IBaseFilter **ppFilter
  635. );
  636. HRESULT ReconnectEx
  637. ( [in] IPin * ppin,
  638. [in, unique] const AM_MEDIA_TYPE *pmt
  639. );
  640. HRESULT RenderEx( [in] IPin *pPinOut,
  641. [in] DWORD dwFlags,
  642. [in, out] DWORD *pvContext
  643. );
  644. }
  645. [
  646. object,
  647. local,
  648. uuid(56a868bf-0ad4-11ce-b03a-0020af0ba770),
  649. pointer_default(unique)
  650. ]
  651. interface IStreamBuilder : IUnknown
  652. {
  653. HRESULT Render
  654. ( [in] IPin * ppinOut,
  655. [in] IGraphBuilder * pGraph
  656. );
  657. HRESULT Backout
  658. ( [in] IPin * ppinOut,
  659. [in] IGraphBuilder * pGraph
  660. );
  661. }
  662. [
  663. object,
  664. uuid(56a868aa-0ad4-11ce-b03a-0020af0ba770),
  665. pointer_default(unique)
  666. ]
  667. interface IAsyncReader : IUnknown
  668. {
  669. HRESULT RequestAllocator(
  670. [in] IMemAllocator* pPreferred,
  671. [in] ALLOCATOR_PROPERTIES* pProps,
  672. [out] IMemAllocator ** ppActual);
  673. HRESULT Request(
  674. [in] IMediaSample* pSample,
  675. [in] DWORD_PTR dwUser);
  676. HRESULT WaitForNext(
  677. [in] DWORD dwTimeout,
  678. [out] IMediaSample** ppSample,
  679. [out] DWORD_PTR * pdwUser);
  680. HRESULT SyncReadAligned(
  681. [in] IMediaSample* pSample);
  682. HRESULT SyncRead(
  683. [in] LONGLONG llPosition,
  684. [in] LONG lLength,
  685. [out, size_is(lLength)]
  686. BYTE* pBuffer);
  687. HRESULT Length(
  688. [out] LONGLONG* pTotal,
  689. [out] LONGLONG* pAvailable);
  690. HRESULT BeginFlush(void);
  691. HRESULT EndFlush(void);
  692. }
  693. [
  694. object,
  695. uuid(56a868ab-0ad4-11ce-b03a-0020af0ba770),
  696. pointer_default(unique)
  697. ]
  698. interface IGraphVersion : IUnknown
  699. {
  700. HRESULT QueryVersion(LONG* pVersion);
  701. }
  702. [
  703. object,
  704. uuid(56a868ad-0ad4-11ce-b03a-0020af0ba770),
  705. pointer_default(unique)
  706. ]
  707. interface IResourceConsumer : IUnknown
  708. {
  709. HRESULT AcquireResource(
  710. [in] LONG idResource);
  711. HRESULT ReleaseResource(
  712. [in] LONG idResource);
  713. }
  714. [
  715. object,
  716. uuid(56a868ac-0ad4-11ce-b03a-0020af0ba770),
  717. pointer_default(unique)
  718. ]
  719. interface IResourceManager : IUnknown
  720. {
  721. HRESULT Register(
  722. [in] LPCWSTR pName,
  723. [in] LONG cResource,
  724. [out] LONG* plToken
  725. );
  726. HRESULT RegisterGroup(
  727. [in] LPCWSTR pName,
  728. [in] LONG cResource,
  729. [in, size_is(cResource)]
  730. LONG* palTokens,
  731. [out] LONG* plToken
  732. );
  733. HRESULT RequestResource(
  734. [in] LONG idResource,
  735. [in] IUnknown* pFocusObject,
  736. [in] IResourceConsumer* pConsumer
  737. );
  738. HRESULT NotifyAcquire(
  739. [in] LONG idResource,
  740. [in] IResourceConsumer* pConsumer,
  741. [in] HRESULT hr);
  742. HRESULT NotifyRelease(
  743. [in] LONG idResource,
  744. [in] IResourceConsumer* pConsumer,
  745. [in] BOOL bStillWant);
  746. HRESULT CancelRequest(
  747. [in] LONG idResource,
  748. [in] IResourceConsumer* pConsumer);
  749. HRESULT SetFocus(
  750. [in] IUnknown* pFocusObject);
  751. HRESULT ReleaseFocus(
  752. [in] IUnknown* pFocusObject);
  753. }
  754. cpp_quote("#ifndef _IKsPropertySet_")
  755. cpp_quote("#define _IKsPropertySet_")
  756. cpp_quote("#define KSPROPERTY_SUPPORT_GET 1")
  757. cpp_quote("#define KSPROPERTY_SUPPORT_SET 2")
  758. [
  759. object,
  760. uuid(31efac30-515c-11d0-a9aa-00aa0061be93),
  761. pointer_default(unique)
  762. ]
  763. interface IKsPropertySet : IUnknown
  764. {
  765. HRESULT Set( [in] REFGUID guidPropSet,
  766. [in] DWORD dwPropID,
  767. [in, size_is(cbInstanceData)] LPVOID pInstanceData,
  768. [in] DWORD cbInstanceData,
  769. [in, size_is(cbPropData)] LPVOID pPropData,
  770. [in] DWORD cbPropData );
  771. HRESULT Get( [in] REFGUID guidPropSet,
  772. [in] DWORD dwPropID,
  773. [in, size_is(cbInstanceData)] LPVOID pInstanceData,
  774. [in] DWORD cbInstanceData,
  775. [out, size_is(cbPropData)] LPVOID pPropData,
  776. [in] DWORD cbPropData,
  777. [out] DWORD *pcbReturned );
  778. HRESULT QuerySupported( [in] REFGUID guidPropSet,
  779. [in] DWORD dwPropID,
  780. [out] DWORD *pTypeSupport);
  781. }
  782. cpp_quote("#endif /* _IKsPropertySet_ */")