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
;
36 interface IAMOpenProgress
;
37 interface IAMOverlayFX
;
38 interface IAMPhysicalPinInfo
;
39 interface IAMPushSource
;
40 interface IAMStreamConfig
;
41 interface IAMTimecodeDisplay
;
42 interface IAMTimecodeGenerator
;
43 interface IAMTimecodeReader
;
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
;
70 interface IOverlayNotify
;
71 interface IOverlayNotify2
;
72 interface IQualityControl
;
73 interface ISeekingPassThru
;
83 uuid(56a868a4
-0ad4
-11ce
-b03a
-0020af0ba770
),
84 pointer_default(unique)
86 interface IEnumRegFilters
: IUnknown
89 ( [in] ULONG cFilters
,
90 [out] REGFILTER
** apRegFilter
,
91 [out] ULONG
* pcFetched
101 [out] IEnumRegFilters
**ppEnum
106 typedef IEnumRegFilters
*PENUMREGFILTERS
;
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
129 HRESULT RegisterFilterInstance
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
160 HRESULT UnregisterFilterInstance
165 HRESULT UnregisterPin
170 HRESULT EnumMatchingFilters
171 ( [out] IEnumRegFilters
**ppEnum
,
173 [in] BOOL bInputNeeded
,
177 [in] BOOL bOututNeeded
,
178 [in] CLSID clsOutMaj
,
186 const CLSID
* clsMajorType
;
187 const CLSID
* clsMinorType
;
197 const CLSID
* clsConnectsToFilter
;
198 const WCHAR
* strConnectsToPin
;
200 const REGPINTYPES
* lpMediaType
;
212 REG_PINFLAG_B_ZERO
= 0x1,
213 REG_PINFLAG_B_RENDERER
= 0x2,
214 REG_PINFLAG_B_MANY
= 0x4,
215 REG_PINFLAG_B_OUTPUT
= 0x8
224 [size_is(nMediaTypes
)] const REGPINTYPES
* lpMediaType
;
226 [size_is(nMediums
)] const REGPINMEDIUM
*lpMedium
;
227 const CLSID
*clsPinCategory
;
234 [switch_is(dwVersion
)] [switch_type(DWORD
)] union
240 [size_is(cPins
)] const REGFILTERPINS
*rgPins
;
247 [size_is(cPins2
)] const REGFILTERPINS2
*rgPins2
;
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
,
276 HRESULT RegisterFilter
277 ( [in] REFCLSID clsidFilter
,
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
,
288 [in] BOOL bExactMatch
,
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
,
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
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
318 } QualityMessageType
;
320 typedef struct tagQuality
322 QualityMessageType Type
;
325 REFERENCE_TIME TimeStamp
;
328 typedef IQualityControl
*PQUALITYCONTROL
;
332 uuid(56a868a5
-0ad4
-11ce
-b03a
-0020af0ba770
),
333 pointer_default(unique)
335 interface IQualityControl
: IUnknown
338 ( [in] IBaseFilter
* pSelf
,
343 ( [in] IQualityControl
* piqc
354 typedef struct tagCOLORKEY
358 COLORREF LowColorValue
;
359 COLORREF HighColorValue
;
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 |
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
393 typedef struct _RGNDATA
399 cpp_quote
("#endif /* _WINGDI_ */")
404 uuid(56a868a0
-0ad4
-11ce
-b03a
-0020af0ba770
),
405 pointer_default(unique)
407 interface IOverlayNotify
: IUnknown
409 HRESULT OnPaletteChange
(
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
;
427 typedef HANDLE HMONITOR
;
428 cpp_quote
("#endif /* 0 */")
433 uuid(680EFA10
-D535
-11D1
-87C8
-00A0C9223196
),
434 pointer_default(unique)
436 interface IOverlayNotify2
: IOverlayNotify
438 HRESULT OnDisplayChange
(
442 typedef IOverlayNotify2
*POVERLAYNOTIFY2
;
447 uuid(56a868a1
-0ad4
-11ce
-b03a
-0020af0ba770
),
448 pointer_default(unique)
450 interface IOverlay
: IUnknown
453 [out] DWORD
*pdwColors
,
454 [out] PALETTEENTRY
**ppPalette
);
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
);
476 [in] IOverlayNotify
*pOverlayNotify
,
477 [in] DWORD dwInterests
);
482 typedef IOverlay
*POVERLAY
;
486 uuid(56a868a2
-0ad4
-11ce
-b03a
-0020af0ba770
),
487 pointer_default(unique)
489 interface IMediaEventSink
: IUnknown
493 [in] LONG_PTR EventParam1
,
494 [in] LONG_PTR EventParam2
498 typedef IMediaEventSink
*PMEDIAEVENTSINK
;
502 uuid(56a868a6
-0ad4
-11ce
-b03a
-0020af0ba770
),
503 pointer_default(unique)
505 interface IFileSourceFilter
: IUnknown
508 [in] LPCOLESTR pszFileName
,
509 [in, unique] const AM_MEDIA_TYPE
*pmt
513 [out] LPOLESTR
*ppszFileName
,
514 [out] AM_MEDIA_TYPE
*pmt
518 typedef IFileSourceFilter
*PFILTERFILESOURCE
;
522 uuid(a2104830
-7c70
-11cf
-8bce
-00aa00a3f1a6
),
523 pointer_default(unique)
525 interface IFileSinkFilter
: IUnknown
528 [in] LPCOLESTR pszFileName
,
529 [in, unique] const AM_MEDIA_TYPE
*pmt
533 [out] LPOLESTR
*ppszFileName
,
534 [out] AM_MEDIA_TYPE
*pmt
538 typedef IFileSinkFilter
*PFILTERFILESINK
;
542 uuid(00855B90
-CE1B
-11d0
-BD4F
-00A0C911CE86
),
543 pointer_default(unique)
545 interface IFileSinkFilter2
: IFileSinkFilter
552 [out] DWORD
*pdwFlags
556 typedef IFileSinkFilter2
*PFILESINKFILTER2
;
560 AM_FILE_OVERWRITE
= 0x00000001,
565 uuid(56a868a9
-0ad4
-11ce
-b03a
-0020af0ba770
),
566 pointer_default(unique)
568 interface IGraphBuilder
: IFilterGraph
571 ( [in] IPin
* ppinOut
,
576 ( [in] IPin
* ppinOut
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
591 ( [in] DWORD_PTR hFile
596 HRESULT ShouldOperationContinue
();
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
,
625 [call_as
(FindInterface
)] HRESULT RemoteFindInterface
(
626 [in, unique] const GUID
*pCategory
,
627 [in] IBaseFilter
*pf
,
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
);
658 uuid(670d1d20
-a068
-11d0
-b3f0
-00aa003761c5
),
659 pointer_default(unique)
661 interface IAMCopyCaptureFileProgress
: IUnknown
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
,
693 [call_as
(FindInterface
)] HRESULT RemoteFindInterface
(
694 [in] const GUID
*pCategory
,
695 [in] const GUID
*pType
,
696 [in] IBaseFilter
*pf
,
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
);
727 [in] IUnknown
*pSource
,
728 [in] PIN_DIRECTION pindir
,
729 [in] const GUID
*pCategory
,
730 [in] const GUID
*pType
,
731 [in] BOOL fUnconnected
,
739 uuid(5acd6aa0
-f482
-11ce
-8b67
-00aa00a3f1a6
),
740 pointer_default(unique)
742 interface IConfigAviMux
: IUnknown
744 HRESULT SetMasterStream
(
747 HRESULT GetMasterStream
(
748 [out] LONG *pStream
);
750 HRESULT SetOutputCompatibilityIndex
(
751 [in] BOOL fOldIndex
);
753 HRESULT GetOutputCompatibilityIndex
(
754 [out] BOOL
*pfOldIndex
);
760 uuid(bee3d220
-157b
-11d0
-bd23
-00a0c911ce86
),
761 pointer_default(unique)
763 interface IConfigInterleaving
: IUnknown
765 typedef enum InterleavingMode
{
769 INTERLEAVE_NONE_BUFFERED
773 [in] InterleavingMode 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
);
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
{
806 typedef struct _AMCOPPCommand
{
811 BYTE CommandData
[4056];
812 } AMCOPPCommand
, *LPAMCOPPCommand
;
814 typedef struct _AMCOPPStatusInput
{
816 GUID guidStatusRequestID
;
819 BYTE StatusData
[4056];
820 } AMCOPPStatusInput
, *LPAMCOPPStatusInput
;
822 typedef struct _AMCOPPStatusOutput
{
825 BYTE COPPStatus
[4076];
826 } AMCOPPStatusOutput
, *LPAMCOPPStatusOutput
;
831 uuid(6feded3e
-0ff1
-4901-a2f1
-43f7012c8515
),
832 pointer_default(unique)
834 interface IAMCertifiedOutputProtection
: IUnknown
836 HRESULT KeyExchange
(
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
859 uuid(36b73882
-c2c8
-11cf
-8b46
-00805f6cef60
),
860 pointer_default(unique)
862 interface IFilterGraph2
: IGraphBuilder
864 HRESULT AddSourceFilterForMoniker
(
865 [in] IMoniker
*pMoniker
,
867 [in, unique] LPCWSTR lpcwstrFilterName
,
868 [out] IBaseFilter
**ppFilter
873 [in, unique] const AM_MEDIA_TYPE
*pmt
876 HRESULT RenderEx
( [in] IPin
*pPinOut
,
878 [in, out] DWORD
*pvContext
885 uuid(56a868bf
-0ad4
-11ce
-b03a
-0020af0ba770
),
886 pointer_default(unique)
888 interface IStreamBuilder
: IUnknown
891 ( [in] IPin
* ppinOut
,
892 [in] IGraphBuilder
* pGraph
896 ( [in] IPin
* ppinOut
,
897 [in] IGraphBuilder
* pGraph
902 /*****************************************************************************
903 * IAMStreamConfig interface
907 uuid(c6e13340
-30ac
-11d0
-a18c
-00a0c9118956
),
908 pointer_default(unique)
910 interface IAMStreamConfig
: IUnknown
912 typedef struct _VIDEO_STREAM_CONFIG_CAPS
{
916 SIZE MinCroppingSize
;
917 SIZE MaxCroppingSize
;
918 int CropGranularityX
;
919 int CropGranularityY
;
924 int OutputGranularityX
;
925 int OutputGranularityY
;
930 LONGLONG MinFrameInterval
;
931 LONGLONG MaxFrameInterval
;
932 LONG MinBitsPerSecond
;
933 LONG MaxBitsPerSecond
;
934 } VIDEO_STREAM_CONFIG_CAPS
;
936 typedef struct _AUDIO_STREAM_CONFIG_CAPS
{
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
,
957 typedef enum tagVideoProcAmpProperty
959 VideoProcAmp_Brightness
,
960 VideoProcAmp_Contrast
,
962 VideoProcAmp_Saturation
,
963 VideoProcAmp_Sharpness
,
965 VideoProcAmp_ColorEnable
,
966 VideoProcAmp_WhiteBalance
,
967 VideoProcAmp_BacklightCompensation
,
969 } VideoProcAmpProperty
;
971 typedef enum tagVideoProcAmpFlags
973 VideoProcAmp_Flags_Auto
= 0x0001,
974 VideoProcAmp_Flags_Manual
= 0x0002,
977 /*****************************************************************************
978 * IAMVideoProcAmp interface
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
);
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
);
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
);
1020 [in] LONGLONG llPosition
,
1022 [out, size_is(lLength
)]
1026 [out] LONGLONG
* pTotal
,
1027 [out] LONGLONG
* pAvailable
);
1029 HRESULT BeginFlush
(void);
1031 HRESULT EndFlush
(void);
1037 uuid(56a868ab
-0ad4
-11ce
-b03a
-0020af0ba770
),
1038 pointer_default(unique)
1040 interface IGraphVersion
: IUnknown
1042 HRESULT QueryVersion
(LONG* pVersion
);
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
);
1062 uuid(56a868ac
-0ad4
-11ce
-b03a
-0020af0ba770
),
1063 pointer_default(unique)
1065 interface IResourceManager
: IUnknown
1069 [in] LONG cResource
,
1073 HRESULT RegisterGroup
(
1075 [in] LONG cResource
,
1076 [in, size_is(cResource
)]
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
,
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
);
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
;
1129 uuid(36b73881
-c2c8
-11cf
-8b46
-00805f6cef60
),
1130 pointer_default(unique)
1132 interface IAMStreamControl
: IUnknown
1135 [in] const REFERENCE_TIME
*ptStart
,
1136 [in] DWORD dwCookie
);
1139 [in] const REFERENCE_TIME
*ptStop
,
1140 [in] BOOL bSendExtra
,
1141 [in] DWORD dwCookie
);
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")
1154 uuid(31efac30
-515c
-11d0
-a9aa
-00aa0061be93
),
1155 pointer_default(unique),
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_ */")
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
);
1201 uuid(5738e040
-b67f
-11d0
-bd4d
-00a0c911ce86
),
1202 pointer_default(unique)
1204 interface IPersistMediaPropertyBag
: IPersist
1206 HRESULT InitNew
(void);
1209 [in] IMediaPropertyBag
*pPropBag
,
1210 [in] IErrorLog
*pErrorLog
);
1213 [in] IMediaPropertyBag
*pPropBag
,
1214 [in] BOOL fClearDirty
,
1215 [in] BOOL fSaveAllProperties
);
1217 typedef IPersistMediaPropertyBag
*LPPERSISTMEDIAPROPERTYBAG
;
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
1239 uuid(2dd74950
-a890
-11d1
-abe8
-00a0c905f375
),
1240 pointer_default(unique)
1242 interface IAMFilterMiscFlags
: IUnknown
1244 ULONG GetMiscFlags
();
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
);