- Added DShow headers.
- Added needed const's in FilterGraph implementation.
This commit is contained in:
parent
de08661413
commit
7c8b85a222
|
@ -505,7 +505,7 @@ static HRESULT WINAPI Mediaseeking_CheckCapabilities(IMediaSeeking *iface,
|
|||
}
|
||||
|
||||
static HRESULT WINAPI Mediaseeking_IsFormatSupported(IMediaSeeking *iface,
|
||||
GUID *pFormat) {
|
||||
const GUID *pFormat) {
|
||||
ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
|
||||
|
@ -532,7 +532,7 @@ static HRESULT WINAPI Mediaseeking_GetTimeFormat(IMediaSeeking *iface,
|
|||
}
|
||||
|
||||
static HRESULT WINAPI Mediaseeking_IsUsingTimeFormat(IMediaSeeking *iface,
|
||||
GUID *pFormat) {
|
||||
const GUID *pFormat) {
|
||||
ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
|
||||
|
@ -541,7 +541,7 @@ static HRESULT WINAPI Mediaseeking_IsUsingTimeFormat(IMediaSeeking *iface,
|
|||
}
|
||||
|
||||
static HRESULT WINAPI Mediaseeking_SetTimeFormat(IMediaSeeking *iface,
|
||||
GUID *pFormat) {
|
||||
const GUID *pFormat) {
|
||||
ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p): stub !!!\n", This, iface, pFormat);
|
||||
|
@ -578,9 +578,9 @@ static HRESULT WINAPI Mediaseeking_GetCurrentPosition(IMediaSeeking *iface,
|
|||
|
||||
static HRESULT WINAPI Mediaseeking_ConvertTimeFormat(IMediaSeeking *iface,
|
||||
LONGLONG *pTarget,
|
||||
GUID *pTargetFormat,
|
||||
const GUID *pTargetFormat,
|
||||
LONGLONG Source,
|
||||
GUID *pSourceFormat) {
|
||||
const GUID *pSourceFormat) {
|
||||
ICOM_THIS_MULTI(IFilterGraphImpl, IMediaSeeking_vtbl, iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p, %p, %lld, %p): stub !!!\n", This, iface, pTarget, pTargetFormat, Source, pSourceFormat);
|
||||
|
|
|
@ -7,9 +7,16 @@ MODULE = none
|
|||
IDL_SRCS = \
|
||||
oaidl.idl \
|
||||
objidl.idl \
|
||||
strmif.idl \
|
||||
unknwn.idl \
|
||||
wtypes.idl
|
||||
|
||||
IDL_INCLUDES = \
|
||||
axcore.idl \
|
||||
axextend.idl \
|
||||
devenum.idl \
|
||||
dyngraph.idl
|
||||
|
||||
WINDOWS_INCLUDES = \
|
||||
accctrl.h \
|
||||
audevcod.h \
|
||||
|
@ -188,6 +195,7 @@ WINDOWS_INCLUDES = \
|
|||
wshisotp.h \
|
||||
wsipx.h \
|
||||
zmouse.h \
|
||||
$(IDL_INCLUDES) \
|
||||
$(IDL_SRCS) \
|
||||
$(IDL_SRCS:.idl=.h)
|
||||
|
||||
|
|
|
@ -0,0 +1,647 @@
|
|||
/*
|
||||
* 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
|
||||
};
|
|
@ -0,0 +1,895 @@
|
|||
/*
|
||||
* 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);
|
||||
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* 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);
|
||||
}
|
|
@ -0,0 +1,150 @@
|
|||
/*
|
||||
* 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);
|
||||
}
|
7493
include/strmif.h
7493
include/strmif.h
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* 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"
|
Loading…
Reference in New Issue