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 IAMCopyCaptureFileProgress;
27 interface IAMCrossbar;
28 interface IAMDevMemoryAllocator;
29 interface IAMDevMemoryControl;
30 interface IAMDroppedFrames;
31 interface IAMExtDevice;
32 interface IAMExtTransport;
33 interface IAMGraphStreams;
35 interface IAMOpenProgress;
36 interface IAMOverlayFX;
37 interface IAMPhysicalPinInfo;
38 interface IAMPushSource;
39 interface IAMStreamConfig;
40 interface IAMTimecodeDisplay;
41 interface IAMTimecodeGenerator;
42 interface IAMTimecodeReader;
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;
69 interface IOverlayNotify;
70 interface IOverlayNotify2;
71 interface IQualityControl;
72 interface ISeekingPassThru;
82 uuid(56a868a4-0ad4-11ce-b03a-0020af0ba770),
83 pointer_default(unique)
85 interface IEnumRegFilters : IUnknown
88 ( [in] ULONG cFilters,
89 [out] REGFILTER ** apRegFilter,
90 [out] ULONG * pcFetched
100 [out] IEnumRegFilters **ppEnum
105 typedef IEnumRegFilters *PENUMREGFILTERS;
109 uuid(56a868a3-0ad4-11ce-b03a-0020af0ba770),
110 pointer_default(unique)
112 interface IFilterMapper : IUnknown
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
122 HRESULT RegisterFilter
128 HRESULT RegisterFilterInstance
142 [in] CLSID ConnectsToFilter,
143 [in] LPCWSTR ConnectsToPin
146 HRESULT RegisterPinType
147 ( [in] CLSID clsFilter,
148 [in] LPCWSTR strName,
149 [in] CLSID clsMajorType,
150 [in] CLSID clsSubType
154 HRESULT UnregisterFilter
159 HRESULT UnregisterFilterInstance
164 HRESULT UnregisterPin
169 HRESULT EnumMatchingFilters
170 ( [out] IEnumRegFilters **ppEnum,
172 [in] BOOL bInputNeeded,
176 [in] BOOL bOututNeeded,
177 [in] CLSID clsOutMaj,
185 const CLSID * clsMajorType;
186 const CLSID * clsMinorType;
196 const CLSID * clsConnectsToFilter;
197 const WCHAR * strConnectsToPin;
199 const REGPINTYPES * lpMediaType;
211 REG_PINFLAG_B_ZERO = 0x1,
212 REG_PINFLAG_B_RENDERER = 0x2,
213 REG_PINFLAG_B_MANY = 0x4,
214 REG_PINFLAG_B_OUTPUT = 0x8
223 [size_is(nMediaTypes)] const REGPINTYPES * lpMediaType;
225 [size_is(nMediums)] const REGPINMEDIUM *lpMedium;
226 const CLSID *clsPinCategory;
233 [switch_is(dwVersion)] [switch_type(DWORD)] union
239 [size_is(cPins)] const REGFILTERPINS *rgPins;
246 [size_is(cPins2)] const REGFILTERPINS2 *rgPins2;
258 uuid(b79bb0b0-33c1-11d1-abe1-00a0c905f375),
259 pointer_default(unique)
261 interface IFilterMapper2 : IUnknown
263 HRESULT CreateCategory
264 ( [in] REFCLSID clsidCategory,
265 [in] DWORD dwCategoryMerit,
266 [in] LPCWSTR Description
269 HRESULT UnregisterFilter
270 ( [in] const CLSID *pclsidCategory,
271 [in] LPCOLESTR szInstance,
275 HRESULT RegisterFilter
276 ( [in] REFCLSID clsidFilter,
278 [in, out] IMoniker **ppMoniker,
279 [in] const CLSID *pclsidCategory,
280 [in] LPCOLESTR szInstance,
281 [in] const REGFILTER2 *prf2
284 HRESULT EnumMatchingFilters
285 ( [out] IEnumMoniker **ppEnum,
287 [in] BOOL bExactMatch,
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,
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
305 uuid(b79bb0b1-33c1-11d1-abe1-00a0c905f375),
306 pointer_default(unique)
308 interface IFilterMapper3 : IFilterMapper2
310 HRESULT GetICreateDevEnum( [out] ICreateDevEnum **ppEnum );
313 typedef enum tagQualityMessageType
317 } QualityMessageType;
319 typedef struct tagQuality
321 QualityMessageType Type;
324 REFERENCE_TIME TimeStamp;
327 typedef IQualityControl *PQUALITYCONTROL;
331 uuid(56a868a5-0ad4-11ce-b03a-0020af0ba770),
332 pointer_default(unique)
334 interface IQualityControl : IUnknown
337 ( [in] IBaseFilter * pSelf,
342 ( [in] IQualityControl * piqc
353 typedef struct tagCOLORKEY
357 COLORREF LowColorValue;
358 COLORREF HighColorValue;
364 ADVISE_CLIPPING = 0x1,
365 ADVISE_PALETTE = 0x2,
366 ADVISE_COLORKEY = 0x4,
367 ADVISE_POSITION = 0x8,
368 ADVISE_DISPLAY_CHANGE = 0x10
371 const DWORD ADVISE_ALL = ADVISE_CLIPPING |
376 const DWORD ADVISE_ALL2 = ADVISE_ALL |
377 ADVISE_DISPLAY_CHANGE;
379 cpp_quote("#ifndef _WINGDI_")
381 /* already defined in wingdi.h, but needed for WIDL */
383 typedef struct _RGNDATAHEADER
392 typedef struct _RGNDATA
398 cpp_quote("#endif /* _WINGDI_ */")
403 uuid(56a868a0-0ad4-11ce-b03a-0020af0ba770),
404 pointer_default(unique)
406 interface IOverlayNotify : IUnknown
408 HRESULT OnPaletteChange(
410 [in] const PALETTEENTRY *pPalette);
412 HRESULT OnClipChange(
413 [in] const RECT *pSourceRect,
414 [in] const RECT *pDestinationRect,
415 [in] const RGNDATA *pRgnData);
417 HRESULT OnColorKeyChange([in] const COLORKEY *pColorKey);
419 HRESULT OnPositionChange([in] const RECT *pSourceRect,
420 [in] const RECT *pDestinationRect);
423 typedef IOverlayNotify *POVERLAYNOTIFY;
426 typedef HANDLE HMONITOR;
427 cpp_quote("#endif /* 0 */")
432 uuid(680EFA10-D535-11D1-87C8-00A0C9223196),
433 pointer_default(unique)
435 interface IOverlayNotify2 : IOverlayNotify
437 HRESULT OnDisplayChange(
441 typedef IOverlayNotify2 *POVERLAYNOTIFY2;
446 uuid(56a868a1-0ad4-11ce-b03a-0020af0ba770),
447 pointer_default(unique)
449 interface IOverlay : IUnknown
452 [out] DWORD *pdwColors,
453 [out] PALETTEENTRY **ppPalette);
457 [in] PALETTEENTRY *pPalette);
459 HRESULT GetDefaultColorKey([out] COLORKEY *pColorKey);
461 HRESULT GetColorKey([out] COLORKEY *pColorKey);
463 HRESULT SetColorKey([in,out] COLORKEY *pColorKey);
465 HRESULT GetWindowHandle([out] HWND *pHwnd);
467 HRESULT GetClipList([out] RECT *pSourceRect,
468 [out] RECT *pDestinationRect,
469 [out] RGNDATA **ppRgnData);
471 HRESULT GetVideoPosition([out] RECT *pSourceRect,
472 [out] RECT *pDestinationRect);
475 [in] IOverlayNotify *pOverlayNotify,
476 [in] DWORD dwInterests);
481 typedef IOverlay *POVERLAY;
485 uuid(56a868a2-0ad4-11ce-b03a-0020af0ba770),
486 pointer_default(unique)
488 interface IMediaEventSink : IUnknown
492 [in] LONG_PTR EventParam1,
493 [in] LONG_PTR EventParam2
497 typedef IMediaEventSink *PMEDIAEVENTSINK;
501 uuid(56a868a6-0ad4-11ce-b03a-0020af0ba770),
502 pointer_default(unique)
504 interface IFileSourceFilter : IUnknown
507 [in] LPCOLESTR pszFileName,
508 [in, unique] const AM_MEDIA_TYPE *pmt
512 [out] LPOLESTR *ppszFileName,
513 [out] AM_MEDIA_TYPE *pmt
517 typedef IFileSourceFilter *PFILTERFILESOURCE;
521 uuid(a2104830-7c70-11cf-8bce-00aa00a3f1a6),
522 pointer_default(unique)
524 interface IFileSinkFilter : IUnknown
527 [in] LPCOLESTR pszFileName,
528 [in, unique] const AM_MEDIA_TYPE *pmt
532 [out] LPOLESTR *ppszFileName,
533 [out] AM_MEDIA_TYPE *pmt
537 typedef IFileSinkFilter *PFILTERFILESINK;
541 uuid(00855B90-CE1B-11d0-BD4F-00A0C911CE86),
542 pointer_default(unique)
544 interface IFileSinkFilter2 : IFileSinkFilter
551 [out] DWORD *pdwFlags
555 typedef IFileSinkFilter2 *PFILESINKFILTER2;
559 uuid(f90a6130-b658-11d2-ae49-0000f8754b99),
560 pointer_default(unique)
562 interface IAMDeviceRemoval : IUnknown
565 [out] CLSID *pclsidInterfaceClass,
566 [out] LPWSTR *pwszSymbolicLink);
567 HRESULT Reassociate();
568 HRESULT Disassociate();
574 AM_FILE_OVERWRITE = 0x00000001,
579 uuid(56a868a9-0ad4-11ce-b03a-0020af0ba770),
580 pointer_default(unique)
582 interface IGraphBuilder : IFilterGraph
585 ( [in] IPin * ppinOut,
590 ( [in] IPin * ppinOut
594 ( [in] LPCWSTR lpcwstrFile,
595 [in, unique] LPCWSTR lpcwstrPlayList
598 HRESULT AddSourceFilter
599 ( [in] LPCWSTR lpcwstrFileName,
600 [in, unique] LPCWSTR lpcwstrFilterName,
601 [out] IBaseFilter* *ppFilter
605 ( [in] DWORD_PTR hFile
610 HRESULT ShouldOperationContinue();
616 uuid(bf87b6e0-8c27-11d0-b3f0-00aa003761c5),
617 pointer_default(unique)
619 interface ICaptureGraphBuilder : IUnknown {
621 HRESULT SetFiltergraph(
622 [in] IGraphBuilder *pfg);
624 HRESULT GetFiltergraph(
625 [out] IGraphBuilder **ppfg);
627 HRESULT SetOutputFileName(
628 [in] const GUID *pType,
629 [in] LPCOLESTR lpstrFile,
630 [out] IBaseFilter **ppf,
631 [out] IFileSinkFilter **ppSink);
633 [local] HRESULT FindInterface(
634 [in, unique] const GUID *pCategory,
635 [in] IBaseFilter *pf,
639 [call_as(FindInterface)] HRESULT RemoteFindInterface(
640 [in, unique] const GUID *pCategory,
641 [in] IBaseFilter *pf,
643 [out] IUnknown **ppint);
645 HRESULT RenderStream(
646 [in] const GUID *pCategory,
647 [in] IUnknown *pSource,
648 [in] IBaseFilter *pfCompressor,
649 [in] IBaseFilter *pfRenderer);
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);
659 HRESULT AllocCapFile(
660 [in] LPCOLESTR lpstr,
661 [in] DWORDLONG dwlSize);
663 HRESULT CopyCaptureFile(
664 [in] LPOLESTR lpwstrOld,
665 [in] LPOLESTR lpwstrNew,
666 [in] int fAllowEscAbort,
667 [in] IAMCopyCaptureFileProgress *pCallback);
672 uuid(670d1d20-a068-11d0-b3f0-00aa003761c5),
673 pointer_default(unique)
675 interface IAMCopyCaptureFileProgress : IUnknown
683 uuid(93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D),
684 pointer_default(unique)
686 interface ICaptureGraphBuilder2 : IUnknown
688 HRESULT SetFiltergraph(
689 [in] IGraphBuilder *pfg);
691 HRESULT GetFiltergraph(
692 [out] IGraphBuilder **ppfg);
694 HRESULT SetOutputFileName(
695 [in] const GUID *pType,
696 [in] LPCOLESTR lpstrFile,
697 [out] IBaseFilter **ppf,
698 [out] IFileSinkFilter **ppSink);
700 [local] HRESULT FindInterface(
701 [in] const GUID *pCategory,
702 [in] const GUID *pType,
703 [in] IBaseFilter *pf,
707 [call_as(FindInterface)] HRESULT RemoteFindInterface(
708 [in] const GUID *pCategory,
709 [in] const GUID *pType,
710 [in] IBaseFilter *pf,
712 [out] IUnknown **ppint);
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);
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);
730 HRESULT AllocCapFile(
731 [in] LPCOLESTR lpstr,
732 [in] DWORDLONG dwlSize);
734 HRESULT CopyCaptureFile(
735 [in] LPOLESTR lpwstrOld,
736 [in] LPOLESTR lpwstrNew,
737 [in] int fAllowEscAbort,
738 [in] IAMCopyCaptureFileProgress *pCallback);
741 [in] IUnknown *pSource,
742 [in] PIN_DIRECTION pindir,
743 [in] const GUID *pCategory,
744 [in] const GUID *pType,
745 [in] BOOL fUnconnected,
753 uuid(5acd6aa0-f482-11ce-8b67-00aa00a3f1a6),
754 pointer_default(unique)
756 interface IConfigAviMux : IUnknown
758 HRESULT SetMasterStream(
761 HRESULT GetMasterStream(
762 [out] LONG *pStream);
764 HRESULT SetOutputCompatibilityIndex(
765 [in] BOOL fOldIndex);
767 HRESULT GetOutputCompatibilityIndex(
768 [out] BOOL *pfOldIndex);
774 uuid(bee3d220-157b-11d0-bd23-00a0c911ce86),
775 pointer_default(unique)
777 interface IConfigInterleaving : IUnknown
779 typedef enum InterleavingMode {
783 INTERLEAVE_NONE_BUFFERED
787 [in] InterleavingMode mode);
790 [out] InterleavingMode *pMode);
792 HRESULT put_Interleaving(
793 [in] const REFERENCE_TIME *prtInterleave,
794 [in] const REFERENCE_TIME *prtPreroll);
796 HRESULT get_Interleaving(
797 [out] REFERENCE_TIME *prtInterleave,
798 [out] REFERENCE_TIME *prtPreroll);
804 uuid(9fd52741-176d-4b36-8f51-ca8f933223be),
805 pointer_default(unique)
807 interface IAMClockSlave : IUnknown
809 HRESULT SetErrorTolerance(
810 [in] DWORD dwTolerance);
812 HRESULT GetErrorTolerance(
813 [out] DWORD *pdwTolerance);
816 typedef struct _AMCOPPSignature {
820 typedef struct _AMCOPPCommand {
825 BYTE CommandData[4056];
826 } AMCOPPCommand, *LPAMCOPPCommand;
828 typedef struct _AMCOPPStatusInput {
830 GUID guidStatusRequestID;
833 BYTE StatusData[4056];
834 } AMCOPPStatusInput, *LPAMCOPPStatusInput;
836 typedef struct _AMCOPPStatusOutput {
839 BYTE COPPStatus[4076];
840 } AMCOPPStatusOutput, *LPAMCOPPStatusOutput;
845 uuid(6feded3e-0ff1-4901-a2f1-43f7012c8515),
846 pointer_default(unique)
848 interface IAMCertifiedOutputProtection : IUnknown
850 HRESULT KeyExchange (
852 [out] BYTE** VarLenCertGH,
853 [out] DWORD* pdwLengthCertGH);
855 HRESULT SessionSequenceStart(
856 [in] AMCOPPSignature* pSig);
858 HRESULT ProtectionCommand(
859 [in] const AMCOPPCommand* cmd);
861 HRESULT ProtectionStatus(
862 [in] const AMCOPPStatusInput* pStatusInput,
863 [out] AMCOPPStatusOutput* pStatusOutput);
866 enum _AM_RENSDEREXFLAGS
868 AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x01
873 uuid(36b73882-c2c8-11cf-8b46-00805f6cef60),
874 pointer_default(unique)
876 interface IFilterGraph2: IGraphBuilder
878 HRESULT AddSourceFilterForMoniker(
879 [in] IMoniker *pMoniker,
881 [in, unique] LPCWSTR lpcwstrFilterName,
882 [out] IBaseFilter **ppFilter
887 [in, unique] const AM_MEDIA_TYPE *pmt
890 HRESULT RenderEx( [in] IPin *pPinOut,
892 [in, out] DWORD *pvContext
899 uuid(56a868bf-0ad4-11ce-b03a-0020af0ba770),
900 pointer_default(unique)
902 interface IStreamBuilder : IUnknown
905 ( [in] IPin * ppinOut,
906 [in] IGraphBuilder * pGraph
910 ( [in] IPin * ppinOut,
911 [in] IGraphBuilder * pGraph
917 uuid(56a868af-0ad4-11ce-b03a-0020af0ba770),
918 pointer_default(unique)
920 interface IDistributorNotify : IUnknown
924 HRESULT Run(REFERENCE_TIME tStart);
925 HRESULT SetSyncSource([in] IReferenceClock * pClock);
926 HRESULT NotifyGraphChange(void);
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;
939 REFERENCE_TIME tStart;
940 REFERENCE_TIME tStop;
947 /*****************************************************************************
948 * IAMStreamConfig interface
952 uuid(c6e13340-30ac-11d0-a18c-00a0c9118956),
953 pointer_default(unique)
955 interface IAMStreamConfig : IUnknown
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,
965 typedef enum tagVideoProcAmpProperty
967 VideoProcAmp_Brightness,
968 VideoProcAmp_Contrast,
970 VideoProcAmp_Saturation,
971 VideoProcAmp_Sharpness,
973 VideoProcAmp_ColorEnable,
974 VideoProcAmp_WhiteBalance,
975 VideoProcAmp_BacklightCompensation,
977 } VideoProcAmpProperty;
979 typedef enum tagVideoProcAmpFlags
981 VideoProcAmp_Flags_Auto = 0x0001,
982 VideoProcAmp_Flags_Manual = 0x0002,
985 /*****************************************************************************
986 * IAMVideoProcAmp interface
990 uuid(c6e13360-30ac-11d0-a18c-00a0c9118956),
991 pointer_default(unique)
993 interface IAMVideoProcAmp : IUnknown
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);
1005 uuid(56a868aa-0ad4-11ce-b03a-0020af0ba770),
1006 pointer_default(unique)
1008 interface IAsyncReader : IUnknown
1010 HRESULT RequestAllocator(
1011 [in] IMemAllocator* pPreferred,
1012 [in] ALLOCATOR_PROPERTIES* pProps,
1013 [out] IMemAllocator ** ppActual);
1016 [in] IMediaSample* pSample,
1017 [in] DWORD_PTR dwUser);
1019 HRESULT WaitForNext(
1020 [in] DWORD dwTimeout,
1021 [out] IMediaSample** ppSample,
1022 [out] DWORD_PTR * pdwUser);
1024 HRESULT SyncReadAligned(
1025 [in] IMediaSample* pSample);
1028 [in] LONGLONG llPosition,
1030 [out, size_is(lLength)]
1034 [out] LONGLONG* pTotal,
1035 [out] LONGLONG* pAvailable);
1037 HRESULT BeginFlush(void);
1039 HRESULT EndFlush(void);
1045 uuid(56a868ab-0ad4-11ce-b03a-0020af0ba770),
1046 pointer_default(unique)
1048 interface IGraphVersion : IUnknown
1050 HRESULT QueryVersion(LONG* pVersion);
1055 uuid(56a868ad-0ad4-11ce-b03a-0020af0ba770),
1056 pointer_default(unique)
1058 interface IResourceConsumer : IUnknown
1060 HRESULT AcquireResource(
1061 [in] LONG idResource);
1063 HRESULT ReleaseResource(
1064 [in] LONG idResource);
1070 uuid(56a868ac-0ad4-11ce-b03a-0020af0ba770),
1071 pointer_default(unique)
1073 interface IResourceManager : IUnknown
1077 [in] LONG cResource,
1081 HRESULT RegisterGroup(
1083 [in] LONG cResource,
1084 [in, size_is(cResource)]
1089 HRESULT RequestResource(
1090 [in] LONG idResource,
1091 [in] IUnknown* pFocusObject,
1092 [in] IResourceConsumer* pConsumer
1095 HRESULT NotifyAcquire(
1096 [in] LONG idResource,
1097 [in] IResourceConsumer* pConsumer,
1100 HRESULT NotifyRelease(
1101 [in] LONG idResource,
1102 [in] IResourceConsumer* pConsumer,
1103 [in] BOOL bStillWant);
1105 HRESULT CancelRequest(
1106 [in] LONG idResource,
1107 [in] IResourceConsumer* pConsumer);
1110 [in] IUnknown* pFocusObject);
1112 HRESULT ReleaseFocus(
1113 [in] IUnknown* pFocusObject);
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")
1124 uuid(31efac30-515c-11d0-a9aa-00aa0061be93),
1125 pointer_default(unique),
1128 interface IKsPropertySet : IUnknown
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 );
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 );
1145 HRESULT QuerySupported( [in] REFGUID guidPropSet,
1146 [in] DWORD dwPropID,
1147 [out] DWORD *pTypeSupport);
1149 cpp_quote("#endif /* _IKsPropertySet_ */")
1153 uuid(36b73883-c2c8-11cf-8b46-00805f6cef60),
1154 pointer_default(unique)
1156 interface ISeekingPassThru : IUnknown
1158 HRESULT Init( [in] BOOL bSupportRendering, [in] IPin *pPin);
1164 uuid(4d5466b0-a49c-11d1-abe8-00a0c905f375),
1165 pointer_default(unique)
1168 interface IAMClockAdjust : IUnknown
1170 HRESULT SetClockDelta([in] REFERENCE_TIME rtDelta);
1174 enum _AM_FILTER_MISC_FLAGS
1176 AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x1,
1177 AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x2
1183 uuid(2dd74950-a890-11d1-abe8-00a0c905f375),
1184 pointer_default(unique)
1186 interface IAMFilterMiscFlags : IUnknown
1188 ULONG GetMiscFlags();
1194 uuid(4995f511-9ddb-4f12-bd3b-f04611807b79),
1195 pointer_default(unique)
1197 interface IAMGraphBuilderCallback : IUnknown
1199 HRESULT SelectedFilter(
1200 [in] IMoniker *pMon);
1202 HRESULT CreatedFilter(
1203 [in] IBaseFilter *pFil);
1209 uuid(56ED71A0-AF5F-11D0-B3F0-00AA003761C5),
1210 pointer_default(unique)
1212 interface IAMBufferNegotiation : IUnknown
1214 HRESULT SuggestAllocatorProperties (
1215 [in] const ALLOCATOR_PROPERTIES *pprop);
1217 HRESULT GetAllocatorProperties (
1218 [out] ALLOCATOR_PROPERTIES *pprop);
1222 #include <axextendenums.h>
1226 uuid(36b73881-c2c8-11cf-8b46-00805f6cef60),
1227 pointer_default(unique)
1229 interface IAMStreamControl : IUnknown
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);
1239 typedef enum tagTVAudioMode
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,