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
20 #pragma makedep install
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
;
42 interface IAMOpenProgress
;
43 interface IAMOverlayFX
;
44 interface IAMPhysicalPinInfo
;
45 interface IAMPushSource
;
46 interface IAMStreamConfig
;
47 interface IAMTimecodeDisplay
;
48 interface IAMTimecodeGenerator
;
49 interface IAMTimecodeReader
;
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
;
76 interface IOverlayNotify
;
77 interface IOverlayNotify2
;
78 interface IQualityControl
;
79 interface ISeekingPassThru
;
89 uuid(56a868a4
-0ad4
-11ce
-b03a
-0020af0ba770
),
90 pointer_default(unique)
92 interface IEnumRegFilters
: IUnknown
95 ( [in] ULONG cFilters
,
96 [out] REGFILTER
** apRegFilter
,
97 [out] ULONG
* pcFetched
107 [out] IEnumRegFilters
**ppEnum
112 typedef IEnumRegFilters
*PENUMREGFILTERS
;
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
135 HRESULT RegisterFilterInstance
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
166 HRESULT UnregisterFilterInstance
171 HRESULT UnregisterPin
176 HRESULT EnumMatchingFilters
177 ( [out] IEnumRegFilters
**ppEnum
,
179 [in] BOOL bInputNeeded
,
183 [in] BOOL bOutputNeeded
,
184 [in] CLSID clsOutMaj
,
192 const CLSID
* clsMajorType
;
193 const CLSID
* clsMinorType
;
203 const CLSID
* clsConnectsToFilter
;
204 const WCHAR
* strConnectsToPin
;
206 const REGPINTYPES
* lpMediaType
;
218 REG_PINFLAG_B_ZERO
= 0x1,
219 REG_PINFLAG_B_RENDERER
= 0x2,
220 REG_PINFLAG_B_MANY
= 0x4,
221 REG_PINFLAG_B_OUTPUT
= 0x8
230 [size_is(nMediaTypes
)] const REGPINTYPES
* lpMediaType
;
232 [size_is(nMediums
)] const REGPINMEDIUM
*lpMedium
;
233 const CLSID
*clsPinCategory
;
240 [switch_is(dwVersion
)] [switch_type(DWORD
)] union
246 [size_is(cPins
)] const REGFILTERPINS
*rgPins
;
253 [size_is(cPins2
)] const REGFILTERPINS2
*rgPins2
;
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
,
282 HRESULT RegisterFilter
283 ( [in] REFCLSID clsidFilter
,
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
,
294 [in] BOOL bExactMatch
,
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
,
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
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
324 } QualityMessageType
;
326 typedef struct tagQuality
328 QualityMessageType Type
;
331 REFERENCE_TIME TimeStamp
;
334 typedef IQualityControl
*PQUALITYCONTROL
;
338 uuid(56a868a5
-0ad4
-11ce
-b03a
-0020af0ba770
),
339 pointer_default(unique)
341 interface IQualityControl
: IUnknown
344 ( [in] IBaseFilter
* pSelf
,
349 ( [in] IQualityControl
* piqc
360 typedef struct tagCOLORKEY
364 COLORREF LowColorValue
;
365 COLORREF HighColorValue
;
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 |
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
399 typedef struct _RGNDATA
405 cpp_quote
("#endif /* _WINGDI_ */")
410 uuid(56a868a0
-0ad4
-11ce
-b03a
-0020af0ba770
),
411 pointer_default(unique)
413 interface IOverlayNotify
: IUnknown
415 HRESULT OnPaletteChange
(
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
;
433 typedef HANDLE HMONITOR
;
434 cpp_quote
("#endif /* 0 */")
439 uuid(680EFA10
-D535
-11D1
-87C8
-00A0C9223196
),
440 pointer_default(unique)
442 interface IOverlayNotify2
: IOverlayNotify
444 HRESULT OnDisplayChange
(
448 typedef IOverlayNotify2
*POVERLAYNOTIFY2
;
453 uuid(56a868a1
-0ad4
-11ce
-b03a
-0020af0ba770
),
454 pointer_default(unique)
456 interface IOverlay
: IUnknown
459 [out] DWORD
*pdwColors
,
460 [out] PALETTEENTRY
**ppPalette
);
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
);
482 [in] IOverlayNotify
*pOverlayNotify
,
483 [in] DWORD dwInterests
);
488 typedef IOverlay
*POVERLAY
;
492 uuid(56a868a2
-0ad4
-11ce
-b03a
-0020af0ba770
),
493 pointer_default(unique)
495 interface IMediaEventSink
: IUnknown
499 [in] LONG_PTR EventParam1
,
500 [in] LONG_PTR EventParam2
504 typedef IMediaEventSink
*PMEDIAEVENTSINK
;
508 uuid(56a868a6
-0ad4
-11ce
-b03a
-0020af0ba770
),
509 pointer_default(unique)
511 interface IFileSourceFilter
: IUnknown
514 [in] LPCOLESTR pszFileName
,
515 [in, unique] const AM_MEDIA_TYPE
*pmt
519 [out] LPOLESTR
*ppszFileName
,
520 [out] AM_MEDIA_TYPE
*pmt
524 typedef IFileSourceFilter
*PFILTERFILESOURCE
;
528 uuid(a2104830
-7c70
-11cf
-8bce
-00aa00a3f1a6
),
529 pointer_default(unique)
531 interface IFileSinkFilter
: IUnknown
534 [in] LPCOLESTR pszFileName
,
535 [in, unique] const AM_MEDIA_TYPE
*pmt
539 [out] LPOLESTR
*ppszFileName
,
540 [out] AM_MEDIA_TYPE
*pmt
544 typedef IFileSinkFilter
*PFILTERFILESINK
;
548 uuid(00855B90
-CE1B
-11d0
-BD4F
-00A0C911CE86
),
549 pointer_default(unique)
551 interface IFileSinkFilter2
: IFileSinkFilter
558 [out] DWORD
*pdwFlags
562 typedef IFileSinkFilter2
*PFILESINKFILTER2
;
566 AM_FILE_OVERWRITE
= 0x00000001,
571 uuid(56a868a9
-0ad4
-11ce
-b03a
-0020af0ba770
),
572 pointer_default(unique)
574 interface IGraphBuilder
: IFilterGraph
577 ( [in] IPin
* ppinOut
,
582 ( [in] IPin
* ppinOut
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
597 ( [in] DWORD_PTR hFile
602 HRESULT ShouldOperationContinue
();
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
,
631 [call_as
(FindInterface
)] HRESULT RemoteFindInterface
(
632 [in, unique] const GUID
*pCategory
,
633 [in] IBaseFilter
*pf
,
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
);
664 uuid(670d1d20
-a068
-11d0
-b3f0
-00aa003761c5
),
665 pointer_default(unique)
667 interface IAMCopyCaptureFileProgress
: IUnknown
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
,
699 [call_as
(FindInterface
)] HRESULT RemoteFindInterface
(
700 [in] const GUID
*pCategory
,
701 [in] const GUID
*pType
,
702 [in] IBaseFilter
*pf
,
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
);
733 [in] IUnknown
*pSource
,
734 [in] PIN_DIRECTION pindir
,
735 [in] const GUID
*pCategory
,
736 [in] const GUID
*pType
,
737 [in] BOOL fUnconnected
,
745 uuid(5acd6aa0
-f482
-11ce
-8b67
-00aa00a3f1a6
),
746 pointer_default(unique)
748 interface IConfigAviMux
: IUnknown
750 HRESULT SetMasterStream
(
753 HRESULT GetMasterStream
(
754 [out] LONG *pStream
);
756 HRESULT SetOutputCompatibilityIndex
(
757 [in] BOOL fOldIndex
);
759 HRESULT GetOutputCompatibilityIndex
(
760 [out] BOOL
*pfOldIndex
);
766 uuid(bee3d220
-157b
-11d0
-bd23
-00a0c911ce86
),
767 pointer_default(unique)
769 interface IConfigInterleaving
: IUnknown
771 typedef enum InterleavingMode
{
775 INTERLEAVE_NONE_BUFFERED
779 [in] InterleavingMode 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
);
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
{
812 typedef struct _AMCOPPCommand
{
817 BYTE CommandData
[4056];
818 } AMCOPPCommand
, *LPAMCOPPCommand
;
820 typedef struct _AMCOPPStatusInput
{
822 GUID guidStatusRequestID
;
825 BYTE StatusData
[4056];
826 } AMCOPPStatusInput
, *LPAMCOPPStatusInput
;
828 typedef struct _AMCOPPStatusOutput
{
831 BYTE COPPStatus
[4076];
832 } AMCOPPStatusOutput
, *LPAMCOPPStatusOutput
;
837 uuid(6feded3e
-0ff1
-4901-a2f1
-43f7012c8515
),
838 pointer_default(unique)
840 interface IAMCertifiedOutputProtection
: IUnknown
842 HRESULT KeyExchange
(
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
865 uuid(36b73882
-c2c8
-11cf
-8b46
-00805f6cef60
),
866 pointer_default(unique)
868 interface IFilterGraph2
: IGraphBuilder
870 HRESULT AddSourceFilterForMoniker
(
871 [in] IMoniker
*pMoniker
,
873 [in, unique] LPCWSTR lpcwstrFilterName
,
874 [out] IBaseFilter
**ppFilter
879 [in, unique] const AM_MEDIA_TYPE
*pmt
882 HRESULT RenderEx
( [in] IPin
*pPinOut
,
884 [in, out] DWORD
*pvContext
891 uuid(56a868bf
-0ad4
-11ce
-b03a
-0020af0ba770
),
892 pointer_default(unique)
894 interface IStreamBuilder
: IUnknown
897 ( [in] IPin
* ppinOut
,
898 [in] IGraphBuilder
* pGraph
902 ( [in] IPin
* ppinOut
,
903 [in] IGraphBuilder
* pGraph
908 /*****************************************************************************
909 * IAMStreamConfig interface
913 uuid(c6e13340
-30ac
-11d0
-a18c
-00a0c9118956
),
914 pointer_default(unique)
916 interface IAMStreamConfig
: IUnknown
918 typedef struct _VIDEO_STREAM_CONFIG_CAPS
{
922 SIZE MinCroppingSize
;
923 SIZE MaxCroppingSize
;
924 int CropGranularityX
;
925 int CropGranularityY
;
930 int OutputGranularityX
;
931 int OutputGranularityY
;
936 LONGLONG MinFrameInterval
;
937 LONGLONG MaxFrameInterval
;
938 LONG MinBitsPerSecond
;
939 LONG MaxBitsPerSecond
;
940 } VIDEO_STREAM_CONFIG_CAPS
;
942 typedef struct _AUDIO_STREAM_CONFIG_CAPS
{
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
,
963 typedef enum tagVideoProcAmpProperty
965 VideoProcAmp_Brightness
,
966 VideoProcAmp_Contrast
,
968 VideoProcAmp_Saturation
,
969 VideoProcAmp_Sharpness
,
971 VideoProcAmp_ColorEnable
,
972 VideoProcAmp_WhiteBalance
,
973 VideoProcAmp_BacklightCompensation
,
975 } VideoProcAmpProperty
;
977 typedef enum tagVideoProcAmpFlags
979 VideoProcAmp_Flags_Auto
= 0x0001,
980 VideoProcAmp_Flags_Manual
= 0x0002,
983 /*****************************************************************************
984 * IAMVideoProcAmp interface
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
);
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
);
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
);
1026 [in] LONGLONG llPosition
,
1028 [out, size_is(lLength
)]
1032 [out] LONGLONG
* pTotal
,
1033 [out] LONGLONG
* pAvailable
);
1035 HRESULT BeginFlush
(void);
1037 HRESULT EndFlush
(void);
1043 uuid(56a868ab
-0ad4
-11ce
-b03a
-0020af0ba770
),
1044 pointer_default(unique)
1046 interface IGraphVersion
: IUnknown
1048 HRESULT QueryVersion
(LONG* pVersion
);
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
);
1068 uuid(56a868ac
-0ad4
-11ce
-b03a
-0020af0ba770
),
1069 pointer_default(unique)
1071 interface IResourceManager
: IUnknown
1075 [in] LONG cResource
,
1079 HRESULT RegisterGroup
(
1081 [in] LONG cResource
,
1082 [in, size_is(cResource
)]
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
,
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
);
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
;
1135 uuid(36b73881
-c2c8
-11cf
-8b46
-00805f6cef60
),
1136 pointer_default(unique)
1138 interface IAMStreamControl
: IUnknown
1141 [in] const REFERENCE_TIME
*ptStart
,
1142 [in] DWORD dwCookie
);
1145 [in] const REFERENCE_TIME
*ptStop
,
1146 [in] BOOL bSendExtra
,
1147 [in] DWORD dwCookie
);
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
,
1166 uuid(31efac30
-515c
-11d0
-a9aa
-00aa0061be93
),
1167 pointer_default(unique),
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_ */")
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
);
1213 uuid(5738e040
-b67f
-11d0
-bd4d
-00a0c911ce86
),
1214 pointer_default(unique)
1216 interface IPersistMediaPropertyBag
: IPersist
1218 HRESULT InitNew
(void);
1221 [in] IMediaPropertyBag
*pPropBag
,
1222 [in] IErrorLog
*pErrorLog
);
1225 [in] IMediaPropertyBag
*pPropBag
,
1226 [in] BOOL fClearDirty
,
1227 [in] BOOL fSaveAllProperties
);
1229 typedef IPersistMediaPropertyBag
*LPPERSISTMEDIAPROPERTYBAG
;
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
1251 uuid(2dd74950
-a890
-11d1
-abe8
-00a0c905f375
),
1252 pointer_default(unique)
1254 interface IAMFilterMiscFlags
: IUnknown
1256 ULONG GetMiscFlags
();
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
);
1277 uuid(d8d715a0
-6e5e
-11d0
-b3f0
-00aa003761c5
),
1278 pointer_default(unique)
1280 interface IAMVfwCaptureDialogs
: IUnknown
1287 HRESULT SendDriverMessage
(
1297 uuid(6a2e0670
-28e4
-11d0
-a18c
-00a0c9118956
),
1298 pointer_default(unique)
1300 interface IAMVideoControl
: IUnknown
1302 HRESULT GetCaps
([in] IPin
*pin
, [out] long *flags
);
1303 HRESULT SetMode
([in] IPin
*pin
, long mode
);
1304 HRESULT GetMode
([in] IPin
*pin
, [out] long *mode
);
1305 HRESULT GetCurrentActualFrameRate
([in] IPin
*pin
, [out] LONGLONG
*frame_rate
);
1306 HRESULT GetMaxAvailableFrameRate
([in] IPin
*pin
, [in] long index
,
1307 [in] SIZE dimensions
, [out] LONGLONG
*frame_rate
);
1308 HRESULT GetFrameRateList
([in] IPin
*pin
, [in] long index
, [in] SIZE dimensions
,
1309 [out] long *list_size
, [out] LONGLONG
**frame_rate
);
1315 uuid(56ed71a0
-af5f
-11d0
-b3f0
-00aa003761c5
),
1316 pointer_default(unique)
1318 interface IAMBufferNegotiation
: IUnknown
1320 HRESULT SuggestAllocatorProperties
([in] const ALLOCATOR_PROPERTIES
*prop
);
1321 HRESULT GetAllocatorProperties
([out] ALLOCATOR_PROPERTIES
*prop
);
1327 uuid(c6e13344
-30ac
-11d0
-a18c
-00a0c9118956
),
1328 pointer_default(unique)
1330 interface IAMDroppedFrames
: IUnknown
1332 HRESULT GetNumDropped
([out] long *number
);
1333 HRESULT GetNumNotDropped
([out] long *number
);
1334 HRESULT GetDroppedInfo
([in] long size
, [out] long *array
, [out] long *copied
);
1335 HRESULT GetAverageFrameSize
([out] long *size
);
1341 uuid(62ea93ba
-ec62
-11d2
-b770
-00c04fb6bd3d
),
1342 pointer_default(unique)
1344 interface IAMLatency
: IUnknown
1346 HRESULT GetLatency
([in, out] REFERENCE_TIME
*latency
);
1352 uuid(f185fe76
-e64e
-11d2
-b76e
-00c04fb6bd3d
),
1353 pointer_default(unique)
1355 interface IAMPushSource
: IAMLatency
1357 HRESULT GetPushSourceFlags
([out] ULONG
*flags
);
1358 HRESULT SetPushSourceFlags
([in] ULONG flags
);
1359 HRESULT SetStreamOffset
([in] REFERENCE_TIME offset
);
1360 HRESULT GetStreamOffset
([out] REFERENCE_TIME
*offset
);
1361 HRESULT GetMaxStreamOffset
([out] REFERENCE_TIME
*offset
);
1362 HRESULT SetMaxStreamOffset
([in] REFERENCE_TIME offset
);
1368 uuid(c6e13343
-30ac
-11d0
-a18c
-00a0c9118956
),
1369 pointer_default(unique)
1371 interface IAMVideoCompression
: IUnknown
1373 HRESULT put_KeyFrameRate
([in] long frame_rate
);
1374 HRESULT get_KeyFrameRate
([out] long *frame_rate
);
1375 HRESULT put_PFramesPerKeyFrame
([in] long frame
);
1376 HRESULT get_PFramesPerKeyFrame
([out] long *frame
);
1377 HRESULT put_Quality
([in] double quality
);
1378 HRESULT get_Quality
([out] double *quality
);
1379 HRESULT put_WindowSize
([in] DWORDLONG size
);
1380 HRESULT get_WindowSize
([out] DWORDLONG
*size
);
1381 HRESULT GetInfo
([out, size_is(*version_size
)] LPWSTR
version, [in, out] int *version_size
,
1382 [out, size_is(*description_size
)] LPWSTR description
, [in, out] int *description_size
,
1383 [out] long *frame_rate
, [out] long *key
, [out] double *quality
, [out] long *capabilities
);
1384 HRESULT OverrideKeyFrame
([in] long number
);
1385 HRESULT OverrideFrameSize
([in] long number
, [in] long size
);
1391 uuid(c6e13380
-30ac
-11d0
-a18c
-00a0c9118956
),
1392 pointer_default(unique)
1394 interface IAMCrossbar
: IUnknown
1396 HRESULT get_PinCounts
([out] long *output
, [out] long *intput
);
1397 HRESULT CanRoute
([in] long output
, [in] long input
);
1398 HRESULT Route
([in] long output
, [in] long input
);
1399 HRESULT get_IsRoutedTo
([in] long output
, [out] long *input
);
1400 HRESULT get_CrossbarPinInfo
([in] BOOL is_input
, [in] long index
,
1401 [out] long *related
, [out] long *type
);
1404 typedef enum tagAMTunerEventType
1406 AMTUNER_EVENT_CHANGED
= 0x0001,
1412 uuid(211a8760
-03ac
-11d1
-8d13
-00aa00bd8339
),
1413 pointer_default(unique)
1415 interface IAMTunerNotification
: IUnknown
1417 HRESULT OnEvent
([in] AMTunerEventType event
);
1420 typedef enum tagAMTunerModeType
1422 AMTUNER_MODE_DEFAULT
= 0x0000,
1423 AMTUNER_MODE_TV
= 0x0001,
1424 AMTUNER_MODE_FM_RADIO
= 0x0002,
1425 AMTUNER_MODE_AM_RADIO
= 0x0004,
1426 AMTUNER_MODE_DSS
= 0x0008,
1432 uuid(211a8761
-03ac
-11d1
-8d13
-00aa00bd8339
),
1433 pointer_default(unique)
1435 interface IAMTuner
: IUnknown
1437 HRESULT put_Channel
([in] long channel
, [in] long video
, [in] long audio
);
1438 HRESULT get_Channel
([out] long *channel
, [out] long *video
, [out] long *audio
);
1439 HRESULT ChannelMinMax
([out] long *min
, [out] long *max
);
1440 HRESULT put_CountryCode
([in] long country
);
1441 HRESULT get_CountryCode
([out] long *country
);
1442 HRESULT put_TuningSpace
([in] long tuning_space
);
1443 HRESULT get_TuningSpace
([out] long *tuning_space
);
1444 [local] HRESULT Logon
([in] HANDLE user
);
1446 HRESULT SignalPresent
([out] long *signal_strength
);
1447 HRESULT put_Mode
([in] AMTunerModeType mode
);
1448 HRESULT get_Mode
([out] AMTunerModeType
*mode
);
1449 HRESULT GetAvailableModes
([out] long *modes
);
1450 HRESULT RegisterNotificationCallBack
([in] IAMTunerNotification
*notify
, [in] long events
);
1451 HRESULT UnRegisterNotificationCallBack
([in] IAMTunerNotification
*notify
);
1457 uuid(211a8766
-03ac
-11d1
-8d13
-00aa00bd8339
),
1458 pointer_default(unique)
1460 interface IAMTVTuner
: IAMTuner
1462 HRESULT get_AvailableTVFormats
([out] long *standard
);
1463 HRESULT get_TVFormat
([out] long *standard
);
1464 HRESULT AutoTune
([in] long channel
, [out] long *signal
);
1465 HRESULT StoreAutoTune
();
1466 HRESULT get_NumInputConnections
([out] long *number
);
1467 HRESULT put_InputType
([in] long index
, [in] TunerInputType type
);
1468 HRESULT get_InputType
([in] long index
, [out] TunerInputType
*type
);
1469 HRESULT put_ConnectInput
([in] long index
);
1470 HRESULT get_ConnectInput
([out] long *index
);
1471 HRESULT get_VideoFrequency
([out] long *freq
);
1472 HRESULT get_AudioFrequency
([out] long *freq
);
1478 uuid(e46a9787
-2b71
-444d
-a4b5
-1fab7b708d6a
),
1479 pointer_default(unique),
1481 interface IVideoFrameStep
: IUnknown
1483 HRESULT Step
(DWORD frame_count
, [in] IUnknown
*filter
);
1484 HRESULT CanStep
(long multiple
, [in] IUnknown
*filter
);
1485 HRESULT CancelStep
();