/* * Copyright (C) 2002 Robert Shearman * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #if 0 #pragma makedep install #endif #include interface IAMAnalogVideoDecoder; interface IAMAnalogVideoEncoder; interface IAMAudioInputMixer; interface IAMAudioRendererStats; interface IAMBufferNegotiation; interface IAMCameraControl; interface IAMCertifiedOutputProtection; interface IAMClockSlave; interface IAMCopyCaptureFileProgress; interface IAMCrossbar; interface IAMDevMemoryAllocator; interface IAMDevMemoryControl; interface IAMDroppedFrames; interface IAMExtDevice; interface IAMExtTransport; interface IAMGraphStreams; interface IAMLatency; interface IAMOpenProgress; interface IAMOverlayFX; interface IAMPhysicalPinInfo; interface IAMPushSource; interface IAMStreamConfig; interface IAMTimecodeDisplay; interface IAMTimecodeGenerator; interface IAMTimecodeReader; interface IAMTVTuner; interface IAMVfwCaptureDialogs; interface IAMVfwCompressDialogs; interface IAMVideoCompression; interface IAMVideoDecimationProperties; interface IAMVideoProcAmp; interface IAMGraphBuilderCallback; interface ICaptureGraphBuilder; interface ICaptureGraphBuilder2; interface IConfigAviMux; interface IConfigInterleaving; interface IDecimateVideoImage; interface IDrawVideoImage; interface IEnumRegFilters; interface IEnumStreamIdMap; interface IFileSourceFilter; interface IFileSinkFilter; interface IFileSinkFilter2; interface IFilterMapper; interface IFilterMapper2; interface IGraphBuilder; interface IKsPropertySet; interface IMediaEventSink; interface IMpeg2Demultiplexer; interface IMPEG2StreamIdMap; interface IOverlay; interface IOverlayNotify; interface IOverlayNotify2; interface IQualityControl; interface ISeekingPassThru; typedef struct { CLSID Clsid; LPWSTR Name; } REGFILTER; [ object, uuid(56a868a4-0ad4-11ce-b03a-0020af0ba770), pointer_default(unique) ] interface IEnumRegFilters : IUnknown { HRESULT Next ( [in] ULONG cFilters, [out] REGFILTER ** apRegFilter, [out] ULONG * pcFetched ); HRESULT Skip( [in] ULONG cFilters ); HRESULT Reset(void); HRESULT Clone( [out] IEnumRegFilters **ppEnum ); } typedef IEnumRegFilters *PENUMREGFILTERS; [ object, uuid(56a868a3-0ad4-11ce-b03a-0020af0ba770), pointer_default(unique) ] interface IFilterMapper : IUnknown { enum { MERIT_PREFERRED = 0x800000, MERIT_NORMAL = 0x600000, MERIT_UNLIKELY = 0x400000, MERIT_DO_NOT_USE = 0x200000, MERIT_SW_COMPRESSOR = 0x100000, MERIT_HW_COMPRESSOR = 0x100050 }; HRESULT RegisterFilter ( [in] CLSID clsid, [in] LPCWSTR Name, [in] DWORD dwMerit ); HRESULT RegisterFilterInstance ( [in] CLSID clsid, [in] LPCWSTR Name, [out] CLSID *MRId ); HRESULT RegisterPin ( [in] CLSID Filter, [in] LPCWSTR Name, [in] BOOL bRendered, [in] BOOL bOutput, [in] BOOL bZero, [in] BOOL bMany, [in] CLSID ConnectsToFilter, [in] LPCWSTR ConnectsToPin ); HRESULT RegisterPinType ( [in] CLSID clsFilter, [in] LPCWSTR strName, [in] CLSID clsMajorType, [in] CLSID clsSubType ); HRESULT UnregisterFilter ( [in] CLSID Filter ); HRESULT UnregisterFilterInstance ( [in] CLSID MRId ); HRESULT UnregisterPin ( [in] CLSID Filter, [in] LPCWSTR Name ); HRESULT EnumMatchingFilters ( [out] IEnumRegFilters **ppEnum, [in] DWORD dwMerit, [in] BOOL bInputNeeded, [in] CLSID clsInMaj, [in] CLSID clsInSub, [in] BOOL bRender, [in] BOOL bOutputNeeded, [in] CLSID clsOutMaj, [in] CLSID clsOutSub ); } typedef struct { const CLSID * clsMajorType; const CLSID * clsMinorType; } REGPINTYPES; typedef struct { LPWSTR strName; BOOL bRendered; BOOL bOutput; BOOL bZero; BOOL bMany; const CLSID * clsConnectsToFilter; const WCHAR * strConnectsToPin; UINT nMediaTypes; const REGPINTYPES * lpMediaType; } REGFILTERPINS; typedef struct { CLSID clsMedium; DWORD dw1; DWORD dw2; } REGPINMEDIUM; enum { REG_PINFLAG_B_ZERO = 0x1, REG_PINFLAG_B_RENDERER = 0x2, REG_PINFLAG_B_MANY = 0x4, REG_PINFLAG_B_OUTPUT = 0x8 }; typedef struct { DWORD dwFlags; UINT cInstances; UINT nMediaTypes; [size_is(nMediaTypes)] const REGPINTYPES * lpMediaType; UINT nMediums; [size_is(nMediums)] const REGPINMEDIUM *lpMedium; const CLSID *clsPinCategory; } REGFILTERPINS2; typedef struct { DWORD dwVersion; DWORD dwMerit; [switch_is(dwVersion)] [switch_type(DWORD)] union { [case(1)] struct { ULONG cPins; [size_is(cPins)] const REGFILTERPINS *rgPins; }; [case(2)] struct { ULONG cPins2; [size_is(cPins2)] const REGFILTERPINS2 *rgPins2; }; [default] ; }; } REGFILTER2; [ object, uuid(b79bb0b0-33c1-11d1-abe1-00a0c905f375), pointer_default(unique) ] interface IFilterMapper2 : IUnknown { HRESULT CreateCategory ( [in] REFCLSID clsidCategory, [in] DWORD dwCategoryMerit, [in] LPCWSTR Description ); HRESULT UnregisterFilter ( [in] const CLSID *pclsidCategory, [in] LPCOLESTR szInstance, [in] REFCLSID Filter ); HRESULT RegisterFilter ( [in] REFCLSID clsidFilter, [in] LPCWSTR Name, [in, out] IMoniker **ppMoniker, [in] const CLSID *pclsidCategory, [in] LPCOLESTR szInstance, [in] const REGFILTER2 *prf2 ); HRESULT EnumMatchingFilters ( [out] IEnumMoniker **ppEnum, [in] DWORD dwFlags, [in] BOOL bExactMatch, [in] DWORD dwMerit, [in] BOOL bInputNeeded, [in] DWORD cInputTypes, [size_is(cInputTypes*2)] const GUID *pInputTypes, [in] const REGPINMEDIUM *pMedIn, [in] const CLSID *pPinCategoryIn, [in] BOOL bRender, [in] BOOL bOutputNeeded, [in] DWORD cOutputTypes, [size_is(cOutputTypes*2)] const GUID *pOutputTypes, [in] const REGPINMEDIUM *pMedOut, [in] const CLSID *pPinCategoryOut ); } [ object, uuid(b79bb0b1-33c1-11d1-abe1-00a0c905f375), pointer_default(unique) ] interface IFilterMapper3 : IFilterMapper2 { HRESULT GetICreateDevEnum( [out] ICreateDevEnum **ppEnum ); } typedef enum tagQualityMessageType { Famine, Flood } QualityMessageType; typedef struct tagQuality { QualityMessageType Type; LONG Proportion; REFERENCE_TIME Late; REFERENCE_TIME TimeStamp; } Quality; typedef IQualityControl *PQUALITYCONTROL; [ object, uuid(56a868a5-0ad4-11ce-b03a-0020af0ba770), pointer_default(unique) ] interface IQualityControl : IUnknown { HRESULT Notify ( [in] IBaseFilter * pSelf, [in] Quality q ); HRESULT SetSink ( [in] IQualityControl * piqc ); } enum { CK_NOCOLORKEY = 0x0, CK_INDEX = 0x1, CK_RGB = 0x2 }; typedef struct tagCOLORKEY { DWORD KeyType; DWORD PaletteIndex; COLORREF LowColorValue; COLORREF HighColorValue; } COLORKEY; enum { ADVISE_NONE = 0x0, ADVISE_CLIPPING = 0x1, ADVISE_PALETTE = 0x2, ADVISE_COLORKEY = 0x4, ADVISE_POSITION = 0x8, ADVISE_DISPLAY_CHANGE = 0x10 }; const DWORD ADVISE_ALL = ADVISE_CLIPPING | ADVISE_PALETTE | ADVISE_COLORKEY | ADVISE_POSITION; const DWORD ADVISE_ALL2 = ADVISE_ALL | ADVISE_DISPLAY_CHANGE; cpp_quote("#ifndef _WINGDI_") /* already defined in wingdi.h, but needed for WIDL */ typedef struct _RGNDATAHEADER { DWORD dwSize; DWORD iType; DWORD nCount; DWORD nRgnSize; RECT rcBound; } RGNDATAHEADER; typedef struct _RGNDATA { RGNDATAHEADER rdh; char Buffer[1]; } RGNDATA; cpp_quote("#endif /* _WINGDI_ */") [ object, local, uuid(56a868a0-0ad4-11ce-b03a-0020af0ba770), pointer_default(unique) ] interface IOverlayNotify : IUnknown { HRESULT OnPaletteChange( [in] DWORD dwColors, [in] const PALETTEENTRY *pPalette); HRESULT OnClipChange( [in] const RECT *pSourceRect, [in] const RECT *pDestinationRect, [in] const RGNDATA *pRgnData); HRESULT OnColorKeyChange([in] const COLORKEY *pColorKey); HRESULT OnPositionChange([in] const RECT *pSourceRect, [in] const RECT *pDestinationRect); } typedef IOverlayNotify *POVERLAYNOTIFY; cpp_quote("#if 0") typedef HANDLE HMONITOR; cpp_quote("#endif /* 0 */") [ object, local, uuid(680EFA10-D535-11D1-87C8-00A0C9223196), pointer_default(unique) ] interface IOverlayNotify2 : IOverlayNotify { HRESULT OnDisplayChange( HMONITOR hMonitor); } typedef IOverlayNotify2 *POVERLAYNOTIFY2; [ object, local, uuid(56a868a1-0ad4-11ce-b03a-0020af0ba770), pointer_default(unique) ] interface IOverlay : IUnknown { HRESULT GetPalette( [out] DWORD *pdwColors, [out] PALETTEENTRY **ppPalette); HRESULT SetPalette( [in] DWORD dwColors, [in] PALETTEENTRY *pPalette); HRESULT GetDefaultColorKey([out] COLORKEY *pColorKey); HRESULT GetColorKey([out] COLORKEY *pColorKey); HRESULT SetColorKey([in,out] COLORKEY *pColorKey); HRESULT GetWindowHandle([out] HWND *pHwnd); HRESULT GetClipList([out] RECT *pSourceRect, [out] RECT *pDestinationRect, [out] RGNDATA **ppRgnData); HRESULT GetVideoPosition([out] RECT *pSourceRect, [out] RECT *pDestinationRect); HRESULT Advise( [in] IOverlayNotify *pOverlayNotify, [in] DWORD dwInterests); HRESULT Unadvise(); } typedef IOverlay *POVERLAY; [ object, uuid(56a868a2-0ad4-11ce-b03a-0020af0ba770), pointer_default(unique) ] interface IMediaEventSink : IUnknown { HRESULT Notify( [in] LONG EventCode, [in] LONG_PTR EventParam1, [in] LONG_PTR EventParam2 ); } typedef IMediaEventSink *PMEDIAEVENTSINK; [ object, uuid(56a868a6-0ad4-11ce-b03a-0020af0ba770), pointer_default(unique) ] interface IFileSourceFilter : IUnknown { HRESULT Load( [in] LPCOLESTR pszFileName, [in, unique] const AM_MEDIA_TYPE *pmt ); HRESULT GetCurFile( [out] LPOLESTR *ppszFileName, [out] AM_MEDIA_TYPE *pmt ); } typedef IFileSourceFilter *PFILTERFILESOURCE; [ object, uuid(a2104830-7c70-11cf-8bce-00aa00a3f1a6), pointer_default(unique) ] interface IFileSinkFilter : IUnknown { HRESULT SetFileName( [in] LPCOLESTR pszFileName, [in, unique] const AM_MEDIA_TYPE *pmt ); HRESULT GetCurFile( [out] LPOLESTR *ppszFileName, [out] AM_MEDIA_TYPE *pmt ); } typedef IFileSinkFilter *PFILTERFILESINK; [ object, uuid(00855B90-CE1B-11d0-BD4F-00A0C911CE86), pointer_default(unique) ] interface IFileSinkFilter2 : IFileSinkFilter { HRESULT SetMode( [in] DWORD dwFlags ); HRESULT GetMode( [out] DWORD *pdwFlags ); } typedef IFileSinkFilter2 *PFILESINKFILTER2; typedef enum { AM_FILE_OVERWRITE = 0x00000001, } AM_FILESINK_FLAGS; [ object, uuid(56a868a9-0ad4-11ce-b03a-0020af0ba770), pointer_default(unique) ] interface IGraphBuilder : IFilterGraph { HRESULT Connect ( [in] IPin * ppinOut, [in] IPin * ppinIn ); HRESULT Render ( [in] IPin * ppinOut ); HRESULT RenderFile ( [in] LPCWSTR lpcwstrFile, [in, unique] LPCWSTR lpcwstrPlayList ); HRESULT AddSourceFilter ( [in] LPCWSTR lpcwstrFileName, [in, unique] LPCWSTR lpcwstrFilterName, [out] IBaseFilter* *ppFilter ); HRESULT SetLogFile ( [in] DWORD_PTR hFile ); HRESULT Abort(); HRESULT ShouldOperationContinue(); } [ object, uuid(bf87b6e0-8c27-11d0-b3f0-00aa003761c5), pointer_default(unique) ] interface ICaptureGraphBuilder : IUnknown { HRESULT SetFiltergraph( [in] IGraphBuilder *pfg); HRESULT GetFiltergraph( [out] IGraphBuilder **ppfg); HRESULT SetOutputFileName( [in] const GUID *pType, [in] LPCOLESTR lpstrFile, [out] IBaseFilter **ppf, [out] IFileSinkFilter **ppSink); [local] HRESULT FindInterface( [in, unique] const GUID *pCategory, [in] IBaseFilter *pf, [in] REFIID riid, [out] void **ppint); [call_as(FindInterface)] HRESULT RemoteFindInterface( [in, unique] const GUID *pCategory, [in] IBaseFilter *pf, [in] REFIID riid, [out] IUnknown **ppint); HRESULT RenderStream( [in] const GUID *pCategory, [in] IUnknown *pSource, [in] IBaseFilter *pfCompressor, [in] IBaseFilter *pfRenderer); HRESULT ControlStream( [in] const GUID *pCategory, [in] IBaseFilter *pFilter, [in] REFERENCE_TIME *pstart, [in] REFERENCE_TIME *pstop, [in] WORD wStartCookie, [in] WORD wStopCookie); HRESULT AllocCapFile( [in] LPCOLESTR lpstr, [in] DWORDLONG dwlSize); HRESULT CopyCaptureFile( [in] LPOLESTR lpwstrOld, [in] LPOLESTR lpwstrNew, [in] int fAllowEscAbort, [in] IAMCopyCaptureFileProgress *pCallback); } [ object, uuid(670d1d20-a068-11d0-b3f0-00aa003761c5), pointer_default(unique) ] interface IAMCopyCaptureFileProgress : IUnknown { HRESULT Progress( [in] int iProgress); } [ object, uuid(93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D), pointer_default(unique) ] interface ICaptureGraphBuilder2 : IUnknown { HRESULT SetFiltergraph( [in] IGraphBuilder *pfg); HRESULT GetFiltergraph( [out] IGraphBuilder **ppfg); HRESULT SetOutputFileName( [in] const GUID *pType, [in] LPCOLESTR lpstrFile, [out] IBaseFilter **ppf, [out] IFileSinkFilter **ppSink); [local] HRESULT FindInterface( [in] const GUID *pCategory, [in] const GUID *pType, [in] IBaseFilter *pf, [in] REFIID riid, [out] void **ppint); [call_as(FindInterface)] HRESULT RemoteFindInterface( [in] const GUID *pCategory, [in] const GUID *pType, [in] IBaseFilter *pf, [in] REFIID riid, [out] IUnknown **ppint); HRESULT RenderStream( [in] const GUID *pCategory, [in] const GUID *pType, [in] IUnknown *pSource, [in] IBaseFilter *pfCompressor, [in] IBaseFilter *pfRenderer); HRESULT ControlStream( [in] const GUID *pCategory, [in] const GUID *pType, [in] IBaseFilter *pFilter, [in] REFERENCE_TIME *pstart, [in] REFERENCE_TIME *pstop, [in] WORD wStartCookie, [in] WORD wStopCookie); HRESULT AllocCapFile( [in] LPCOLESTR lpstr, [in] DWORDLONG dwlSize); HRESULT CopyCaptureFile( [in] LPOLESTR lpwstrOld, [in] LPOLESTR lpwstrNew, [in] int fAllowEscAbort, [in] IAMCopyCaptureFileProgress *pCallback); HRESULT FindPin( [in] IUnknown *pSource, [in] PIN_DIRECTION pindir, [in] const GUID *pCategory, [in] const GUID *pType, [in] BOOL fUnconnected, [in] int num, [out] IPin **ppPin); } [ local, object, uuid(5acd6aa0-f482-11ce-8b67-00aa00a3f1a6), pointer_default(unique) ] interface IConfigAviMux : IUnknown { HRESULT SetMasterStream( [in] LONG iStream); HRESULT GetMasterStream( [out] LONG *pStream); HRESULT SetOutputCompatibilityIndex( [in] BOOL fOldIndex); HRESULT GetOutputCompatibilityIndex( [out] BOOL *pfOldIndex); } [ local, object, uuid(bee3d220-157b-11d0-bd23-00a0c911ce86), pointer_default(unique) ] interface IConfigInterleaving : IUnknown { typedef enum InterleavingMode { INTERLEAVE_NONE, INTERLEAVE_CAPTURE, INTERLEAVE_FULL, INTERLEAVE_NONE_BUFFERED } InterleavingMode; HRESULT put_Mode( [in] InterleavingMode mode); HRESULT get_Mode( [out] InterleavingMode *pMode); HRESULT put_Interleaving( [in] const REFERENCE_TIME *prtInterleave, [in] const REFERENCE_TIME *prtPreroll); HRESULT get_Interleaving( [out] REFERENCE_TIME *prtInterleave, [out] REFERENCE_TIME *prtPreroll); } [ local, object, uuid(9fd52741-176d-4b36-8f51-ca8f933223be), pointer_default(unique) ] interface IAMClockSlave : IUnknown { HRESULT SetErrorTolerance( [in] DWORD dwTolerance); HRESULT GetErrorTolerance( [out] DWORD *pdwTolerance); } typedef struct _AMCOPPSignature { BYTE Signature[256]; } AMCOPPSignature; typedef struct _AMCOPPCommand { GUID macKDI; GUID guidCommandID; DWORD dwSequence; DWORD bSizeData; BYTE CommandData[4056]; } AMCOPPCommand, *LPAMCOPPCommand; typedef struct _AMCOPPStatusInput { GUID rApp; GUID guidStatusRequestID; DWORD dwSequence; DWORD cbSizeData; BYTE StatusData[4056]; } AMCOPPStatusInput, *LPAMCOPPStatusInput; typedef struct _AMCOPPStatusOutput { GUID macKDI; DWORD cbSizeData; BYTE COPPStatus[4076]; } AMCOPPStatusOutput, *LPAMCOPPStatusOutput; [ local, object, uuid(6feded3e-0ff1-4901-a2f1-43f7012c8515), pointer_default(unique) ] interface IAMCertifiedOutputProtection : IUnknown { HRESULT KeyExchange ( [out] GUID* pRandom, [out] BYTE** VarLenCertGH, [out] DWORD* pdwLengthCertGH); HRESULT SessionSequenceStart( [in] AMCOPPSignature* pSig); HRESULT ProtectionCommand( [in] const AMCOPPCommand* cmd); HRESULT ProtectionStatus( [in] const AMCOPPStatusInput* pStatusInput, [out] AMCOPPStatusOutput* pStatusOutput); } enum _AM_RENSDEREXFLAGS { AM_RENDEREX_RENDERTOEXISTINGRENDERERS = 0x01 }; [ object, uuid(36b73882-c2c8-11cf-8b46-00805f6cef60), pointer_default(unique) ] interface IFilterGraph2: IGraphBuilder { HRESULT AddSourceFilterForMoniker( [in] IMoniker *pMoniker, [in] IBindCtx *pCtx, [in, unique] LPCWSTR lpcwstrFilterName, [out] IBaseFilter **ppFilter ); HRESULT ReconnectEx ( [in] IPin * ppin, [in, unique] const AM_MEDIA_TYPE *pmt ); HRESULT RenderEx( [in] IPin *pPinOut, [in] DWORD dwFlags, [in, out] DWORD *pvContext ); } [ object, local, uuid(56a868bf-0ad4-11ce-b03a-0020af0ba770), pointer_default(unique) ] interface IStreamBuilder : IUnknown { HRESULT Render ( [in] IPin * ppinOut, [in] IGraphBuilder * pGraph ); HRESULT Backout ( [in] IPin * ppinOut, [in] IGraphBuilder * pGraph ); } /***************************************************************************** * IAMStreamConfig interface */ [ object, uuid(c6e13340-30ac-11d0-a18c-00a0c9118956), pointer_default(unique) ] interface IAMStreamConfig : IUnknown { typedef struct _VIDEO_STREAM_CONFIG_CAPS { GUID guid; ULONG VideoStandard; SIZE InputSize; SIZE MinCroppingSize; SIZE MaxCroppingSize; int CropGranularityX; int CropGranularityY; int CropAlignX; int CropAlignY; SIZE MinOutputSize; SIZE MaxOutputSize; int OutputGranularityX; int OutputGranularityY; int StretchTapsX; int StretchTapsY; int ShrinkTapsX; int ShrinkTapsY; LONGLONG MinFrameInterval; LONGLONG MaxFrameInterval; LONG MinBitsPerSecond; LONG MaxBitsPerSecond; } VIDEO_STREAM_CONFIG_CAPS; typedef struct _AUDIO_STREAM_CONFIG_CAPS { GUID guid; ULONG MinimumChannels; ULONG MaximumChannels; ULONG ChannelsGranularity; ULONG MinimumBitsPerSample; ULONG MaximumBitsPerSample; ULONG BitsPerSampleGranularity; ULONG MinimumSampleFrequency; ULONG MaximumSampleFrequency; ULONG SampleFrequencyGranularity; } AUDIO_STREAM_CONFIG_CAPS; HRESULT SetFormat( [in] AM_MEDIA_TYPE *pmt); HRESULT GetFormat( [in] AM_MEDIA_TYPE **pmt); HRESULT GetNumberOfCapabilities( [out] int *piCount, [out] int *piSize); HRESULT GetStreamCaps( [in] int iIndex, [out] AM_MEDIA_TYPE **pmt, [out] BYTE *pSCC); } typedef enum tagVideoProcAmpProperty { VideoProcAmp_Brightness, VideoProcAmp_Contrast, VideoProcAmp_Hue, VideoProcAmp_Saturation, VideoProcAmp_Sharpness, VideoProcAmp_Gamma, VideoProcAmp_ColorEnable, VideoProcAmp_WhiteBalance, VideoProcAmp_BacklightCompensation, VideoProcAmp_Gain } VideoProcAmpProperty; typedef enum tagVideoProcAmpFlags { VideoProcAmp_Flags_Auto = 0x0001, VideoProcAmp_Flags_Manual = 0x0002, } VideoProcAmpFlags; /***************************************************************************** * IAMVideoProcAmp interface */ [ object, uuid(c6e13360-30ac-11d0-a18c-00a0c9118956), pointer_default(unique) ] interface IAMVideoProcAmp : IUnknown { HRESULT GetRange( [in] LONG Property, [out] LONG *pMin, [out] LONG *pMax, [out] LONG *pSteppingDelta, [out] LONG *pDefault, [out] LONG *pCapsFlags); HRESULT Set( [in] LONG Property, [in] LONG lValue, [in] LONG Flags); HRESULT Get( [in] LONG Property, [out] LONG *lValue, [out] LONG *Flags); } [ object, uuid(56a868aa-0ad4-11ce-b03a-0020af0ba770), pointer_default(unique) ] interface IAsyncReader : IUnknown { HRESULT RequestAllocator( [in] IMemAllocator* pPreferred, [in] ALLOCATOR_PROPERTIES* pProps, [out] IMemAllocator ** ppActual); HRESULT Request( [in] IMediaSample* pSample, [in] DWORD_PTR dwUser); HRESULT WaitForNext( [in] DWORD dwTimeout, [out] IMediaSample** ppSample, [out] DWORD_PTR * pdwUser); HRESULT SyncReadAligned( [in] IMediaSample* pSample); HRESULT SyncRead( [in] LONGLONG llPosition, [in] LONG lLength, [out, size_is(lLength)] BYTE* pBuffer); HRESULT Length( [out] LONGLONG* pTotal, [out] LONGLONG* pAvailable); HRESULT BeginFlush(void); HRESULT EndFlush(void); } [ object, uuid(56a868ab-0ad4-11ce-b03a-0020af0ba770), pointer_default(unique) ] interface IGraphVersion : IUnknown { HRESULT QueryVersion(LONG* pVersion); } [ object, uuid(56a868ad-0ad4-11ce-b03a-0020af0ba770), pointer_default(unique) ] interface IResourceConsumer : IUnknown { HRESULT AcquireResource( [in] LONG idResource); HRESULT ReleaseResource( [in] LONG idResource); } [ object, uuid(56a868ac-0ad4-11ce-b03a-0020af0ba770), pointer_default(unique) ] interface IResourceManager : IUnknown { HRESULT Register( [in] LPCWSTR pName, [in] LONG cResource, [out] LONG* plToken ); HRESULT RegisterGroup( [in] LPCWSTR pName, [in] LONG cResource, [in, size_is(cResource)] LONG* palTokens, [out] LONG* plToken ); HRESULT RequestResource( [in] LONG idResource, [in] IUnknown* pFocusObject, [in] IResourceConsumer* pConsumer ); HRESULT NotifyAcquire( [in] LONG idResource, [in] IResourceConsumer* pConsumer, [in] HRESULT hr); HRESULT NotifyRelease( [in] LONG idResource, [in] IResourceConsumer* pConsumer, [in] BOOL bStillWant); HRESULT CancelRequest( [in] LONG idResource, [in] IResourceConsumer* pConsumer); HRESULT SetFocus( [in] IUnknown* pFocusObject); HRESULT ReleaseFocus( [in] IUnknown* pFocusObject); } typedef enum AM_STREAM_INFO_FLAGS { AM_STREAM_INFO_START_DEFINED = 0x01, AM_STREAM_INFO_STOP_DEFINED = 0x02, AM_STREAM_INFO_DISCARDING = 0x04, AM_STREAM_INFO_STOP_SEND_EXTRA = 0x10 } AM_STREAM_INFO_FLAGS; typedef struct AM_STREAM_INFO { REFERENCE_TIME tStart; REFERENCE_TIME tStop; DWORD dwStartCookie; DWORD dwStopCookie; DWORD dwFlags; } AM_STREAM_INFO; [ local, object, uuid(36b73881-c2c8-11cf-8b46-00805f6cef60), pointer_default(unique) ] interface IAMStreamControl : IUnknown { HRESULT StartAt( [in] const REFERENCE_TIME *ptStart, [in] DWORD dwCookie); HRESULT StopAt( [in] const REFERENCE_TIME *ptStop, [in] BOOL bSendExtra, [in] DWORD dwCookie); HRESULT GetInfo( [out] AM_STREAM_INFO *pInfo); } cpp_quote("#ifndef _IKsPropertySet_") cpp_quote("#define _IKsPropertySet_") cpp_quote("#define KSPROPERTY_SUPPORT_GET 1") cpp_quote("#define KSPROPERTY_SUPPORT_SET 2") typedef enum AMPROPERTY_PIN { AMPROPERTY_PIN_CATEGORY, AMPROPERTY_PIN_MEDIUM, } AMPROPERTY_PIN; [ object, uuid(31efac30-515c-11d0-a9aa-00aa0061be93), pointer_default(unique), local ] interface IKsPropertySet : IUnknown { HRESULT Set( [in] REFGUID guidPropSet, [in] DWORD dwPropID, [in, size_is(cbInstanceData)] LPVOID pInstanceData, [in] DWORD cbInstanceData, [in, size_is(cbPropData)] LPVOID pPropData, [in] DWORD cbPropData ); HRESULT Get( [in] REFGUID guidPropSet, [in] DWORD dwPropID, [in, size_is(cbInstanceData)] LPVOID pInstanceData, [in] DWORD cbInstanceData, [out, size_is(cbPropData)] LPVOID pPropData, [in] DWORD cbPropData, [out] DWORD *pcbReturned ); HRESULT QuerySupported( [in] REFGUID guidPropSet, [in] DWORD dwPropID, [out] DWORD *pTypeSupport); } cpp_quote("#endif /* _IKsPropertySet_ */") [ local, object, uuid(6025a880-c0d5-11d0-bd4e-00a0c911ce86), pointer_default(unique) ] interface IMediaPropertyBag : IPropertyBag { typedef IMediaPropertyBag *LPMEDIAPROPERTYBAG; HRESULT EnumProperty( [in] ULONG iProperty, [in, out] VARIANT *pvarPropertyName, [in, out] VARIANT *pvarPropertyValue); } [ local, object, uuid(5738e040-b67f-11d0-bd4d-00a0c911ce86), pointer_default(unique) ] interface IPersistMediaPropertyBag : IPersist { HRESULT InitNew(void); HRESULT Load( [in] IMediaPropertyBag *pPropBag, [in] IErrorLog *pErrorLog); HRESULT Save( [in] IMediaPropertyBag *pPropBag, [in] BOOL fClearDirty, [in] BOOL fSaveAllProperties); typedef IPersistMediaPropertyBag *LPPERSISTMEDIAPROPERTYBAG; } [ object, uuid(36b73883-c2c8-11cf-8b46-00805f6cef60), pointer_default(unique) ] interface ISeekingPassThru : IUnknown { HRESULT Init( [in] BOOL bSupportRendering, [in] IPin *pPin); } enum _AM_FILTER_MISC_FLAGS { AM_FILTER_MISC_FLAGS_IS_RENDERER = 0x1, AM_FILTER_MISC_FLAGS_IS_SOURCE = 0x2 }; [ local, object, uuid(2dd74950-a890-11d1-abe8-00a0c905f375), pointer_default(unique) ] interface IAMFilterMiscFlags : IUnknown { ULONG GetMiscFlags(); } [ local, object, uuid(4995f511-9ddb-4f12-bd3b-f04611807b79), pointer_default(unique) ] interface IAMGraphBuilderCallback : IUnknown { HRESULT SelectedFilter( [in] IMoniker *pMon); HRESULT CreatedFilter( [in] IBaseFilter *pFil); } [ local, object, uuid(d8d715a0-6e5e-11d0-b3f0-00aa003761c5), pointer_default(unique) ] interface IAMVfwCaptureDialogs : IUnknown { HRESULT HasDialog( [in] int dialog); HRESULT ShowDialog( [in] int dialog, [in] HWND hwnd); HRESULT SendDriverMessage( [in] int dialog, [in] int msg, [in] long data1, [in] long data2); } [ local, object, uuid(6a2e0670-28e4-11d0-a18c-00a0c9118956), pointer_default(unique) ] interface IAMVideoControl : IUnknown { HRESULT GetCaps([in] IPin *pin, [out] long *flags); HRESULT SetMode([in] IPin *pin, long mode); HRESULT GetMode([in] IPin *pin, [out] long *mode); HRESULT GetCurrentActualFrameRate([in] IPin *pin, [out] LONGLONG *frame_rate); HRESULT GetMaxAvailableFrameRate([in] IPin *pin, [in] long index, [in] SIZE dimensions, [out] LONGLONG *frame_rate); HRESULT GetFrameRateList([in] IPin *pin, [in] long index, [in] SIZE dimensions, [out] long *list_size, [out] LONGLONG **frame_rate); } [ local, object, uuid(56ed71a0-af5f-11d0-b3f0-00aa003761c5), pointer_default(unique) ] interface IAMBufferNegotiation : IUnknown { HRESULT SuggestAllocatorProperties([in] const ALLOCATOR_PROPERTIES *prop); HRESULT GetAllocatorProperties([out] ALLOCATOR_PROPERTIES *prop); } [ local, object, uuid(c6e13344-30ac-11d0-a18c-00a0c9118956), pointer_default(unique) ] interface IAMDroppedFrames : IUnknown { HRESULT GetNumDropped([out] long *number); HRESULT GetNumNotDropped([out] long *number); HRESULT GetDroppedInfo([in] long size, [out] long *array, [out] long *copied); HRESULT GetAverageFrameSize([out] long *size); } [ local, object, uuid(62ea93ba-ec62-11d2-b770-00c04fb6bd3d), pointer_default(unique) ] interface IAMLatency : IUnknown { HRESULT GetLatency([in, out] REFERENCE_TIME *latency); } [ local, object, uuid(f185fe76-e64e-11d2-b76e-00c04fb6bd3d), pointer_default(unique) ] interface IAMPushSource : IAMLatency { HRESULT GetPushSourceFlags([out] ULONG *flags); HRESULT SetPushSourceFlags([in] ULONG flags); HRESULT SetStreamOffset([in] REFERENCE_TIME offset); HRESULT GetStreamOffset([out] REFERENCE_TIME *offset); HRESULT GetMaxStreamOffset([out] REFERENCE_TIME *offset); HRESULT SetMaxStreamOffset([in] REFERENCE_TIME offset); }; [ local, object, uuid(c6e13343-30ac-11d0-a18c-00a0c9118956), pointer_default(unique) ] interface IAMVideoCompression : IUnknown { HRESULT put_KeyFrameRate([in] long frame_rate); HRESULT get_KeyFrameRate([out] long *frame_rate); HRESULT put_PFramesPerKeyFrame([in] long frame); HRESULT get_PFramesPerKeyFrame([out] long *frame); HRESULT put_Quality([in] double quality); HRESULT get_Quality([out] double *quality); HRESULT put_WindowSize([in] DWORDLONG size); HRESULT get_WindowSize([out] DWORDLONG *size); HRESULT GetInfo([out, size_is(*version_size)] LPWSTR version, [in, out] int *version_size, [out, size_is(*description_size)] LPWSTR description, [in, out] int *description_size, [out] long *frame_rate, [out] long *key, [out] double *quality, [out] long *capabilities); HRESULT OverrideKeyFrame([in] long number); HRESULT OverrideFrameSize([in] long number, [in] long size); } [ local, object, uuid(c6e13380-30ac-11d0-a18c-00a0c9118956), pointer_default(unique) ] interface IAMCrossbar : IUnknown { HRESULT get_PinCounts([out] long *output, [out] long *intput); HRESULT CanRoute([in] long output, [in] long input); HRESULT Route([in] long output, [in] long input); HRESULT get_IsRoutedTo([in] long output, [out] long *input); HRESULT get_CrossbarPinInfo([in] BOOL is_input, [in] long index, [out] long *related, [out] long *type); } typedef enum tagAMTunerEventType { AMTUNER_EVENT_CHANGED = 0x0001, } AMTunerEventType; [ local, object, uuid(211a8760-03ac-11d1-8d13-00aa00bd8339), pointer_default(unique) ] interface IAMTunerNotification : IUnknown { HRESULT OnEvent([in] AMTunerEventType event); } typedef enum tagAMTunerModeType { AMTUNER_MODE_DEFAULT = 0x0000, AMTUNER_MODE_TV = 0x0001, AMTUNER_MODE_FM_RADIO = 0x0002, AMTUNER_MODE_AM_RADIO = 0x0004, AMTUNER_MODE_DSS = 0x0008, } AMTunerModeType; [ local, object, uuid(211a8761-03ac-11d1-8d13-00aa00bd8339), pointer_default(unique) ] interface IAMTuner : IUnknown { HRESULT put_Channel([in] long channel, [in] long video, [in] long audio); HRESULT get_Channel([out] long *channel, [out] long *video, [out] long *audio); HRESULT ChannelMinMax([out] long *min, [out] long *max); HRESULT put_CountryCode([in] long country); HRESULT get_CountryCode([out] long *country); HRESULT put_TuningSpace([in] long tuning_space); HRESULT get_TuningSpace([out] long *tuning_space); [local] HRESULT Logon([in] HANDLE user); HRESULT Logout(); HRESULT SignalPresent([out] long *signal_strength); HRESULT put_Mode([in] AMTunerModeType mode); HRESULT get_Mode([out] AMTunerModeType *mode); HRESULT GetAvailableModes([out] long *modes); HRESULT RegisterNotificationCallBack([in] IAMTunerNotification *notify, [in] long events); HRESULT UnRegisterNotificationCallBack([in] IAMTunerNotification *notify); } [ local, object, uuid(211a8766-03ac-11d1-8d13-00aa00bd8339), pointer_default(unique) ] interface IAMTVTuner : IAMTuner { HRESULT get_AvailableTVFormats([out] long *standard); HRESULT get_TVFormat([out] long *standard); HRESULT AutoTune([in] long channel, [out] long *signal); HRESULT StoreAutoTune(); HRESULT get_NumInputConnections([out] long *number); HRESULT put_InputType([in] long index, [in] TunerInputType type); HRESULT get_InputType([in] long index, [out] TunerInputType *type); HRESULT put_ConnectInput([in] long index); HRESULT get_ConnectInput([out] long *index); HRESULT get_VideoFrequency([out] long *freq); HRESULT get_AudioFrequency([out] long *freq); } [ local, object, uuid(e46a9787-2b71-444d-a4b5-1fab7b708d6a), pointer_default(unique), ] interface IVideoFrameStep : IUnknown { HRESULT Step(DWORD frame_count, [in] IUnknown *filter); HRESULT CanStep(long multiple, [in] IUnknown *filter); HRESULT CancelStep(); }