- 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,
|
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,
|
||||||
}
|
}
|
||||||
|
|
||||||
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,
|
||||||
}
|
}
|
||||||
|
|
||||||
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,
|
||||||
|
|
||||||
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
|
||||||
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 = \
|
||||||
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)
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
7279
include/strmif.h
7279
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