blob: 645915c3fe55d28fb15ada786048b5e0ef872e38 [file] [log] [blame]
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#ifndef _INC_EVR
#define _INC_EVR
#if (_WIN32_WINNT >= 0x0600)
#ifdef __cplusplus
extern "C" {
#endif
#if (_WIN32_WINNT >= 0x0601)
typedef enum _EVRFilterConfig_Prefs {
EVRFilterConfigPrefs_EnableQoS = 0x00000001,
EVRFilterConfigPrefs_Mask = 0x00000001
} EVRFilterConfigPrefs;
#endif /*(_WIN32_WINNT >= 0x0601)*/
typedef enum MFVideoAspectRatioMode {
MFVideoARMode_None = 0x00000000,
MFVideoARMode_PreservePicture = 0x00000001,
MFVideoARMode_PreservePixel = 0x00000002,
MFVideoARMode_NonLinearStretch = 0x00000004,
MFVideoARMode_Mask = 0x00000007
} MFVideoAspectRatioMode;
#if (_WIN32_WINNT >= 0x0601)
typedef enum _MFVideoMixPrefs {
MFVideoMixPrefs_ForceHalfInterlace = 0x00000001,
MFVideoMixPrefs_AllowDropToHalfInterlace = 0x00000002,
MFVideoMixPrefs_AllowDropToBob = 0x00000004,
MFVideoMixPrefs_ForceBob = 0x00000008,
MFVideoMixPrefs_Mask = 0x0000000f
} MFVideoMixPrefs;
#endif /*(_WIN32_WINNT >= 0x0601)*/
typedef enum MFVideoRenderPrefs {
MFVideoRenderPrefs_DoNotRenderBorder = 0x00000001,
MFVideoRenderPrefs_DoNotClipToDevice = 0x00000002,
MFVideoRenderPrefs_AllowOutputThrottling = 0x00000004,
MFVideoRenderPrefs_ForceOutputThrottling = 0x00000008,
MFVideoRenderPrefs_ForceBatching = 0x00000010,
MFVideoRenderPrefs_AllowBatching = 0x00000020,
MFVideoRenderPrefs_ForceScaling = 0x00000040,
MFVideoRenderPrefs_AllowScaling = 0x00000080,
MFVideoRenderPrefs_DoNotRepaintOnStop = 0x00000100,
MFVideoRenderPrefs_Mask = 0x000000ff
} MFVideoRenderPrefs;
typedef enum _MFVP_MESSAGE_TYPE {
MFVP_MESSAGE_FLUSH = 0x00000000,
MFVP_MESSAGE_INVALIDATEMEDIATYPE = 0x00000001,
MFVP_MESSAGE_PROCESSINPUTNOTIFY = 0x00000002,
MFVP_MESSAGE_BEGINSTREAMING = 0x00000003,
MFVP_MESSAGE_ENDSTREAMING = 0x00000004,
MFVP_MESSAGE_ENDOFSTREAM = 0x00000005,
MFVP_MESSAGE_STEP = 0x00000006,
MFVP_MESSAGE_CANCELSTEP = 0x00000007
} MFVP_MESSAGE_TYPE;
typedef struct MFVideoNormalizedRect {
float left;
float top;
float right;
float bottom;
} MFVideoNormalizedRect;
#ifdef __cplusplus
}
#endif
#undef INTERFACE
#define INTERFACE IMFVideoPresenter
DECLARE_INTERFACE_(IMFVideoPresenter,IMFClockStateSink)
{
BEGIN_INTERFACE
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
/* IMFClockStateSink methods */
STDMETHOD_(HRESULT,OnClockPause)(THIS_ MFTIME hnsSystemTime) PURE;
STDMETHOD_(HRESULT,OnClockRestart)(THIS_ MFTIME hnsSystemTime) PURE;
STDMETHOD_(HRESULT,OnClockSetRate)(THIS_ MFTIME hnsSystemTime,float flRate) PURE;
STDMETHOD_(HRESULT,OnClockStart)(THIS_ MFTIME hnsSystemTime,LONGLONG llClockStartOffset) PURE;
STDMETHOD_(HRESULT,OnClockStop)(THIS_ MFTIME hnssSystemTime) PURE;
/* IMFVideoPresenter methods */
STDMETHOD_(HRESULT,GetCurrentMediaType)(THIS_ IMFVideoMediaType **ppMediaType) PURE;
STDMETHOD_(HRESULT,ProcessMessage)(THIS_ MFVP_MESSAGE_TYPE eMessage,ULONG_PTR ulParam) PURE;
END_INTERFACE
};
#ifdef COBJMACROS
#define IMFVideoPresenter_QueryInterface(This,riid,ppvObject) (This)->pVtbl->QueryInterface(This,riid,ppvObject)
#define IMFVideoPresenter_AddRef(This) (This)->pVtbl->AddRef(This)
#define IMFVideoPresenter_Release(This) (This)->pVtbl->Release(This)
#define IMFVideoPresenter_OnClockPause(This,hnsSystemTime) (This)->lpVtbl->OnClockPause(This,hnsSystemTime)
#define IMFVideoPresenter_OnClockRestart(This,hnsSystemTime) (This)->lpVtbl->OnClockRestart(This,hnsSystemTime)
#define IMFVideoPresenter_OnClockSetRate(This,hnsSystemTime,flRate) (This)->lpVtbl->OnClockSetRate(This,hnsSystemTime,flRate)
#define IMFVideoPresenter_OnClockStart(This,hnsSystemTime,llClockStartOffset) (This)->lpVtbl->OnClockStart(This,hnsSystemTime,llClockStartOffset)
#define IMFVideoPresenter_OnClockStop(This,hnssSystemTime) (This)->lpVtbl->OnClockStop(This,hnssSystemTime)
#define IMFVideoPresenter_GetCurrentMediaType(This,ppMediaType) (This)->lpVtbl->GetCurrentMediaType(This,ppMediaType)
#define IMFVideoPresenter_ProcessMessage(This,eMessage,ulParam) (This)->lpVtbl->ProcessMessage(This,eMessage,ulParam)
#endif /*COBJMACROS*/
#undef INTERFACE
#define INTERFACE IMFDesiredSample
DECLARE_INTERFACE_(IMFDesiredSample,IUnknown)
{
BEGIN_INTERFACE
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
/* IMFDesiredSample methods */
STDMETHOD(Clear)(THIS) PURE;
STDMETHOD_(HRESULT,GetDesiredSampleTimeAndDuration)(THIS_ LONGLONG *phnsSampleTime,LONGLONG *phnsSampleDuration) PURE;
STDMETHOD(SetDesiredSampleTimeAndDuration)(THIS_ LONGLONG hnsSampleTime,LONGLONG hnsSampleDuration) PURE;
END_INTERFACE
};
#ifdef COBJMACROS
#define IMFDesiredSample_QueryInterface(This,riid,ppvObject) (This)->pVtbl->QueryInterface(This,riid,ppvObject)
#define IMFDesiredSample_AddRef(This) (This)->pVtbl->AddRef(This)
#define IMFDesiredSample_Release(This) (This)->pVtbl->Release(This)
#define IMFDesiredSample_Clear() (This)->lpVtbl->Clear(This)
#define IMFDesiredSample_GetDesiredSampleTimeAndDuration(This,phnsSampleTime,phnsSampleDuration) (This)->lpVtbl->GetDesiredSampleTimeAndDuration(This,phnsSampleTime,phnsSampleDuration)
#define IMFDesiredSample_SetDesiredSampleTimeAndDuration(This,hnsSampleTime,hnsSampleDuration) (This)->lpVtbl->SetDesiredSampleTimeAndDuration(This,hnsSampleTime,hnsSampleDuration)
#endif /*COBJMACROS*/
#undef INTERFACE
#define INTERFACE IMFTrackedSample
DECLARE_INTERFACE_(IMFTrackedSample,IUnknown)
{
BEGIN_INTERFACE
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
/* IMFTrackedSample methods */
STDMETHOD_(HRESULT,SetAllocator)(THIS_ IMFAsyncCallback *pSampleAllocator,IUnknown *pUnkState) PURE;
END_INTERFACE
};
#ifdef COBJMACROS
#define IMFTrackedSample_QueryInterface(This,riid,ppvObject) (This)->pVtbl->QueryInterface(This,riid,ppvObject)
#define IMFTrackedSample_AddRef(This) (This)->pVtbl->AddRef(This)
#define IMFTrackedSample_Release(This) (This)->pVtbl->Release(This)
#define IMFTrackedSample_SetAllocator(This,pSampleAllocator,pUnkState) (This)->lpVtbl->SetAllocator(This,pSampleAllocator,pUnkState)
#endif /*COBJMACROS*/
#ifdef __cplusplus
extern "C" {
#endif
HRESULT WINAPI MFCreateVideoMixer(IUnknown *pOwner,REFIID riidDevice,REFIID riid,void **ppVideoMixer);
HRESULT WINAPI MFCreateVideoMixerAndPresenter(IUnknown *pMixerOwner,IUnknown *pPresenterOwner,REFIID riidMixer,void **ppvVideoMixer,REFIID riidPresenter,void **ppvVideoPresenter);
HRESULT WINAPI MFCreateVideoPresenter(IUnknown *pOwner,REFIID riidDevice,REFIID riid,void **ppvVideoPresenter);
HRESULT WINAPI MFCreateVideoSampleAllocator(REFIID riid,void** ppSampleAllocator);
HRESULT WINAPI MFCreateVideoSampleFromSurface(IUnknown *pUnkSurface,IMFSample **ppSample);
#ifdef __cplusplus
}
#endif
#endif /*(_WIN32_WINNT >= 0x0600)*/
#endif /*_INC_EVR*/