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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 interface IAMAnalogVideoDecoder
;
20 interface IAMAnalogVideoEncoder
;
21 interface IAMAudioInputMixer
;
22 interface IAMAudioRendererStats
;
23 interface IAMBufferNegotiation
;
24 interface IAMCameraControl
;
25 interface IAMCopyCaptureFileProgress
;
26 interface IAMCrossbar
;
27 interface IAMDevMemoryAllocator
;
28 interface IAMDevMemoryControl
;
29 interface IAMDroppedFrames
;
30 interface IAMExtDevice
;
31 interface IAMExtTransport
;
32 interface IAMGraphStreams
;
34 interface IAMOpenProgress
;
35 interface IAMOverlayFX
;
36 interface IAMPhysicalPinInfo
;
37 interface IAMPushSource
;
38 interface IAMStreamConfig
;
39 interface IAMTimecodeDisplay
;
40 interface IAMTimecodeGenerator
;
41 interface IAMTimecodeReader
;
43 interface IAMVfwCaptureDialogs
;
44 interface IAMVfwCompressDialogs
;
45 interface IAMVideoCompression
;
46 interface IAMVideoDecimationProperties
;
47 interface IAMVideoProcAmp
;
48 interface ICaptureGraphBuilder
;
49 interface ICaptureGraphBuilder2
;
50 interface IConfigAviMux
;
51 interface IConfigInterleaving
;
52 interface IDecimateVideoImage
;
53 interface IDrawVideoImage
;
54 interface IEnumRegFilters
;
55 interface IEnumStreamIdMap
;
56 interface IFileSourceFilter
;
57 interface IFileSinkFilter
;
58 interface IFileSinkFilter2
;
59 interface IFilterMapper
;
60 interface IFilterMapper2
;
61 interface IGraphBuilder
;
62 interface IKsPropertySet
;
63 interface IMediaEventSink
;
64 interface IMpeg2Demultiplexer
;
65 interface IMPEG2StreamIdMap
;
67 interface IOverlayNotify
;
68 interface IOverlayNotify2
;
69 interface IQualityControl
;
70 interface ISeekingPassThru
;
80 uuid(56a868a4
-0ad4
-11ce
-b03a
-0020af0ba770
),
81 pointer_default(unique)
83 interface IEnumRegFilters
: IUnknown
86 ( [in] ULONG cFilters
,
87 [out] REGFILTER
** apRegFilter
,
88 [out] ULONG
* pcFetched
98 [out] IEnumRegFilters
**ppEnum
103 typedef IEnumRegFilters
*PENUMREGFILTERS
;
107 uuid(56a868a3
-0ad4
-11ce
-b03a
-0020af0ba770
),
108 pointer_default(unique)
110 interface IFilterMapper
: IUnknown
112 enum { MERIT_PREFERRED
= 0x800000,
113 MERIT_NORMAL
= 0x600000,
114 MERIT_UNLIKELY
= 0x400000,
115 MERIT_DO_NOT_USE
= 0x200000,
116 MERIT_SW_COMPRESSOR
= 0x100000,
117 MERIT_HW_COMPRESSOR
= 0x100050
120 HRESULT RegisterFilter
126 HRESULT RegisterFilterInstance
140 [in] CLSID ConnectsToFilter
,
141 [in] LPCWSTR ConnectsToPin
144 HRESULT RegisterPinType
145 ( [in] CLSID clsFilter
,
146 [in] LPCWSTR strName
,
147 [in] CLSID clsMajorType
,
148 [in] CLSID clsSubType
152 HRESULT UnregisterFilter
157 HRESULT UnregisterFilterInstance
162 HRESULT UnregisterPin
167 HRESULT EnumMatchingFilters
168 ( [out] IEnumRegFilters
**ppEnum
,
170 [in] BOOL bInputNeeded
,
174 [in] BOOL bOututNeeded
,
175 [in] CLSID clsOutMaj
,
183 const CLSID
* clsMajorType
;
184 const CLSID
* clsMinorType
;
194 const CLSID
* clsConnectsToFilter
;
195 const WCHAR
* strConnectsToPin
;
197 const REGPINTYPES
* lpMediaType
;
209 REG_PINFLAG_B_ZERO
= 0x1,
210 REG_PINFLAG_B_RENDERER
= 0x2,
211 REG_PINFLAG_B_MANY
= 0x4,
212 REG_PINFLAG_B_OUTPUT
= 0x8
221 [size_is(nMediaTypes
)] const REGPINTYPES
* lpMediaType
;
223 [size_is(nMediums
)] const REGPINMEDIUM
*lpMedium
;
224 const CLSID
*clsPinCategory
;
231 [switch_is(dwVersion
)] [switch_type(DWORD
)] union
237 [size_is(cPins
)] const REGFILTERPINS
*rgPins
;
244 [size_is(cPins2
)] const REGFILTERPINS2
*rgPins2
;
256 uuid(b79bb0b0
-33c1
-11d1
-abe1
-00a0c905f375
),
257 pointer_default(unique)
259 interface IFilterMapper2
: IUnknown
261 HRESULT CreateCategory
262 ( [in] REFCLSID clsidCategory
,
263 [in] DWORD dwCategoryMerit
,
264 [in] LPCWSTR Description
267 HRESULT UnregisterFilter
268 ( [in] const CLSID
*pclsidCategory
,
269 [in] const OLECHAR
*szInstance
,
273 HRESULT RegisterFilter
274 ( [in] REFCLSID clsidFilter
,
276 [in, out] IMoniker
**ppMoniker
,
277 [in] const CLSID
*pclsidCategory
,
278 [in] const OLECHAR
*szInstance
,
279 [in] const REGFILTER2
*prf2
282 HRESULT EnumMatchingFilters
283 ( [out] IEnumMoniker
**ppEnum
,
285 [in] BOOL bExactMatch
,
287 [in] BOOL bInputNeeded
,
288 [in] DWORD cInputTypes
,
289 [size_is(cInputTypes
*2)] const GUID
*pInputTypes
,
290 [in] const REGPINMEDIUM
*pMedIn
,
291 [in] const CLSID
*pPinCategoryIn
,
293 [in] BOOL bOutputNeeded
,
294 [in] DWORD cOutputTypes
,
295 [size_is(cOutputTypes
*2)] const GUID
*pOutputTypes
,
296 [in] const REGPINMEDIUM
*pMedOut
,
297 [in] const CLSID
*pPinCategoryOut
303 uuid(b79bb0b1
-33c1
-11d1
-abe1
-00a0c905f375
),
304 pointer_default(unique)
306 interface IFilterMapper3
: IFilterMapper2
308 HRESULT GetICreateDevEnum
( [out] ICreateDevEnum
**ppEnum
);
311 typedef enum tagQualityMessageType
315 } QualityMessageType
;
317 typedef struct tagQuality
319 QualityMessageType Type
;
322 REFERENCE_TIME TimeStamp
;
325 typedef IQualityControl
*PQUALITYCONTROL
;
329 uuid(56a868a5
-0ad4
-11ce
-b03a
-0020af0ba770
),
330 pointer_default(unique)
332 interface IQualityControl
: IUnknown
335 ( [in] IBaseFilter
* pSelf
,
340 ( [in] IQualityControl
* piqc
351 typedef struct tagCOLORKEY
355 COLORREF LowColorValue
;
356 COLORREF HighColorValue
;
362 ADVISE_CLIPPING
= 0x1,
363 ADVISE_PALETTE
= 0x2,
364 ADVISE_COLORKEY
= 0x4,
365 ADVISE_POSITION
= 0x8,
366 ADVISE_DISPLAY_CHANGE
= 0x10
369 const DWORD ADVISE_ALL
= ADVISE_CLIPPING |
374 const DWORD ADVISE_ALL2
= ADVISE_ALL |
375 ADVISE_DISPLAY_CHANGE
;
377 cpp_quote
("#ifndef _WINGDI_")
379 /* already defined in wingdi.h, but needed for WIDL */
381 typedef struct _RGNDATAHEADER
390 typedef struct _RGNDATA
396 cpp_quote
("#endif /* _WINGDI_ */")
401 uuid(56a868a0
-0ad4
-11ce
-b03a
-0020af0ba770
),
402 pointer_default(unique)
404 interface IOverlayNotify
: IUnknown
406 HRESULT OnPaletteChange
(
408 [in] const PALETTEENTRY
*pPalette
);
410 HRESULT OnClipChange
(
411 [in] const RECT
*pSourceRect
,
412 [in] const RECT
*pDestinationRect
,
413 [in] const RGNDATA
*pRgnData
);
415 HRESULT OnColorKeyChange
([in] const COLORKEY
*pColorKey
);
417 HRESULT OnPositionChange
([in] const RECT
*pSourceRect
,
418 [in] const RECT
*pDestinationRect
);
421 typedef IOverlayNotify
*POVERLAYNOTIFY
;
424 typedef HANDLE HMONITOR
;
425 cpp_quote
("#endif /* 0 */")
430 uuid(680EFA10
-D535
-11D1
-87C8
-00A0C9223196
),
431 pointer_default(unique)
433 interface IOverlayNotify2
: IOverlayNotify
435 HRESULT OnDisplayChange
(
439 typedef IOverlayNotify2
*POVERLAYNOTIFY2
;
444 uuid(56a868a1
-0ad4
-11ce
-b03a
-0020af0ba770
),
445 pointer_default(unique)
447 interface IOverlay
: IUnknown
450 [out] DWORD
*pdwColors
,
451 [out] PALETTEENTRY
**ppPalette
);
455 [in] PALETTEENTRY
*pPalette
);
457 HRESULT GetDefaultColorKey
([out] COLORKEY
*pColorKey
);
459 HRESULT GetColorKey
([out] COLORKEY
*pColorKey
);
461 HRESULT SetColorKey
([in,out] COLORKEY
*pColorKey
);
463 HRESULT GetWindowHandle
([out] HWND
*pHwnd
);
465 HRESULT GetClipList
([out] RECT
*pSourceRect
,
466 [out] RECT
*pDestinationRect
,
467 [out] RGNDATA
**ppRgnData
);
469 HRESULT GetVideoPosition
([out] RECT
*pSourceRect
,
470 [out] RECT
*pDestinationRect
);
473 [in] IOverlayNotify
*pOverlayNotify
,
474 [in] DWORD dwInterests
);
479 typedef IOverlay
*POVERLAY
;
483 uuid(56a868a2
-0ad4
-11ce
-b03a
-0020af0ba770
),
484 pointer_default(unique)
486 interface IMediaEventSink
: IUnknown
490 [in] LONG_PTR EventParam1
,
491 [in] LONG_PTR EventParam2
495 typedef IMediaEventSink
*PMEDIAEVENTSINK
;
499 uuid(56a868a6
-0ad4
-11ce
-b03a
-0020af0ba770
),
500 pointer_default(unique)
502 interface IFileSourceFilter
: IUnknown
505 [in] LPCOLESTR pszFileName
,
506 [in, unique] const AM_MEDIA_TYPE
*pmt
510 [out] LPOLESTR
*ppszFileName
,
511 [out] AM_MEDIA_TYPE
*pmt
515 typedef IFileSourceFilter
*PFILTERFILESOURCE
;
519 uuid(a2104830
-7c70
-11cf
-8bce
-00aa00a3f1a6
),
520 pointer_default(unique)
522 interface IFileSinkFilter
: IUnknown
525 [in] LPCOLESTR pszFileName
,
526 [in, unique] const AM_MEDIA_TYPE
*pmt
530 [out] LPOLESTR
*ppszFileName
,
531 [out] AM_MEDIA_TYPE
*pmt
535 typedef IFileSinkFilter
*PFILTERFILESINK
;
539 uuid(00855B90
-CE1B
-11d0
-BD4F
-00A0C911CE86
),
540 pointer_default(unique)
542 interface IFileSinkFilter2
: IFileSinkFilter
549 [out] DWORD
*pdwFlags
553 typedef IFileSinkFilter2
*PFILESINKFILTER2
;
557 AM_FILE_OVERWRITE
= 0x00000001,
562 uuid(56a868a9
-0ad4
-11ce
-b03a
-0020af0ba770
),
563 pointer_default(unique)
565 interface IGraphBuilder
: IFilterGraph
568 ( [in] IPin
* ppinOut
,
573 ( [in] IPin
* ppinOut
577 ( [in] LPCWSTR lpcwstrFile
,
578 [in, unique] LPCWSTR lpcwstrPlayList
581 HRESULT AddSourceFilter
582 ( [in] LPCWSTR lpcwstrFileName
,
583 [in, unique] LPCWSTR lpcwstrFilterName
,
584 [out] IBaseFilter
* *ppFilter
588 ( [in] DWORD_PTR hFile
593 HRESULT ShouldOperationContinue
();
599 uuid(bf87b6e0
-8c27
-11d0
-b3f0
-00aa003761c5
),
600 pointer_default(unique)
602 interface ICaptureGraphBuilder
: IUnknown
{
604 HRESULT SetFiltergraph
(
605 [in] IGraphBuilder
*pfg
);
607 HRESULT GetFiltergraph
(
608 [out] IGraphBuilder
**ppfg
);
610 HRESULT SetOutputFileName
(
611 [in] const GUID
*pType
,
612 [in] LPCOLESTR lpstrFile
,
613 [out] IBaseFilter
**ppf
,
614 [out] IFileSinkFilter
**ppSink
);
616 [local] HRESULT FindInterface
(
617 [in, unique] const GUID
*pCategory
,
618 [in] IBaseFilter
*pf
,
622 [call_as
(FindInterface
)] HRESULT RemoteFindInterface
(
623 [in, unique] const GUID
*pCategory
,
624 [in] IBaseFilter
*pf
,
626 [out] IUnknown
**ppint
);
628 HRESULT RenderStream
(
629 [in] const GUID
*pCategory
,
630 [in] IUnknown
*pSource
,
631 [in] IBaseFilter
*pfCompressor
,
632 [in] IBaseFilter
*pfRenderer
);
634 HRESULT ControlStream
(
635 [in] const GUID
*pCategory
,
636 [in] IBaseFilter
*pFilter
,
637 [in] REFERENCE_TIME
*pstart
,
638 [in] REFERENCE_TIME
*pstop
,
639 [in] WORD wStartCookie
,
640 [in] WORD wStopCookie
);
642 HRESULT AllocCapFile
(
643 [in] LPCOLESTR lpstr
,
644 [in] DWORDLONG dwlSize
);
646 HRESULT CopyCaptureFile
(
647 [in] LPOLESTR lpwstrOld
,
648 [in] LPOLESTR lpwstrNew
,
649 [in] int fAllowEscAbort
,
650 [in] IAMCopyCaptureFileProgress
*pCallback
);
655 uuid(670d1d20
-a068
-11d0
-b3f0
-00aa003761c5
),
656 pointer_default(unique)
658 interface IAMCopyCaptureFileProgress
: IUnknown
666 uuid(93E5A4E0
-2D50
-11d2
-ABFA
-00A0C9C6E38D
),
667 pointer_default(unique)
669 interface ICaptureGraphBuilder2
: IUnknown
671 HRESULT SetFiltergraph
(
672 [in] IGraphBuilder
*pfg
);
674 HRESULT GetFiltergraph
(
675 [out] IGraphBuilder
**ppfg
);
677 HRESULT SetOutputFileName
(
678 [in] const GUID
*pType
,
679 [in] LPCOLESTR lpstrFile
,
680 [out] IBaseFilter
**ppf
,
681 [out] IFileSinkFilter
**ppSink
);
683 [local] HRESULT FindInterface
(
684 [in] const GUID
*pCategory
,
685 [in] const GUID
*pType
,
686 [in] IBaseFilter
*pf
,
690 [call_as
(FindInterface
)] HRESULT RemoteFindInterface
(
691 [in] const GUID
*pCategory
,
692 [in] const GUID
*pType
,
693 [in] IBaseFilter
*pf
,
695 [out] IUnknown
**ppint
);
697 HRESULT RenderStream
(
698 [in] const GUID
*pCategory
,
699 [in] const GUID
*pType
,
700 [in] IUnknown
*pSource
,
701 [in] IBaseFilter
*pfCompressor
,
702 [in] IBaseFilter
*pfRenderer
);
704 HRESULT ControlStream
(
705 [in] const GUID
*pCategory
,
706 [in] const GUID
*pType
,
707 [in] IBaseFilter
*pFilter
,
708 [in] REFERENCE_TIME
*pstart
,
709 [in] REFERENCE_TIME
*pstop
,
710 [in] WORD wStartCookie
,
711 [in] WORD wStopCookie
);
713 HRESULT AllocCapFile
(
714 [in] LPCOLESTR lpstr
,
715 [in] DWORDLONG dwlSize
);
717 HRESULT CopyCaptureFile
(
718 [in] LPOLESTR lpwstrOld
,
719 [in] LPOLESTR lpwstrNew
,
720 [in] int fAllowEscAbort
,
721 [in] IAMCopyCaptureFileProgress
*pCallback
);
724 [in] IUnknown
*pSource
,
725 [in] PIN_DIRECTION pindir
,
726 [in] const GUID
*pCategory
,
727 [in] const GUID
*pType
,
728 [in] BOOL fUnconnected
,
733 enum _AM_RENSDEREXFLAGS
735 AM_RENDEREX_RENDERTOEXISTINGRENDERERS
= 0x01
740 uuid(36b73882
-c2c8
-11cf
-8b46
-00805f6cef60
),
741 pointer_default(unique)
743 interface IFilterGraph2
: IGraphBuilder
745 HRESULT AddSourceFilterForMoniker
(
746 [in] IMoniker
*pMoniker
,
748 [in, unique] LPCWSTR lpcwstrFilterName
,
749 [out] IBaseFilter
**ppFilter
754 [in, unique] const AM_MEDIA_TYPE
*pmt
757 HRESULT RenderEx
( [in] IPin
*pPinOut
,
759 [in, out] DWORD
*pvContext
766 uuid(56a868bf
-0ad4
-11ce
-b03a
-0020af0ba770
),
767 pointer_default(unique)
769 interface IStreamBuilder
: IUnknown
772 ( [in] IPin
* ppinOut
,
773 [in] IGraphBuilder
* pGraph
777 ( [in] IPin
* ppinOut
,
778 [in] IGraphBuilder
* pGraph
783 /*****************************************************************************
784 * IAMStreamConfig interface
788 uuid(c6e13340
-30ac
-11d0
-a18c
-00a0c9118956
),
789 pointer_default(unique)
791 interface IAMStreamConfig
: IUnknown
793 HRESULT SetFormat
( [in] AM_MEDIA_TYPE
*pmt
);
794 HRESULT GetFormat
( [in] AM_MEDIA_TYPE
**pmt
);
795 HRESULT GetNumberOfCapabilities
( [out] int *piCount
, [out] int *piSize
);
796 HRESULT GetStreamCaps
( [in] int iIndex
, [out] AM_MEDIA_TYPE
**pmt
,
801 typedef enum tagVideoProcAmpProperty
803 VideoProcAmp_Brightness
,
804 VideoProcAmp_Contrast
,
806 VideoProcAmp_Saturation
,
807 VideoProcAmp_Sharpness
,
809 VideoProcAmp_ColorEnable
,
810 VideoProcAmp_WhiteBalance
,
811 VideoProcAmp_BacklightCompensation
,
813 } VideoProcAmpProperty
;
815 typedef enum tagVideoProcAmpFlags
817 VideoProcAmp_Flags_Auto
= 0x0001,
818 VideoProcAmp_Flags_Manual
= 0x0002,
821 /*****************************************************************************
822 * IAMVideoProcAmp interface
826 uuid(c6e13360
-30ac
-11d0
-a18c
-00a0c9118956
),
827 pointer_default(unique)
829 interface IAMVideoProcAmp
: IUnknown
831 HRESULT GetRange
( [in] long Property
, [out] long *pMin
, [out] long *pMax
,
832 [out] long *pSteppingDelta
, [out] long *pDefault
,
833 [out] long *pCapsFlags
);
834 HRESULT Set
( [in] long Property
, [in] long lValue
, [in] long Flags
);
835 HRESULT Get
( [in] long Property
, [out] long *lValue
, [out] long *Flags
);
841 uuid(56a868aa
-0ad4
-11ce
-b03a
-0020af0ba770
),
842 pointer_default(unique)
844 interface IAsyncReader
: IUnknown
846 HRESULT RequestAllocator
(
847 [in] IMemAllocator
* pPreferred
,
848 [in] ALLOCATOR_PROPERTIES
* pProps
,
849 [out] IMemAllocator
** ppActual
);
852 [in] IMediaSample
* pSample
,
853 [in] DWORD_PTR dwUser
);
856 [in] DWORD dwTimeout
,
857 [out] IMediaSample
** ppSample
,
858 [out] DWORD_PTR
* pdwUser
);
860 HRESULT SyncReadAligned
(
861 [in] IMediaSample
* pSample
);
864 [in] LONGLONG llPosition
,
866 [out, size_is(lLength
)]
870 [out] LONGLONG
* pTotal
,
871 [out] LONGLONG
* pAvailable
);
873 HRESULT BeginFlush
(void);
875 HRESULT EndFlush
(void);
881 uuid(56a868ab
-0ad4
-11ce
-b03a
-0020af0ba770
),
882 pointer_default(unique)
884 interface IGraphVersion
: IUnknown
886 HRESULT QueryVersion
(LONG* pVersion
);
891 uuid(56a868ad
-0ad4
-11ce
-b03a
-0020af0ba770
),
892 pointer_default(unique)
894 interface IResourceConsumer
: IUnknown
896 HRESULT AcquireResource
(
897 [in] LONG idResource
);
899 HRESULT ReleaseResource
(
900 [in] LONG idResource
);
906 uuid(56a868ac
-0ad4
-11ce
-b03a
-0020af0ba770
),
907 pointer_default(unique)
909 interface IResourceManager
: IUnknown
917 HRESULT RegisterGroup
(
920 [in, size_is(cResource
)]
925 HRESULT RequestResource
(
926 [in] LONG idResource
,
927 [in] IUnknown
* pFocusObject
,
928 [in] IResourceConsumer
* pConsumer
931 HRESULT NotifyAcquire
(
932 [in] LONG idResource
,
933 [in] IResourceConsumer
* pConsumer
,
936 HRESULT NotifyRelease
(
937 [in] LONG idResource
,
938 [in] IResourceConsumer
* pConsumer
,
939 [in] BOOL bStillWant
);
941 HRESULT CancelRequest
(
942 [in] LONG idResource
,
943 [in] IResourceConsumer
* pConsumer
);
946 [in] IUnknown
* pFocusObject
);
948 HRESULT ReleaseFocus
(
949 [in] IUnknown
* pFocusObject
);
953 cpp_quote
("#ifndef _IKsPropertySet_")
954 cpp_quote
("#define _IKsPropertySet_")
955 cpp_quote
("#define KSPROPERTY_SUPPORT_GET 1")
956 cpp_quote
("#define KSPROPERTY_SUPPORT_SET 2")
960 uuid(31efac30
-515c
-11d0
-a9aa
-00aa0061be93
),
961 pointer_default(unique)
963 interface IKsPropertySet
: IUnknown
965 HRESULT Set
( [in] REFGUID guidPropSet
,
967 [in, size_is(cbInstanceData
)] LPVOID pInstanceData
,
968 [in] DWORD cbInstanceData
,
969 [in, size_is(cbPropData
)] LPVOID pPropData
,
970 [in] DWORD cbPropData
);
972 HRESULT Get
( [in] REFGUID guidPropSet
,
974 [in, size_is(cbInstanceData
)] LPVOID pInstanceData
,
975 [in] DWORD cbInstanceData
,
976 [out, size_is(cbPropData
)] LPVOID pPropData
,
977 [in] DWORD cbPropData
,
978 [out] DWORD
*pcbReturned
);
980 HRESULT QuerySupported
( [in] REFGUID guidPropSet
,
982 [out] DWORD
*pTypeSupport
);
984 cpp_quote
("#endif /* _IKsPropertySet_ */")