[CMAKE]
[reactos.git] / include / dxsdk / axextend.idl
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
19 interface IAMAnalogVideoDecoder;
20 interface IAMAnalogVideoEncoder;
21 interface IAMAudioInputMixer;
22 interface IAMAudioRendererStats;
23 interface IAMBufferNegotiation;
24 interface IAMCameraControl;
25 interface IAMCopyCaptureFileProgress;
26 interface IAMCrossbar;
27 interface IAMDevMemoryAllocator;
28 interface IAMDevMemoryControl;
29 interface IAMDroppedFrames;
30 interface IAMExtDevice;
31 interface IAMExtTransport;
32 interface IAMGraphStreams;
33 interface IAMLatency;
34 interface IAMOpenProgress;
35 interface IAMOverlayFX;
36 interface IAMPhysicalPinInfo;
37 interface IAMPushSource;
38 interface IAMStreamConfig;
39 interface IAMTimecodeDisplay;
40 interface IAMTimecodeGenerator;
41 interface IAMTimecodeReader;
42 interface IAMTVTuner;
43 interface IAMVfwCaptureDialogs;
44 interface IAMVfwCompressDialogs;
45 interface IAMVideoCompression;
46 interface IAMVideoDecimationProperties;
47 interface IAMVideoProcAmp;
48 interface ICaptureGraphBuilder;
49 interface ICaptureGraphBuilder2;
50 interface IConfigAviMux;
51 interface IConfigInterleaving;
52 interface IDecimateVideoImage;
53 interface IDrawVideoImage;
54 interface IEnumRegFilters;
55 interface IEnumStreamIdMap;
56 interface IFileSourceFilter;
57 interface IFileSinkFilter;
58 interface IFileSinkFilter2;
59 interface IFilterMapper;
60 interface IFilterMapper2;
61 interface IGraphBuilder;
62 interface IKsPropertySet;
63 interface IMediaEventSink;
64 interface IMpeg2Demultiplexer;
65 interface IMPEG2StreamIdMap;
66 interface IOverlay;
67 interface IOverlayNotify;
68 interface IOverlayNotify2;
69 interface IQualityControl;
70 interface ISeekingPassThru;
71
72 typedef struct
73 {
74 CLSID Clsid;
75 LPWSTR Name;
76 } REGFILTER;
77
78 [
79 object,
80 uuid(56a868a4-0ad4-11ce-b03a-0020af0ba770),
81 pointer_default(unique)
82 ]
83 interface IEnumRegFilters : IUnknown
84 {
85 HRESULT Next
86 ( [in] ULONG cFilters,
87 [out] REGFILTER ** apRegFilter,
88 [out] ULONG * pcFetched
89 );
90
91 HRESULT Skip(
92 [in] ULONG cFilters
93 );
94
95 HRESULT Reset(void);
96
97 HRESULT Clone(
98 [out] IEnumRegFilters **ppEnum
99 );
100 }
101
102
103 typedef IEnumRegFilters *PENUMREGFILTERS;
104
105 [
106 object,
107 uuid(56a868a3-0ad4-11ce-b03a-0020af0ba770),
108 pointer_default(unique)
109 ]
110 interface IFilterMapper : IUnknown
111 {
112 enum { MERIT_PREFERRED = 0x800000,
113 MERIT_NORMAL = 0x600000,
114 MERIT_UNLIKELY = 0x400000,
115 MERIT_DO_NOT_USE = 0x200000,
116 MERIT_SW_COMPRESSOR = 0x100000,
117 MERIT_HW_COMPRESSOR = 0x100050
118 };
119
120 HRESULT RegisterFilter
121 ( [in] CLSID clsid,
122 [in] LPCWSTR Name,
123 [in] DWORD dwMerit
124 );
125
126 HRESULT RegisterFilterInstance
127 ( [in] CLSID clsid,
128 [in] LPCWSTR Name,
129 [out] CLSID *MRId
130 );
131
132
133 HRESULT RegisterPin
134 ( [in] CLSID Filter,
135 [in] LPCWSTR Name,
136 [in] BOOL bRendered,
137 [in] BOOL bOutput,
138 [in] BOOL bZero,
139 [in] BOOL bMany,
140 [in] CLSID ConnectsToFilter,
141 [in] LPCWSTR ConnectsToPin
142 );
143
144 HRESULT RegisterPinType
145 ( [in] CLSID clsFilter,
146 [in] LPCWSTR strName,
147 [in] CLSID clsMajorType,
148 [in] CLSID clsSubType
149 );
150
151
152 HRESULT UnregisterFilter
153 ( [in] CLSID Filter
154 );
155
156
157 HRESULT UnregisterFilterInstance
158 ( [in] CLSID MRId
159 );
160
161
162 HRESULT UnregisterPin
163 ( [in] CLSID Filter,
164 [in] LPCWSTR Name
165 );
166
167 HRESULT EnumMatchingFilters
168 ( [out] IEnumRegFilters **ppEnum,
169 [in] DWORD dwMerit,
170 [in] BOOL bInputNeeded,
171 [in] CLSID clsInMaj,
172 [in] CLSID clsInSub,
173 [in] BOOL bRender,
174 [in] BOOL bOututNeeded,
175 [in] CLSID clsOutMaj,
176 [in] CLSID clsOutSub
177 );
178
179 }
180
181 typedef struct
182 {
183 const CLSID * clsMajorType;
184 const CLSID * clsMinorType;
185 } REGPINTYPES;
186
187 typedef struct
188 {
189 LPWSTR strName;
190 BOOL bRendered;
191 BOOL bOutput;
192 BOOL bZero;
193 BOOL bMany;
194 const CLSID * clsConnectsToFilter;
195 const WCHAR * strConnectsToPin;
196 UINT nMediaTypes;
197 const REGPINTYPES * lpMediaType;
198 } REGFILTERPINS;
199
200 typedef struct
201 {
202 CLSID clsMedium;
203 DWORD dw1;
204 DWORD dw2;
205 } REGPINMEDIUM;
206
207 enum
208 {
209 REG_PINFLAG_B_ZERO = 0x1,
210 REG_PINFLAG_B_RENDERER = 0x2,
211 REG_PINFLAG_B_MANY = 0x4,
212 REG_PINFLAG_B_OUTPUT = 0x8
213 };
214
215
216 typedef struct
217 {
218 DWORD dwFlags;
219 UINT cInstances;
220 UINT nMediaTypes;
221 [size_is(nMediaTypes)] const REGPINTYPES * lpMediaType;
222 UINT nMediums;
223 [size_is(nMediums)] const REGPINMEDIUM *lpMedium;
224 const CLSID *clsPinCategory;
225 } REGFILTERPINS2;
226
227 typedef struct
228 {
229 DWORD dwVersion;
230 DWORD dwMerit;
231 [switch_is(dwVersion)] [switch_type(DWORD)] union
232 {
233 [case(1)]
234 struct
235 {
236 ULONG cPins;
237 [size_is(cPins)] const REGFILTERPINS *rgPins;
238 } DUMMYSTRUCTNAME;
239
240 [case(2)]
241 struct
242 {
243 ULONG cPins2;
244 [size_is(cPins2)] const REGFILTERPINS2 *rgPins2;
245 } DUMMYSTRUCTNAME1;
246
247 [default]
248 ;
249 } DUMMYUNIONNAME;
250
251 } REGFILTER2;
252
253
254 [
255 object,
256 uuid(b79bb0b0-33c1-11d1-abe1-00a0c905f375),
257 pointer_default(unique)
258 ]
259 interface IFilterMapper2 : IUnknown
260 {
261 HRESULT CreateCategory
262 ( [in] REFCLSID clsidCategory,
263 [in] DWORD dwCategoryMerit,
264 [in] LPCWSTR Description
265 );
266
267 HRESULT UnregisterFilter
268 ( [in] const CLSID *pclsidCategory,
269 [in] LPCOLESTR szInstance,
270 [in] REFCLSID Filter
271 );
272
273 HRESULT RegisterFilter
274 ( [in] REFCLSID clsidFilter,
275 [in] LPCWSTR Name,
276 [in, out] IMoniker **ppMoniker,
277 [in] const CLSID *pclsidCategory,
278 [in] LPCOLESTR szInstance,
279 [in] const REGFILTER2 *prf2
280 );
281
282 HRESULT EnumMatchingFilters
283 ( [out] IEnumMoniker **ppEnum,
284 [in] DWORD dwFlags,
285 [in] BOOL bExactMatch,
286 [in] DWORD dwMerit,
287 [in] BOOL bInputNeeded,
288 [in] DWORD cInputTypes,
289 [size_is(cInputTypes*2)] const GUID *pInputTypes,
290 [in] const REGPINMEDIUM *pMedIn,
291 [in] const CLSID *pPinCategoryIn,
292 [in] BOOL bRender,
293 [in] BOOL bOutputNeeded,
294 [in] DWORD cOutputTypes,
295 [size_is(cOutputTypes*2)] const GUID *pOutputTypes,
296 [in] const REGPINMEDIUM *pMedOut,
297 [in] const CLSID *pPinCategoryOut
298 );
299 }
300
301 [
302 object,
303 uuid(b79bb0b1-33c1-11d1-abe1-00a0c905f375),
304 pointer_default(unique)
305 ]
306 interface IFilterMapper3 : IFilterMapper2
307 {
308 HRESULT GetICreateDevEnum( [out] ICreateDevEnum **ppEnum );
309 }
310
311 typedef enum tagQualityMessageType
312 {
313 Famine,
314 Flood
315 } QualityMessageType;
316
317 typedef struct tagQuality
318 {
319 QualityMessageType Type;
320 LONG Proportion;
321 REFERENCE_TIME Late;
322 REFERENCE_TIME TimeStamp;
323 } Quality;
324
325 typedef IQualityControl *PQUALITYCONTROL;
326
327 [
328 object,
329 uuid(56a868a5-0ad4-11ce-b03a-0020af0ba770),
330 pointer_default(unique)
331 ]
332 interface IQualityControl : IUnknown
333 {
334 HRESULT Notify
335 ( [in] IBaseFilter * pSelf,
336 [in] Quality q
337 );
338
339 HRESULT SetSink
340 ( [in] IQualityControl * piqc
341 );
342 }
343
344 enum
345 {
346 CK_NOCOLORKEY = 0x0,
347 CK_INDEX = 0x1,
348 CK_RGB = 0x2
349 };
350
351 typedef struct tagCOLORKEY
352 {
353 DWORD KeyType;
354 DWORD PaletteIndex;
355 COLORREF LowColorValue;
356 COLORREF HighColorValue;
357 } COLORKEY;
358
359 enum
360 {
361 ADVISE_NONE = 0x0,
362 ADVISE_CLIPPING = 0x1,
363 ADVISE_PALETTE = 0x2,
364 ADVISE_COLORKEY = 0x4,
365 ADVISE_POSITION = 0x8,
366 ADVISE_DISPLAY_CHANGE = 0x10
367 };
368
369 const DWORD ADVISE_ALL = ADVISE_CLIPPING |
370 ADVISE_PALETTE |
371 ADVISE_COLORKEY |
372 ADVISE_POSITION;
373
374 const DWORD ADVISE_ALL2 = ADVISE_ALL |
375 ADVISE_DISPLAY_CHANGE;
376
377 cpp_quote("#ifndef _WINGDI_")
378
379 /* already defined in wingdi.h, but needed for WIDL */
380
381 typedef struct _RGNDATAHEADER
382 {
383 DWORD dwSize;
384 DWORD iType;
385 DWORD nCount;
386 DWORD nRgnSize;
387 RECT rcBound;
388 } RGNDATAHEADER;
389
390 typedef struct _RGNDATA
391 {
392 RGNDATAHEADER rdh;
393 char Buffer[1];
394 } RGNDATA;
395
396 cpp_quote("#endif /* _WINGDI_ */")
397
398 [
399 object,
400 local,
401 uuid(56a868a0-0ad4-11ce-b03a-0020af0ba770),
402 pointer_default(unique)
403 ]
404 interface IOverlayNotify : IUnknown
405 {
406 HRESULT OnPaletteChange(
407 [in] DWORD dwColors,
408 [in] const PALETTEENTRY *pPalette);
409
410 HRESULT OnClipChange(
411 [in] const RECT *pSourceRect,
412 [in] const RECT *pDestinationRect,
413 [in] const RGNDATA *pRgnData);
414
415 HRESULT OnColorKeyChange([in] const COLORKEY *pColorKey);
416
417 HRESULT OnPositionChange([in] const RECT *pSourceRect,
418 [in] const RECT *pDestinationRect);
419 }
420
421 typedef IOverlayNotify *POVERLAYNOTIFY;
422
423 cpp_quote("#if 0")
424 typedef HANDLE HMONITOR;
425 cpp_quote("#endif /* 0 */")
426
427 [
428 object,
429 local,
430 uuid(680EFA10-D535-11D1-87C8-00A0C9223196),
431 pointer_default(unique)
432 ]
433 interface IOverlayNotify2 : IOverlayNotify
434 {
435 HRESULT OnDisplayChange(
436 HMONITOR hMonitor);
437 }
438
439 typedef IOverlayNotify2 *POVERLAYNOTIFY2;
440
441 [
442 object,
443 local,
444 uuid(56a868a1-0ad4-11ce-b03a-0020af0ba770),
445 pointer_default(unique)
446 ]
447 interface IOverlay : IUnknown
448 {
449 HRESULT GetPalette(
450 [out] DWORD *pdwColors,
451 [out] PALETTEENTRY **ppPalette);
452
453 HRESULT SetPalette(
454 [in] DWORD dwColors,
455 [in] PALETTEENTRY *pPalette);
456
457 HRESULT GetDefaultColorKey([out] COLORKEY *pColorKey);
458
459 HRESULT GetColorKey([out] COLORKEY *pColorKey);
460
461 HRESULT SetColorKey([in,out] COLORKEY *pColorKey);
462
463 HRESULT GetWindowHandle([out] HWND *pHwnd);
464
465 HRESULT GetClipList([out] RECT *pSourceRect,
466 [out] RECT *pDestinationRect,
467 [out] RGNDATA **ppRgnData);
468
469 HRESULT GetVideoPosition([out] RECT *pSourceRect,
470 [out] RECT *pDestinationRect);
471
472 HRESULT Advise(
473 [in] IOverlayNotify *pOverlayNotify,
474 [in] DWORD dwInterests);
475
476 HRESULT Unadvise();
477 }
478
479 typedef IOverlay *POVERLAY;
480
481 [
482 object,
483 uuid(56a868a2-0ad4-11ce-b03a-0020af0ba770),
484 pointer_default(unique)
485 ]
486 interface IMediaEventSink : IUnknown
487 {
488 HRESULT Notify(
489 [in] LONG EventCode,
490 [in] LONG_PTR EventParam1,
491 [in] LONG_PTR EventParam2
492 );
493 }
494
495 typedef IMediaEventSink *PMEDIAEVENTSINK;
496
497 [
498 object,
499 uuid(56a868a6-0ad4-11ce-b03a-0020af0ba770),
500 pointer_default(unique)
501 ]
502 interface IFileSourceFilter : IUnknown
503 {
504 HRESULT Load(
505 [in] LPCOLESTR pszFileName,
506 [in, unique] const AM_MEDIA_TYPE *pmt
507 );
508
509 HRESULT GetCurFile(
510 [out] LPOLESTR *ppszFileName,
511 [out] AM_MEDIA_TYPE *pmt
512 );
513 }
514
515 typedef IFileSourceFilter *PFILTERFILESOURCE;
516
517 [
518 object,
519 uuid(a2104830-7c70-11cf-8bce-00aa00a3f1a6),
520 pointer_default(unique)
521 ]
522 interface IFileSinkFilter : IUnknown
523 {
524 HRESULT SetFileName(
525 [in] LPCOLESTR pszFileName,
526 [in, unique] const AM_MEDIA_TYPE *pmt
527 );
528
529 HRESULT GetCurFile(
530 [out] LPOLESTR *ppszFileName,
531 [out] AM_MEDIA_TYPE *pmt
532 );
533 }
534
535 typedef IFileSinkFilter *PFILTERFILESINK;
536
537 [
538 object,
539 uuid(00855B90-CE1B-11d0-BD4F-00A0C911CE86),
540 pointer_default(unique)
541 ]
542 interface IFileSinkFilter2 : IFileSinkFilter
543 {
544 HRESULT SetMode(
545 [in] DWORD dwFlags
546 );
547
548 HRESULT GetMode(
549 [out] DWORD *pdwFlags
550 );
551 }
552
553 typedef IFileSinkFilter2 *PFILESINKFILTER2;
554
555 [
556 object,
557 uuid(f90a6130-b658-11d2-ae49-0000f8754b99),
558 pointer_default(unique)
559 ]
560 interface IAMDeviceRemoval : IUnknown
561 {
562 HRESULT DeviceInfo(
563 [out] CLSID *pclsidInterfaceClass,
564 [out] LPWSTR *pwszSymbolicLink);
565 HRESULT Reassociate();
566 HRESULT Disassociate();
567 }
568
569
570 typedef enum
571 {
572 AM_FILE_OVERWRITE = 0x00000001,
573 } AM_FILESINK_FLAGS;
574
575 [
576 object,
577 uuid(56a868a9-0ad4-11ce-b03a-0020af0ba770),
578 pointer_default(unique)
579 ]
580 interface IGraphBuilder : IFilterGraph
581 {
582 HRESULT Connect
583 ( [in] IPin * ppinOut,
584 [in] IPin * ppinIn
585 );
586
587 HRESULT Render
588 ( [in] IPin * ppinOut
589 );
590
591 HRESULT RenderFile
592 ( [in] LPCWSTR lpcwstrFile,
593 [in, unique] LPCWSTR lpcwstrPlayList
594 );
595
596 HRESULT AddSourceFilter
597 ( [in] LPCWSTR lpcwstrFileName,
598 [in, unique] LPCWSTR lpcwstrFilterName,
599 [out] IBaseFilter* *ppFilter
600 );
601
602 HRESULT SetLogFile
603 ( [in] DWORD_PTR hFile
604 );
605
606 HRESULT Abort();
607
608 HRESULT ShouldOperationContinue();
609 }
610
611
612 [
613 object,
614 uuid(bf87b6e0-8c27-11d0-b3f0-00aa003761c5),
615 pointer_default(unique)
616 ]
617 interface ICaptureGraphBuilder : IUnknown {
618
619 HRESULT SetFiltergraph(
620 [in] IGraphBuilder *pfg);
621
622 HRESULT GetFiltergraph(
623 [out] IGraphBuilder **ppfg);
624
625 HRESULT SetOutputFileName(
626 [in] const GUID *pType,
627 [in] LPCOLESTR lpstrFile,
628 [out] IBaseFilter **ppf,
629 [out] IFileSinkFilter **ppSink);
630
631 [local] HRESULT FindInterface(
632 [in, unique] const GUID *pCategory,
633 [in] IBaseFilter *pf,
634 [in] REFIID riid,
635 [out] void **ppint);
636
637 [call_as(FindInterface)] HRESULT RemoteFindInterface(
638 [in, unique] const GUID *pCategory,
639 [in] IBaseFilter *pf,
640 [in] REFIID riid,
641 [out] IUnknown **ppint);
642
643 HRESULT RenderStream(
644 [in] const GUID *pCategory,
645 [in] IUnknown *pSource,
646 [in] IBaseFilter *pfCompressor,
647 [in] IBaseFilter *pfRenderer);
648
649 HRESULT ControlStream(
650 [in] const GUID *pCategory,
651 [in] IBaseFilter *pFilter,
652 [in] REFERENCE_TIME *pstart,
653 [in] REFERENCE_TIME *pstop,
654 [in] WORD wStartCookie,
655 [in] WORD wStopCookie);
656
657 HRESULT AllocCapFile(
658 [in] LPCOLESTR lpstr,
659 [in] DWORDLONG dwlSize);
660
661 HRESULT CopyCaptureFile(
662 [in] LPOLESTR lpwstrOld,
663 [in] LPOLESTR lpwstrNew,
664 [in] int fAllowEscAbort,
665 [in] IAMCopyCaptureFileProgress *pCallback);
666 }
667
668 [
669 object,
670 uuid(670d1d20-a068-11d0-b3f0-00aa003761c5),
671 pointer_default(unique)
672 ]
673 interface IAMCopyCaptureFileProgress : IUnknown
674 {
675 HRESULT Progress(
676 [in] int iProgress);
677 }
678
679 [
680 object,
681 uuid(93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D),
682 pointer_default(unique)
683 ]
684 interface ICaptureGraphBuilder2 : IUnknown
685 {
686 HRESULT SetFiltergraph(
687 [in] IGraphBuilder *pfg);
688
689 HRESULT GetFiltergraph(
690 [out] IGraphBuilder **ppfg);
691
692 HRESULT SetOutputFileName(
693 [in] const GUID *pType,
694 [in] LPCOLESTR lpstrFile,
695 [out] IBaseFilter **ppf,
696 [out] IFileSinkFilter **ppSink);
697
698 [local] HRESULT FindInterface(
699 [in] const GUID *pCategory,
700 [in] const GUID *pType,
701 [in] IBaseFilter *pf,
702 [in] REFIID riid,
703 [out] void **ppint);
704
705 [call_as(FindInterface)] HRESULT RemoteFindInterface(
706 [in] const GUID *pCategory,
707 [in] const GUID *pType,
708 [in] IBaseFilter *pf,
709 [in] REFIID riid,
710 [out] IUnknown **ppint);
711
712 HRESULT RenderStream(
713 [in] const GUID *pCategory,
714 [in] const GUID *pType,
715 [in] IUnknown *pSource,
716 [in] IBaseFilter *pfCompressor,
717 [in] IBaseFilter *pfRenderer);
718
719 HRESULT ControlStream(
720 [in] const GUID *pCategory,
721 [in] const GUID *pType,
722 [in] IBaseFilter *pFilter,
723 [in] REFERENCE_TIME *pstart,
724 [in] REFERENCE_TIME *pstop,
725 [in] WORD wStartCookie,
726 [in] WORD wStopCookie);
727
728 HRESULT AllocCapFile(
729 [in] LPCOLESTR lpstr,
730 [in] DWORDLONG dwlSize);
731
732 HRESULT CopyCaptureFile(
733 [in] LPOLESTR lpwstrOld,
734 [in] LPOLESTR lpwstrNew,
735 [in] int fAllowEscAbort,
736 [in] IAMCopyCaptureFileProgress *pCallback);
737
738 HRESULT FindPin(
739 [in] IUnknown *pSource,
740 [in] PIN_DIRECTION pindir,
741 [in] const GUID *pCategory,
742 [in] const GUID *pType,
743 [in] BOOL fUnconnected,
744 [in] int num,
745 [out] IPin **ppPin);
746 }
747
748 enum _AM_RENSDEREXFLAGS
749 {
750 AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x01
751 };
752
753 [
754 object,
755 uuid(36b73882-c2c8-11cf-8b46-00805f6cef60),
756 pointer_default(unique)
757 ]
758 interface IFilterGraph2: IGraphBuilder
759 {
760 HRESULT AddSourceFilterForMoniker(
761 [in] IMoniker *pMoniker,
762 [in] IBindCtx *pCtx,
763 [in, unique] LPCWSTR lpcwstrFilterName,
764 [out] IBaseFilter **ppFilter
765 );
766
767 HRESULT ReconnectEx
768 ( [in] IPin * ppin,
769 [in, unique] const AM_MEDIA_TYPE *pmt
770 );
771
772 HRESULT RenderEx( [in] IPin *pPinOut,
773 [in] DWORD dwFlags,
774 [in, out] DWORD *pvContext
775 );
776 }
777
778 [
779 object,
780 local,
781 uuid(56a868bf-0ad4-11ce-b03a-0020af0ba770),
782 pointer_default(unique)
783 ]
784 interface IStreamBuilder : IUnknown
785 {
786 HRESULT Render
787 ( [in] IPin * ppinOut,
788 [in] IGraphBuilder * pGraph
789 );
790
791 HRESULT Backout
792 ( [in] IPin * ppinOut,
793 [in] IGraphBuilder * pGraph
794 );
795 }
796
797 [
798 object,
799 uuid(56a868af-0ad4-11ce-b03a-0020af0ba770),
800 pointer_default(unique)
801 ]
802 interface IDistributorNotify : IUnknown
803 {
804 HRESULT Stop(void);
805 HRESULT Pause(void);
806 HRESULT Run(REFERENCE_TIME tStart);
807 HRESULT SetSyncSource([in] IReferenceClock * pClock);
808 HRESULT NotifyGraphChange(void);
809 }
810
811 typedef enum
812 {
813 AM_STREAM_INFO_START_DEFINED = 0x01,
814 AM_STREAM_INFO_STOP_DEFINED = 0x02,
815 AM_STREAM_INFO_DISCARDING = 0x04,
816 AM_STREAM_INFO_STOP_SEND_EXTRA = 0x10
817 } AM_STREAM_INFO_FLAGS;
818
819 typedef struct
820 {
821 REFERENCE_TIME tStart;
822 REFERENCE_TIME tStop;
823 DWORD dwStartCookie;
824 DWORD dwStopCookie;
825 DWORD dwFlags;
826 }AM_STREAM_INFO;
827
828
829 /*****************************************************************************
830 * IAMStreamConfig interface
831 */
832 [
833 object,
834 uuid(c6e13340-30ac-11d0-a18c-00a0c9118956),
835 pointer_default(unique)
836 ]
837 interface IAMStreamConfig : IUnknown
838 {
839 HRESULT SetFormat( [in] AM_MEDIA_TYPE *pmt);
840 HRESULT GetFormat( [in] AM_MEDIA_TYPE **pmt);
841 HRESULT GetNumberOfCapabilities( [out] int *piCount, [out] int *piSize);
842 HRESULT GetStreamCaps( [in] int iIndex, [out] AM_MEDIA_TYPE **pmt,
843 [out] BYTE *pSCC);
844 }
845
846
847 typedef enum tagVideoProcAmpProperty
848 {
849 VideoProcAmp_Brightness,
850 VideoProcAmp_Contrast,
851 VideoProcAmp_Hue,
852 VideoProcAmp_Saturation,
853 VideoProcAmp_Sharpness,
854 VideoProcAmp_Gamma,
855 VideoProcAmp_ColorEnable,
856 VideoProcAmp_WhiteBalance,
857 VideoProcAmp_BacklightCompensation,
858 VideoProcAmp_Gain
859 } VideoProcAmpProperty;
860
861 typedef enum tagVideoProcAmpFlags
862 {
863 VideoProcAmp_Flags_Auto = 0x0001,
864 VideoProcAmp_Flags_Manual = 0x0002,
865 } VideoProcAmpFlags;
866
867 /*****************************************************************************
868 * IAMVideoProcAmp interface
869 */
870 [
871 object,
872 uuid(c6e13360-30ac-11d0-a18c-00a0c9118956),
873 pointer_default(unique)
874 ]
875 interface IAMVideoProcAmp : IUnknown
876 {
877 HRESULT GetRange( [in] LONG Property, [out] LONG *pMin, [out] LONG *pMax,
878 [out] LONG *pSteppingDelta, [out] LONG *pDefault,
879 [out] LONG *pCapsFlags);
880 HRESULT Set( [in] LONG Property, [in] LONG lValue, [in] LONG Flags);
881 HRESULT Get( [in] LONG Property, [out] LONG *lValue, [out] LONG *Flags);
882 }
883
884
885 [
886 object,
887 uuid(56a868aa-0ad4-11ce-b03a-0020af0ba770),
888 pointer_default(unique)
889 ]
890 interface IAsyncReader : IUnknown
891 {
892 HRESULT RequestAllocator(
893 [in] IMemAllocator* pPreferred,
894 [in] ALLOCATOR_PROPERTIES* pProps,
895 [out] IMemAllocator ** ppActual);
896
897 HRESULT Request(
898 [in] IMediaSample* pSample,
899 [in] DWORD_PTR dwUser);
900
901 HRESULT WaitForNext(
902 [in] DWORD dwTimeout,
903 [out] IMediaSample** ppSample,
904 [out] DWORD_PTR * pdwUser);
905
906 HRESULT SyncReadAligned(
907 [in] IMediaSample* pSample);
908
909 HRESULT SyncRead(
910 [in] LONGLONG llPosition,
911 [in] LONG lLength,
912 [out, size_is(lLength)]
913 BYTE* pBuffer);
914
915 HRESULT Length(
916 [out] LONGLONG* pTotal,
917 [out] LONGLONG* pAvailable);
918
919 HRESULT BeginFlush(void);
920
921 HRESULT EndFlush(void);
922 }
923
924
925 [
926 object,
927 uuid(56a868ab-0ad4-11ce-b03a-0020af0ba770),
928 pointer_default(unique)
929 ]
930 interface IGraphVersion : IUnknown
931 {
932 HRESULT QueryVersion(LONG* pVersion);
933 }
934
935 [
936 object,
937 uuid(56a868ad-0ad4-11ce-b03a-0020af0ba770),
938 pointer_default(unique)
939 ]
940 interface IResourceConsumer : IUnknown
941 {
942 HRESULT AcquireResource(
943 [in] LONG idResource);
944
945 HRESULT ReleaseResource(
946 [in] LONG idResource);
947 }
948
949
950 [
951 object,
952 uuid(56a868ac-0ad4-11ce-b03a-0020af0ba770),
953 pointer_default(unique)
954 ]
955 interface IResourceManager : IUnknown
956 {
957 HRESULT Register(
958 [in] LPCWSTR pName,
959 [in] LONG cResource,
960 [out] LONG* plToken
961 );
962
963 HRESULT RegisterGroup(
964 [in] LPCWSTR pName,
965 [in] LONG cResource,
966 [in, size_is(cResource)]
967 LONG* palTokens,
968 [out] LONG* plToken
969 );
970
971 HRESULT RequestResource(
972 [in] LONG idResource,
973 [in] IUnknown* pFocusObject,
974 [in] IResourceConsumer* pConsumer
975 );
976
977 HRESULT NotifyAcquire(
978 [in] LONG idResource,
979 [in] IResourceConsumer* pConsumer,
980 [in] HRESULT hr);
981
982 HRESULT NotifyRelease(
983 [in] LONG idResource,
984 [in] IResourceConsumer* pConsumer,
985 [in] BOOL bStillWant);
986
987 HRESULT CancelRequest(
988 [in] LONG idResource,
989 [in] IResourceConsumer* pConsumer);
990
991 HRESULT SetFocus(
992 [in] IUnknown* pFocusObject);
993
994 HRESULT ReleaseFocus(
995 [in] IUnknown* pFocusObject);
996
997 }
998
999 cpp_quote("#ifndef _IKsPropertySet_")
1000 cpp_quote("#define _IKsPropertySet_")
1001 cpp_quote("#define KSPROPERTY_SUPPORT_GET 1")
1002 cpp_quote("#define KSPROPERTY_SUPPORT_SET 2")
1003
1004 [
1005 object,
1006 uuid(31efac30-515c-11d0-a9aa-00aa0061be93),
1007 pointer_default(unique),
1008 local
1009 ]
1010 interface IKsPropertySet : IUnknown
1011 {
1012 HRESULT Set( [in] REFGUID guidPropSet,
1013 [in] DWORD dwPropID,
1014 [in, size_is(cbInstanceData)] LPVOID pInstanceData,
1015 [in] DWORD cbInstanceData,
1016 [in, size_is(cbPropData)] LPVOID pPropData,
1017 [in] DWORD cbPropData );
1018
1019 HRESULT Get( [in] REFGUID guidPropSet,
1020 [in] DWORD dwPropID,
1021 [in, size_is(cbInstanceData)] LPVOID pInstanceData,
1022 [in] DWORD cbInstanceData,
1023 [out, size_is(cbPropData)] LPVOID pPropData,
1024 [in] DWORD cbPropData,
1025 [out] DWORD *pcbReturned );
1026
1027 HRESULT QuerySupported( [in] REFGUID guidPropSet,
1028 [in] DWORD dwPropID,
1029 [out] DWORD *pTypeSupport);
1030 }
1031 cpp_quote("#endif /* _IKsPropertySet_ */")
1032
1033 [
1034 object,
1035 uuid(36b73883-c2c8-11cf-8b46-00805f6cef60),
1036 pointer_default(unique)
1037 ]
1038 interface ISeekingPassThru : IUnknown
1039 {
1040 HRESULT Init( [in] BOOL bSupportRendering, [in] IPin *pPin);
1041 }
1042
1043 [
1044 local,
1045 object,
1046 uuid(4d5466b0-a49c-11d1-abe8-00a0c905f375),
1047 pointer_default(unique)
1048
1049 ]
1050 interface IAMClockAdjust : IUnknown
1051 {
1052 HRESULT SetClockDelta([in] REFERENCE_TIME rtDelta);
1053 };
1054
1055
1056 enum _AM_FILTER_MISC_FLAGS
1057 {
1058 AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x1,
1059 AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x2
1060 };
1061
1062 [
1063 local,
1064 object,
1065 uuid(2dd74950-a890-11d1-abe8-00a0c905f375),
1066 pointer_default(unique)
1067 ]
1068 interface IAMFilterMiscFlags : IUnknown
1069 {
1070 ULONG GetMiscFlags();
1071 };
1072
1073 [
1074 local,
1075 object,
1076 uuid(56ED71A0-AF5F-11D0-B3F0-00AA003761C5),
1077 pointer_default(unique)
1078 ]
1079 interface IAMBufferNegotiation : IUnknown
1080 {
1081 HRESULT SuggestAllocatorProperties (
1082 [in] const ALLOCATOR_PROPERTIES *pprop);
1083
1084 HRESULT GetAllocatorProperties (
1085 [out] ALLOCATOR_PROPERTIES *pprop);
1086
1087 }
1088
1089 #include <axextendenums.h>
1090
1091 [
1092 object,
1093 uuid(36b73881-c2c8-11cf-8b46-00805f6cef60),
1094 pointer_default(unique)
1095 ]
1096 interface IAMStreamControl : IUnknown
1097 {
1098 HRESULT StartAt( [in] REFERENCE_TIME * ptStart,
1099 [in] DWORD dwCookie );
1100 HRESULT StopAt( [in] REFERENCE_TIME * ptStop,
1101 [in] BOOL bSendExtra,
1102 [in] DWORD dwCookie );
1103 HRESULT GetInfo( [out] AM_STREAM_INFO *pInfo);
1104 }
1105
1106 typedef enum tagTVAudioMode
1107 {
1108 AMTVAUDIO_MODE_MONO = 0x0001,
1109 AMTVAUDIO_MODE_STEREO = 0x0002,
1110 AMTVAUDIO_MODE_LANG_A = 0x0010,
1111 AMTVAUDIO_MODE_LANG_B = 0x0020,
1112 AMTVAUDIO_MODE_LANG_C = 0x0040,
1113 AMTVAUDIO_PRESET_STEREO = 0x0200,
1114 AMTVAUDIO_PRESET_LANG_A = 0x1000,
1115 AMTVAUDIO_PRESET_LANG_B = 0x2000,
1116 AMTVAUDIO_PRESET_LANG_C = 0x4000,
1117 }TVAudioMode;