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