axextend.idl 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554
  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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  17. */
  18. interface IAMAnalogVideoDecoder;
  19. interface IAMAnalogVideoEncoder;
  20. interface IAMAudioInputMixer;
  21. interface IAMAudioRendererStats;
  22. interface IAMBufferNegotiation;
  23. interface IAMCameraControl;
  24. interface IAMCertifiedOutputProtection;
  25. interface IAMClockSlave;
  26. interface IAMCopyCaptureFileProgress;
  27. interface IAMCrossbar;
  28. interface IAMDevMemoryAllocator;
  29. interface IAMDevMemoryControl;
  30. interface IAMDroppedFrames;
  31. interface IAMExtDevice;
  32. interface IAMExtTransport;
  33. interface IAMGraphStreams;
  34. interface IAMLatency;
  35. interface IAMOpenProgress;
  36. interface IAMOverlayFX;
  37. interface IAMPhysicalPinInfo;
  38. interface IAMPushSource;
  39. interface IAMStreamConfig;
  40. interface IAMTimecodeDisplay;
  41. interface IAMTimecodeGenerator;
  42. interface IAMTimecodeReader;
  43. interface IAMTVTuner;
  44. interface IAMVfwCaptureDialogs;
  45. interface IAMVfwCompressDialogs;
  46. interface IAMVideoCompression;
  47. interface IAMVideoDecimationProperties;
  48. interface IAMVideoProcAmp;
  49. interface IAMGraphBuilderCallback;
  50. interface ICaptureGraphBuilder;
  51. interface ICaptureGraphBuilder2;
  52. interface IConfigAviMux;
  53. interface IConfigInterleaving;
  54. interface IDecimateVideoImage;
  55. interface IDrawVideoImage;
  56. interface IEnumRegFilters;
  57. interface IEnumStreamIdMap;
  58. interface IFileSourceFilter;
  59. interface IFileSinkFilter;
  60. interface IFileSinkFilter2;
  61. interface IFilterMapper;
  62. interface IFilterMapper2;
  63. interface IGraphBuilder;
  64. interface IKsPropertySet;
  65. interface IMediaEventSink;
  66. interface IMpeg2Demultiplexer;
  67. interface IMPEG2StreamIdMap;
  68. interface IOverlay;
  69. interface IOverlayNotify;
  70. interface IOverlayNotify2;
  71. interface IQualityControl;
  72. interface ISeekingPassThru;
  73. #include <axextendenums.h>
  74. typedef struct
  75. {
  76. CLSID Clsid;
  77. LPWSTR Name;
  78. } REGFILTER;
  79. typedef enum tagTVAudioMode {
  80. AMTVAUDIO_MODE_MONO = 0x0001,
  81. AMTVAUDIO_MODE_STEREO = 0x0002,
  82. AMTVAUDIO_MODE_LANG_A = 0x0010,
  83. AMTVAUDIO_MODE_LANG_B = 0x0020,
  84. AMTVAUDIO_MODE_LANG_C = 0x0040,
  85. AMTVAUDIO_PRESET_STEREO = 0x0200,
  86. AMTVAUDIO_PRESET_LANG_A = 0x1000,
  87. AMTVAUDIO_PRESET_LANG_B = 0x2000,
  88. AMTVAUDIO_PRESET_LANG_C = 0x4000
  89. } TVAudioMode;
  90. [
  91. object,
  92. uuid(56a868a4-0ad4-11ce-b03a-0020af0ba770),
  93. pointer_default(unique)
  94. ]
  95. interface IEnumRegFilters : IUnknown
  96. {
  97. HRESULT Next
  98. ( [in] ULONG cFilters,
  99. [out] REGFILTER ** apRegFilter,
  100. [out] ULONG * pcFetched
  101. );
  102. HRESULT Skip(
  103. [in] ULONG cFilters
  104. );
  105. HRESULT Reset(void);
  106. HRESULT Clone(
  107. [out] IEnumRegFilters **ppEnum
  108. );
  109. }
  110. typedef IEnumRegFilters *PENUMREGFILTERS;
  111. [
  112. object,
  113. uuid(56a868a3-0ad4-11ce-b03a-0020af0ba770),
  114. pointer_default(unique)
  115. ]
  116. interface IFilterMapper : IUnknown
  117. {
  118. enum { MERIT_PREFERRED = 0x800000,
  119. MERIT_NORMAL = 0x600000,
  120. MERIT_UNLIKELY = 0x400000,
  121. MERIT_DO_NOT_USE = 0x200000,
  122. MERIT_SW_COMPRESSOR = 0x100000,
  123. MERIT_HW_COMPRESSOR = 0x100050
  124. };
  125. HRESULT RegisterFilter
  126. ( [in] CLSID clsid,
  127. [in] LPCWSTR Name,
  128. [in] DWORD dwMerit
  129. );
  130. HRESULT RegisterFilterInstance
  131. ( [in] CLSID clsid,
  132. [in] LPCWSTR Name,
  133. [out] CLSID *MRId
  134. );
  135. HRESULT RegisterPin
  136. ( [in] CLSID Filter,
  137. [in] LPCWSTR Name,
  138. [in] BOOL bRendered,
  139. [in] BOOL bOutput,
  140. [in] BOOL bZero,
  141. [in] BOOL bMany,
  142. [in] CLSID ConnectsToFilter,
  143. [in] LPCWSTR ConnectsToPin
  144. );
  145. HRESULT RegisterPinType
  146. ( [in] CLSID clsFilter,
  147. [in] LPCWSTR strName,
  148. [in] CLSID clsMajorType,
  149. [in] CLSID clsSubType
  150. );
  151. HRESULT UnregisterFilter
  152. ( [in] CLSID Filter
  153. );
  154. HRESULT UnregisterFilterInstance
  155. ( [in] CLSID MRId
  156. );
  157. HRESULT UnregisterPin
  158. ( [in] CLSID Filter,
  159. [in] LPCWSTR Name
  160. );
  161. HRESULT EnumMatchingFilters
  162. ( [out] IEnumRegFilters **ppEnum,
  163. [in] DWORD dwMerit,
  164. [in] BOOL bInputNeeded,
  165. [in] CLSID clsInMaj,
  166. [in] CLSID clsInSub,
  167. [in] BOOL bRender,
  168. [in] BOOL bOutputNeeded,
  169. [in] CLSID clsOutMaj,
  170. [in] CLSID clsOutSub
  171. );
  172. }
  173. typedef struct
  174. {
  175. const CLSID * clsMajorType;
  176. const CLSID * clsMinorType;
  177. } REGPINTYPES;
  178. typedef struct
  179. {
  180. LPWSTR strName;
  181. BOOL bRendered;
  182. BOOL bOutput;
  183. BOOL bZero;
  184. BOOL bMany;
  185. const CLSID * clsConnectsToFilter;
  186. const WCHAR * strConnectsToPin;
  187. UINT nMediaTypes;
  188. const REGPINTYPES * lpMediaType;
  189. } REGFILTERPINS;
  190. typedef struct
  191. {
  192. CLSID clsMedium;
  193. DWORD dw1;
  194. DWORD dw2;
  195. } REGPINMEDIUM;
  196. enum
  197. {
  198. REG_PINFLAG_B_ZERO = 0x1,
  199. REG_PINFLAG_B_RENDERER = 0x2,
  200. REG_PINFLAG_B_MANY = 0x4,
  201. REG_PINFLAG_B_OUTPUT = 0x8
  202. };
  203. typedef struct
  204. {
  205. DWORD dwFlags;
  206. UINT cInstances;
  207. UINT nMediaTypes;
  208. [size_is(nMediaTypes)] const REGPINTYPES * lpMediaType;
  209. UINT nMediums;
  210. [size_is(nMediums)] const REGPINMEDIUM *lpMedium;
  211. const CLSID *clsPinCategory;
  212. } REGFILTERPINS2;
  213. typedef struct
  214. {
  215. DWORD dwVersion;
  216. DWORD dwMerit;
  217. [switch_is(dwVersion)] [switch_type(DWORD)] union
  218. {
  219. [case(1)]
  220. struct
  221. {
  222. ULONG cPins;
  223. [size_is(cPins)] const REGFILTERPINS *rgPins;
  224. };
  225. [case(2)]
  226. struct
  227. {
  228. ULONG cPins2;
  229. [size_is(cPins2)] const REGFILTERPINS2 *rgPins2;
  230. };
  231. [default]
  232. ;
  233. };
  234. } REGFILTER2;
  235. [
  236. object,
  237. uuid(b79bb0b0-33c1-11d1-abe1-00a0c905f375),
  238. pointer_default(unique)
  239. ]
  240. interface IFilterMapper2 : IUnknown
  241. {
  242. HRESULT CreateCategory
  243. ( [in] REFCLSID clsidCategory,
  244. [in] DWORD dwCategoryMerit,
  245. [in] LPCWSTR Description
  246. );
  247. HRESULT UnregisterFilter
  248. ( [in] const CLSID *pclsidCategory,
  249. [in] LPCOLESTR szInstance,
  250. [in] REFCLSID Filter
  251. );
  252. HRESULT RegisterFilter
  253. ( [in] REFCLSID clsidFilter,
  254. [in] LPCWSTR Name,
  255. [in, out] IMoniker **ppMoniker,
  256. [in] const CLSID *pclsidCategory,
  257. [in] LPCOLESTR szInstance,
  258. [in] const REGFILTER2 *prf2
  259. );
  260. HRESULT EnumMatchingFilters
  261. ( [out] IEnumMoniker **ppEnum,
  262. [in] DWORD dwFlags,
  263. [in] BOOL bExactMatch,
  264. [in] DWORD dwMerit,
  265. [in] BOOL bInputNeeded,
  266. [in] DWORD cInputTypes,
  267. [size_is(cInputTypes*2)] const GUID *pInputTypes,
  268. [in] const REGPINMEDIUM *pMedIn,
  269. [in] const CLSID *pPinCategoryIn,
  270. [in] BOOL bRender,
  271. [in] BOOL bOutputNeeded,
  272. [in] DWORD cOutputTypes,
  273. [size_is(cOutputTypes*2)] const GUID *pOutputTypes,
  274. [in] const REGPINMEDIUM *pMedOut,
  275. [in] const CLSID *pPinCategoryOut
  276. );
  277. }
  278. [
  279. object,
  280. uuid(b79bb0b1-33c1-11d1-abe1-00a0c905f375),
  281. pointer_default(unique)
  282. ]
  283. interface IFilterMapper3 : IFilterMapper2
  284. {
  285. HRESULT GetICreateDevEnum( [out] ICreateDevEnum **ppEnum );
  286. }
  287. typedef enum tagQualityMessageType
  288. {
  289. Famine,
  290. Flood
  291. } QualityMessageType;
  292. typedef struct tagQuality
  293. {
  294. QualityMessageType Type;
  295. LONG Proportion;
  296. REFERENCE_TIME Late;
  297. REFERENCE_TIME TimeStamp;
  298. } Quality;
  299. typedef IQualityControl *PQUALITYCONTROL;
  300. [
  301. object,
  302. uuid(56a868a5-0ad4-11ce-b03a-0020af0ba770),
  303. pointer_default(unique)
  304. ]
  305. interface IQualityControl : IUnknown
  306. {
  307. HRESULT Notify
  308. ( [in] IBaseFilter * pSelf,
  309. [in] Quality q
  310. );
  311. HRESULT SetSink
  312. ( [in] IQualityControl * piqc
  313. );
  314. }
  315. enum
  316. {
  317. CK_NOCOLORKEY = 0x0,
  318. CK_INDEX = 0x1,
  319. CK_RGB = 0x2
  320. };
  321. typedef struct tagCOLORKEY
  322. {
  323. DWORD KeyType;
  324. DWORD PaletteIndex;
  325. COLORREF LowColorValue;
  326. COLORREF HighColorValue;
  327. } COLORKEY;
  328. enum
  329. {
  330. ADVISE_NONE = 0x0,
  331. ADVISE_CLIPPING = 0x1,
  332. ADVISE_PALETTE = 0x2,
  333. ADVISE_COLORKEY = 0x4,
  334. ADVISE_POSITION = 0x8,
  335. ADVISE_DISPLAY_CHANGE = 0x10
  336. };
  337. const DWORD ADVISE_ALL = ADVISE_CLIPPING |
  338. ADVISE_PALETTE |
  339. ADVISE_COLORKEY |
  340. ADVISE_POSITION;
  341. const DWORD ADVISE_ALL2 = ADVISE_ALL |
  342. ADVISE_DISPLAY_CHANGE;
  343. cpp_quote("#ifndef _WINGDI_")
  344. /* already defined in wingdi.h, but needed for WIDL */
  345. typedef struct _RGNDATAHEADER
  346. {
  347. DWORD dwSize;
  348. DWORD iType;
  349. DWORD nCount;
  350. DWORD nRgnSize;
  351. RECT rcBound;
  352. } RGNDATAHEADER;
  353. typedef struct _RGNDATA
  354. {
  355. RGNDATAHEADER rdh;
  356. char Buffer[1];
  357. } RGNDATA;
  358. cpp_quote("#endif /* _WINGDI_ */")
  359. [
  360. object,
  361. local,
  362. uuid(56a868a0-0ad4-11ce-b03a-0020af0ba770),
  363. pointer_default(unique)
  364. ]
  365. interface IOverlayNotify : IUnknown
  366. {
  367. HRESULT OnPaletteChange(
  368. [in] DWORD dwColors,
  369. [in] const PALETTEENTRY *pPalette);
  370. HRESULT OnClipChange(
  371. [in] const RECT *pSourceRect,
  372. [in] const RECT *pDestinationRect,
  373. [in] const RGNDATA *pRgnData);
  374. HRESULT OnColorKeyChange([in] const COLORKEY *pColorKey);
  375. HRESULT OnPositionChange([in] const RECT *pSourceRect,
  376. [in] const RECT *pDestinationRect);
  377. }
  378. typedef IOverlayNotify *POVERLAYNOTIFY;
  379. cpp_quote("#if 0")
  380. typedef HANDLE HMONITOR;
  381. cpp_quote("#endif /* 0 */")
  382. [
  383. object,
  384. local,
  385. uuid(680EFA10-D535-11D1-87C8-00A0C9223196),
  386. pointer_default(unique)
  387. ]
  388. interface IOverlayNotify2 : IOverlayNotify
  389. {
  390. HRESULT OnDisplayChange(
  391. HMONITOR hMonitor);
  392. }
  393. typedef IOverlayNotify2 *POVERLAYNOTIFY2;
  394. [
  395. object,
  396. local,
  397. uuid(56a868a1-0ad4-11ce-b03a-0020af0ba770),
  398. pointer_default(unique)
  399. ]
  400. interface IOverlay : IUnknown
  401. {
  402. HRESULT GetPalette(
  403. [out] DWORD *pdwColors,
  404. [out] PALETTEENTRY **ppPalette);
  405. HRESULT SetPalette(
  406. [in] DWORD dwColors,
  407. [in] PALETTEENTRY *pPalette);
  408. HRESULT GetDefaultColorKey([out] COLORKEY *pColorKey);
  409. HRESULT GetColorKey([out] COLORKEY *pColorKey);
  410. HRESULT SetColorKey([in,out] COLORKEY *pColorKey);
  411. HRESULT GetWindowHandle([out] HWND *pHwnd);
  412. HRESULT GetClipList([out] RECT *pSourceRect,
  413. [out] RECT *pDestinationRect,
  414. [out] RGNDATA **ppRgnData);
  415. HRESULT GetVideoPosition([out] RECT *pSourceRect,
  416. [out] RECT *pDestinationRect);
  417. HRESULT Advise(
  418. [in] IOverlayNotify *pOverlayNotify,
  419. [in] DWORD dwInterests);
  420. HRESULT Unadvise();
  421. }
  422. typedef IOverlay *POVERLAY;
  423. [
  424. object,
  425. uuid(56a868a2-0ad4-11ce-b03a-0020af0ba770),
  426. pointer_default(unique)
  427. ]
  428. interface IMediaEventSink : IUnknown
  429. {
  430. HRESULT Notify(
  431. [in] LONG EventCode,
  432. [in] LONG_PTR EventParam1,
  433. [in] LONG_PTR EventParam2
  434. );
  435. }
  436. typedef IMediaEventSink *PMEDIAEVENTSINK;
  437. [
  438. object,
  439. uuid(56a868a6-0ad4-11ce-b03a-0020af0ba770),
  440. pointer_default(unique)
  441. ]
  442. interface IFileSourceFilter : IUnknown
  443. {
  444. HRESULT Load(
  445. [in] LPCOLESTR pszFileName,
  446. [in, unique] const AM_MEDIA_TYPE *pmt
  447. );
  448. HRESULT GetCurFile(
  449. [out] LPOLESTR *ppszFileName,
  450. [out] AM_MEDIA_TYPE *pmt
  451. );
  452. }
  453. typedef IFileSourceFilter *PFILTERFILESOURCE;
  454. [
  455. object,
  456. uuid(a2104830-7c70-11cf-8bce-00aa00a3f1a6),
  457. pointer_default(unique)
  458. ]
  459. interface IFileSinkFilter : IUnknown
  460. {
  461. HRESULT SetFileName(
  462. [in] LPCOLESTR pszFileName,
  463. [in, unique] const AM_MEDIA_TYPE *pmt
  464. );
  465. HRESULT GetCurFile(
  466. [out] LPOLESTR *ppszFileName,
  467. [out] AM_MEDIA_TYPE *pmt
  468. );
  469. }
  470. typedef IFileSinkFilter *PFILTERFILESINK;
  471. [
  472. object,
  473. uuid(00855B90-CE1B-11d0-BD4F-00A0C911CE86),
  474. pointer_default(unique)
  475. ]
  476. interface IFileSinkFilter2 : IFileSinkFilter
  477. {
  478. HRESULT SetMode(
  479. [in] DWORD dwFlags
  480. );
  481. HRESULT GetMode(
  482. [out] DWORD *pdwFlags
  483. );
  484. }
  485. typedef IFileSinkFilter2 *PFILESINKFILTER2;
  486. typedef enum
  487. {
  488. AM_FILE_OVERWRITE = 0x00000001,
  489. } AM_FILESINK_FLAGS;
  490. [
  491. object,
  492. uuid(56a868a9-0ad4-11ce-b03a-0020af0ba770),
  493. pointer_default(unique)
  494. ]
  495. interface IGraphBuilder : IFilterGraph
  496. {
  497. HRESULT Connect
  498. ( [in] IPin * ppinOut,
  499. [in] IPin * ppinIn
  500. );
  501. HRESULT Render
  502. ( [in] IPin * ppinOut
  503. );
  504. HRESULT RenderFile
  505. ( [in] LPCWSTR lpcwstrFile,
  506. [in, unique] LPCWSTR lpcwstrPlayList
  507. );
  508. HRESULT AddSourceFilter
  509. ( [in] LPCWSTR lpcwstrFileName,
  510. [in, unique] LPCWSTR lpcwstrFilterName,
  511. [out] IBaseFilter* *ppFilter
  512. );
  513. HRESULT SetLogFile
  514. ( [in] DWORD_PTR hFile
  515. );
  516. HRESULT Abort();
  517. HRESULT ShouldOperationContinue();
  518. }
  519. [
  520. object,
  521. uuid(bf87b6e0-8c27-11d0-b3f0-00aa003761c5),
  522. pointer_default(unique)
  523. ]
  524. interface ICaptureGraphBuilder : IUnknown {
  525. HRESULT SetFiltergraph(
  526. [in] IGraphBuilder *pfg);
  527. HRESULT GetFiltergraph(
  528. [out] IGraphBuilder **ppfg);
  529. HRESULT SetOutputFileName(
  530. [in] const GUID *pType,
  531. [in] LPCOLESTR lpstrFile,
  532. [out] IBaseFilter **ppf,
  533. [out] IFileSinkFilter **ppSink);
  534. [local] HRESULT FindInterface(
  535. [in, unique] const GUID *pCategory,
  536. [in] IBaseFilter *pf,
  537. [in] REFIID riid,
  538. [out] void **ppint);
  539. [call_as(FindInterface)] HRESULT RemoteFindInterface(
  540. [in, unique] const GUID *pCategory,
  541. [in] IBaseFilter *pf,
  542. [in] REFIID riid,
  543. [out] IUnknown **ppint);
  544. HRESULT RenderStream(
  545. [in] const GUID *pCategory,
  546. [in] IUnknown *pSource,
  547. [in] IBaseFilter *pfCompressor,
  548. [in] IBaseFilter *pfRenderer);
  549. HRESULT ControlStream(
  550. [in] const GUID *pCategory,
  551. [in] IBaseFilter *pFilter,
  552. [in] REFERENCE_TIME *pstart,
  553. [in] REFERENCE_TIME *pstop,
  554. [in] WORD wStartCookie,
  555. [in] WORD wStopCookie);
  556. HRESULT AllocCapFile(
  557. [in] LPCOLESTR lpstr,
  558. [in] DWORDLONG dwlSize);
  559. HRESULT CopyCaptureFile(
  560. [in] LPOLESTR lpwstrOld,
  561. [in] LPOLESTR lpwstrNew,
  562. [in] int fAllowEscAbort,
  563. [in] IAMCopyCaptureFileProgress *pCallback);
  564. }
  565. [
  566. object,
  567. uuid(670d1d20-a068-11d0-b3f0-00aa003761c5),
  568. pointer_default(unique)
  569. ]
  570. interface IAMCopyCaptureFileProgress : IUnknown
  571. {
  572. HRESULT Progress(
  573. [in] int iProgress);
  574. }
  575. [
  576. object,
  577. uuid(93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D),
  578. pointer_default(unique)
  579. ]
  580. interface ICaptureGraphBuilder2 : IUnknown
  581. {
  582. HRESULT SetFiltergraph(
  583. [in] IGraphBuilder *pfg);
  584. HRESULT GetFiltergraph(
  585. [out] IGraphBuilder **ppfg);
  586. HRESULT SetOutputFileName(
  587. [in] const GUID *pType,
  588. [in] LPCOLESTR lpstrFile,
  589. [out] IBaseFilter **ppf,
  590. [out] IFileSinkFilter **ppSink);
  591. [local] HRESULT FindInterface(
  592. [in] const GUID *pCategory,
  593. [in] const GUID *pType,
  594. [in] IBaseFilter *pf,
  595. [in] REFIID riid,
  596. [out] void **ppint);
  597. [call_as(FindInterface)] HRESULT RemoteFindInterface(
  598. [in] const GUID *pCategory,
  599. [in] const GUID *pType,
  600. [in] IBaseFilter *pf,
  601. [in] REFIID riid,
  602. [out] IUnknown **ppint);
  603. HRESULT RenderStream(
  604. [in] const GUID *pCategory,
  605. [in] const GUID *pType,
  606. [in] IUnknown *pSource,
  607. [in] IBaseFilter *pfCompressor,
  608. [in] IBaseFilter *pfRenderer);
  609. HRESULT ControlStream(
  610. [in] const GUID *pCategory,
  611. [in] const GUID *pType,
  612. [in] IBaseFilter *pFilter,
  613. [in] REFERENCE_TIME *pstart,
  614. [in] REFERENCE_TIME *pstop,
  615. [in] WORD wStartCookie,
  616. [in] WORD wStopCookie);
  617. HRESULT AllocCapFile(
  618. [in] LPCOLESTR lpstr,
  619. [in] DWORDLONG dwlSize);
  620. HRESULT CopyCaptureFile(
  621. [in] LPOLESTR lpwstrOld,
  622. [in] LPOLESTR lpwstrNew,
  623. [in] int fAllowEscAbort,
  624. [in] IAMCopyCaptureFileProgress *pCallback);
  625. HRESULT FindPin(
  626. [in] IUnknown *pSource,
  627. [in] PIN_DIRECTION pindir,
  628. [in] const GUID *pCategory,
  629. [in] const GUID *pType,
  630. [in] BOOL fUnconnected,
  631. [in] int num,
  632. [out] IPin **ppPin);
  633. }
  634. [
  635. local,
  636. object,
  637. uuid(5acd6aa0-f482-11ce-8b67-00aa00a3f1a6),
  638. pointer_default(unique)
  639. ]
  640. interface IConfigAviMux : IUnknown
  641. {
  642. HRESULT SetMasterStream(
  643. [in] LONG iStream);
  644. HRESULT GetMasterStream(
  645. [out] LONG *pStream);
  646. HRESULT SetOutputCompatibilityIndex(
  647. [in] BOOL fOldIndex);
  648. HRESULT GetOutputCompatibilityIndex(
  649. [out] BOOL *pfOldIndex);
  650. }
  651. [
  652. local,
  653. object,
  654. uuid(bee3d220-157b-11d0-bd23-00a0c911ce86),
  655. pointer_default(unique)
  656. ]
  657. interface IConfigInterleaving : IUnknown
  658. {
  659. typedef enum InterleavingMode {
  660. INTERLEAVE_NONE,
  661. INTERLEAVE_CAPTURE,
  662. INTERLEAVE_FULL,
  663. INTERLEAVE_NONE_BUFFERED
  664. } InterleavingMode;
  665. HRESULT put_Mode(
  666. [in] InterleavingMode mode);
  667. HRESULT get_Mode(
  668. [out] InterleavingMode *pMode);
  669. HRESULT put_Interleaving(
  670. [in] const REFERENCE_TIME *prtInterleave,
  671. [in] const REFERENCE_TIME *prtPreroll);
  672. HRESULT get_Interleaving(
  673. [out] REFERENCE_TIME *prtInterleave,
  674. [out] REFERENCE_TIME *prtPreroll);
  675. }
  676. [
  677. local,
  678. object,
  679. uuid(9fd52741-176d-4b36-8f51-ca8f933223be),
  680. pointer_default(unique)
  681. ]
  682. interface IAMClockSlave : IUnknown
  683. {
  684. HRESULT SetErrorTolerance(
  685. [in] DWORD dwTolerance);
  686. HRESULT GetErrorTolerance(
  687. [out] DWORD *pdwTolerance);
  688. }
  689. typedef struct _AMCOPPSignature {
  690. BYTE Signature[256];
  691. } AMCOPPSignature;
  692. typedef struct _AMCOPPCommand {
  693. GUID macKDI;
  694. GUID guidCommandID;
  695. DWORD dwSequence;
  696. DWORD bSizeData;
  697. BYTE CommandData[4056];
  698. } AMCOPPCommand, *LPAMCOPPCommand;
  699. typedef struct _AMCOPPStatusInput {
  700. GUID rApp;
  701. GUID guidStatusRequestID;
  702. DWORD dwSequence;
  703. DWORD cbSizeData;
  704. BYTE StatusData[4056];
  705. } AMCOPPStatusInput, *LPAMCOPPStatusInput;
  706. typedef struct _AMCOPPStatusOutput {
  707. GUID macKDI;
  708. DWORD cbSizeData;
  709. BYTE COPPStatus[4076];
  710. } AMCOPPStatusOutput, *LPAMCOPPStatusOutput;
  711. [
  712. local,
  713. object,
  714. uuid(6feded3e-0ff1-4901-a2f1-43f7012c8515),
  715. pointer_default(unique)
  716. ]
  717. interface IAMCertifiedOutputProtection : IUnknown
  718. {
  719. HRESULT KeyExchange (
  720. [out] GUID* pRandom,
  721. [out] BYTE** VarLenCertGH,
  722. [out] DWORD* pdwLengthCertGH);
  723. HRESULT SessionSequenceStart(
  724. [in] AMCOPPSignature* pSig);
  725. HRESULT ProtectionCommand(
  726. [in] const AMCOPPCommand* cmd);
  727. HRESULT ProtectionStatus(
  728. [in] const AMCOPPStatusInput* pStatusInput,
  729. [out] AMCOPPStatusOutput* pStatusOutput);
  730. };
  731. enum _AM_RENSDEREXFLAGS
  732. {
  733. AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x01
  734. };
  735. [
  736. object,
  737. uuid(36b73882-c2c8-11cf-8b46-00805f6cef60),
  738. pointer_default(unique)
  739. ]
  740. interface IFilterGraph2: IGraphBuilder
  741. {
  742. HRESULT AddSourceFilterForMoniker(
  743. [in] IMoniker *pMoniker,
  744. [in] IBindCtx *pCtx,
  745. [in, unique] LPCWSTR lpcwstrFilterName,
  746. [out] IBaseFilter **ppFilter
  747. );
  748. HRESULT ReconnectEx
  749. ( [in] IPin * ppin,
  750. [in, unique] const AM_MEDIA_TYPE *pmt
  751. );
  752. HRESULT RenderEx( [in] IPin *pPinOut,
  753. [in] DWORD dwFlags,
  754. [in, out] DWORD *pvContext
  755. );
  756. }
  757. [
  758. object,
  759. local,
  760. uuid(56a868bf-0ad4-11ce-b03a-0020af0ba770),
  761. pointer_default(unique)
  762. ]
  763. interface IStreamBuilder : IUnknown
  764. {
  765. HRESULT Render
  766. ( [in] IPin * ppinOut,
  767. [in] IGraphBuilder * pGraph
  768. );
  769. HRESULT Backout
  770. ( [in] IPin * ppinOut,
  771. [in] IGraphBuilder * pGraph
  772. );
  773. }
  774. /*****************************************************************************
  775. * IAMStreamConfig interface
  776. */
  777. [
  778. object,
  779. uuid(c6e13340-30ac-11d0-a18c-00a0c9118956),
  780. pointer_default(unique)
  781. ]
  782. interface IAMStreamConfig : IUnknown
  783. {
  784. typedef struct _VIDEO_STREAM_CONFIG_CAPS {
  785. GUID guid;
  786. ULONG VideoStandard;
  787. SIZE InputSize;
  788. SIZE MinCroppingSize;
  789. SIZE MaxCroppingSize;
  790. int CropGranularityX;
  791. int CropGranularityY;
  792. int CropAlignX;
  793. int CropAlignY;
  794. SIZE MinOutputSize;
  795. SIZE MaxOutputSize;
  796. int OutputGranularityX;
  797. int OutputGranularityY;
  798. int StretchTapsX;
  799. int StretchTapsY;
  800. int ShrinkTapsX;
  801. int ShrinkTapsY;
  802. LONGLONG MinFrameInterval;
  803. LONGLONG MaxFrameInterval;
  804. LONG MinBitsPerSecond;
  805. LONG MaxBitsPerSecond;
  806. } VIDEO_STREAM_CONFIG_CAPS;
  807. typedef struct _AUDIO_STREAM_CONFIG_CAPS {
  808. GUID guid;
  809. ULONG MinimumChannels;
  810. ULONG MaximumChannels;
  811. ULONG ChannelsGranularity;
  812. ULONG MinimumBitsPerSample;
  813. ULONG MaximumBitsPerSample;
  814. ULONG BitsPerSampleGranularity;
  815. ULONG MinimumSampleFrequency;
  816. ULONG MaximumSampleFrequency;
  817. ULONG SampleFrequencyGranularity;
  818. } AUDIO_STREAM_CONFIG_CAPS;
  819. HRESULT SetFormat( [in] AM_MEDIA_TYPE *pmt);
  820. HRESULT GetFormat( [in] AM_MEDIA_TYPE **pmt);
  821. HRESULT GetNumberOfCapabilities( [out] int *piCount, [out] int *piSize);
  822. HRESULT GetStreamCaps( [in] int iIndex, [out] AM_MEDIA_TYPE **pmt,
  823. [out] BYTE *pSCC);
  824. }
  825. typedef enum tagVideoProcAmpProperty
  826. {
  827. VideoProcAmp_Brightness,
  828. VideoProcAmp_Contrast,
  829. VideoProcAmp_Hue,
  830. VideoProcAmp_Saturation,
  831. VideoProcAmp_Sharpness,
  832. VideoProcAmp_Gamma,
  833. VideoProcAmp_ColorEnable,
  834. VideoProcAmp_WhiteBalance,
  835. VideoProcAmp_BacklightCompensation,
  836. VideoProcAmp_Gain
  837. } VideoProcAmpProperty;
  838. typedef enum tagVideoProcAmpFlags
  839. {
  840. VideoProcAmp_Flags_Auto = 0x0001,
  841. VideoProcAmp_Flags_Manual = 0x0002,
  842. } VideoProcAmpFlags;
  843. /*****************************************************************************
  844. * IAMVideoProcAmp interface
  845. */
  846. [
  847. object,
  848. uuid(c6e13360-30ac-11d0-a18c-00a0c9118956),
  849. pointer_default(unique)
  850. ]
  851. interface IAMVideoProcAmp : IUnknown
  852. {
  853. HRESULT GetRange( [in] LONG Property, [out] LONG *pMin, [out] LONG *pMax,
  854. [out] LONG *pSteppingDelta, [out] LONG *pDefault,
  855. [out] LONG *pCapsFlags);
  856. HRESULT Set( [in] LONG Property, [in] LONG lValue, [in] LONG Flags);
  857. HRESULT Get( [in] LONG Property, [out] LONG *lValue, [out] LONG *Flags);
  858. }
  859. [
  860. object,
  861. uuid(56a868aa-0ad4-11ce-b03a-0020af0ba770),
  862. pointer_default(unique)
  863. ]
  864. interface IAsyncReader : IUnknown
  865. {
  866. HRESULT RequestAllocator(
  867. [in] IMemAllocator* pPreferred,
  868. [in] ALLOCATOR_PROPERTIES* pProps,
  869. [out] IMemAllocator ** ppActual);
  870. HRESULT Request(
  871. [in] IMediaSample* pSample,
  872. [in] DWORD_PTR dwUser);
  873. HRESULT WaitForNext(
  874. [in] DWORD dwTimeout,
  875. [out] IMediaSample** ppSample,
  876. [out] DWORD_PTR * pdwUser);
  877. HRESULT SyncReadAligned(
  878. [in] IMediaSample* pSample);
  879. HRESULT SyncRead(
  880. [in] LONGLONG llPosition,
  881. [in] LONG lLength,
  882. [out, size_is(lLength)]
  883. BYTE* pBuffer);
  884. HRESULT Length(
  885. [out] LONGLONG* pTotal,
  886. [out] LONGLONG* pAvailable);
  887. HRESULT BeginFlush(void);
  888. HRESULT EndFlush(void);
  889. }
  890. [
  891. object,
  892. uuid(56a868ab-0ad4-11ce-b03a-0020af0ba770),
  893. pointer_default(unique)
  894. ]
  895. interface IGraphVersion : IUnknown
  896. {
  897. HRESULT QueryVersion(LONG* pVersion);
  898. }
  899. [
  900. object,
  901. uuid(56a868ad-0ad4-11ce-b03a-0020af0ba770),
  902. pointer_default(unique)
  903. ]
  904. interface IResourceConsumer : IUnknown
  905. {
  906. HRESULT AcquireResource(
  907. [in] LONG idResource);
  908. HRESULT ReleaseResource(
  909. [in] LONG idResource);
  910. }
  911. [
  912. object,
  913. uuid(56a868ac-0ad4-11ce-b03a-0020af0ba770),
  914. pointer_default(unique)
  915. ]
  916. interface IResourceManager : IUnknown
  917. {
  918. HRESULT Register(
  919. [in] LPCWSTR pName,
  920. [in] LONG cResource,
  921. [out] LONG* plToken
  922. );
  923. HRESULT RegisterGroup(
  924. [in] LPCWSTR pName,
  925. [in] LONG cResource,
  926. [in, size_is(cResource)]
  927. LONG* palTokens,
  928. [out] LONG* plToken
  929. );
  930. HRESULT RequestResource(
  931. [in] LONG idResource,
  932. [in] IUnknown* pFocusObject,
  933. [in] IResourceConsumer* pConsumer
  934. );
  935. HRESULT NotifyAcquire(
  936. [in] LONG idResource,
  937. [in] IResourceConsumer* pConsumer,
  938. [in] HRESULT hr);
  939. HRESULT NotifyRelease(
  940. [in] LONG idResource,
  941. [in] IResourceConsumer* pConsumer,
  942. [in] BOOL bStillWant);
  943. HRESULT CancelRequest(
  944. [in] LONG idResource,
  945. [in] IResourceConsumer* pConsumer);
  946. HRESULT SetFocus(
  947. [in] IUnknown* pFocusObject);
  948. HRESULT ReleaseFocus(
  949. [in] IUnknown* pFocusObject);
  950. }
  951. typedef enum AM_STREAM_INFO_FLAGS
  952. {
  953. AM_STREAM_INFO_START_DEFINED = 0x01,
  954. AM_STREAM_INFO_STOP_DEFINED = 0x02,
  955. AM_STREAM_INFO_DISCARDING = 0x04,
  956. AM_STREAM_INFO_STOP_SEND_EXTRA = 0x10
  957. } AM_STREAM_INFO_FLAGS;
  958. typedef struct AM_STREAM_INFO
  959. {
  960. REFERENCE_TIME tStart;
  961. REFERENCE_TIME tStop;
  962. DWORD dwStartCookie;
  963. DWORD dwStopCookie;
  964. DWORD dwFlags;
  965. } AM_STREAM_INFO;
  966. [
  967. local,
  968. object,
  969. uuid(36b73881-c2c8-11cf-8b46-00805f6cef60),
  970. pointer_default(unique)
  971. ]
  972. interface IAMStreamControl : IUnknown
  973. {
  974. HRESULT StartAt(
  975. [in] const REFERENCE_TIME *ptStart,
  976. [in] DWORD dwCookie);
  977. HRESULT StopAt(
  978. [in] const REFERENCE_TIME *ptStop,
  979. [in] BOOL bSendExtra,
  980. [in] DWORD dwCookie);
  981. HRESULT GetInfo(
  982. [out] AM_STREAM_INFO *pInfo);
  983. }
  984. cpp_quote("#ifndef _IKsPropertySet_")
  985. cpp_quote("#define _IKsPropertySet_")
  986. cpp_quote("#define KSPROPERTY_SUPPORT_GET 1")
  987. cpp_quote("#define KSPROPERTY_SUPPORT_SET 2")
  988. typedef enum AMPROPERTY_PIN
  989. {
  990. AMPROPERTY_PIN_CATEGORY,
  991. AMPROPERTY_PIN_MEDIUM,
  992. } AMPROPERTY_PIN;
  993. [
  994. object,
  995. uuid(31efac30-515c-11d0-a9aa-00aa0061be93),
  996. pointer_default(unique),
  997. local
  998. ]
  999. interface IKsPropertySet : IUnknown
  1000. {
  1001. HRESULT Set( [in] REFGUID guidPropSet,
  1002. [in] DWORD dwPropID,
  1003. [in, size_is(cbInstanceData)] LPVOID pInstanceData,
  1004. [in] DWORD cbInstanceData,
  1005. [in, size_is(cbPropData)] LPVOID pPropData,
  1006. [in] DWORD cbPropData );
  1007. HRESULT Get( [in] REFGUID guidPropSet,
  1008. [in] DWORD dwPropID,
  1009. [in, size_is(cbInstanceData)] LPVOID pInstanceData,
  1010. [in] DWORD cbInstanceData,
  1011. [out, size_is(cbPropData)] LPVOID pPropData,
  1012. [in] DWORD cbPropData,
  1013. [out] DWORD *pcbReturned );
  1014. HRESULT QuerySupported( [in] REFGUID guidPropSet,
  1015. [in] DWORD dwPropID,
  1016. [out] DWORD *pTypeSupport);
  1017. }
  1018. cpp_quote("#endif /* _IKsPropertySet_ */")
  1019. [
  1020. local,
  1021. object,
  1022. uuid(6025a880-c0d5-11d0-bd4e-00a0c911ce86),
  1023. pointer_default(unique)
  1024. ]
  1025. interface IMediaPropertyBag : IPropertyBag
  1026. {
  1027. typedef IMediaPropertyBag *LPMEDIAPROPERTYBAG;
  1028. HRESULT EnumProperty(
  1029. [in] ULONG iProperty,
  1030. [in, out] VARIANT *pvarPropertyName,
  1031. [in, out] VARIANT *pvarPropertyValue);
  1032. }
  1033. [
  1034. local,
  1035. object,
  1036. uuid(5738e040-b67f-11d0-bd4d-00a0c911ce86),
  1037. pointer_default(unique)
  1038. ]
  1039. interface IPersistMediaPropertyBag : IPersist
  1040. {
  1041. HRESULT InitNew(void);
  1042. HRESULT Load(
  1043. [in] IMediaPropertyBag *pPropBag,
  1044. [in] IErrorLog *pErrorLog);
  1045. HRESULT Save(
  1046. [in] IMediaPropertyBag *pPropBag,
  1047. [in] BOOL fClearDirty,
  1048. [in] BOOL fSaveAllProperties);
  1049. typedef IPersistMediaPropertyBag *LPPERSISTMEDIAPROPERTYBAG;
  1050. }
  1051. [
  1052. object,
  1053. uuid(36b73883-c2c8-11cf-8b46-00805f6cef60),
  1054. pointer_default(unique)
  1055. ]
  1056. interface ISeekingPassThru : IUnknown
  1057. {
  1058. HRESULT Init( [in] BOOL bSupportRendering, [in] IPin *pPin);
  1059. }
  1060. enum _AM_FILTER_MISC_FLAGS
  1061. {
  1062. AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x1,
  1063. AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x2
  1064. };
  1065. [
  1066. local,
  1067. object,
  1068. uuid(2dd74950-a890-11d1-abe8-00a0c905f375),
  1069. pointer_default(unique)
  1070. ]
  1071. interface IAMFilterMiscFlags : IUnknown
  1072. {
  1073. ULONG GetMiscFlags();
  1074. }
  1075. [
  1076. local,
  1077. object,
  1078. uuid(4995f511-9ddb-4f12-bd3b-f04611807b79),
  1079. pointer_default(unique)
  1080. ]
  1081. interface IAMGraphBuilderCallback : IUnknown
  1082. {
  1083. HRESULT SelectedFilter(
  1084. [in] IMoniker *pMon);
  1085. HRESULT CreatedFilter(
  1086. [in] IBaseFilter *pFil);
  1087. }
  1088. [
  1089. local,
  1090. object,
  1091. uuid(d8d715a0-6e5e-11d0-b3f0-00aa003761c5),
  1092. pointer_default(unique)
  1093. ]
  1094. interface IAMVfwCaptureDialogs : IUnknown
  1095. {
  1096. HRESULT HasDialog(
  1097. [in] int dialog);
  1098. HRESULT ShowDialog(
  1099. [in] int dialog,
  1100. [in] HWND hwnd);
  1101. HRESULT SendDriverMessage(
  1102. [in] int dialog,
  1103. [in] int msg,
  1104. [in] long data1,
  1105. [in] long data2);
  1106. }
  1107. [
  1108. local,
  1109. object,
  1110. uuid(c6e13370-30ac-11d0-a18c-00a0c9118956),
  1111. pointer_default(unique)
  1112. ]
  1113. interface IAMCameraControl : IUnknown
  1114. {
  1115. HRESULT GetRange([in] long property, [out] long *min, [out] long *max,
  1116. [out] long *stepping_delta, [out] long *default_value, [out] long *flags);
  1117. HRESULT Set([in] long property, [in] long property_value, [in] long flags);
  1118. HRESULT Get([in] long property, [out] long *property_value, [out] long *flags);
  1119. }
  1120. [
  1121. local,
  1122. object,
  1123. uuid(6a2e0670-28e4-11d0-a18c-00a0c9118956),
  1124. pointer_default(unique)
  1125. ]
  1126. interface IAMVideoControl : IUnknown
  1127. {
  1128. HRESULT GetCaps([in] IPin *pin, [out] long *flags);
  1129. HRESULT SetMode([in] IPin *pin, long mode);
  1130. HRESULT GetMode([in] IPin *pin, [out] long *mode);
  1131. HRESULT GetCurrentActualFrameRate([in] IPin *pin, [out] LONGLONG *frame_rate);
  1132. HRESULT GetMaxAvailableFrameRate([in] IPin *pin, [in] long index,
  1133. [in] SIZE dimensions, [out] LONGLONG *frame_rate);
  1134. HRESULT GetFrameRateList([in] IPin *pin, [in] long index, [in] SIZE dimensions,
  1135. [out] long *list_size, [out] LONGLONG **frame_rate);
  1136. }
  1137. [
  1138. local,
  1139. object,
  1140. uuid(56ed71a0-af5f-11d0-b3f0-00aa003761c5),
  1141. pointer_default(unique)
  1142. ]
  1143. interface IAMBufferNegotiation : IUnknown
  1144. {
  1145. HRESULT SuggestAllocatorProperties([in] const ALLOCATOR_PROPERTIES *prop);
  1146. HRESULT GetAllocatorProperties([out] ALLOCATOR_PROPERTIES *prop);
  1147. }
  1148. [
  1149. local,
  1150. object,
  1151. uuid(c6e13344-30ac-11d0-a18c-00a0c9118956),
  1152. pointer_default(unique)
  1153. ]
  1154. interface IAMDroppedFrames : IUnknown
  1155. {
  1156. HRESULT GetNumDropped([out] long *number);
  1157. HRESULT GetNumNotDropped([out] long *number);
  1158. HRESULT GetDroppedInfo([in] long size, [out] long *array, [out] long *copied);
  1159. HRESULT GetAverageFrameSize([out] long *size);
  1160. }
  1161. [
  1162. local,
  1163. object,
  1164. uuid(62ea93ba-ec62-11d2-b770-00c04fb6bd3d),
  1165. pointer_default(unique)
  1166. ]
  1167. interface IAMLatency : IUnknown
  1168. {
  1169. HRESULT GetLatency([in, out] REFERENCE_TIME *latency);
  1170. }
  1171. [
  1172. local,
  1173. object,
  1174. uuid(f185fe76-e64e-11d2-b76e-00c04fb6bd3d),
  1175. pointer_default(unique)
  1176. ]
  1177. interface IAMPushSource : IAMLatency
  1178. {
  1179. HRESULT GetPushSourceFlags([out] ULONG *flags);
  1180. HRESULT SetPushSourceFlags([in] ULONG flags);
  1181. HRESULT SetStreamOffset([in] REFERENCE_TIME offset);
  1182. HRESULT GetStreamOffset([out] REFERENCE_TIME *offset);
  1183. HRESULT GetMaxStreamOffset([out] REFERENCE_TIME *offset);
  1184. HRESULT SetMaxStreamOffset([in] REFERENCE_TIME offset);
  1185. }
  1186. [
  1187. local,
  1188. object,
  1189. uuid(c6e13343-30ac-11d0-a18c-00a0c9118956),
  1190. pointer_default(unique)
  1191. ]
  1192. interface IAMVideoCompression : IUnknown
  1193. {
  1194. HRESULT put_KeyFrameRate([in] long frame_rate);
  1195. HRESULT get_KeyFrameRate([out] long *frame_rate);
  1196. HRESULT put_PFramesPerKeyFrame([in] long frame);
  1197. HRESULT get_PFramesPerKeyFrame([out] long *frame);
  1198. HRESULT put_Quality([in] double quality);
  1199. HRESULT get_Quality([out] double *quality);
  1200. HRESULT put_WindowSize([in] DWORDLONG size);
  1201. HRESULT get_WindowSize([out] DWORDLONG *size);
  1202. HRESULT GetInfo([out, size_is(*version_size)] LPWSTR version, [in, out] int *version_size,
  1203. [out, size_is(*description_size)] LPWSTR description, [in, out] int *description_size,
  1204. [out] long *frame_rate, [out] long *key, [out] double *quality, [out] long *capabilities);
  1205. HRESULT OverrideKeyFrame([in] long number);
  1206. HRESULT OverrideFrameSize([in] long number, [in] long size);
  1207. }
  1208. [
  1209. local,
  1210. object,
  1211. uuid(c6e13380-30ac-11d0-a18c-00a0c9118956),
  1212. pointer_default(unique)
  1213. ]
  1214. interface IAMCrossbar : IUnknown
  1215. {
  1216. HRESULT get_PinCounts([out] long *output, [out] long *intput);
  1217. HRESULT CanRoute([in] long output, [in] long input);
  1218. HRESULT Route([in] long output, [in] long input);
  1219. HRESULT get_IsRoutedTo([in] long output, [out] long *input);
  1220. HRESULT get_CrossbarPinInfo([in] BOOL is_input, [in] long index,
  1221. [out] long *related, [out] long *type);
  1222. }
  1223. typedef enum tagAMTunerEventType
  1224. {
  1225. AMTUNER_EVENT_CHANGED = 0x0001,
  1226. } AMTunerEventType;
  1227. [
  1228. local,
  1229. object,
  1230. uuid(211a8760-03ac-11d1-8d13-00aa00bd8339),
  1231. pointer_default(unique)
  1232. ]
  1233. interface IAMTunerNotification : IUnknown
  1234. {
  1235. HRESULT OnEvent([in] AMTunerEventType event);
  1236. }
  1237. typedef enum tagAMTunerModeType
  1238. {
  1239. AMTUNER_MODE_DEFAULT = 0x0000,
  1240. AMTUNER_MODE_TV = 0x0001,
  1241. AMTUNER_MODE_FM_RADIO = 0x0002,
  1242. AMTUNER_MODE_AM_RADIO = 0x0004,
  1243. AMTUNER_MODE_DSS = 0x0008,
  1244. } AMTunerModeType;
  1245. [
  1246. local,
  1247. object,
  1248. uuid(211a8761-03ac-11d1-8d13-00aa00bd8339),
  1249. pointer_default(unique)
  1250. ]
  1251. interface IAMTuner : IUnknown
  1252. {
  1253. HRESULT put_Channel([in] long channel, [in] long video, [in] long audio);
  1254. HRESULT get_Channel([out] long *channel, [out] long *video, [out] long *audio);
  1255. HRESULT ChannelMinMax([out] long *min, [out] long *max);
  1256. HRESULT put_CountryCode([in] long country);
  1257. HRESULT get_CountryCode([out] long *country);
  1258. HRESULT put_TuningSpace([in] long tuning_space);
  1259. HRESULT get_TuningSpace([out] long *tuning_space);
  1260. [local] HRESULT Logon([in] HANDLE user);
  1261. HRESULT Logout();
  1262. HRESULT SignalPresent([out] long *signal_strength);
  1263. HRESULT put_Mode([in] AMTunerModeType mode);
  1264. HRESULT get_Mode([out] AMTunerModeType *mode);
  1265. HRESULT GetAvailableModes([out] long *modes);
  1266. HRESULT RegisterNotificationCallBack([in] IAMTunerNotification *notify, [in] long events);
  1267. HRESULT UnRegisterNotificationCallBack([in] IAMTunerNotification *notify);
  1268. }
  1269. [
  1270. local,
  1271. object,
  1272. uuid(211a8766-03ac-11d1-8d13-00aa00bd8339),
  1273. pointer_default(unique)
  1274. ]
  1275. interface IAMTVTuner : IAMTuner
  1276. {
  1277. HRESULT get_AvailableTVFormats([out] long *standard);
  1278. HRESULT get_TVFormat([out] long *standard);
  1279. HRESULT AutoTune([in] long channel, [out] long *signal);
  1280. HRESULT StoreAutoTune();
  1281. HRESULT get_NumInputConnections([out] long *number);
  1282. HRESULT put_InputType([in] long index, [in] TunerInputType type);
  1283. HRESULT get_InputType([in] long index, [out] TunerInputType *type);
  1284. HRESULT put_ConnectInput([in] long index);
  1285. HRESULT get_ConnectInput([out] long *index);
  1286. HRESULT get_VideoFrequency([out] long *freq);
  1287. HRESULT get_AudioFrequency([out] long *freq);
  1288. }
  1289. [
  1290. local,
  1291. object,
  1292. uuid(e46a9787-2b71-444d-a4b5-1fab7b708d6a),
  1293. pointer_default(unique),
  1294. ]
  1295. interface IVideoFrameStep : IUnknown
  1296. {
  1297. HRESULT Step(DWORD frame_count, [in] IUnknown *filter);
  1298. HRESULT CanStep(long multiple, [in] IUnknown *filter);
  1299. HRESULT CancelStep();
  1300. }
  1301. cpp_quote("#if (_WIN32_WINNT >= 0x0601)")
  1302. [
  1303. local,
  1304. object,
  1305. uuid(cf7b26fc-9a00-485b-8147-3e789d5e8f67),
  1306. pointer_default(unique)
  1307. ]
  1308. interface IAMAsyncReaderTimestampScaling : IUnknown
  1309. {
  1310. HRESULT GetTimestampMode(
  1311. [out] BOOL *pfRaw);
  1312. HRESULT SetTimestampMode(
  1313. [in] BOOL fRaw);
  1314. }
  1315. [
  1316. local,
  1317. object,
  1318. uuid(0e26a181-f40c-4635-8786-976284b52981),
  1319. pointer_default(unique)
  1320. ]
  1321. interface IAMPluginControl : IUnknown
  1322. {
  1323. HRESULT GetPreferredClsid(
  1324. [in] REFGUID subType,
  1325. [out] CLSID *clsid);
  1326. HRESULT GetPreferredClsidByIndex(
  1327. [in] DWORD index,
  1328. [out] GUID *subType,
  1329. [out] CLSID *clsid);
  1330. HRESULT SetPreferredClsid(
  1331. [in] REFGUID subType,
  1332. [in] const CLSID *clsid);
  1333. HRESULT IsDisabled(
  1334. [in] REFCLSID clsid);
  1335. HRESULT GetDisabledByIndex(
  1336. [in] DWORD index,
  1337. [out] CLSID *clsid);
  1338. HRESULT SetDisabled(
  1339. [in] REFCLSID clsid,
  1340. [in] BOOL disabled);
  1341. HRESULT IsLegacyDisabled(
  1342. [in] LPCWSTR dllName);
  1343. }
  1344. cpp_quote("#endif /*(_WIN32_WINNT >= 0x0601)*/")