1N/A/*
1N/A * Copyright (C) 2002 Robert Shearman
1N/A *
1N/A * This library is free software; you can redistribute it and/or
1N/A * modify it under the terms of the GNU Lesser General Public
1N/A * License as published by the Free Software Foundation; either
1N/A * version 2.1 of the License, or (at your option) any later version.
1N/A *
1N/A * This library is distributed in the hope that it will be useful,
1N/A * but WITHOUT ANY WARRANTY; without even the implied warranty of
1N/A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1N/A * Lesser General Public License for more details.
1N/A *
1N/A * You should have received a copy of the GNU Lesser General Public
1N/A * License along with this library; if not, write to the Free Software
1N/A * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
1N/A */
1N/A
1N/A/*
1N/A * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
1N/A * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
1N/A * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
1N/A * a choice of LGPL license versions is made available with the language indicating
1N/A * that LGPLv2 or any later version may be used, or where a choice of which version
1N/A * of the LGPL is applied is otherwise unspecified.
1N/A */
1N/A
1N/Ainterface IAMAnalogVideoDecoder;
1N/Ainterface IAMAnalogVideoEncoder;
1N/Ainterface IAMAudioInputMixer;
1N/Ainterface IAMAudioRendererStats;
1N/Ainterface IAMBufferNegotiation;
1N/Ainterface IAMCameraControl;
1N/Ainterface IAMCopyCaptureFileProgress;
1N/Ainterface IAMCrossbar;
1N/Ainterface IAMDevMemoryAllocator;
1N/Ainterface IAMDevMemoryControl;
1N/Ainterface IAMDroppedFrames;
1N/Ainterface IAMExtDevice;
1N/Ainterface IAMExtTransport;
1N/Ainterface IAMGraphStreams;
1N/Ainterface IAMLatency;
1N/Ainterface IAMOpenProgress;
1N/Ainterface IAMOverlayFX;
1N/Ainterface IAMPhysicalPinInfo;
1N/Ainterface IAMPushSource;
1N/Ainterface IAMStreamConfig;
1N/Ainterface IAMTimecodeDisplay;
1N/Ainterface IAMTimecodeGenerator;
1N/Ainterface IAMTimecodeReader;
1N/Ainterface IAMTVTuner;
1N/Ainterface IAMVfwCaptureDialogs;
1N/Ainterface IAMVfwCompressDialogs;
1N/Ainterface IAMVideoCompression;
1N/Ainterface IAMVideoDecimationProperties;
1N/Ainterface IAMVideoProcAmp;
1N/Ainterface ICaptureGraphBuilder;
1N/Ainterface ICaptureGraphBuilder2;
1N/Ainterface IConfigAviMux;
1N/Ainterface IConfigInterleaving;
1N/Ainterface IDecimateVideoImage;
1N/Ainterface IDrawVideoImage;
1N/Ainterface IEnumRegFilters;
1N/Ainterface IEnumStreamIdMap;
1N/Ainterface IFileSourceFilter;
1N/Ainterface IFileSinkFilter;
1N/Ainterface IFileSinkFilter2;
1N/Ainterface IFilterMapper;
1N/Ainterface IFilterMapper2;
1N/Ainterface IGraphBuilder;
1N/Ainterface IKsPropertySet;
1N/Ainterface IMediaEventSink;
1N/Ainterface IMpeg2Demultiplexer;
1N/Ainterface IMPEG2StreamIdMap;
1N/Ainterface IOverlay;
1N/Ainterface IOverlayNotify;
1N/Ainterface IOverlayNotify2;
1N/Ainterface IQualityControl;
1N/Ainterface ISeekingPassThru;
1N/A
1N/Atypedef struct
1N/A{
1N/A CLSID Clsid;
1N/A LPWSTR Name;
1N/A} REGFILTER;
1N/A
1N/A[
1N/Aobject,
1N/Auuid(56a868a4-0ad4-11ce-b03a-0020af0ba770),
1N/Apointer_default(unique)
1N/A]
1N/Ainterface IEnumRegFilters : IUnknown
1N/A{
1N/A HRESULT Next
1N/A ( [in] ULONG cFilters,
1N/A [out] REGFILTER ** apRegFilter,
1N/A [out] ULONG * pcFetched
1N/A );
1N/A
1N/A HRESULT Skip(
1N/A [in] ULONG cFilters
1N/A );
1N/A
1N/A HRESULT Reset(void);
1N/A
1N/A HRESULT Clone(
1N/A [out] IEnumRegFilters **ppEnum
1N/A );
1N/A}
1N/A
1N/A
1N/Atypedef IEnumRegFilters *PENUMREGFILTERS;
1N/A
1N/A[
1N/Aobject,
1N/Auuid(56a868a3-0ad4-11ce-b03a-0020af0ba770),
1N/Apointer_default(unique)
1N/A]
1N/Ainterface IFilterMapper : IUnknown
1N/A{
1N/A enum { MERIT_PREFERRED = 0x800000,
1N/A MERIT_NORMAL = 0x600000,
1N/A MERIT_UNLIKELY = 0x400000,
1N/A MERIT_DO_NOT_USE = 0x200000,
1N/A MERIT_SW_COMPRESSOR = 0x100000,
1N/A MERIT_HW_COMPRESSOR = 0x100050
1N/A };
1N/A
1N/A HRESULT RegisterFilter
1N/A ( [in] CLSID clsid,
1N/A [in] LPCWSTR Name,
1N/A [in] DWORD dwMerit
1N/A );
1N/A
1N/A HRESULT RegisterFilterInstance
1N/A ( [in] CLSID clsid,
1N/A [in] LPCWSTR Name,
1N/A [out] CLSID *MRId
1N/A );
1N/A
1N/A
1N/A HRESULT RegisterPin
1N/A ( [in] CLSID Filter,
1N/A [in] LPCWSTR Name,
1N/A [in] BOOL bRendered,
1N/A [in] BOOL bOutput,
1N/A [in] BOOL bZero,
1N/A [in] BOOL bMany,
1N/A [in] CLSID ConnectsToFilter,
1N/A [in] LPCWSTR ConnectsToPin
1N/A );
1N/A
1N/A HRESULT RegisterPinType
1N/A ( [in] CLSID clsFilter,
1N/A [in] LPCWSTR strName,
1N/A [in] CLSID clsMajorType,
1N/A [in] CLSID clsSubType
1N/A );
1N/A
1N/A
1N/A HRESULT UnregisterFilter
1N/A ( [in] CLSID Filter
1N/A );
1N/A
1N/A
1N/A HRESULT UnregisterFilterInstance
1N/A ( [in] CLSID MRId
1N/A );
1N/A
1N/A
1N/A HRESULT UnregisterPin
1N/A ( [in] CLSID Filter,
1N/A [in] LPCWSTR Name
1N/A );
1N/A
1N/A HRESULT EnumMatchingFilters
1N/A ( [out] IEnumRegFilters **ppEnum,
1N/A [in] DWORD dwMerit,
1N/A [in] BOOL bInputNeeded,
1N/A [in] CLSID clsInMaj,
1N/A [in] CLSID clsInSub,
1N/A [in] BOOL bRender,
1N/A [in] BOOL bOututNeeded,
1N/A [in] CLSID clsOutMaj,
1N/A [in] CLSID clsOutSub
1N/A );
1N/A
1N/A}
1N/A
1N/Atypedef struct
1N/A{
1N/A const CLSID * clsMajorType;
1N/A const CLSID * clsMinorType;
1N/A} REGPINTYPES;
1N/A
1N/Atypedef struct
1N/A{
1N/A LPWSTR strName;
1N/A BOOL bRendered;
1N/A BOOL bOutput;
1N/A BOOL bZero;
1N/A BOOL bMany;
1N/A const CLSID * clsConnectsToFilter;
1N/A const WCHAR * strConnectsToPin;
1N/A UINT nMediaTypes;
1N/A const REGPINTYPES * lpMediaType;
1N/A} REGFILTERPINS;
1N/A
1N/Atypedef struct
1N/A{
1N/A CLSID clsMedium;
1N/A DWORD dw1;
1N/A DWORD dw2;
1N/A} REGPINMEDIUM;
1N/A
1N/Aenum
1N/A{
1N/A REG_PINFLAG_B_ZERO = 0x1,
1N/A REG_PINFLAG_B_RENDERER = 0x2,
1N/A REG_PINFLAG_B_MANY = 0x4,
1N/A REG_PINFLAG_B_OUTPUT = 0x8
1N/A};
1N/A
1N/A
1N/Atypedef struct
1N/A{
1N/A DWORD dwFlags;
1N/A UINT cInstances;
1N/A UINT nMediaTypes;
1N/A [size_is(nMediaTypes)] const REGPINTYPES * lpMediaType;
1N/A UINT nMediums;
1N/A [size_is(nMediums)] const REGPINMEDIUM *lpMedium;
1N/A const CLSID *clsPinCategory;
1N/A} REGFILTERPINS2;
1N/A
1N/Atypedef struct
1N/A{
1N/A DWORD dwVersion;
1N/A DWORD dwMerit;
1N/A [switch_is(dwVersion)] [switch_type(DWORD)] union
1N/A {
1N/A [case(1)]
1N/A struct
1N/A {
1N/A ULONG cPins;
1N/A [size_is(cPins)] const REGFILTERPINS *rgPins;
1N/A } DUMMYSTRUCTNAME;
1N/A
1N/A [case(2)]
1N/A struct
1N/A {
1N/A ULONG cPins2;
1N/A [size_is(cPins2)] const REGFILTERPINS2 *rgPins2;
1N/A } DUMMYSTRUCTNAME1;
1N/A
1N/A [default]
1N/A ;
1N/A } DUMMYUNIONNAME;
1N/A
1N/A} REGFILTER2;
1N/A
1N/A
1N/A[
1N/Aobject,
1N/Auuid(b79bb0b0-33c1-11d1-abe1-00a0c905f375),
1N/Apointer_default(unique)
1N/A]
1N/Ainterface IFilterMapper2 : IUnknown
1N/A{
1N/A HRESULT CreateCategory
1N/A ( [in] REFCLSID clsidCategory,
1N/A [in] DWORD dwCategoryMerit,
1N/A [in] LPCWSTR Description
1N/A );
1N/A
1N/A HRESULT UnregisterFilter
1N/A ( [in] const CLSID *pclsidCategory,
1N/A [in] const OLECHAR *szInstance,
1N/A [in] REFCLSID Filter
1N/A );
1N/A
1N/A HRESULT RegisterFilter
1N/A ( [in] REFCLSID clsidFilter,
1N/A [in] LPCWSTR Name,
1N/A [in, out] IMoniker **ppMoniker,
1N/A [in] const CLSID *pclsidCategory,
1N/A [in] const OLECHAR *szInstance,
1N/A [in] const REGFILTER2 *prf2
1N/A );
1N/A
1N/A HRESULT EnumMatchingFilters
1N/A ( [out] IEnumMoniker **ppEnum,
1N/A [in] DWORD dwFlags,
1N/A [in] BOOL bExactMatch,
1N/A [in] DWORD dwMerit,
1N/A [in] BOOL bInputNeeded,
1N/A [in] DWORD cInputTypes,
1N/A [size_is(cInputTypes*2)] const GUID *pInputTypes,
1N/A [in] const REGPINMEDIUM *pMedIn,
1N/A [in] const CLSID *pPinCategoryIn,
1N/A [in] BOOL bRender,
1N/A [in] BOOL bOutputNeeded,
1N/A [in] DWORD cOutputTypes,
1N/A [size_is(cOutputTypes*2)] const GUID *pOutputTypes,
1N/A [in] const REGPINMEDIUM *pMedOut,
1N/A [in] const CLSID *pPinCategoryOut
1N/A );
1N/A}
1N/A
1N/A[
1N/Aobject,
1N/Auuid(b79bb0b1-33c1-11d1-abe1-00a0c905f375),
1N/Apointer_default(unique)
1N/A]
1N/Ainterface IFilterMapper3 : IFilterMapper2
1N/A{
1N/A HRESULT GetICreateDevEnum( [out] ICreateDevEnum **ppEnum );
1N/A}
1N/A
1N/Atypedef enum tagQualityMessageType
1N/A{
1N/A Famine,
1N/A Flood
1N/A} QualityMessageType;
1N/A
1N/Atypedef struct tagQuality
1N/A{
1N/A QualityMessageType Type;
1N/A LONG Proportion;
1N/A REFERENCE_TIME Late;
1N/A REFERENCE_TIME TimeStamp;
1N/A} Quality;
1N/A
1N/Atypedef IQualityControl *PQUALITYCONTROL;
1N/A
1N/A[
1N/Aobject,
1N/Auuid(56a868a5-0ad4-11ce-b03a-0020af0ba770),
1N/Apointer_default(unique)
1N/A]
1N/Ainterface IQualityControl : IUnknown
1N/A{
1N/A HRESULT Notify
1N/A ( [in] IBaseFilter * pSelf,
1N/A [in] Quality q
1N/A );
1N/A
1N/A HRESULT SetSink
1N/A ( [in] IQualityControl * piqc
1N/A );
1N/A}
1N/A
1N/Aenum
1N/A{
1N/A CK_NOCOLORKEY = 0x0,
1N/A CK_INDEX = 0x1,
1N/A CK_RGB = 0x2
1N/A};
1N/A
1N/Atypedef struct tagCOLORKEY
1N/A{
1N/A DWORD KeyType;
1N/A DWORD PaletteIndex;
1N/A COLORREF LowColorValue;
1N/A COLORREF HighColorValue;
1N/A} COLORKEY;
1N/A
1N/Aenum
1N/A{
1N/A ADVISE_NONE = 0x0,
1N/A ADVISE_CLIPPING = 0x1,
1N/A ADVISE_PALETTE = 0x2,
1N/A ADVISE_COLORKEY = 0x4,
1N/A ADVISE_POSITION = 0x8,
1N/A ADVISE_DISPLAY_CHANGE = 0x10
1N/A};
1N/A
1N/Aconst DWORD ADVISE_ALL = ADVISE_CLIPPING |
1N/A ADVISE_PALETTE |
1N/A ADVISE_COLORKEY |
1N/A ADVISE_POSITION;
1N/A
1N/Aconst DWORD ADVISE_ALL2 = ADVISE_ALL |
1N/A ADVISE_DISPLAY_CHANGE;
1N/A
1N/Acpp_quote("#ifndef _WINGDI_")
1N/A
1N/A/* already defined in wingdi.h, but needed for WIDL */
1N/A
1N/Atypedef struct _RGNDATAHEADER
1N/A{
1N/A DWORD dwSize;
1N/A DWORD iType;
1N/A DWORD nCount;
1N/A DWORD nRgnSize;
1N/A RECT rcBound;
1N/A} RGNDATAHEADER;
1N/A
1N/Atypedef struct _RGNDATA
1N/A{
1N/A RGNDATAHEADER rdh;
1N/A char Buffer[1];
1N/A} RGNDATA;
1N/A
1N/Acpp_quote("#endif /* _WINGDI_ */")
1N/A
1N/A[
1N/Aobject,
1N/Alocal,
1N/Auuid(56a868a0-0ad4-11ce-b03a-0020af0ba770),
1N/Apointer_default(unique)
1N/A]
1N/Ainterface IOverlayNotify : IUnknown
1N/A{
1N/A HRESULT OnPaletteChange(
1N/A [in] DWORD dwColors,
1N/A [in] const PALETTEENTRY *pPalette);
1N/A
1N/A HRESULT OnClipChange(
1N/A [in] const RECT *pSourceRect,
1N/A [in] const RECT *pDestinationRect,
1N/A [in] const RGNDATA *pRgnData);
1N/A
1N/A HRESULT OnColorKeyChange([in] const COLORKEY *pColorKey);
1N/A
1N/A HRESULT OnPositionChange([in] const RECT *pSourceRect,
1N/A [in] const RECT *pDestinationRect);
1N/A}
1N/A
1N/Atypedef IOverlayNotify *POVERLAYNOTIFY;
1N/A
1N/Acpp_quote("#if 0")
1N/Atypedef HANDLE HMONITOR;
1N/Acpp_quote("#endif /* 0 */")
1N/A
1N/A[
1N/Aobject,
1N/Alocal,
1N/Auuid(680EFA10-D535-11D1-87C8-00A0C9223196),
1N/Apointer_default(unique)
1N/A]
1N/Ainterface IOverlayNotify2 : IOverlayNotify
1N/A{
1N/A HRESULT OnDisplayChange(
1N/A HMONITOR hMonitor);
1N/A}
1N/A
1N/Atypedef IOverlayNotify2 *POVERLAYNOTIFY2;
1N/A
1N/A[
1N/Aobject,
1N/Alocal,
1N/Auuid(56a868a1-0ad4-11ce-b03a-0020af0ba770),
1N/Apointer_default(unique)
1N/A]
1N/Ainterface IOverlay : IUnknown
1N/A{
1N/A HRESULT GetPalette(
1N/A [out] DWORD *pdwColors,
1N/A [out] PALETTEENTRY **ppPalette);
1N/A
1N/A HRESULT SetPalette(
1N/A [in] DWORD dwColors,
1N/A [in] PALETTEENTRY *pPalette);
1N/A
1N/A HRESULT GetDefaultColorKey([out] COLORKEY *pColorKey);
1N/A
1N/A HRESULT GetColorKey([out] COLORKEY *pColorKey);
1N/A
1N/A HRESULT SetColorKey([in,out] COLORKEY *pColorKey);
1N/A
1N/A HRESULT GetWindowHandle([out] HWND *pHwnd);
1N/A
1N/A HRESULT GetClipList([out] RECT *pSourceRect,
1N/A [out] RECT *pDestinationRect,
1N/A [out] RGNDATA **ppRgnData);
1N/A
1N/A HRESULT GetVideoPosition([out] RECT *pSourceRect,
1N/A [out] RECT *pDestinationRect);
1N/A
1N/A HRESULT Advise(
1N/A [in] IOverlayNotify *pOverlayNotify,
1N/A [in] DWORD dwInterests);
1N/A
1N/A HRESULT Unadvise();
1N/A}
1N/A
1N/Atypedef IOverlay *POVERLAY;
1N/A
1N/A[
1N/Aobject,
1N/Auuid(56a868a2-0ad4-11ce-b03a-0020af0ba770),
1N/Apointer_default(unique)
1N/A]
1N/Ainterface IMediaEventSink : IUnknown
1N/A{
1N/A HRESULT Notify(
1N/A [in] LONG EventCode,
1N/A [in] LONG_PTR EventParam1,
1N/A [in] LONG_PTR EventParam2
1N/A );
1N/A}
1N/A
1N/Atypedef IMediaEventSink *PMEDIAEVENTSINK;
1N/A
1N/A[
1N/Aobject,
1N/Auuid(56a868a6-0ad4-11ce-b03a-0020af0ba770),
1N/Apointer_default(unique)
1N/A]
1N/Ainterface IFileSourceFilter : IUnknown
1N/A{
1N/A HRESULT Load(
1N/A [in] LPCOLESTR pszFileName,
1N/A [in, unique] const AM_MEDIA_TYPE *pmt
1N/A );
1N/A
1N/A HRESULT GetCurFile(
1N/A [out] LPOLESTR *ppszFileName,
1N/A [out] AM_MEDIA_TYPE *pmt
1N/A );
1N/A}
1N/A
1N/Atypedef IFileSourceFilter *PFILTERFILESOURCE;
1N/A
1N/A[
1N/Aobject,
1N/Auuid(a2104830-7c70-11cf-8bce-00aa00a3f1a6),
1N/Apointer_default(unique)
1N/A]
1N/Ainterface IFileSinkFilter : IUnknown
1N/A{
1N/A HRESULT SetFileName(
1N/A [in] LPCOLESTR pszFileName,
1N/A [in, unique] const AM_MEDIA_TYPE *pmt
1N/A );
1N/A
1N/A HRESULT GetCurFile(
1N/A [out] LPOLESTR *ppszFileName,
1N/A [out] AM_MEDIA_TYPE *pmt
1N/A );
1N/A}
1N/A
1N/Atypedef IFileSinkFilter *PFILTERFILESINK;
1N/A
1N/A[
1N/A object,
1N/A uuid(00855B90-CE1B-11d0-BD4F-00A0C911CE86),
1N/A pointer_default(unique)
1N/A]
1N/Ainterface IFileSinkFilter2 : IFileSinkFilter
1N/A{
1N/A HRESULT SetMode(
1N/A [in] DWORD dwFlags
1N/A );
1N/A
1N/A HRESULT GetMode(
1N/A [out] DWORD *pdwFlags
1N/A );
1N/A}
1N/A
1N/Atypedef IFileSinkFilter2 *PFILESINKFILTER2;
1N/A
1N/Atypedef enum
1N/A{
1N/A AM_FILE_OVERWRITE = 0x00000001,
1N/A} AM_FILESINK_FLAGS;
1N/A
1N/A[
1N/Aobject,
1N/Auuid(56a868a9-0ad4-11ce-b03a-0020af0ba770),
1N/Apointer_default(unique)
1N/A]
1N/Ainterface IGraphBuilder : IFilterGraph
1N/A{
1N/A HRESULT Connect
1N/A ( [in] IPin * ppinOut,
1N/A [in] IPin * ppinIn
1N/A );
1N/A
1N/A HRESULT Render
1N/A ( [in] IPin * ppinOut
1N/A );
1N/A
1N/A HRESULT RenderFile
1N/A ( [in] LPCWSTR lpcwstrFile,
1N/A [in, unique] LPCWSTR lpcwstrPlayList
1N/A );
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);
}
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
{
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);
}
cpp_quote("#ifndef _IKsPropertySet_")
cpp_quote("#define _IKsPropertySet_")
cpp_quote("#define KSPROPERTY_SUPPORT_GET 1")
cpp_quote("#define KSPROPERTY_SUPPORT_SET 2")
[
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_ */")
[
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();
};