Commit 7c8b85a2 authored by Robert Shearman's avatar Robert Shearman Committed by Alexandre Julliard

- Added DShow headers.

- Added needed const's in FilterGraph implementation.
parent de086614
...@@ -505,7 +505,7 @@ static HRESULT WINAPI Mediaseeking_CheckCapabilities(IMediaSeeking *iface, ...@@ -505,7 +505,7 @@ static HRESULT WINAPI Mediaseeking_CheckCapabilities(IMediaSeeking *iface,
} }
static HRESULT WINAPI Mediaseeking_IsFormatSupported(IMediaSeeking *iface, static HRESULT WINAPI Mediaseeking_IsFormatSupported(IMediaSeeking *iface,
GUID *pFormat) { const GUID *pFormat) {
ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface); ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat); TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
...@@ -532,7 +532,7 @@ static HRESULT WINAPI Mediaseeking_GetTimeFormat(IMediaSeeking *iface, ...@@ -532,7 +532,7 @@ static HRESULT WINAPI Mediaseeking_GetTimeFormat(IMediaSeeking *iface,
} }
static HRESULT WINAPI Mediaseeking_IsUsingTimeFormat(IMediaSeeking *iface, static HRESULT WINAPI Mediaseeking_IsUsingTimeFormat(IMediaSeeking *iface,
GUID *pFormat) { const GUID *pFormat) {
ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface); ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat); TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
...@@ -541,7 +541,7 @@ static HRESULT WINAPI Mediaseeking_IsUsingTimeFormat(IMediaSeeking *iface, ...@@ -541,7 +541,7 @@ static HRESULT WINAPI Mediaseeking_IsUsingTimeFormat(IMediaSeeking *iface,
} }
static HRESULT WINAPI Mediaseeking_SetTimeFormat(IMediaSeeking *iface, static HRESULT WINAPI Mediaseeking_SetTimeFormat(IMediaSeeking *iface,
GUID *pFormat) { const GUID *pFormat) {
ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface); ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat); TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
...@@ -578,9 +578,9 @@ static HRESULT WINAPI Mediaseeking_GetCurrentPosition(IMediaSeeking *iface, ...@@ -578,9 +578,9 @@ static HRESULT WINAPI Mediaseeking_GetCurrentPosition(IMediaSeeking *iface,
static HRESULT WINAPI Mediaseeking_ConvertTimeFormat(IMediaSeeking *iface, static HRESULT WINAPI Mediaseeking_ConvertTimeFormat(IMediaSeeking *iface,
LONGLONG *pTarget, LONGLONG *pTarget,
GUID *pTargetFormat, const GUID *pTargetFormat,
LONGLONG Source, LONGLONG Source,
GUID *pSourceFormat) { const GUID *pSourceFormat) {
ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface); ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
TRACE("(%p/%p)->(%p, %p, %lld, %p): stub !!!\n", This, iface, pTarget, pTargetFormat, Source, pSourceFormat); TRACE("(%p/%p)->(%p, %p, %lld, %p): stub !!!\n", This, iface, pTarget, pTargetFormat, Source, pSourceFormat);
......
...@@ -7,9 +7,16 @@ MODULE = none ...@@ -7,9 +7,16 @@ MODULE = none
IDL_SRCS = \ IDL_SRCS = \
oaidl.idl \ oaidl.idl \
objidl.idl \ objidl.idl \
strmif.idl \
unknwn.idl \ unknwn.idl \
wtypes.idl wtypes.idl
IDL_INCLUDES = \
axcore.idl \
axextend.idl \
devenum.idl \
dyngraph.idl
WINDOWS_INCLUDES = \ WINDOWS_INCLUDES = \
accctrl.h \ accctrl.h \
audevcod.h \ audevcod.h \
...@@ -188,6 +195,7 @@ WINDOWS_INCLUDES = \ ...@@ -188,6 +195,7 @@ WINDOWS_INCLUDES = \
wshisotp.h \ wshisotp.h \
wsipx.h \ wsipx.h \
zmouse.h \ zmouse.h \
$(IDL_INCLUDES) \
$(IDL_SRCS) \ $(IDL_SRCS) \
$(IDL_SRCS:.idl=.h) $(IDL_SRCS:.idl=.h)
......
/*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#define CHARS_IN_GUID 39
cpp_quote("#define CHARS_IN_GUID 39")
/* GetTimeFormat is defined in winnls.h as
* either the W or A suffixed version */
cpp_quote("#undef GetTimeFormat")
typedef struct _AMMediaType
{
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown * pUnk;
ULONG cbFormat;
[size_is(cbFormat)] BYTE * pbFormat;
} AM_MEDIA_TYPE;
typedef enum _PinDirection
{
PINDIR_INPUT,
PINDIR_OUTPUT
} PIN_DIRECTION;
#define MAX_PIN_NAME 128
#define MAX_FILTER_NAME 128
cpp_quote("#define MAX_PIN_NAME 128")
cpp_quote("#define MAX_FILTER_NAME 128")
typedef LONGLONG REFERENCE_TIME;
typedef double REFTIME;
typedef DWORD_PTR HSEMAPHORE;
typedef DWORD_PTR HEVENT;
typedef struct _AllocatorProperties
{
long cBuffers;
long cbBuffer;
long cbAlign;
long cbPrefix;
} ALLOCATOR_PROPERTIES;
interface IAMovieSetup;
interface IEnumFilters;
interface IEnumMediaTypes;
interface IEnumPins;
interface IBaseFilter;
interface IFilterGraph;
interface IMediaFilter;
interface IMediaSample;
interface IMemAllocator;
interface IMemAllocatorCallbackTemp;
interface IMemAllocatorNotifyCallbackTemp;
interface IMemInputPin;
interface IPin;
interface IReferenceClock;
[
object,
uuid(56a86891-0ad4-11ce-b03a-0020af0ba770),
pointer_default(unique)
]
interface IPin : IUnknown
{
typedef struct _PinInfo
{
IBaseFilter *pFilter;
PIN_DIRECTION dir;
WCHAR achName[MAX_PIN_NAME];
} PIN_INFO;
HRESULT Connect(
[in] IPin * pReceivePin,
[in] const AM_MEDIA_TYPE * pmt);
HRESULT ReceiveConnection(
[in] IPin * pConnector,
[in] const AM_MEDIA_TYPE *pmt);
HRESULT Disconnect(void);
HRESULT ConnectedTo(
[out] IPin **pPin);
HRESULT ConnectionMediaType(
[out] AM_MEDIA_TYPE *pmt);
HRESULT QueryPinInfo(
[out] PIN_INFO * pInfo);
HRESULT QueryDirection(
[out] PIN_DIRECTION *pPinDir);
HRESULT QueryId(
[out] LPWSTR * Id);
HRESULT QueryAccept(
[in] const AM_MEDIA_TYPE *pmt);
HRESULT EnumMediaTypes(
[out] IEnumMediaTypes **ppEnum);
HRESULT QueryInternalConnections(
[out] IPin* *apPin,
[in, out] ULONG *nPin);
HRESULT EndOfStream(void);
HRESULT BeginFlush(void);
HRESULT EndFlush(void);
HRESULT NewSegment(
[in] REFERENCE_TIME tStart,
[in] REFERENCE_TIME tStop,
[in] double dRate);
}
typedef IPin *PPIN;
[
object,
uuid(56a86892-0ad4-11ce-b03a-0020af0ba770),
pointer_default(unique)
]
interface IEnumPins : IUnknown
{
HRESULT Next(
[in] ULONG cPins,
[out, size_is(cPins)] IPin ** ppPins,
[out] ULONG * pcFetched);
HRESULT Skip(
[in] ULONG cPins);
HRESULT Reset(void);
HRESULT Clone(
[out] IEnumPins **ppEnum);
}
typedef IEnumPins *PENUMPINS;
[
object,
uuid(89c31040-846b-11ce-97d3-00aa0055595a),
pointer_default(unique)
]
interface IEnumMediaTypes : IUnknown
{
HRESULT Next(
[in] ULONG cMediaTypes,
[out, size_is(cMediaTypes)]
AM_MEDIA_TYPE ** ppMediaTypes,
[out] ULONG * pcFetched
);
HRESULT Skip(
[in] ULONG cMediaTypes);
HRESULT Reset(void);
HRESULT Clone(
[out] IEnumMediaTypes **ppEnum
);
}
typedef IEnumMediaTypes *PENUMMEDIATYPES;
[
object,
uuid(56a8689f-0ad4-11ce-b03a-0020af0ba770),
pointer_default(unique)
]
interface IFilterGraph : IUnknown
{
HRESULT AddFilter(
[in] IBaseFilter * pFilter,
[in, string] LPCWSTR pName);
HRESULT RemoveFilter(
[in] IBaseFilter * pFilter);
HRESULT EnumFilters(
[out] IEnumFilters **ppEnum);
HRESULT FindFilterByName(
[in, string] LPCWSTR pName,
[out] IBaseFilter ** ppFilter);
HRESULT ConnectDirect(
[in] IPin * ppinOut,
[in] IPin * ppinIn,
[in, unique] const AM_MEDIA_TYPE* pmt);
HRESULT Reconnect(
[in] IPin * ppin);
HRESULT Disconnect(
[in] IPin * ppin);
HRESULT SetDefaultSyncSource(void);
}
typedef IFilterGraph *PFILTERGRAPH;
[
object,
uuid(56a86893-0ad4-11ce-b03a-0020af0ba770),
pointer_default(unique)
]
interface IEnumFilters : IUnknown
{
HRESULT Next(
[in] ULONG cFilters,
[out] IBaseFilter ** ppFilter,
[out] ULONG * pcFetched);
HRESULT Skip(
[in] ULONG cFilters);
HRESULT Reset(void);
HRESULT Clone(
[out] IEnumFilters **ppEnum);
}
typedef IEnumFilters *PENUMFILTERS;
[
object,
uuid(56a86899-0ad4-11ce-b03a-0020af0ba770),
pointer_default(unique)
]
interface IMediaFilter : IPersist
{
typedef enum _FilterState
{
State_Stopped,
State_Paused,
State_Running
} FILTER_STATE;
HRESULT Stop(void);
HRESULT Pause(void);
HRESULT Run(REFERENCE_TIME tStart);
HRESULT GetState(
[in] DWORD dwMilliSecsTimeout,
[out] FILTER_STATE *State);
HRESULT SetSyncSource(
[in] IReferenceClock * pClock);
HRESULT GetSyncSource(
[out] IReferenceClock ** pClock);
}
typedef IMediaFilter *PMEDIAFILTER;
[
object,
uuid(56a86895-0ad4-11ce-b03a-0020af0ba770),
pointer_default(unique)
]
interface IBaseFilter : IMediaFilter
{
typedef struct _FilterInfo
{
WCHAR achName[MAX_FILTER_NAME];
IFilterGraph * pGraph;
} FILTER_INFO;
HRESULT EnumPins(
[out] IEnumPins ** ppEnum);
HRESULT FindPin(
[in, string] LPCWSTR Id,
[out] IPin ** ppPin);
HRESULT QueryFilterInfo(
[out] FILTER_INFO * pInfo);
HRESULT JoinFilterGraph(
[in] IFilterGraph * pGraph,
[in, string] LPCWSTR pName);
HRESULT QueryVendorInfo(
[out, string] LPWSTR* pVendorInfo);
}
typedef IBaseFilter *PFILTER;
[
object,
uuid(56a86897-0ad4-11ce-b03a-0020af0ba770),
pointer_default(unique)
]
interface IReferenceClock : IUnknown
{
HRESULT GetTime(
[out] REFERENCE_TIME *pTime);
HRESULT AdviseTime(
[in] REFERENCE_TIME baseTime,
[in] REFERENCE_TIME streamTime,
[in] HEVENT hEvent,
[out] DWORD_PTR * pdwAdviseCookie);
HRESULT AdvisePeriodic(
[in] REFERENCE_TIME startTime,
[in] REFERENCE_TIME periodTime,
[in] HSEMAPHORE hSemaphore,
[out] DWORD_PTR * pdwAdviseCookie);
HRESULT Unadvise(
[in] DWORD_PTR dwAdviseCookie);
}
typedef IReferenceClock *PREFERENCECLOCK;
/*
[
object,
uuid(36b73885-c2c8-11cf-8b46-00805f6cef60),
pointer_default(unique)
]
interface IReferenceClock2 : IReferenceClock
{
}
typedef IReferenceClock2 *PREFERENCECLOCK2;
*/
[
local,
object,
uuid(56a8689a-0ad4-11ce-b03a-0020af0ba770),
pointer_default(unique)
]
interface IMediaSample : IUnknown
{
HRESULT GetPointer([out] BYTE ** ppBuffer);
long GetSize(void);
HRESULT GetTime(
[out] REFERENCE_TIME * pTimeStart,
[out] REFERENCE_TIME * pTimeEnd);
HRESULT SetTime(
[in] REFERENCE_TIME * pTimeStart,
[in] REFERENCE_TIME * pTimeEnd);
HRESULT IsSyncPoint(void);
HRESULT SetSyncPoint(BOOL bIsSyncPoint);
HRESULT IsPreroll(void);
HRESULT SetPreroll(BOOL bIsPreroll);
long GetActualDataLength(void);
HRESULT SetActualDataLength(long length);
HRESULT GetMediaType(AM_MEDIA_TYPE **ppMediaType);
HRESULT SetMediaType(AM_MEDIA_TYPE *pMediaType);
HRESULT IsDiscontinuity(void);
HRESULT SetDiscontinuity(BOOL bDiscontinuity);
HRESULT GetMediaTime(
[out] LONGLONG * pTimeStart,
[out] LONGLONG * pTimeEnd);
HRESULT SetMediaTime(
[in] LONGLONG * pTimeStart,
[in] LONGLONG * pTimeEnd);
}
typedef IMediaSample *PMEDIASAMPLE;
enum tagAM_SAMPLE_PROPERTY_FLAGS
{
AM_SAMPLE_SPLICEPOINT = 0x01,
AM_SAMPLE_PREROLL = 0x02,
AM_SAMPLE_DATADISCONTINUITY = 0x04,
AM_SAMPLE_TYPECHANGED = 0x08,
AM_SAMPLE_TIMEVALID = 0x10,
AM_SAMPLE_TIMEDISCONTINUITY = 0x40,
AM_SAMPLE_FLUSH_ON_PAUSE = 0x80,
AM_SAMPLE_STOPVALID = 0x100,
AM_SAMPLE_ENDOFSTREAM = 0x200,
AM_STREAM_MEDIA = 0,
AM_STREAM_CONTROL = 1
};
typedef struct tagAM_SAMPLE2_PROPERTIES
{
DWORD cbData;
DWORD dwTypeSpecificFlags;
DWORD dwSampleFlags;
LONG lActual;
REFERENCE_TIME tStart;
REFERENCE_TIME tStop;
DWORD dwStreamId;
AM_MEDIA_TYPE *pMediaType;
BYTE *pbBuffer;
LONG cbBuffer;
} AM_SAMPLE2_PROPERTIES;
[
local,
object,
uuid(36b73884-c2c8-11cf-8b46-00805f6cef60),
pointer_default(unique)
]
interface IMediaSample2 : IMediaSample
{
HRESULT GetProperties(
[in] DWORD cbProperties,
[out, size_is(cbProperties)] BYTE * pbProperties
);
HRESULT SetProperties(
[in] DWORD cbProperties,
[in, size_is(cbProperties)] const BYTE * pbProperties
);
}
typedef IMediaSample2 *PMEDIASAMPLE2;
#define AM_GBF_PREVFRAMESKIPPED 1
#define AM_GBF_NOTASYNCPOINT 2
cpp_quote("#define AM_GBF_PREVFRAMESKIPPED 1")
cpp_quote("#define AM_GBF_NOTASYNCPOINT 2")
cpp_quote("#define AM_GBF_NOWAIT 4")
[
object,
uuid(56a8689c-0ad4-11ce-b03a-0020af0ba770),
pointer_default(unique)
]
interface IMemAllocator : IUnknown
{
HRESULT SetProperties(
[in] ALLOCATOR_PROPERTIES* pRequest,
[out] ALLOCATOR_PROPERTIES* pActual);
HRESULT GetProperties(
[out] ALLOCATOR_PROPERTIES* pProps);
HRESULT Commit(void);
HRESULT Decommit(void);
HRESULT GetBuffer(
[out] IMediaSample **ppBuffer,
[in] REFERENCE_TIME * pStartTime,
[in] REFERENCE_TIME * pEndTime,
[in] DWORD dwFlags);
HRESULT ReleaseBuffer(
[in] IMediaSample *pBuffer);
}
typedef IMemAllocator *PMEMALLOCATOR;
[
object,
uuid(379a0cf0-c1de-11d2-abf5-00a0c905f375),
pointer_default(unique)
]
interface IMemAllocatorCallbackTemp : IMemAllocator
{
HRESULT SetNotify(
[in] IMemAllocatorNotifyCallbackTemp *pNotify);
HRESULT GetFreeCount(
[out] LONG *plBuffersFree);
}
[
object,
uuid(92980b30-c1de-11d2-abf5-00a0c905f375),
pointer_default(unique)
]
interface IMemAllocatorNotifyCallbackTemp : IUnknown
{
HRESULT NotifyRelease();
}
[
object,
uuid(56a8689d-0ad4-11ce-b03a-0020af0ba770),
pointer_default(unique)
]
interface IMemInputPin : IUnknown
{
HRESULT GetAllocator(
[out] IMemAllocator ** ppAllocator);
HRESULT NotifyAllocator(
[in] IMemAllocator * pAllocator,
[in] BOOL bReadOnly);
HRESULT GetAllocatorRequirements( [out] ALLOCATOR_PROPERTIES*pProps );
HRESULT Receive(
[in] IMediaSample * pSample);
HRESULT ReceiveMultiple(
[in, size_is(nSamples)] IMediaSample **pSamples,
[in] long nSamples,
[out] long *nSamplesProcessed);
HRESULT ReceiveCanBlock();
}
typedef IMemInputPin *PMEMINPUTPIN;
[
object,
uuid(a3d8cec0-7e5a-11cf-bbc5-00805f6cef20),
pointer_default(unique)
]
interface IAMovieSetup : IUnknown
{
HRESULT Register( );
HRESULT Unregister( );
}
typedef IAMovieSetup *PAMOVIESETUP;
typedef enum AM_SEEKING_SeekingFlags
{
AM_SEEKING_NoPositioning = 0x00,
AM_SEEKING_AbsolutePositioning = 0x01,
AM_SEEKING_RelativePositioning = 0x02,
AM_SEEKING_IncrementalPositioning = 0x03,
AM_SEEKING_PositioningBitsMask = 0x03,
AM_SEEKING_SeekToKeyFrame = 0x04,
AM_SEEKING_ReturnTime = 0x08,
AM_SEEKING_Segment = 0x10,
AM_SEEKING_NoFlush = 0x20
} AM_SEEKING_SEEKING_FLAGS;
typedef enum AM_SEEKING_SeekingCapabilities
{
AM_SEEKING_CanSeekAbsolute = 0x001,
AM_SEEKING_CanSeekForwards = 0x002,
AM_SEEKING_CanSeekBackwards = 0x004,
AM_SEEKING_CanGetCurrentPos = 0x008,
AM_SEEKING_CanGetStopPos = 0x010,
AM_SEEKING_CanGetDuration = 0x020,
AM_SEEKING_CanPlayBackwards = 0x040,
AM_SEEKING_CanDoSegments = 0x080,
AM_SEEKING_Source = 0x100
} AM_SEEKING_SEEKING_CAPABILITIES;
[
object,
uuid(36b73880-c2c8-11cf-8b46-00805f6cef60),
pointer_default(unique)
]
interface IMediaSeeking : IUnknown
{
HRESULT GetCapabilities( [out] DWORD * pCapabilities );
HRESULT CheckCapabilities( [in,out] DWORD * pCapabilities );
HRESULT IsFormatSupported([in] const GUID * pFormat);
HRESULT QueryPreferredFormat([out] GUID * pFormat);
HRESULT GetTimeFormat([out] GUID *pFormat);
HRESULT IsUsingTimeFormat([in] const GUID * pFormat);
HRESULT SetTimeFormat([in] const GUID * pFormat);
HRESULT GetDuration([out] LONGLONG *pDuration);
HRESULT GetStopPosition([out] LONGLONG *pStop);
HRESULT GetCurrentPosition([out] LONGLONG *pCurrent);
HRESULT ConvertTimeFormat([out] LONGLONG * pTarget, [in] const GUID * pTargetFormat,
[in] LONGLONG Source, [in] const GUID * pSourceFormat );
HRESULT SetPositions(
[in,out] LONGLONG * pCurrent,
[in] DWORD dwCurrentFlags,
[in,out] LONGLONG * pStop,
[in] DWORD dwStopFlags);
HRESULT GetPositions(
[out] LONGLONG * pCurrent,
[out] LONGLONG * pStop);
HRESULT GetAvailable(
[out] LONGLONG * pEarliest,
[out] LONGLONG * pLatest);
HRESULT SetRate([in] double dRate);
HRESULT GetRate([out] double * pdRate);
HRESULT GetPreroll([out] LONGLONG * pllPreroll);
}
typedef IMediaSeeking *PMEDIASEEKING;
enum tagAM_MEDIAEVENT_FLAGS
{
AM_MEDIAEVENT_NONOTIFY = 0x01
};
/*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
interface IAMAnalogVideoDecoder;
interface IAMAnalogVideoEncoder;
interface IAMAudioInputMixer;
interface IAMAudioRendererStats;
interface IAMBufferNegotiation;
interface IAMCameraControl;
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 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 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;
} DUMMYSTRUCTNAME;
[case(2)]
struct
{
ULONG cPins2;
[size_is(cPins2)] const REGFILTERPINS2 *rgPins2;
} DUMMYSTRUCTNAME1;
[default]
;
} DUMMYUNIONNAME;
} 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] const OLECHAR *szInstance,
[in] REFCLSID Filter
);
HRESULT RegisterFilter
( [in] REFCLSID clsidFilter,
[in] LPCWSTR Name,
[in, out] IMoniker **ppMoniker,
[in] const CLSID *pclsidCategory,
[in] const OLECHAR *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);
}
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
);
}
[
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);
}
/*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
import "guiddef.h";
import "oaidl.idl";
cpp_quote("#define CDEF_CLASS_DEFAULT 0x0001")
cpp_quote("#define CDEF_BYPASS_CLASS_MANAGER 0x0002")
cpp_quote("#define CDEF_CLASS_LEGACY 0x0004")
cpp_quote("#define CDEF_MERIT_ABOVE_DO_NOT_USE 0x0008")
[
object,
uuid(29840822-5B84-11D0-BD3B-00A0C911CE86),
pointer_default(unique)
]
interface ICreateDevEnum : IUnknown
{
HRESULT CreateClassEnumerator(
[in] REFCLSID clsidDeviceClass,
[out] IEnumMoniker ** ppEnumMoniker,
[in] DWORD dwFlags);
}
/*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
interface IPinConnection;
interface IPinFlowControl;
interface IGraphConfig;
interface IGraphConfigCallback;
[
local,
object,
uuid(4a9a62d3-27d4-403d-91e9-89f540e55534),
pointer_default(unique)
]
interface IPinConnection : IUnknown
{
HRESULT DynamicQueryAccept([in] const AM_MEDIA_TYPE *pmt);
HRESULT NotifyEndOfStream([in] HANDLE hNotifyEvent);
HRESULT IsEndPin();
HRESULT DynamicDisconnect();
};
[
local,
object,
uuid(c56e9858-dbf3-4f6b-8119-384af2060deb),
pointer_default(unique)
]
interface IPinFlowControl : IUnknown
{
HRESULT Block([in] DWORD dwBlockFlags, [in] HANDLE hEvent);
}
enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS
{
AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001,
};
typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS
{
AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x00000001,
AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x00000002,
AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x00000004
} AM_GRAPH_CONFIG_RECONNECT_FLAGS;
enum _REM_FILTER_FLAGS
{
REMFILTERF_LEAVECONNECTED = 0x00000001
};
typedef enum _AM_FILTER_FLAGS
{
AM_FILTER_FLAGS_REMOVABLE = 0x00000001
} AM_FILTER_FLAGS;
[
local,
object,
uuid(03A1EB8E-32BF-4245-8502-114D08A9CB88),
pointer_default(unique)
]
interface IGraphConfig : IUnknown
{
HRESULT Reconnect(
[in] IPin *pOutputPin,
[in] IPin *pInputPin,
[in] const AM_MEDIA_TYPE *pmtFirstConnection,
[in] IBaseFilter *pUsingFilter,
[in] HANDLE hAbortEvent,
[in] DWORD dwFlags);
HRESULT Reconfigure(
[in] IGraphConfigCallback *pCallback,
[in] PVOID pvContext,
[in] DWORD dwFlags,
[in] HANDLE hAbortEvent);
HRESULT AddFilterToCache([in] IBaseFilter *pFilter);
HRESULT EnumCacheFilter([out] IEnumFilters **pEnum);
HRESULT RemoveFilterFromCache([in]IBaseFilter *pFilter);
HRESULT GetStartTime([out] REFERENCE_TIME *prtStart);
HRESULT PushThroughData(
[in] IPin *pOutputPin,
[in] IPinConnection *pConnection,
[in] HANDLE hEventAbort);
HRESULT SetFilterFlags([in] IBaseFilter *pFilter, [in] DWORD dwFlags);
HRESULT GetFilterFlags([in] IBaseFilter *pFilter, [out] DWORD *pdwFlags);
HRESULT RemoveFilterEx([in] IBaseFilter *pFilter, DWORD Flags);
}
[
local,
object,
uuid(ade0fd60-d19d-11d2-abf6-00a0c905f375),
pointer_default(unique)
]
interface IGraphConfigCallback : IUnknown
{
HRESULT Reconfigure(PVOID pvContext, DWORD dwFlags);
}
[
local,
object,
uuid(DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29),
pointer_default(unique)
]
interface IFilterChain : IUnknown
{
HRESULT StartChain(
[in] IBaseFilter *pStartFilter,
[in] IBaseFilter *pEndFilter);
HRESULT PauseChain(
[in] IBaseFilter *pStartFilter,
[in] IBaseFilter *pEndFilter);
HRESULT StopChain(
[in] IBaseFilter *pStartFilter,
[in] IBaseFilter *pEndFilter);
HRESULT RemoveChain(
[in] IBaseFilter *pStartFilter,
[in] IBaseFilter *pEndFilter);
}
This source diff could not be displayed because it is too large. You can view the blob instead.
/*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
import "objidl.idl";
#include "devenum.idl"
#include "axcore.idl"
#include "axextend.idl"
#include "dyngraph.idl"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment