winejoystick: Fix a crash on accessing a CFArray past its end due to an off-by-one...
[wine/multimedia.git] / include / axextend.idl
blob207dbce46735bfacdca7e8b56b67e6ca2e7f812b
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 interface IAMAnalogVideoDecoder;
20 interface IAMAnalogVideoEncoder;
21 interface IAMAudioInputMixer;
22 interface IAMAudioRendererStats;
23 interface IAMBufferNegotiation;
24 interface IAMCameraControl;
25 interface IAMCertifiedOutputProtection;
26 interface IAMClockSlave;
27 interface IAMCopyCaptureFileProgress;
28 interface IAMCrossbar;
29 interface IAMDevMemoryAllocator;
30 interface IAMDevMemoryControl;
31 interface IAMDroppedFrames;
32 interface IAMExtDevice;
33 interface IAMExtTransport;
34 interface IAMGraphStreams;
35 interface IAMLatency;
36 interface IAMOpenProgress;
37 interface IAMOverlayFX;
38 interface IAMPhysicalPinInfo;
39 interface IAMPushSource;
40 interface IAMStreamConfig;
41 interface IAMTimecodeDisplay;
42 interface IAMTimecodeGenerator;
43 interface IAMTimecodeReader;
44 interface IAMTVTuner;
45 interface IAMVfwCaptureDialogs;
46 interface IAMVfwCompressDialogs;
47 interface IAMVideoCompression;
48 interface IAMVideoDecimationProperties;
49 interface IAMVideoProcAmp;
50 interface IAMGraphBuilderCallback;
51 interface ICaptureGraphBuilder;
52 interface ICaptureGraphBuilder2;
53 interface IConfigAviMux;
54 interface IConfigInterleaving;
55 interface IDecimateVideoImage;
56 interface IDrawVideoImage;
57 interface IEnumRegFilters;
58 interface IEnumStreamIdMap;
59 interface IFileSourceFilter;
60 interface IFileSinkFilter;
61 interface IFileSinkFilter2;
62 interface IFilterMapper;
63 interface IFilterMapper2;
64 interface IGraphBuilder;
65 interface IKsPropertySet;
66 interface IMediaEventSink;
67 interface IMpeg2Demultiplexer;
68 interface IMPEG2StreamIdMap;
69 interface IOverlay;
70 interface IOverlayNotify;
71 interface IOverlayNotify2;
72 interface IQualityControl;
73 interface ISeekingPassThru;
75 typedef struct
77 CLSID Clsid;
78 LPWSTR Name;
79 } REGFILTER;
82 object,
83 uuid(56a868a4-0ad4-11ce-b03a-0020af0ba770),
84 pointer_default(unique)
86 interface IEnumRegFilters : IUnknown
88 HRESULT Next
89 ( [in] ULONG cFilters,
90 [out] REGFILTER ** apRegFilter,
91 [out] ULONG * pcFetched
94 HRESULT Skip(
95 [in] ULONG cFilters
98 HRESULT Reset(void);
100 HRESULT Clone(
101 [out] IEnumRegFilters **ppEnum
106 typedef IEnumRegFilters *PENUMREGFILTERS;
109 object,
110 uuid(56a868a3-0ad4-11ce-b03a-0020af0ba770),
111 pointer_default(unique)
113 interface IFilterMapper : IUnknown
115 enum { MERIT_PREFERRED = 0x800000,
116 MERIT_NORMAL = 0x600000,
117 MERIT_UNLIKELY = 0x400000,
118 MERIT_DO_NOT_USE = 0x200000,
119 MERIT_SW_COMPRESSOR = 0x100000,
120 MERIT_HW_COMPRESSOR = 0x100050
123 HRESULT RegisterFilter
124 ( [in] CLSID clsid,
125 [in] LPCWSTR Name,
126 [in] DWORD dwMerit
129 HRESULT RegisterFilterInstance
130 ( [in] CLSID clsid,
131 [in] LPCWSTR Name,
132 [out] CLSID *MRId
136 HRESULT RegisterPin
137 ( [in] CLSID Filter,
138 [in] LPCWSTR Name,
139 [in] BOOL bRendered,
140 [in] BOOL bOutput,
141 [in] BOOL bZero,
142 [in] BOOL bMany,
143 [in] CLSID ConnectsToFilter,
144 [in] LPCWSTR ConnectsToPin
147 HRESULT RegisterPinType
148 ( [in] CLSID clsFilter,
149 [in] LPCWSTR strName,
150 [in] CLSID clsMajorType,
151 [in] CLSID clsSubType
155 HRESULT UnregisterFilter
156 ( [in] CLSID Filter
160 HRESULT UnregisterFilterInstance
161 ( [in] CLSID MRId
165 HRESULT UnregisterPin
166 ( [in] CLSID Filter,
167 [in] LPCWSTR Name
170 HRESULT EnumMatchingFilters
171 ( [out] IEnumRegFilters **ppEnum,
172 [in] DWORD dwMerit,
173 [in] BOOL bInputNeeded,
174 [in] CLSID clsInMaj,
175 [in] CLSID clsInSub,
176 [in] BOOL bRender,
177 [in] BOOL bOututNeeded,
178 [in] CLSID clsOutMaj,
179 [in] CLSID clsOutSub
184 typedef struct
186 const CLSID * clsMajorType;
187 const CLSID * clsMinorType;
188 } REGPINTYPES;
190 typedef struct
192 LPWSTR strName;
193 BOOL bRendered;
194 BOOL bOutput;
195 BOOL bZero;
196 BOOL bMany;
197 const CLSID * clsConnectsToFilter;
198 const WCHAR * strConnectsToPin;
199 UINT nMediaTypes;
200 const REGPINTYPES * lpMediaType;
201 } REGFILTERPINS;
203 typedef struct
205 CLSID clsMedium;
206 DWORD dw1;
207 DWORD dw2;
208 } REGPINMEDIUM;
210 enum
212 REG_PINFLAG_B_ZERO = 0x1,
213 REG_PINFLAG_B_RENDERER = 0x2,
214 REG_PINFLAG_B_MANY = 0x4,
215 REG_PINFLAG_B_OUTPUT = 0x8
219 typedef struct
221 DWORD dwFlags;
222 UINT cInstances;
223 UINT nMediaTypes;
224 [size_is(nMediaTypes)] const REGPINTYPES * lpMediaType;
225 UINT nMediums;
226 [size_is(nMediums)] const REGPINMEDIUM *lpMedium;
227 const CLSID *clsPinCategory;
228 } REGFILTERPINS2;
230 typedef struct
232 DWORD dwVersion;
233 DWORD dwMerit;
234 [switch_is(dwVersion)] [switch_type(DWORD)] union
236 [case(1)]
237 struct
239 ULONG cPins;
240 [size_is(cPins)] const REGFILTERPINS *rgPins;
243 [case(2)]
244 struct
246 ULONG cPins2;
247 [size_is(cPins2)] const REGFILTERPINS2 *rgPins2;
250 [default]
254 } REGFILTER2;
258 object,
259 uuid(b79bb0b0-33c1-11d1-abe1-00a0c905f375),
260 pointer_default(unique)
262 interface IFilterMapper2 : IUnknown
264 HRESULT CreateCategory
265 ( [in] REFCLSID clsidCategory,
266 [in] DWORD dwCategoryMerit,
267 [in] LPCWSTR Description
270 HRESULT UnregisterFilter
271 ( [in] const CLSID *pclsidCategory,
272 [in] LPCOLESTR szInstance,
273 [in] REFCLSID Filter
276 HRESULT RegisterFilter
277 ( [in] REFCLSID clsidFilter,
278 [in] LPCWSTR Name,
279 [in, out] IMoniker **ppMoniker,
280 [in] const CLSID *pclsidCategory,
281 [in] LPCOLESTR szInstance,
282 [in] const REGFILTER2 *prf2
285 HRESULT EnumMatchingFilters
286 ( [out] IEnumMoniker **ppEnum,
287 [in] DWORD dwFlags,
288 [in] BOOL bExactMatch,
289 [in] DWORD dwMerit,
290 [in] BOOL bInputNeeded,
291 [in] DWORD cInputTypes,
292 [size_is(cInputTypes*2)] const GUID *pInputTypes,
293 [in] const REGPINMEDIUM *pMedIn,
294 [in] const CLSID *pPinCategoryIn,
295 [in] BOOL bRender,
296 [in] BOOL bOutputNeeded,
297 [in] DWORD cOutputTypes,
298 [size_is(cOutputTypes*2)] const GUID *pOutputTypes,
299 [in] const REGPINMEDIUM *pMedOut,
300 [in] const CLSID *pPinCategoryOut
305 object,
306 uuid(b79bb0b1-33c1-11d1-abe1-00a0c905f375),
307 pointer_default(unique)
309 interface IFilterMapper3 : IFilterMapper2
311 HRESULT GetICreateDevEnum( [out] ICreateDevEnum **ppEnum );
314 typedef enum tagQualityMessageType
316 Famine,
317 Flood
318 } QualityMessageType;
320 typedef struct tagQuality
322 QualityMessageType Type;
323 LONG Proportion;
324 REFERENCE_TIME Late;
325 REFERENCE_TIME TimeStamp;
326 } Quality;
328 typedef IQualityControl *PQUALITYCONTROL;
331 object,
332 uuid(56a868a5-0ad4-11ce-b03a-0020af0ba770),
333 pointer_default(unique)
335 interface IQualityControl : IUnknown
337 HRESULT Notify
338 ( [in] IBaseFilter * pSelf,
339 [in] Quality q
342 HRESULT SetSink
343 ( [in] IQualityControl * piqc
347 enum
349 CK_NOCOLORKEY = 0x0,
350 CK_INDEX = 0x1,
351 CK_RGB = 0x2
354 typedef struct tagCOLORKEY
356 DWORD KeyType;
357 DWORD PaletteIndex;
358 COLORREF LowColorValue;
359 COLORREF HighColorValue;
360 } COLORKEY;
362 enum
364 ADVISE_NONE = 0x0,
365 ADVISE_CLIPPING = 0x1,
366 ADVISE_PALETTE = 0x2,
367 ADVISE_COLORKEY = 0x4,
368 ADVISE_POSITION = 0x8,
369 ADVISE_DISPLAY_CHANGE = 0x10
372 const DWORD ADVISE_ALL = ADVISE_CLIPPING |
373 ADVISE_PALETTE |
374 ADVISE_COLORKEY |
375 ADVISE_POSITION;
377 const DWORD ADVISE_ALL2 = ADVISE_ALL |
378 ADVISE_DISPLAY_CHANGE;
380 cpp_quote("#ifndef _WINGDI_")
382 /* already defined in wingdi.h, but needed for WIDL */
384 typedef struct _RGNDATAHEADER
386 DWORD dwSize;
387 DWORD iType;
388 DWORD nCount;
389 DWORD nRgnSize;
390 RECT rcBound;
391 } RGNDATAHEADER;
393 typedef struct _RGNDATA
395 RGNDATAHEADER rdh;
396 char Buffer[1];
397 } RGNDATA;
399 cpp_quote("#endif /* _WINGDI_ */")
402 object,
403 local,
404 uuid(56a868a0-0ad4-11ce-b03a-0020af0ba770),
405 pointer_default(unique)
407 interface IOverlayNotify : IUnknown
409 HRESULT OnPaletteChange(
410 [in] DWORD dwColors,
411 [in] const PALETTEENTRY *pPalette);
413 HRESULT OnClipChange(
414 [in] const RECT *pSourceRect,
415 [in] const RECT *pDestinationRect,
416 [in] const RGNDATA *pRgnData);
418 HRESULT OnColorKeyChange([in] const COLORKEY *pColorKey);
420 HRESULT OnPositionChange([in] const RECT *pSourceRect,
421 [in] const RECT *pDestinationRect);
424 typedef IOverlayNotify *POVERLAYNOTIFY;
426 cpp_quote("#if 0")
427 typedef HANDLE HMONITOR;
428 cpp_quote("#endif /* 0 */")
431 object,
432 local,
433 uuid(680EFA10-D535-11D1-87C8-00A0C9223196),
434 pointer_default(unique)
436 interface IOverlayNotify2 : IOverlayNotify
438 HRESULT OnDisplayChange(
439 HMONITOR hMonitor);
442 typedef IOverlayNotify2 *POVERLAYNOTIFY2;
445 object,
446 local,
447 uuid(56a868a1-0ad4-11ce-b03a-0020af0ba770),
448 pointer_default(unique)
450 interface IOverlay : IUnknown
452 HRESULT GetPalette(
453 [out] DWORD *pdwColors,
454 [out] PALETTEENTRY **ppPalette);
456 HRESULT SetPalette(
457 [in] DWORD dwColors,
458 [in] PALETTEENTRY *pPalette);
460 HRESULT GetDefaultColorKey([out] COLORKEY *pColorKey);
462 HRESULT GetColorKey([out] COLORKEY *pColorKey);
464 HRESULT SetColorKey([in,out] COLORKEY *pColorKey);
466 HRESULT GetWindowHandle([out] HWND *pHwnd);
468 HRESULT GetClipList([out] RECT *pSourceRect,
469 [out] RECT *pDestinationRect,
470 [out] RGNDATA **ppRgnData);
472 HRESULT GetVideoPosition([out] RECT *pSourceRect,
473 [out] RECT *pDestinationRect);
475 HRESULT Advise(
476 [in] IOverlayNotify *pOverlayNotify,
477 [in] DWORD dwInterests);
479 HRESULT Unadvise();
482 typedef IOverlay *POVERLAY;
485 object,
486 uuid(56a868a2-0ad4-11ce-b03a-0020af0ba770),
487 pointer_default(unique)
489 interface IMediaEventSink : IUnknown
491 HRESULT Notify(
492 [in] LONG EventCode,
493 [in] LONG_PTR EventParam1,
494 [in] LONG_PTR EventParam2
498 typedef IMediaEventSink *PMEDIAEVENTSINK;
501 object,
502 uuid(56a868a6-0ad4-11ce-b03a-0020af0ba770),
503 pointer_default(unique)
505 interface IFileSourceFilter : IUnknown
507 HRESULT Load(
508 [in] LPCOLESTR pszFileName,
509 [in, unique] const AM_MEDIA_TYPE *pmt
512 HRESULT GetCurFile(
513 [out] LPOLESTR *ppszFileName,
514 [out] AM_MEDIA_TYPE *pmt
518 typedef IFileSourceFilter *PFILTERFILESOURCE;
521 object,
522 uuid(a2104830-7c70-11cf-8bce-00aa00a3f1a6),
523 pointer_default(unique)
525 interface IFileSinkFilter : IUnknown
527 HRESULT SetFileName(
528 [in] LPCOLESTR pszFileName,
529 [in, unique] const AM_MEDIA_TYPE *pmt
532 HRESULT GetCurFile(
533 [out] LPOLESTR *ppszFileName,
534 [out] AM_MEDIA_TYPE *pmt
538 typedef IFileSinkFilter *PFILTERFILESINK;
541 object,
542 uuid(00855B90-CE1B-11d0-BD4F-00A0C911CE86),
543 pointer_default(unique)
545 interface IFileSinkFilter2 : IFileSinkFilter
547 HRESULT SetMode(
548 [in] DWORD dwFlags
551 HRESULT GetMode(
552 [out] DWORD *pdwFlags
556 typedef IFileSinkFilter2 *PFILESINKFILTER2;
558 typedef enum
560 AM_FILE_OVERWRITE = 0x00000001,
561 } AM_FILESINK_FLAGS;
564 object,
565 uuid(56a868a9-0ad4-11ce-b03a-0020af0ba770),
566 pointer_default(unique)
568 interface IGraphBuilder : IFilterGraph
570 HRESULT Connect
571 ( [in] IPin * ppinOut,
572 [in] IPin * ppinIn
575 HRESULT Render
576 ( [in] IPin * ppinOut
579 HRESULT RenderFile
580 ( [in] LPCWSTR lpcwstrFile,
581 [in, unique] LPCWSTR lpcwstrPlayList
584 HRESULT AddSourceFilter
585 ( [in] LPCWSTR lpcwstrFileName,
586 [in, unique] LPCWSTR lpcwstrFilterName,
587 [out] IBaseFilter* *ppFilter
590 HRESULT SetLogFile
591 ( [in] DWORD_PTR hFile
594 HRESULT Abort();
596 HRESULT ShouldOperationContinue();
601 object,
602 uuid(bf87b6e0-8c27-11d0-b3f0-00aa003761c5),
603 pointer_default(unique)
605 interface ICaptureGraphBuilder : IUnknown {
607 HRESULT SetFiltergraph(
608 [in] IGraphBuilder *pfg);
610 HRESULT GetFiltergraph(
611 [out] IGraphBuilder **ppfg);
613 HRESULT SetOutputFileName(
614 [in] const GUID *pType,
615 [in] LPCOLESTR lpstrFile,
616 [out] IBaseFilter **ppf,
617 [out] IFileSinkFilter **ppSink);
619 [local] HRESULT FindInterface(
620 [in, unique] const GUID *pCategory,
621 [in] IBaseFilter *pf,
622 [in] REFIID riid,
623 [out] void **ppint);
625 [call_as(FindInterface)] HRESULT RemoteFindInterface(
626 [in, unique] const GUID *pCategory,
627 [in] IBaseFilter *pf,
628 [in] REFIID riid,
629 [out] IUnknown **ppint);
631 HRESULT RenderStream(
632 [in] const GUID *pCategory,
633 [in] IUnknown *pSource,
634 [in] IBaseFilter *pfCompressor,
635 [in] IBaseFilter *pfRenderer);
637 HRESULT ControlStream(
638 [in] const GUID *pCategory,
639 [in] IBaseFilter *pFilter,
640 [in] REFERENCE_TIME *pstart,
641 [in] REFERENCE_TIME *pstop,
642 [in] WORD wStartCookie,
643 [in] WORD wStopCookie);
645 HRESULT AllocCapFile(
646 [in] LPCOLESTR lpstr,
647 [in] DWORDLONG dwlSize);
649 HRESULT CopyCaptureFile(
650 [in] LPOLESTR lpwstrOld,
651 [in] LPOLESTR lpwstrNew,
652 [in] int fAllowEscAbort,
653 [in] IAMCopyCaptureFileProgress *pCallback);
657 object,
658 uuid(670d1d20-a068-11d0-b3f0-00aa003761c5),
659 pointer_default(unique)
661 interface IAMCopyCaptureFileProgress : IUnknown
663 HRESULT Progress(
664 [in] int iProgress);
668 object,
669 uuid(93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D),
670 pointer_default(unique)
672 interface ICaptureGraphBuilder2 : IUnknown
674 HRESULT SetFiltergraph(
675 [in] IGraphBuilder *pfg);
677 HRESULT GetFiltergraph(
678 [out] IGraphBuilder **ppfg);
680 HRESULT SetOutputFileName(
681 [in] const GUID *pType,
682 [in] LPCOLESTR lpstrFile,
683 [out] IBaseFilter **ppf,
684 [out] IFileSinkFilter **ppSink);
686 [local] HRESULT FindInterface(
687 [in] const GUID *pCategory,
688 [in] const GUID *pType,
689 [in] IBaseFilter *pf,
690 [in] REFIID riid,
691 [out] void **ppint);
693 [call_as(FindInterface)] HRESULT RemoteFindInterface(
694 [in] const GUID *pCategory,
695 [in] const GUID *pType,
696 [in] IBaseFilter *pf,
697 [in] REFIID riid,
698 [out] IUnknown **ppint);
700 HRESULT RenderStream(
701 [in] const GUID *pCategory,
702 [in] const GUID *pType,
703 [in] IUnknown *pSource,
704 [in] IBaseFilter *pfCompressor,
705 [in] IBaseFilter *pfRenderer);
707 HRESULT ControlStream(
708 [in] const GUID *pCategory,
709 [in] const GUID *pType,
710 [in] IBaseFilter *pFilter,
711 [in] REFERENCE_TIME *pstart,
712 [in] REFERENCE_TIME *pstop,
713 [in] WORD wStartCookie,
714 [in] WORD wStopCookie);
716 HRESULT AllocCapFile(
717 [in] LPCOLESTR lpstr,
718 [in] DWORDLONG dwlSize);
720 HRESULT CopyCaptureFile(
721 [in] LPOLESTR lpwstrOld,
722 [in] LPOLESTR lpwstrNew,
723 [in] int fAllowEscAbort,
724 [in] IAMCopyCaptureFileProgress *pCallback);
726 HRESULT FindPin(
727 [in] IUnknown *pSource,
728 [in] PIN_DIRECTION pindir,
729 [in] const GUID *pCategory,
730 [in] const GUID *pType,
731 [in] BOOL fUnconnected,
732 [in] int num,
733 [out] IPin **ppPin);
737 local,
738 object,
739 uuid(5acd6aa0-f482-11ce-8b67-00aa00a3f1a6),
740 pointer_default(unique)
742 interface IConfigAviMux : IUnknown
744 HRESULT SetMasterStream(
745 [in] LONG iStream);
747 HRESULT GetMasterStream(
748 [out] LONG *pStream);
750 HRESULT SetOutputCompatibilityIndex(
751 [in] BOOL fOldIndex);
753 HRESULT GetOutputCompatibilityIndex(
754 [out] BOOL *pfOldIndex);
758 local,
759 object,
760 uuid(bee3d220-157b-11d0-bd23-00a0c911ce86),
761 pointer_default(unique)
763 interface IConfigInterleaving : IUnknown
765 typedef enum InterleavingMode {
766 INTERLEAVE_NONE,
767 INTERLEAVE_CAPTURE,
768 INTERLEAVE_FULL,
769 INTERLEAVE_NONE_BUFFERED
770 } InterleavingMode;
772 HRESULT put_Mode(
773 [in] InterleavingMode mode);
775 HRESULT get_Mode(
776 [out] InterleavingMode *pMode);
778 HRESULT put_Interleaving(
779 [in] const REFERENCE_TIME *prtInterleave,
780 [in] const REFERENCE_TIME *prtPreroll);
782 HRESULT get_Interleaving(
783 [out] REFERENCE_TIME *prtInterleave,
784 [out] REFERENCE_TIME *prtPreroll);
788 local,
789 object,
790 uuid(9fd52741-176d-4b36-8f51-ca8f933223be),
791 pointer_default(unique)
793 interface IAMClockSlave : IUnknown
795 HRESULT SetErrorTolerance(
796 [in] DWORD dwTolerance);
798 HRESULT GetErrorTolerance(
799 [out] DWORD *pdwTolerance);
802 typedef struct _AMCOPPSignature {
803 BYTE Signature[256];
804 } AMCOPPSignature;
806 typedef struct _AMCOPPCommand {
807 GUID macKDI;
808 GUID guidCommandID;
809 DWORD dwSequence;
810 DWORD bSizeData;
811 BYTE CommandData[4056];
812 } AMCOPPCommand, *LPAMCOPPCommand;
814 typedef struct _AMCOPPStatusInput {
815 GUID rApp;
816 GUID guidStatusRequestID;
817 DWORD dwSequence;
818 DWORD cbSizeData;
819 BYTE StatusData[4056];
820 } AMCOPPStatusInput, *LPAMCOPPStatusInput;
822 typedef struct _AMCOPPStatusOutput {
823 GUID macKDI;
824 DWORD cbSizeData;
825 BYTE COPPStatus[4076];
826 } AMCOPPStatusOutput, *LPAMCOPPStatusOutput;
829 local,
830 object,
831 uuid(6feded3e-0ff1-4901-a2f1-43f7012c8515),
832 pointer_default(unique)
834 interface IAMCertifiedOutputProtection : IUnknown
836 HRESULT KeyExchange (
837 [out] GUID* pRandom,
838 [out] BYTE** VarLenCertGH,
839 [out] DWORD* pdwLengthCertGH);
841 HRESULT SessionSequenceStart(
842 [in] AMCOPPSignature* pSig);
844 HRESULT ProtectionCommand(
845 [in] const AMCOPPCommand* cmd);
847 HRESULT ProtectionStatus(
848 [in] const AMCOPPStatusInput* pStatusInput,
849 [out] AMCOPPStatusOutput* pStatusOutput);
852 enum _AM_RENSDEREXFLAGS
854 AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x01
858 object,
859 uuid(36b73882-c2c8-11cf-8b46-00805f6cef60),
860 pointer_default(unique)
862 interface IFilterGraph2: IGraphBuilder
864 HRESULT AddSourceFilterForMoniker(
865 [in] IMoniker *pMoniker,
866 [in] IBindCtx *pCtx,
867 [in, unique] LPCWSTR lpcwstrFilterName,
868 [out] IBaseFilter **ppFilter
871 HRESULT ReconnectEx
872 ( [in] IPin * ppin,
873 [in, unique] const AM_MEDIA_TYPE *pmt
876 HRESULT RenderEx( [in] IPin *pPinOut,
877 [in] DWORD dwFlags,
878 [in, out] DWORD *pvContext
883 object,
884 local,
885 uuid(56a868bf-0ad4-11ce-b03a-0020af0ba770),
886 pointer_default(unique)
888 interface IStreamBuilder : IUnknown
890 HRESULT Render
891 ( [in] IPin * ppinOut,
892 [in] IGraphBuilder * pGraph
895 HRESULT Backout
896 ( [in] IPin * ppinOut,
897 [in] IGraphBuilder * pGraph
902 /*****************************************************************************
903 * IAMStreamConfig interface
906 object,
907 uuid(c6e13340-30ac-11d0-a18c-00a0c9118956),
908 pointer_default(unique)
910 interface IAMStreamConfig : IUnknown
912 typedef struct _VIDEO_STREAM_CONFIG_CAPS {
913 GUID guid;
914 ULONG VideoStandard;
915 SIZE InputSize;
916 SIZE MinCroppingSize;
917 SIZE MaxCroppingSize;
918 int CropGranularityX;
919 int CropGranularityY;
920 int CropAlignX;
921 int CropAlignY;
922 SIZE MinOutputSize;
923 SIZE MaxOutputSize;
924 int OutputGranularityX;
925 int OutputGranularityY;
926 int StretchTapsX;
927 int StretchTapsY;
928 int ShrinkTapsX;
929 int ShrinkTapsY;
930 LONGLONG MinFrameInterval;
931 LONGLONG MaxFrameInterval;
932 LONG MinBitsPerSecond;
933 LONG MaxBitsPerSecond;
934 } VIDEO_STREAM_CONFIG_CAPS;
936 typedef struct _AUDIO_STREAM_CONFIG_CAPS {
937 GUID guid;
938 ULONG MinimumChannels;
939 ULONG MaximumChannels;
940 ULONG ChannelsGranularity;
941 ULONG MinimumBitsPerSample;
942 ULONG MaximumBitsPerSample;
943 ULONG BitsPerSampleGranularity;
944 ULONG MinimumSampleFrequency;
945 ULONG MaximumSampleFrequency;
946 ULONG SampleFrequencyGranularity;
947 } AUDIO_STREAM_CONFIG_CAPS;
949 HRESULT SetFormat( [in] AM_MEDIA_TYPE *pmt);
950 HRESULT GetFormat( [in] AM_MEDIA_TYPE **pmt);
951 HRESULT GetNumberOfCapabilities( [out] int *piCount, [out] int *piSize);
952 HRESULT GetStreamCaps( [in] int iIndex, [out] AM_MEDIA_TYPE **pmt,
953 [out] BYTE *pSCC);
957 typedef enum tagVideoProcAmpProperty
959 VideoProcAmp_Brightness,
960 VideoProcAmp_Contrast,
961 VideoProcAmp_Hue,
962 VideoProcAmp_Saturation,
963 VideoProcAmp_Sharpness,
964 VideoProcAmp_Gamma,
965 VideoProcAmp_ColorEnable,
966 VideoProcAmp_WhiteBalance,
967 VideoProcAmp_BacklightCompensation,
968 VideoProcAmp_Gain
969 } VideoProcAmpProperty;
971 typedef enum tagVideoProcAmpFlags
973 VideoProcAmp_Flags_Auto = 0x0001,
974 VideoProcAmp_Flags_Manual = 0x0002,
975 } VideoProcAmpFlags;
977 /*****************************************************************************
978 * IAMVideoProcAmp interface
981 object,
982 uuid(c6e13360-30ac-11d0-a18c-00a0c9118956),
983 pointer_default(unique)
985 interface IAMVideoProcAmp : IUnknown
987 HRESULT GetRange( [in] LONG Property, [out] LONG *pMin, [out] LONG *pMax,
988 [out] LONG *pSteppingDelta, [out] LONG *pDefault,
989 [out] LONG *pCapsFlags);
990 HRESULT Set( [in] LONG Property, [in] LONG lValue, [in] LONG Flags);
991 HRESULT Get( [in] LONG Property, [out] LONG *lValue, [out] LONG *Flags);
996 object,
997 uuid(56a868aa-0ad4-11ce-b03a-0020af0ba770),
998 pointer_default(unique)
1000 interface IAsyncReader : IUnknown
1002 HRESULT RequestAllocator(
1003 [in] IMemAllocator* pPreferred,
1004 [in] ALLOCATOR_PROPERTIES* pProps,
1005 [out] IMemAllocator ** ppActual);
1007 HRESULT Request(
1008 [in] IMediaSample* pSample,
1009 [in] DWORD_PTR dwUser);
1011 HRESULT WaitForNext(
1012 [in] DWORD dwTimeout,
1013 [out] IMediaSample** ppSample,
1014 [out] DWORD_PTR * pdwUser);
1016 HRESULT SyncReadAligned(
1017 [in] IMediaSample* pSample);
1019 HRESULT SyncRead(
1020 [in] LONGLONG llPosition,
1021 [in] LONG lLength,
1022 [out, size_is(lLength)]
1023 BYTE* pBuffer);
1025 HRESULT Length(
1026 [out] LONGLONG* pTotal,
1027 [out] LONGLONG* pAvailable);
1029 HRESULT BeginFlush(void);
1031 HRESULT EndFlush(void);
1036 object,
1037 uuid(56a868ab-0ad4-11ce-b03a-0020af0ba770),
1038 pointer_default(unique)
1040 interface IGraphVersion : IUnknown
1042 HRESULT QueryVersion(LONG* pVersion);
1046 object,
1047 uuid(56a868ad-0ad4-11ce-b03a-0020af0ba770),
1048 pointer_default(unique)
1050 interface IResourceConsumer : IUnknown
1052 HRESULT AcquireResource(
1053 [in] LONG idResource);
1055 HRESULT ReleaseResource(
1056 [in] LONG idResource);
1061 object,
1062 uuid(56a868ac-0ad4-11ce-b03a-0020af0ba770),
1063 pointer_default(unique)
1065 interface IResourceManager : IUnknown
1067 HRESULT Register(
1068 [in] LPCWSTR pName,
1069 [in] LONG cResource,
1070 [out] LONG* plToken
1073 HRESULT RegisterGroup(
1074 [in] LPCWSTR pName,
1075 [in] LONG cResource,
1076 [in, size_is(cResource)]
1077 LONG* palTokens,
1078 [out] LONG* plToken
1081 HRESULT RequestResource(
1082 [in] LONG idResource,
1083 [in] IUnknown* pFocusObject,
1084 [in] IResourceConsumer* pConsumer
1087 HRESULT NotifyAcquire(
1088 [in] LONG idResource,
1089 [in] IResourceConsumer* pConsumer,
1090 [in] HRESULT hr);
1092 HRESULT NotifyRelease(
1093 [in] LONG idResource,
1094 [in] IResourceConsumer* pConsumer,
1095 [in] BOOL bStillWant);
1097 HRESULT CancelRequest(
1098 [in] LONG idResource,
1099 [in] IResourceConsumer* pConsumer);
1101 HRESULT SetFocus(
1102 [in] IUnknown* pFocusObject);
1104 HRESULT ReleaseFocus(
1105 [in] IUnknown* pFocusObject);
1109 typedef enum AM_STREAM_INFO_FLAGS
1111 AM_STREAM_INFO_START_DEFINED = 0x01,
1112 AM_STREAM_INFO_STOP_DEFINED = 0x02,
1113 AM_STREAM_INFO_DISCARDING = 0x04,
1114 AM_STREAM_INFO_STOP_SEND_EXTRA = 0x10
1115 } AM_STREAM_INFO_FLAGS;
1117 typedef struct AM_STREAM_INFO
1119 REFERENCE_TIME tStart;
1120 REFERENCE_TIME tStop;
1121 DWORD dwStartCookie;
1122 DWORD dwStopCookie;
1123 DWORD dwFlags;
1124 } AM_STREAM_INFO;
1127 local,
1128 object,
1129 uuid(36b73881-c2c8-11cf-8b46-00805f6cef60),
1130 pointer_default(unique)
1132 interface IAMStreamControl : IUnknown
1134 HRESULT StartAt(
1135 [in] const REFERENCE_TIME *ptStart,
1136 [in] DWORD dwCookie);
1138 HRESULT StopAt(
1139 [in] const REFERENCE_TIME *ptStop,
1140 [in] BOOL bSendExtra,
1141 [in] DWORD dwCookie);
1143 HRESULT GetInfo(
1144 [out] AM_STREAM_INFO *pInfo);
1147 cpp_quote("#ifndef _IKsPropertySet_")
1148 cpp_quote("#define _IKsPropertySet_")
1149 cpp_quote("#define KSPROPERTY_SUPPORT_GET 1")
1150 cpp_quote("#define KSPROPERTY_SUPPORT_SET 2")
1153 object,
1154 uuid(31efac30-515c-11d0-a9aa-00aa0061be93),
1155 pointer_default(unique),
1156 local
1158 interface IKsPropertySet : IUnknown
1160 HRESULT Set( [in] REFGUID guidPropSet,
1161 [in] DWORD dwPropID,
1162 [in, size_is(cbInstanceData)] LPVOID pInstanceData,
1163 [in] DWORD cbInstanceData,
1164 [in, size_is(cbPropData)] LPVOID pPropData,
1165 [in] DWORD cbPropData );
1167 HRESULT Get( [in] REFGUID guidPropSet,
1168 [in] DWORD dwPropID,
1169 [in, size_is(cbInstanceData)] LPVOID pInstanceData,
1170 [in] DWORD cbInstanceData,
1171 [out, size_is(cbPropData)] LPVOID pPropData,
1172 [in] DWORD cbPropData,
1173 [out] DWORD *pcbReturned );
1175 HRESULT QuerySupported( [in] REFGUID guidPropSet,
1176 [in] DWORD dwPropID,
1177 [out] DWORD *pTypeSupport);
1179 cpp_quote("#endif /* _IKsPropertySet_ */")
1182 local,
1183 object,
1184 uuid(6025a880-c0d5-11d0-bd4e-00a0c911ce86),
1185 pointer_default(unique)
1187 interface IMediaPropertyBag : IPropertyBag
1189 typedef IMediaPropertyBag *LPMEDIAPROPERTYBAG;
1191 HRESULT EnumProperty(
1192 [in] ULONG iProperty,
1193 [in, out] VARIANT *pvarPropertyName,
1194 [in, out] VARIANT *pvarPropertyValue);
1199 local,
1200 object,
1201 uuid(5738e040-b67f-11d0-bd4d-00a0c911ce86),
1202 pointer_default(unique)
1204 interface IPersistMediaPropertyBag : IPersist
1206 HRESULT InitNew(void);
1208 HRESULT Load(
1209 [in] IMediaPropertyBag *pPropBag,
1210 [in] IErrorLog *pErrorLog);
1212 HRESULT Save(
1213 [in] IMediaPropertyBag *pPropBag,
1214 [in] BOOL fClearDirty,
1215 [in] BOOL fSaveAllProperties);
1217 typedef IPersistMediaPropertyBag *LPPERSISTMEDIAPROPERTYBAG;
1221 object,
1222 uuid(36b73883-c2c8-11cf-8b46-00805f6cef60),
1223 pointer_default(unique)
1225 interface ISeekingPassThru : IUnknown
1227 HRESULT Init( [in] BOOL bSupportRendering, [in] IPin *pPin);
1230 enum _AM_FILTER_MISC_FLAGS
1232 AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x1,
1233 AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x2
1237 local,
1238 object,
1239 uuid(2dd74950-a890-11d1-abe8-00a0c905f375),
1240 pointer_default(unique)
1242 interface IAMFilterMiscFlags : IUnknown
1244 ULONG GetMiscFlags();
1248 local,
1249 object,
1250 uuid(4995f511-9ddb-4f12-bd3b-f04611807b79),
1251 pointer_default(unique)
1253 interface IAMGraphBuilderCallback : IUnknown
1255 HRESULT SelectedFilter(
1256 [in] IMoniker *pMon);
1258 HRESULT CreatedFilter(
1259 [in] IBaseFilter *pFil);