blob: 79e8369ff47336d3e747d2496e7ba9fcade94d16 [file] [log] [blame]
/*
* 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
*/
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;
#include <axextendenums.h>
typedef struct
{
CLSID Clsid;
LPWSTR Name;
} REGFILTER;
typedef enum tagTVAudioMode {
AMTVAUDIO_MODE_MONO = 0x0001,
AMTVAUDIO_MODE_STEREO = 0x0002,
AMTVAUDIO_MODE_LANG_A = 0x0010,
AMTVAUDIO_MODE_LANG_B = 0x0020,
AMTVAUDIO_MODE_LANG_C = 0x0040,
AMTVAUDIO_PRESET_STEREO = 0x0200,
AMTVAUDIO_PRESET_LANG_A = 0x1000,
AMTVAUDIO_PRESET_LANG_B = 0x2000,
AMTVAUDIO_PRESET_LANG_C = 0x4000
} TVAudioMode;
[
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 bOututNeeded,
[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")
[
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);
};
cpp_quote("#if (_WIN32_WINNT >= 0x0601)")
[
local,
object,
uuid(cf7b26fc-9a00-485b-8147-3e789d5e8f67),
pointer_default(unique)
]
interface IAMAsyncReaderTimestampScaling : IUnknown
{
HRESULT GetTimestampMode(
[out] BOOL *pfRaw);
HRESULT SetTimestampMode(
[in] BOOL fRaw);
};
[
local,
object,
uuid(0e26a181-f40c-4635-8786-976284b52981),
pointer_default(unique)
]
interface IAMPluginControl : IUnknown
{
HRESULT GetPreferredClsid(
[in] REFGUID subType,
[out] CLSID *clsid);
HRESULT GetPreferredClsidByIndex(
[in] DWORD index,
[out] GUID *subType,
[out] CLSID *clsid);
HRESULT SetPreferredClsid(
[in] REFGUID subType,
[in] const CLSID *clsid);
HRESULT IsDisabled(
[in] REFCLSID clsid);
HRESULT GetDisabledByIndex(
[in] DWORD index,
[out] CLSID *clsid);
HRESULT SetDisabled(
[in] REFCLSID clsid,
[in] BOOL disabled);
HRESULT IsLegacyDisabled(
[in] LPCWSTR dllName);
}
cpp_quote("#endif /*(_WIN32_WINNT >= 0x0601)*/")