winepulse: Move session_wrapper_create into mmdevapi.
[wine.git] / include / axextend.idl
blob155dea5dd8a40930aaa85ce56861488903495162
1 /*
2 * Copyright (C) 2002 Robert Shearman
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.
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.
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
19 #if 0
20 #pragma makedep install
21 #endif
23 #include <axextendenums.h>
25 interface IAMAnalogVideoDecoder;
26 interface IAMAnalogVideoEncoder;
27 interface IAMAudioInputMixer;
28 interface IAMAudioRendererStats;
29 interface IAMBufferNegotiation;
30 interface IAMCameraControl;
31 interface IAMCertifiedOutputProtection;
32 interface IAMClockSlave;
33 interface IAMCopyCaptureFileProgress;
34 interface IAMCrossbar;
35 interface IAMDevMemoryAllocator;
36 interface IAMDevMemoryControl;
37 interface IAMDroppedFrames;
38 interface IAMExtDevice;
39 interface IAMExtTransport;
40 interface IAMGraphStreams;
41 interface IAMLatency;
42 interface IAMOpenProgress;
43 interface IAMOverlayFX;
44 interface IAMPhysicalPinInfo;
45 interface IAMPushSource;
46 interface IAMStreamConfig;
47 interface IAMTimecodeDisplay;
48 interface IAMTimecodeGenerator;
49 interface IAMTimecodeReader;
50 interface IAMTVTuner;
51 interface IAMVfwCaptureDialogs;
52 interface IAMVfwCompressDialogs;
53 interface IAMVideoCompression;
54 interface IAMVideoDecimationProperties;
55 interface IAMVideoProcAmp;
56 interface IAMGraphBuilderCallback;
57 interface ICaptureGraphBuilder;
58 interface ICaptureGraphBuilder2;
59 interface IConfigAviMux;
60 interface IConfigInterleaving;
61 interface IDecimateVideoImage;
62 interface IDrawVideoImage;
63 interface IEnumRegFilters;
64 interface IEnumStreamIdMap;
65 interface IFileSourceFilter;
66 interface IFileSinkFilter;
67 interface IFileSinkFilter2;
68 interface IFilterMapper;
69 interface IFilterMapper2;
70 interface IGraphBuilder;
71 interface IKsPropertySet;
72 interface IMediaEventSink;
73 interface IMpeg2Demultiplexer;
74 interface IMPEG2StreamIdMap;
75 interface IOverlay;
76 interface IOverlayNotify;
77 interface IOverlayNotify2;
78 interface IQualityControl;
79 interface ISeekingPassThru;
81 typedef struct
83 CLSID Clsid;
84 LPWSTR Name;
85 } REGFILTER;
88 object,
89 uuid(56a868a4-0ad4-11ce-b03a-0020af0ba770),
90 pointer_default(unique)
92 interface IEnumRegFilters : IUnknown
94 HRESULT Next
95 ( [in] ULONG cFilters,
96 [out] REGFILTER ** apRegFilter,
97 [out] ULONG * pcFetched
100 HRESULT Skip(
101 [in] ULONG cFilters
104 HRESULT Reset(void);
106 HRESULT Clone(
107 [out] IEnumRegFilters **ppEnum
112 typedef IEnumRegFilters *PENUMREGFILTERS;
115 object,
116 uuid(56a868a3-0ad4-11ce-b03a-0020af0ba770),
117 pointer_default(unique)
119 interface IFilterMapper : IUnknown
121 enum { MERIT_PREFERRED = 0x800000,
122 MERIT_NORMAL = 0x600000,
123 MERIT_UNLIKELY = 0x400000,
124 MERIT_DO_NOT_USE = 0x200000,
125 MERIT_SW_COMPRESSOR = 0x100000,
126 MERIT_HW_COMPRESSOR = 0x100050
129 HRESULT RegisterFilter
130 ( [in] CLSID clsid,
131 [in] LPCWSTR Name,
132 [in] DWORD dwMerit
135 HRESULT RegisterFilterInstance
136 ( [in] CLSID clsid,
137 [in] LPCWSTR Name,
138 [out] CLSID *MRId
142 HRESULT RegisterPin
143 ( [in] CLSID Filter,
144 [in] LPCWSTR Name,
145 [in] BOOL bRendered,
146 [in] BOOL bOutput,
147 [in] BOOL bZero,
148 [in] BOOL bMany,
149 [in] CLSID ConnectsToFilter,
150 [in] LPCWSTR ConnectsToPin
153 HRESULT RegisterPinType
154 ( [in] CLSID clsFilter,
155 [in] LPCWSTR strName,
156 [in] CLSID clsMajorType,
157 [in] CLSID clsSubType
161 HRESULT UnregisterFilter
162 ( [in] CLSID Filter
166 HRESULT UnregisterFilterInstance
167 ( [in] CLSID MRId
171 HRESULT UnregisterPin
172 ( [in] CLSID Filter,
173 [in] LPCWSTR Name
176 HRESULT EnumMatchingFilters
177 ( [out] IEnumRegFilters **ppEnum,
178 [in] DWORD dwMerit,
179 [in] BOOL bInputNeeded,
180 [in] CLSID clsInMaj,
181 [in] CLSID clsInSub,
182 [in] BOOL bRender,
183 [in] BOOL bOutputNeeded,
184 [in] CLSID clsOutMaj,
185 [in] CLSID clsOutSub
190 typedef struct
192 const CLSID * clsMajorType;
193 const CLSID * clsMinorType;
194 } REGPINTYPES;
196 typedef struct
198 LPWSTR strName;
199 BOOL bRendered;
200 BOOL bOutput;
201 BOOL bZero;
202 BOOL bMany;
203 const CLSID * clsConnectsToFilter;
204 const WCHAR * strConnectsToPin;
205 UINT nMediaTypes;
206 const REGPINTYPES * lpMediaType;
207 } REGFILTERPINS;
209 typedef struct
211 CLSID clsMedium;
212 DWORD dw1;
213 DWORD dw2;
214 } REGPINMEDIUM;
216 enum
218 REG_PINFLAG_B_ZERO = 0x1,
219 REG_PINFLAG_B_RENDERER = 0x2,
220 REG_PINFLAG_B_MANY = 0x4,
221 REG_PINFLAG_B_OUTPUT = 0x8
225 typedef struct
227 DWORD dwFlags;
228 UINT cInstances;
229 UINT nMediaTypes;
230 [size_is(nMediaTypes)] const REGPINTYPES * lpMediaType;
231 UINT nMediums;
232 [size_is(nMediums)] const REGPINMEDIUM *lpMedium;
233 const CLSID *clsPinCategory;
234 } REGFILTERPINS2;
236 typedef struct
238 DWORD dwVersion;
239 DWORD dwMerit;
240 [switch_is(dwVersion)] [switch_type(DWORD)] union
242 [case(1)]
243 struct
245 ULONG cPins;
246 [size_is(cPins)] const REGFILTERPINS *rgPins;
249 [case(2)]
250 struct
252 ULONG cPins2;
253 [size_is(cPins2)] const REGFILTERPINS2 *rgPins2;
256 [default]
260 } REGFILTER2;
264 object,
265 uuid(b79bb0b0-33c1-11d1-abe1-00a0c905f375),
266 pointer_default(unique)
268 interface IFilterMapper2 : IUnknown
270 HRESULT CreateCategory
271 ( [in] REFCLSID clsidCategory,
272 [in] DWORD dwCategoryMerit,
273 [in] LPCWSTR Description
276 HRESULT UnregisterFilter
277 ( [in] const CLSID *pclsidCategory,
278 [in] LPCOLESTR szInstance,
279 [in] REFCLSID Filter
282 HRESULT RegisterFilter
283 ( [in] REFCLSID clsidFilter,
284 [in] LPCWSTR Name,
285 [in, out] IMoniker **ppMoniker,
286 [in] const CLSID *pclsidCategory,
287 [in] LPCOLESTR szInstance,
288 [in] const REGFILTER2 *prf2
291 HRESULT EnumMatchingFilters
292 ( [out] IEnumMoniker **ppEnum,
293 [in] DWORD dwFlags,
294 [in] BOOL bExactMatch,
295 [in] DWORD dwMerit,
296 [in] BOOL bInputNeeded,
297 [in] DWORD cInputTypes,
298 [size_is(cInputTypes*2)] const GUID *pInputTypes,
299 [in] const REGPINMEDIUM *pMedIn,
300 [in] const CLSID *pPinCategoryIn,
301 [in] BOOL bRender,
302 [in] BOOL bOutputNeeded,
303 [in] DWORD cOutputTypes,
304 [size_is(cOutputTypes*2)] const GUID *pOutputTypes,
305 [in] const REGPINMEDIUM *pMedOut,
306 [in] const CLSID *pPinCategoryOut
311 object,
312 uuid(b79bb0b1-33c1-11d1-abe1-00a0c905f375),
313 pointer_default(unique)
315 interface IFilterMapper3 : IFilterMapper2
317 HRESULT GetICreateDevEnum( [out] ICreateDevEnum **ppEnum );
320 typedef enum tagQualityMessageType
322 Famine,
323 Flood
324 } QualityMessageType;
326 typedef struct tagQuality
328 QualityMessageType Type;
329 LONG Proportion;
330 REFERENCE_TIME Late;
331 REFERENCE_TIME TimeStamp;
332 } Quality;
334 typedef IQualityControl *PQUALITYCONTROL;
337 object,
338 uuid(56a868a5-0ad4-11ce-b03a-0020af0ba770),
339 pointer_default(unique)
341 interface IQualityControl : IUnknown
343 HRESULT Notify
344 ( [in] IBaseFilter * pSelf,
345 [in] Quality q
348 HRESULT SetSink
349 ( [in] IQualityControl * piqc
353 enum
355 CK_NOCOLORKEY = 0x0,
356 CK_INDEX = 0x1,
357 CK_RGB = 0x2
360 typedef struct tagCOLORKEY
362 DWORD KeyType;
363 DWORD PaletteIndex;
364 COLORREF LowColorValue;
365 COLORREF HighColorValue;
366 } COLORKEY;
368 enum
370 ADVISE_NONE = 0x0,
371 ADVISE_CLIPPING = 0x1,
372 ADVISE_PALETTE = 0x2,
373 ADVISE_COLORKEY = 0x4,
374 ADVISE_POSITION = 0x8,
375 ADVISE_DISPLAY_CHANGE = 0x10
378 const DWORD ADVISE_ALL = ADVISE_CLIPPING |
379 ADVISE_PALETTE |
380 ADVISE_COLORKEY |
381 ADVISE_POSITION;
383 const DWORD ADVISE_ALL2 = ADVISE_ALL |
384 ADVISE_DISPLAY_CHANGE;
386 cpp_quote("#ifndef _WINGDI_")
388 /* already defined in wingdi.h, but needed for WIDL */
390 typedef struct _RGNDATAHEADER
392 DWORD dwSize;
393 DWORD iType;
394 DWORD nCount;
395 DWORD nRgnSize;
396 RECT rcBound;
397 } RGNDATAHEADER;
399 typedef struct _RGNDATA
401 RGNDATAHEADER rdh;
402 char Buffer[1];
403 } RGNDATA;
405 cpp_quote("#endif /* _WINGDI_ */")
408 object,
409 local,
410 uuid(56a868a0-0ad4-11ce-b03a-0020af0ba770),
411 pointer_default(unique)
413 interface IOverlayNotify : IUnknown
415 HRESULT OnPaletteChange(
416 [in] DWORD dwColors,
417 [in] const PALETTEENTRY *pPalette);
419 HRESULT OnClipChange(
420 [in] const RECT *pSourceRect,
421 [in] const RECT *pDestinationRect,
422 [in] const RGNDATA *pRgnData);
424 HRESULT OnColorKeyChange([in] const COLORKEY *pColorKey);
426 HRESULT OnPositionChange([in] const RECT *pSourceRect,
427 [in] const RECT *pDestinationRect);
430 typedef IOverlayNotify *POVERLAYNOTIFY;
432 cpp_quote("#if 0")
433 typedef HANDLE HMONITOR;
434 cpp_quote("#endif /* 0 */")
437 object,
438 local,
439 uuid(680EFA10-D535-11D1-87C8-00A0C9223196),
440 pointer_default(unique)
442 interface IOverlayNotify2 : IOverlayNotify
444 HRESULT OnDisplayChange(
445 HMONITOR hMonitor);
448 typedef IOverlayNotify2 *POVERLAYNOTIFY2;
451 object,
452 local,
453 uuid(56a868a1-0ad4-11ce-b03a-0020af0ba770),
454 pointer_default(unique)
456 interface IOverlay : IUnknown
458 HRESULT GetPalette(
459 [out] DWORD *pdwColors,
460 [out] PALETTEENTRY **ppPalette);
462 HRESULT SetPalette(
463 [in] DWORD dwColors,
464 [in] PALETTEENTRY *pPalette);
466 HRESULT GetDefaultColorKey([out] COLORKEY *pColorKey);
468 HRESULT GetColorKey([out] COLORKEY *pColorKey);
470 HRESULT SetColorKey([in,out] COLORKEY *pColorKey);
472 HRESULT GetWindowHandle([out] HWND *pHwnd);
474 HRESULT GetClipList([out] RECT *pSourceRect,
475 [out] RECT *pDestinationRect,
476 [out] RGNDATA **ppRgnData);
478 HRESULT GetVideoPosition([out] RECT *pSourceRect,
479 [out] RECT *pDestinationRect);
481 HRESULT Advise(
482 [in] IOverlayNotify *pOverlayNotify,
483 [in] DWORD dwInterests);
485 HRESULT Unadvise();
488 typedef IOverlay *POVERLAY;
491 object,
492 uuid(56a868a2-0ad4-11ce-b03a-0020af0ba770),
493 pointer_default(unique)
495 interface IMediaEventSink : IUnknown
497 HRESULT Notify(
498 [in] LONG EventCode,
499 [in] LONG_PTR EventParam1,
500 [in] LONG_PTR EventParam2
504 typedef IMediaEventSink *PMEDIAEVENTSINK;
507 object,
508 uuid(56a868a6-0ad4-11ce-b03a-0020af0ba770),
509 pointer_default(unique)
511 interface IFileSourceFilter : IUnknown
513 HRESULT Load(
514 [in] LPCOLESTR pszFileName,
515 [in, unique] const AM_MEDIA_TYPE *pmt
518 HRESULT GetCurFile(
519 [out] LPOLESTR *ppszFileName,
520 [out] AM_MEDIA_TYPE *pmt
524 typedef IFileSourceFilter *PFILTERFILESOURCE;
527 object,
528 uuid(a2104830-7c70-11cf-8bce-00aa00a3f1a6),
529 pointer_default(unique)
531 interface IFileSinkFilter : IUnknown
533 HRESULT SetFileName(
534 [in] LPCOLESTR pszFileName,
535 [in, unique] const AM_MEDIA_TYPE *pmt
538 HRESULT GetCurFile(
539 [out] LPOLESTR *ppszFileName,
540 [out] AM_MEDIA_TYPE *pmt
544 typedef IFileSinkFilter *PFILTERFILESINK;
547 object,
548 uuid(00855B90-CE1B-11d0-BD4F-00A0C911CE86),
549 pointer_default(unique)
551 interface IFileSinkFilter2 : IFileSinkFilter
553 HRESULT SetMode(
554 [in] DWORD dwFlags
557 HRESULT GetMode(
558 [out] DWORD *pdwFlags
562 typedef IFileSinkFilter2 *PFILESINKFILTER2;
564 typedef enum
566 AM_FILE_OVERWRITE = 0x00000001,
567 } AM_FILESINK_FLAGS;
570 object,
571 uuid(56a868a9-0ad4-11ce-b03a-0020af0ba770),
572 pointer_default(unique)
574 interface IGraphBuilder : IFilterGraph
576 HRESULT Connect
577 ( [in] IPin * ppinOut,
578 [in] IPin * ppinIn
581 HRESULT Render
582 ( [in] IPin * ppinOut
585 HRESULT RenderFile
586 ( [in] LPCWSTR lpcwstrFile,
587 [in, unique] LPCWSTR lpcwstrPlayList
590 HRESULT AddSourceFilter
591 ( [in] LPCWSTR lpcwstrFileName,
592 [in, unique] LPCWSTR lpcwstrFilterName,
593 [out] IBaseFilter* *ppFilter
596 HRESULT SetLogFile
597 ( [in] DWORD_PTR hFile
600 HRESULT Abort();
602 HRESULT ShouldOperationContinue();
607 object,
608 uuid(bf87b6e0-8c27-11d0-b3f0-00aa003761c5),
609 pointer_default(unique)
611 interface ICaptureGraphBuilder : IUnknown {
613 HRESULT SetFiltergraph(
614 [in] IGraphBuilder *pfg);
616 HRESULT GetFiltergraph(
617 [out] IGraphBuilder **ppfg);
619 HRESULT SetOutputFileName(
620 [in] const GUID *pType,
621 [in] LPCOLESTR lpstrFile,
622 [out] IBaseFilter **ppf,
623 [out] IFileSinkFilter **ppSink);
625 [local] HRESULT FindInterface(
626 [in, unique] const GUID *pCategory,
627 [in] IBaseFilter *pf,
628 [in] REFIID riid,
629 [out] void **ppint);
631 [call_as(FindInterface)] HRESULT RemoteFindInterface(
632 [in, unique] const GUID *pCategory,
633 [in] IBaseFilter *pf,
634 [in] REFIID riid,
635 [out] IUnknown **ppint);
637 HRESULT RenderStream(
638 [in] const GUID *pCategory,
639 [in] IUnknown *pSource,
640 [in] IBaseFilter *pfCompressor,
641 [in] IBaseFilter *pfRenderer);
643 HRESULT ControlStream(
644 [in] const GUID *pCategory,
645 [in] IBaseFilter *pFilter,
646 [in] REFERENCE_TIME *pstart,
647 [in] REFERENCE_TIME *pstop,
648 [in] WORD wStartCookie,
649 [in] WORD wStopCookie);
651 HRESULT AllocCapFile(
652 [in] LPCOLESTR lpstr,
653 [in] DWORDLONG dwlSize);
655 HRESULT CopyCaptureFile(
656 [in] LPOLESTR lpwstrOld,
657 [in] LPOLESTR lpwstrNew,
658 [in] int fAllowEscAbort,
659 [in] IAMCopyCaptureFileProgress *pCallback);
663 object,
664 uuid(670d1d20-a068-11d0-b3f0-00aa003761c5),
665 pointer_default(unique)
667 interface IAMCopyCaptureFileProgress : IUnknown
669 HRESULT Progress(
670 [in] int iProgress);
674 object,
675 uuid(93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D),
676 pointer_default(unique)
678 interface ICaptureGraphBuilder2 : IUnknown
680 HRESULT SetFiltergraph(
681 [in] IGraphBuilder *pfg);
683 HRESULT GetFiltergraph(
684 [out] IGraphBuilder **ppfg);
686 HRESULT SetOutputFileName(
687 [in] const GUID *pType,
688 [in] LPCOLESTR lpstrFile,
689 [out] IBaseFilter **ppf,
690 [out] IFileSinkFilter **ppSink);
692 [local] HRESULT FindInterface(
693 [in] const GUID *pCategory,
694 [in] const GUID *pType,
695 [in] IBaseFilter *pf,
696 [in] REFIID riid,
697 [out] void **ppint);
699 [call_as(FindInterface)] HRESULT RemoteFindInterface(
700 [in] const GUID *pCategory,
701 [in] const GUID *pType,
702 [in] IBaseFilter *pf,
703 [in] REFIID riid,
704 [out] IUnknown **ppint);
706 HRESULT RenderStream(
707 [in] const GUID *pCategory,
708 [in] const GUID *pType,
709 [in] IUnknown *pSource,
710 [in] IBaseFilter *pfCompressor,
711 [in] IBaseFilter *pfRenderer);
713 HRESULT ControlStream(
714 [in] const GUID *pCategory,
715 [in] const GUID *pType,
716 [in] IBaseFilter *pFilter,
717 [in] REFERENCE_TIME *pstart,
718 [in] REFERENCE_TIME *pstop,
719 [in] WORD wStartCookie,
720 [in] WORD wStopCookie);
722 HRESULT AllocCapFile(
723 [in] LPCOLESTR lpstr,
724 [in] DWORDLONG dwlSize);
726 HRESULT CopyCaptureFile(
727 [in] LPOLESTR lpwstrOld,
728 [in] LPOLESTR lpwstrNew,
729 [in] int fAllowEscAbort,
730 [in] IAMCopyCaptureFileProgress *pCallback);
732 HRESULT FindPin(
733 [in] IUnknown *pSource,
734 [in] PIN_DIRECTION pindir,
735 [in] const GUID *pCategory,
736 [in] const GUID *pType,
737 [in] BOOL fUnconnected,
738 [in] int num,
739 [out] IPin **ppPin);
743 local,
744 object,
745 uuid(5acd6aa0-f482-11ce-8b67-00aa00a3f1a6),
746 pointer_default(unique)
748 interface IConfigAviMux : IUnknown
750 HRESULT SetMasterStream(
751 [in] LONG iStream);
753 HRESULT GetMasterStream(
754 [out] LONG *pStream);
756 HRESULT SetOutputCompatibilityIndex(
757 [in] BOOL fOldIndex);
759 HRESULT GetOutputCompatibilityIndex(
760 [out] BOOL *pfOldIndex);
764 local,
765 object,
766 uuid(bee3d220-157b-11d0-bd23-00a0c911ce86),
767 pointer_default(unique)
769 interface IConfigInterleaving : IUnknown
771 typedef enum InterleavingMode {
772 INTERLEAVE_NONE,
773 INTERLEAVE_CAPTURE,
774 INTERLEAVE_FULL,
775 INTERLEAVE_NONE_BUFFERED
776 } InterleavingMode;
778 HRESULT put_Mode(
779 [in] InterleavingMode mode);
781 HRESULT get_Mode(
782 [out] InterleavingMode *pMode);
784 HRESULT put_Interleaving(
785 [in] const REFERENCE_TIME *prtInterleave,
786 [in] const REFERENCE_TIME *prtPreroll);
788 HRESULT get_Interleaving(
789 [out] REFERENCE_TIME *prtInterleave,
790 [out] REFERENCE_TIME *prtPreroll);
794 local,
795 object,
796 uuid(9fd52741-176d-4b36-8f51-ca8f933223be),
797 pointer_default(unique)
799 interface IAMClockSlave : IUnknown
801 HRESULT SetErrorTolerance(
802 [in] DWORD dwTolerance);
804 HRESULT GetErrorTolerance(
805 [out] DWORD *pdwTolerance);
808 typedef struct _AMCOPPSignature {
809 BYTE Signature[256];
810 } AMCOPPSignature;
812 typedef struct _AMCOPPCommand {
813 GUID macKDI;
814 GUID guidCommandID;
815 DWORD dwSequence;
816 DWORD bSizeData;
817 BYTE CommandData[4056];
818 } AMCOPPCommand, *LPAMCOPPCommand;
820 typedef struct _AMCOPPStatusInput {
821 GUID rApp;
822 GUID guidStatusRequestID;
823 DWORD dwSequence;
824 DWORD cbSizeData;
825 BYTE StatusData[4056];
826 } AMCOPPStatusInput, *LPAMCOPPStatusInput;
828 typedef struct _AMCOPPStatusOutput {
829 GUID macKDI;
830 DWORD cbSizeData;
831 BYTE COPPStatus[4076];
832 } AMCOPPStatusOutput, *LPAMCOPPStatusOutput;
835 local,
836 object,
837 uuid(6feded3e-0ff1-4901-a2f1-43f7012c8515),
838 pointer_default(unique)
840 interface IAMCertifiedOutputProtection : IUnknown
842 HRESULT KeyExchange (
843 [out] GUID* pRandom,
844 [out] BYTE** VarLenCertGH,
845 [out] DWORD* pdwLengthCertGH);
847 HRESULT SessionSequenceStart(
848 [in] AMCOPPSignature* pSig);
850 HRESULT ProtectionCommand(
851 [in] const AMCOPPCommand* cmd);
853 HRESULT ProtectionStatus(
854 [in] const AMCOPPStatusInput* pStatusInput,
855 [out] AMCOPPStatusOutput* pStatusOutput);
858 enum _AM_RENSDEREXFLAGS
860 AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x01
864 object,
865 uuid(36b73882-c2c8-11cf-8b46-00805f6cef60),
866 pointer_default(unique)
868 interface IFilterGraph2: IGraphBuilder
870 HRESULT AddSourceFilterForMoniker(
871 [in] IMoniker *pMoniker,
872 [in] IBindCtx *pCtx,
873 [in, unique] LPCWSTR lpcwstrFilterName,
874 [out] IBaseFilter **ppFilter
877 HRESULT ReconnectEx
878 ( [in] IPin * ppin,
879 [in, unique] const AM_MEDIA_TYPE *pmt
882 HRESULT RenderEx( [in] IPin *pPinOut,
883 [in] DWORD dwFlags,
884 [in, out] DWORD *pvContext
889 object,
890 local,
891 uuid(56a868bf-0ad4-11ce-b03a-0020af0ba770),
892 pointer_default(unique)
894 interface IStreamBuilder : IUnknown
896 HRESULT Render
897 ( [in] IPin * ppinOut,
898 [in] IGraphBuilder * pGraph
901 HRESULT Backout
902 ( [in] IPin * ppinOut,
903 [in] IGraphBuilder * pGraph
908 /*****************************************************************************
909 * IAMStreamConfig interface
912 object,
913 uuid(c6e13340-30ac-11d0-a18c-00a0c9118956),
914 pointer_default(unique)
916 interface IAMStreamConfig : IUnknown
918 typedef struct _VIDEO_STREAM_CONFIG_CAPS {
919 GUID guid;
920 ULONG VideoStandard;
921 SIZE InputSize;
922 SIZE MinCroppingSize;
923 SIZE MaxCroppingSize;
924 int CropGranularityX;
925 int CropGranularityY;
926 int CropAlignX;
927 int CropAlignY;
928 SIZE MinOutputSize;
929 SIZE MaxOutputSize;
930 int OutputGranularityX;
931 int OutputGranularityY;
932 int StretchTapsX;
933 int StretchTapsY;
934 int ShrinkTapsX;
935 int ShrinkTapsY;
936 LONGLONG MinFrameInterval;
937 LONGLONG MaxFrameInterval;
938 LONG MinBitsPerSecond;
939 LONG MaxBitsPerSecond;
940 } VIDEO_STREAM_CONFIG_CAPS;
942 typedef struct _AUDIO_STREAM_CONFIG_CAPS {
943 GUID guid;
944 ULONG MinimumChannels;
945 ULONG MaximumChannels;
946 ULONG ChannelsGranularity;
947 ULONG MinimumBitsPerSample;
948 ULONG MaximumBitsPerSample;
949 ULONG BitsPerSampleGranularity;
950 ULONG MinimumSampleFrequency;
951 ULONG MaximumSampleFrequency;
952 ULONG SampleFrequencyGranularity;
953 } AUDIO_STREAM_CONFIG_CAPS;
955 HRESULT SetFormat( [in] AM_MEDIA_TYPE *pmt);
956 HRESULT GetFormat( [in] AM_MEDIA_TYPE **pmt);
957 HRESULT GetNumberOfCapabilities( [out] int *piCount, [out] int *piSize);
958 HRESULT GetStreamCaps( [in] int iIndex, [out] AM_MEDIA_TYPE **pmt,
959 [out] BYTE *pSCC);
963 typedef enum tagVideoProcAmpProperty
965 VideoProcAmp_Brightness,
966 VideoProcAmp_Contrast,
967 VideoProcAmp_Hue,
968 VideoProcAmp_Saturation,
969 VideoProcAmp_Sharpness,
970 VideoProcAmp_Gamma,
971 VideoProcAmp_ColorEnable,
972 VideoProcAmp_WhiteBalance,
973 VideoProcAmp_BacklightCompensation,
974 VideoProcAmp_Gain
975 } VideoProcAmpProperty;
977 typedef enum tagVideoProcAmpFlags
979 VideoProcAmp_Flags_Auto = 0x0001,
980 VideoProcAmp_Flags_Manual = 0x0002,
981 } VideoProcAmpFlags;
983 /*****************************************************************************
984 * IAMVideoProcAmp interface
987 object,
988 uuid(c6e13360-30ac-11d0-a18c-00a0c9118956),
989 pointer_default(unique)
991 interface IAMVideoProcAmp : IUnknown
993 HRESULT GetRange( [in] LONG Property, [out] LONG *pMin, [out] LONG *pMax,
994 [out] LONG *pSteppingDelta, [out] LONG *pDefault,
995 [out] LONG *pCapsFlags);
996 HRESULT Set( [in] LONG Property, [in] LONG lValue, [in] LONG Flags);
997 HRESULT Get( [in] LONG Property, [out] LONG *lValue, [out] LONG *Flags);
1002 object,
1003 uuid(56a868aa-0ad4-11ce-b03a-0020af0ba770),
1004 pointer_default(unique)
1006 interface IAsyncReader : IUnknown
1008 HRESULT RequestAllocator(
1009 [in] IMemAllocator* pPreferred,
1010 [in] ALLOCATOR_PROPERTIES* pProps,
1011 [out] IMemAllocator ** ppActual);
1013 HRESULT Request(
1014 [in] IMediaSample* pSample,
1015 [in] DWORD_PTR dwUser);
1017 HRESULT WaitForNext(
1018 [in] DWORD dwTimeout,
1019 [out] IMediaSample** ppSample,
1020 [out] DWORD_PTR * pdwUser);
1022 HRESULT SyncReadAligned(
1023 [in] IMediaSample* pSample);
1025 HRESULT SyncRead(
1026 [in] LONGLONG llPosition,
1027 [in] LONG lLength,
1028 [out, size_is(lLength)]
1029 BYTE* pBuffer);
1031 HRESULT Length(
1032 [out] LONGLONG* pTotal,
1033 [out] LONGLONG* pAvailable);
1035 HRESULT BeginFlush(void);
1037 HRESULT EndFlush(void);
1042 object,
1043 uuid(56a868ab-0ad4-11ce-b03a-0020af0ba770),
1044 pointer_default(unique)
1046 interface IGraphVersion : IUnknown
1048 HRESULT QueryVersion(LONG* pVersion);
1052 object,
1053 uuid(56a868ad-0ad4-11ce-b03a-0020af0ba770),
1054 pointer_default(unique)
1056 interface IResourceConsumer : IUnknown
1058 HRESULT AcquireResource(
1059 [in] LONG idResource);
1061 HRESULT ReleaseResource(
1062 [in] LONG idResource);
1067 object,
1068 uuid(56a868ac-0ad4-11ce-b03a-0020af0ba770),
1069 pointer_default(unique)
1071 interface IResourceManager : IUnknown
1073 HRESULT Register(
1074 [in] LPCWSTR pName,
1075 [in] LONG cResource,
1076 [out] LONG* plToken
1079 HRESULT RegisterGroup(
1080 [in] LPCWSTR pName,
1081 [in] LONG cResource,
1082 [in, size_is(cResource)]
1083 LONG* palTokens,
1084 [out] LONG* plToken
1087 HRESULT RequestResource(
1088 [in] LONG idResource,
1089 [in] IUnknown* pFocusObject,
1090 [in] IResourceConsumer* pConsumer
1093 HRESULT NotifyAcquire(
1094 [in] LONG idResource,
1095 [in] IResourceConsumer* pConsumer,
1096 [in] HRESULT hr);
1098 HRESULT NotifyRelease(
1099 [in] LONG idResource,
1100 [in] IResourceConsumer* pConsumer,
1101 [in] BOOL bStillWant);
1103 HRESULT CancelRequest(
1104 [in] LONG idResource,
1105 [in] IResourceConsumer* pConsumer);
1107 HRESULT SetFocus(
1108 [in] IUnknown* pFocusObject);
1110 HRESULT ReleaseFocus(
1111 [in] IUnknown* pFocusObject);
1115 typedef enum AM_STREAM_INFO_FLAGS
1117 AM_STREAM_INFO_START_DEFINED = 0x01,
1118 AM_STREAM_INFO_STOP_DEFINED = 0x02,
1119 AM_STREAM_INFO_DISCARDING = 0x04,
1120 AM_STREAM_INFO_STOP_SEND_EXTRA = 0x10
1121 } AM_STREAM_INFO_FLAGS;
1123 typedef struct AM_STREAM_INFO
1125 REFERENCE_TIME tStart;
1126 REFERENCE_TIME tStop;
1127 DWORD dwStartCookie;
1128 DWORD dwStopCookie;
1129 DWORD dwFlags;
1130 } AM_STREAM_INFO;
1133 local,
1134 object,
1135 uuid(36b73881-c2c8-11cf-8b46-00805f6cef60),
1136 pointer_default(unique)
1138 interface IAMStreamControl : IUnknown
1140 HRESULT StartAt(
1141 [in] const REFERENCE_TIME *ptStart,
1142 [in] DWORD dwCookie);
1144 HRESULT StopAt(
1145 [in] const REFERENCE_TIME *ptStop,
1146 [in] BOOL bSendExtra,
1147 [in] DWORD dwCookie);
1149 HRESULT GetInfo(
1150 [out] AM_STREAM_INFO *pInfo);
1153 cpp_quote("#ifndef _IKsPropertySet_")
1154 cpp_quote("#define _IKsPropertySet_")
1155 cpp_quote("#define KSPROPERTY_SUPPORT_GET 1")
1156 cpp_quote("#define KSPROPERTY_SUPPORT_SET 2")
1158 typedef enum AMPROPERTY_PIN
1160 AMPROPERTY_PIN_CATEGORY,
1161 AMPROPERTY_PIN_MEDIUM,
1162 } AMPROPERTY_PIN;
1165 object,
1166 uuid(31efac30-515c-11d0-a9aa-00aa0061be93),
1167 pointer_default(unique),
1168 local
1170 interface IKsPropertySet : IUnknown
1172 HRESULT Set( [in] REFGUID guidPropSet,
1173 [in] DWORD dwPropID,
1174 [in, size_is(cbInstanceData)] LPVOID pInstanceData,
1175 [in] DWORD cbInstanceData,
1176 [in, size_is(cbPropData)] LPVOID pPropData,
1177 [in] DWORD cbPropData );
1179 HRESULT Get( [in] REFGUID guidPropSet,
1180 [in] DWORD dwPropID,
1181 [in, size_is(cbInstanceData)] LPVOID pInstanceData,
1182 [in] DWORD cbInstanceData,
1183 [out, size_is(cbPropData)] LPVOID pPropData,
1184 [in] DWORD cbPropData,
1185 [out] DWORD *pcbReturned );
1187 HRESULT QuerySupported( [in] REFGUID guidPropSet,
1188 [in] DWORD dwPropID,
1189 [out] DWORD *pTypeSupport);
1191 cpp_quote("#endif /* _IKsPropertySet_ */")
1194 local,
1195 object,
1196 uuid(6025a880-c0d5-11d0-bd4e-00a0c911ce86),
1197 pointer_default(unique)
1199 interface IMediaPropertyBag : IPropertyBag
1201 typedef IMediaPropertyBag *LPMEDIAPROPERTYBAG;
1203 HRESULT EnumProperty(
1204 [in] ULONG iProperty,
1205 [in, out] VARIANT *pvarPropertyName,
1206 [in, out] VARIANT *pvarPropertyValue);
1211 local,
1212 object,
1213 uuid(5738e040-b67f-11d0-bd4d-00a0c911ce86),
1214 pointer_default(unique)
1216 interface IPersistMediaPropertyBag : IPersist
1218 HRESULT InitNew(void);
1220 HRESULT Load(
1221 [in] IMediaPropertyBag *pPropBag,
1222 [in] IErrorLog *pErrorLog);
1224 HRESULT Save(
1225 [in] IMediaPropertyBag *pPropBag,
1226 [in] BOOL fClearDirty,
1227 [in] BOOL fSaveAllProperties);
1229 typedef IPersistMediaPropertyBag *LPPERSISTMEDIAPROPERTYBAG;
1233 object,
1234 uuid(36b73883-c2c8-11cf-8b46-00805f6cef60),
1235 pointer_default(unique)
1237 interface ISeekingPassThru : IUnknown
1239 HRESULT Init( [in] BOOL bSupportRendering, [in] IPin *pPin);
1242 enum _AM_FILTER_MISC_FLAGS
1244 AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x1,
1245 AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x2
1249 local,
1250 object,
1251 uuid(2dd74950-a890-11d1-abe8-00a0c905f375),
1252 pointer_default(unique)
1254 interface IAMFilterMiscFlags : IUnknown
1256 ULONG GetMiscFlags();
1260 local,
1261 object,
1262 uuid(4995f511-9ddb-4f12-bd3b-f04611807b79),
1263 pointer_default(unique)
1265 interface IAMGraphBuilderCallback : IUnknown
1267 HRESULT SelectedFilter(
1268 [in] IMoniker *pMon);
1270 HRESULT CreatedFilter(
1271 [in] IBaseFilter *pFil);
1275 local,
1276 object,
1277 uuid(d8d715a0-6e5e-11d0-b3f0-00aa003761c5),
1278 pointer_default(unique)
1280 interface IAMVfwCaptureDialogs : IUnknown
1282 HRESULT HasDialog(
1283 [in] int dialog);
1284 HRESULT ShowDialog(
1285 [in] int dialog,
1286 [in] HWND hwnd);
1287 HRESULT SendDriverMessage(
1288 [in] int dialog,
1289 [in] int msg,
1290 [in] long data1,
1291 [in] long data2);
1295 local,
1296 object,
1297 uuid(c6e13370-30ac-11d0-a18c-00a0c9118956),
1298 pointer_default(unique)
1300 interface IAMCameraControl : IUnknown
1302 HRESULT GetRange([in] long property, [out] long *min, [out] long *max,
1303 [out] long *stepping_delta, [out] long *default_value, [out] long *flags);
1304 HRESULT Set([in] long property, [in] long property_value, [in] long flags);
1305 HRESULT Get([in] long property, [out] long *property_value, [out] long *flags);
1309 local,
1310 object,
1311 uuid(6a2e0670-28e4-11d0-a18c-00a0c9118956),
1312 pointer_default(unique)
1314 interface IAMVideoControl : IUnknown
1316 HRESULT GetCaps([in] IPin *pin, [out] long *flags);
1317 HRESULT SetMode([in] IPin *pin, long mode);
1318 HRESULT GetMode([in] IPin *pin, [out] long *mode);
1319 HRESULT GetCurrentActualFrameRate([in] IPin *pin, [out] LONGLONG *frame_rate);
1320 HRESULT GetMaxAvailableFrameRate([in] IPin *pin, [in] long index,
1321 [in] SIZE dimensions, [out] LONGLONG *frame_rate);
1322 HRESULT GetFrameRateList([in] IPin *pin, [in] long index, [in] SIZE dimensions,
1323 [out] long *list_size, [out] LONGLONG **frame_rate);
1327 local,
1328 object,
1329 uuid(56ed71a0-af5f-11d0-b3f0-00aa003761c5),
1330 pointer_default(unique)
1332 interface IAMBufferNegotiation : IUnknown
1334 HRESULT SuggestAllocatorProperties([in] const ALLOCATOR_PROPERTIES *prop);
1335 HRESULT GetAllocatorProperties([out] ALLOCATOR_PROPERTIES *prop);
1339 local,
1340 object,
1341 uuid(c6e13344-30ac-11d0-a18c-00a0c9118956),
1342 pointer_default(unique)
1344 interface IAMDroppedFrames : IUnknown
1346 HRESULT GetNumDropped([out] long *number);
1347 HRESULT GetNumNotDropped([out] long *number);
1348 HRESULT GetDroppedInfo([in] long size, [out] long *array, [out] long *copied);
1349 HRESULT GetAverageFrameSize([out] long *size);
1353 local,
1354 object,
1355 uuid(62ea93ba-ec62-11d2-b770-00c04fb6bd3d),
1356 pointer_default(unique)
1358 interface IAMLatency : IUnknown
1360 HRESULT GetLatency([in, out] REFERENCE_TIME *latency);
1364 local,
1365 object,
1366 uuid(f185fe76-e64e-11d2-b76e-00c04fb6bd3d),
1367 pointer_default(unique)
1369 interface IAMPushSource : IAMLatency
1371 HRESULT GetPushSourceFlags([out] ULONG *flags);
1372 HRESULT SetPushSourceFlags([in] ULONG flags);
1373 HRESULT SetStreamOffset([in] REFERENCE_TIME offset);
1374 HRESULT GetStreamOffset([out] REFERENCE_TIME *offset);
1375 HRESULT GetMaxStreamOffset([out] REFERENCE_TIME *offset);
1376 HRESULT SetMaxStreamOffset([in] REFERENCE_TIME offset);
1380 local,
1381 object,
1382 uuid(c6e13343-30ac-11d0-a18c-00a0c9118956),
1383 pointer_default(unique)
1385 interface IAMVideoCompression : IUnknown
1387 HRESULT put_KeyFrameRate([in] long frame_rate);
1388 HRESULT get_KeyFrameRate([out] long *frame_rate);
1389 HRESULT put_PFramesPerKeyFrame([in] long frame);
1390 HRESULT get_PFramesPerKeyFrame([out] long *frame);
1391 HRESULT put_Quality([in] double quality);
1392 HRESULT get_Quality([out] double *quality);
1393 HRESULT put_WindowSize([in] DWORDLONG size);
1394 HRESULT get_WindowSize([out] DWORDLONG *size);
1395 HRESULT GetInfo([out, size_is(*version_size)] LPWSTR version, [in, out] int *version_size,
1396 [out, size_is(*description_size)] LPWSTR description, [in, out] int *description_size,
1397 [out] long *frame_rate, [out] long *key, [out] double *quality, [out] long *capabilities);
1398 HRESULT OverrideKeyFrame([in] long number);
1399 HRESULT OverrideFrameSize([in] long number, [in] long size);
1403 local,
1404 object,
1405 uuid(c6e13380-30ac-11d0-a18c-00a0c9118956),
1406 pointer_default(unique)
1408 interface IAMCrossbar : IUnknown
1410 HRESULT get_PinCounts([out] long *output, [out] long *intput);
1411 HRESULT CanRoute([in] long output, [in] long input);
1412 HRESULT Route([in] long output, [in] long input);
1413 HRESULT get_IsRoutedTo([in] long output, [out] long *input);
1414 HRESULT get_CrossbarPinInfo([in] BOOL is_input, [in] long index,
1415 [out] long *related, [out] long *type);
1418 typedef enum tagAMTunerEventType
1420 AMTUNER_EVENT_CHANGED = 0x0001,
1421 } AMTunerEventType;
1424 local,
1425 object,
1426 uuid(211a8760-03ac-11d1-8d13-00aa00bd8339),
1427 pointer_default(unique)
1429 interface IAMTunerNotification : IUnknown
1431 HRESULT OnEvent([in] AMTunerEventType event);
1434 typedef enum tagAMTunerModeType
1436 AMTUNER_MODE_DEFAULT = 0x0000,
1437 AMTUNER_MODE_TV = 0x0001,
1438 AMTUNER_MODE_FM_RADIO = 0x0002,
1439 AMTUNER_MODE_AM_RADIO = 0x0004,
1440 AMTUNER_MODE_DSS = 0x0008,
1441 } AMTunerModeType;
1444 local,
1445 object,
1446 uuid(211a8761-03ac-11d1-8d13-00aa00bd8339),
1447 pointer_default(unique)
1449 interface IAMTuner : IUnknown
1451 HRESULT put_Channel([in] long channel, [in] long video, [in] long audio);
1452 HRESULT get_Channel([out] long *channel, [out] long *video, [out] long *audio);
1453 HRESULT ChannelMinMax([out] long *min, [out] long *max);
1454 HRESULT put_CountryCode([in] long country);
1455 HRESULT get_CountryCode([out] long *country);
1456 HRESULT put_TuningSpace([in] long tuning_space);
1457 HRESULT get_TuningSpace([out] long *tuning_space);
1458 [local] HRESULT Logon([in] HANDLE user);
1459 HRESULT Logout();
1460 HRESULT SignalPresent([out] long *signal_strength);
1461 HRESULT put_Mode([in] AMTunerModeType mode);
1462 HRESULT get_Mode([out] AMTunerModeType *mode);
1463 HRESULT GetAvailableModes([out] long *modes);
1464 HRESULT RegisterNotificationCallBack([in] IAMTunerNotification *notify, [in] long events);
1465 HRESULT UnRegisterNotificationCallBack([in] IAMTunerNotification *notify);
1469 local,
1470 object,
1471 uuid(211a8766-03ac-11d1-8d13-00aa00bd8339),
1472 pointer_default(unique)
1474 interface IAMTVTuner : IAMTuner
1476 HRESULT get_AvailableTVFormats([out] long *standard);
1477 HRESULT get_TVFormat([out] long *standard);
1478 HRESULT AutoTune([in] long channel, [out] long *signal);
1479 HRESULT StoreAutoTune();
1480 HRESULT get_NumInputConnections([out] long *number);
1481 HRESULT put_InputType([in] long index, [in] TunerInputType type);
1482 HRESULT get_InputType([in] long index, [out] TunerInputType *type);
1483 HRESULT put_ConnectInput([in] long index);
1484 HRESULT get_ConnectInput([out] long *index);
1485 HRESULT get_VideoFrequency([out] long *freq);
1486 HRESULT get_AudioFrequency([out] long *freq);
1490 local,
1491 object,
1492 uuid(e46a9787-2b71-444d-a4b5-1fab7b708d6a),
1493 pointer_default(unique),
1495 interface IVideoFrameStep : IUnknown
1497 HRESULT Step(DWORD frame_count, [in] IUnknown *filter);
1498 HRESULT CanStep(long multiple, [in] IUnknown *filter);
1499 HRESULT CancelStep();