This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/h/nt/vmr9.h

803 lines
33 KiB
C

/*
* vmr9.h DirectX 9 Video Mixing Renderer (VMR) interfaces
*
* =========================================================================
*
* Open Watcom Project
*
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
*
* This file is automatically generated. Do not edit directly.
*
* =========================================================================
*/
#include <rpc.h>
#include <rpcndr.h>
#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif
#ifndef __vmr9_h__
#define __vmr9_h__
#ifndef _ENABLE_AUTODEPEND
#pragma read_only_file;
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
typedef interface IVMRSurfaceAllocatorNotify9 IVMRSurfaceAllocatorNotify9;
typedef interface IVMRImageCompositor9 IVMRImageCompositor9;
/* VMR string lengths */
#define VMR9DEVICENAMELEN 32
#define VMR9DEVICEDESCRIPTIONLEN 512
/* VMR presentation flags */
typedef enum {
VMR9Sample_SyncPoint = 0x00000001,
VMR9Sample_Preroll = 0x00000002,
VMR9Sample_Discontinuity = 0x00000004,
VMR9Sample_TimeValid = 0x00000008,
VMR9Sample_SrcDstRectsValid = 0x00000010
} VMR9PresentationFlags;
/* VMR presentation information */
typedef struct _VMR9PresentationInfo {
DWORD dwFlags;
IDirect3DSurface9 *lpSurf;
REFERENCE_TIME rtStart;
REFERENCE_TIME rtEnd;
SIZE szAspectRatio;
RECT rcSrc;
RECT rcDst;
DWORD dwReserved1;
DWORD dwReserved2;
} VMR9PresentationInfo;
/* VMR surface allocation flags */
typedef enum {
VMR9AllocFlag_3DRenderTarget = 0x00000001,
VMR9AllocFlag_DXVATarget = 0x00000002,
VMR9AllocFlag_TextureSurface = 0x00000004,
VMR9AllocFlag_OffscreenSurface = 0x00000008,
VMR9AllocFlag_RGBDynamicSwitch = 0x00000010,
VMR9AllocFlag_UsageMask = 0x000000FF
} VMR9SurfaceAllocationFlags;
/* VMR allocation information */
typedef struct _VMR9AllocationInfo {
DWORD dwFlags;
DWORD dwWidth;
DWORD dwHeight;
D3DFORMAT Format;
D3DPOOL Pool;
DWORD MinBuffers;
SIZE szAspectRatio;
SIZE szNativeSize;
} VMR9AllocationInfo;
/* VMR aspect ratio modes */
typedef enum {
VMR9ARMode_None = 0,
VMR9ARMode_LetterBox = 1
} VMR9AspectRatioMode;
/* VMR mixer preferences */
typedef enum {
MixerPref9_NoDecimation = 0x00000001,
MixerPref9_DecimateOutput = 0x00000002,
MixerPref9_ARAdjustXorY = 0x00000004,
MixerPref9_NonSquareMixing = 0x00000008,
MixerPref9_DecimateMask = 0x0000000F,
MixerPref9_BiLinearFiltering = 0x00000010,
MixerPref9_PointFiltering = 0x00000020,
MixerPref9_AnisotropicFiltering = 0x00000040,
MixerPref9_PyramidalQuadFiltering = 0x00000080,
MixerPref9_GaussianQuadFiltering = 0x00000100,
MixerPref9_FilteringMask = 0x00000FF0,
MixerPref9_RenderTargetRGB = 0x00001000,
MixerPref9_RenderTargetYUV = 0x00002000,
MixerPref9_RenderTargerMask = 0x000FF000,
MixerPref9_DynamicSwitchToBOB = 0x00100000,
MixerPref9_DyanmicDecimateBy2 = 0x00200000,
MixerPref9_DynamicMask = 0x00F00000
} VMR9MixerPrefs;
/* VMR normalized rectangle */
typedef struct _VMR9NormalizedRect {
float left;
float top;
float right;
float bottom;
} VMR9NormalizedRect;
/* VMR process amplificiation control flags */
typedef enum {
ProcAmpControl9_Brightness = 0x00000001,
ProcAmpControl9_Contrast = 0x00000002,
ProcAmpControl9_Hue = 0x00000004,
ProcAmpContorl9_Saturation = 0x00000008,
ProcAmpControl9_Mask = 0x0000000F
} VMR9ProcAmpControlFlags;
/* VMR process amplification control information */
typedef struct _VMR9ProcAmpControl {
DWORD dwSize;
DWORD dwFlags;
float Brightness;
float Contrast;
float Hue;
float Saturation;
} VMR9ProcAmpControl;
/* VMR process amplification control range */
typedef struct _VMR9ProcAmpControlRange {
DWORD dwSize;
VMR9ProcAmpControlFlags dwProperty;
float MinValue;
float MaxValue;
float DefaultValue;
float StepSize;
} VMR9ProcAmpControlRange;
/* VMR alpha bitmap */
typedef struct _VMR9AlphaBitmap {
DWORD dwFlags;
HDC hdc;
IDirect3DSurface9 *pDDS;
RECT rSrc;
VMR9NormalizedRect rDest;
FLOAT fAlpha;
COLORREF clrSrcKey;
DWORD dwFilterMode;
} VMR9AlphaBitmap;
/* VMR alpha bitmap flags */
typedef enum {
VMR9AlphaBitmap_Disable = 0x00000001,
VMR9AlphaBitmap_hDC = 0x00000002,
VMR9AlphaBitmap_EntireDDS = 0x00000004,
VMR9AlphaBitmap_SrcColorKey = 0x00000008,
VMR9AlphaBitmap_SrcRect = 0x00000010,
VMR9AlphaBitmap_FilterMode = 0x00000020
} VMR9AlphaBitmapFlags;
/* VMR render preferences */
typedef enum {
RenderPrefs9_DoNotRenderBorder = 0x00000001,
RenderPrefs9_Mask = 0x00000001
} VMR9RenderPrefs;
/* VMR modes */
typedef enum {
VMR9Mode_Windowed = 0x00000001,
VMR9Mode_Windowless = 0x00000002,
VMR9Mode_Renderless = 0x00000004,
VMR9Mode_Mask = 0x00000007
} VMR9Mode;
/* VMR monitor information */
typedef struct _VMR9MonitorInfo {
UINT uDevID;
RECT rcMonitor;
HMONITOR hMon;
DWORD dwFlags;
wchar_t szDevice[VMR9DEVICENAMELEN];
wchar_t szDescription[VMR9DEVICEDESCRIPTIONLEN];
LARGE_INTEGER liDriverVersion;
DWORD dwVendorId;
DWORD dwDeviceId;
DWORD dwSubSysId;
DWORD dwRevision;
} VMR9MonitorInfo;
/* VMR deinterlace preferences */
typedef enum {
DeinterlacePref9_NextBest = 0x01,
DeinterlacePref9_BOB = 0x02,
DeinterlacePref9_Weave = 0x04,
DeinterlacePref9_Mask = 0x07
} VMR9DeinterlacePrefs;
/* VMR deinterlace technologies */
typedef enum {
DeinterlaceTech9_Unknown = 0x0000,
DeinterlaceTech9_BOBLineReplicate = 0x0001,
DeinterlaceTech9_BOBVerticalStretch = 0x0002,
DeinterlaceTech9_MedianFiltering = 0x0004,
DeinterlaceTech9_EdgeFiltering = 0x0010,
DeinterlaceTech9_FieldAdaptive = 0x0020,
DeinterlaceTech9_PixelAdaptive = 0x0040,
DeinterlaceTech9_MotionVectorSteered = 0x0080
} VMR9DeinterlaceTech;
/* VMR frequency */
typedef struct _VMR9Frequency {
DWORD dwNumerator;
DWORD dwDenominator;
} VMR9Frequency;
/* VMR sample formats */
typedef enum _VMR9_SampleFormat {
VMR9_SampleProgressiveFormat = 2,
VMR9_SampleFieldInterleavedEvenFirst = 3,
VMR9_SampleFieldInterleavedOddFirst = 4,
VMR9_SampleFieldSingleEven = 5,
VMR9_SampleFieldSingleOdd = 6
} VMR9_SampleFormat;
/* VMR video description */
typedef struct _VMR9VideoDesc {
DWORD dwSize;
DWORD dwSampleWidth;
DWORD dwSampleHeight;
VMR9_SampleFormat SampleFormat;
DWORD dwFourCC;
VMR9Frequency InputSampleFreq;
VMR9Frequency OutputFrameFreq;
} VMR9VideoDesc;
/* VMR deinterlace capabilities */
typedef struct _VMR9DeinterlaceCaps {
DWORD dwSize;
DWORD dwNumPreviousOutputFrames;
DWORD dwNumForwardRefSamples;
DWORD dwNumBackwardRefSamples;
VMR9DeinterlaceTech DeinterlaceTechnology;
} VMR9DeinterlaceCaps;
/* VMR video stream information */
typedef struct _VMR9VideoStreamInfo {
IDirect3DSurface9 *pddsVideoSurface;
DWORD dwWidth;
DWORD dwHeight;
DWORD dwStrmID;
FLOAT fAlpha;
VMR9NormalizedRect rNormal;
REFERENCE_TIME rtStart;
REFERENCE_TIME rtEnd;
VMR9_SampleFormat SampleFormat;
} VMR9VideoStreamInfo;
/* GUIDs */
EXTERN_C const IID IID_IVMRImagePresenter9;
EXTERN_C const IID IID_IVMRSurfaceAllocator9;
EXTERN_C const IID IID_IVMRSurfaceAllocatorEx9;
EXTERN_C const IID IID_IVMRSurfaceAllocatorNotify9;
EXTERN_C const IID IID_IVMRWindowlessControl9;
EXTERN_C const IID IID_IVMRMixerControl9;
EXTERN_C const IID IID_IVMRMixerBitmap9;
EXTERN_C const IID IID_IVMRSurface9;
EXTERN_C const IID IID_IVMRImagePresenterConfig9;
EXTERN_C const IID IID_IVMRVideoStreamControl9;
EXTERN_C const IID IID_IVMRFilterConfig9;
EXTERN_C const IID IID_IVMRAspectRatioControl9;
EXTERN_C const IID IID_IVMRMonitorConfig9;
EXTERN_C const IID IID_IVMRDeinterlaceControl9;
EXTERN_C const IID IID_IVMRImageCompositor9;
/* IVMRImagePresenter9 interface */
#undef INTERFACE
#define INTERFACE IVMRImagePresenter9
DECLARE_INTERFACE_( IVMRImagePresenter9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRImagePresenter9 methods */
STDMETHOD( StartPresenting )( THIS_ DWORD_PTR ) PURE;
STDMETHOD( StopPresenting )( THIS_ DWORD_PTR ) PURE;
STDMETHOD( PresentImage )( THIS_ DWORD_PTR, VMR9PresentationInfo * ) PURE;
};
/* IVMRSurfaceAllocator9 interface */
#undef INTERFACE
#define INTERFACE IVMRSurfaceAllocator9
DECLARE_INTERFACE_( IVMRSurfaceAllocator9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRSurfaceAllocator9 methods */
STDMETHOD( InitializeDevice )( THIS_ DWORD_PTR, VMR9AllocationInfo *, DWORD * ) PURE;
STDMETHOD( TerminateDevice )( THIS_ DWORD_PTR ) PURE;
STDMETHOD( GetSurface )( THIS_ DWORD_PTR, DWORD, DWORD, IDirect3DSurface9 ** ) PURE;
STDMETHOD( AdviseNotify )( THIS_ IVMRSurfaceAllocatorNotify9 * ) PURE;
};
/* IVMRSurfaceAllocatorEx9 interface */
#undef INTERFACE
#define INTERFACE IVMRSurfaceAllocatorEx9
DECLARE_INTERFACE_( IVMRSurfaceAllocatorEx9, IVMRSurfaceAllocator9 ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRSurfaceAllocator9 methods */
STDMETHOD( InitializeDevice )( THIS_ DWORD_PTR, VMR9AllocationInfo *, DWORD * ) PURE;
STDMETHOD( TerminateDevice )( THIS_ DWORD_PTR ) PURE;
STDMETHOD( GetSurface )( THIS_ DWORD_PTR, DWORD, DWORD, IDirect3DSurface9 ** ) PURE;
STDMETHOD( AdviseNotify )( THIS_ IVMRSurfaceAllocatorNotify9 * ) PURE;
/* IVMRSurfaceAllocatorEx9 methods */
STDMETHOD( GetSurfaceEx )( THIS_ DWORD_PTR, DWORD, DWORD, IDirect3DSurface9 **, RECT * ) PURE;
};
/* IVMRSurfaceAllocatorNotify9 interface */
#undef INTERFACE
#define INTERFACE IVMRSurfaceAllocatorNotify9
DECLARE_INTERFACE_( IVMRSurfaceAllocatorNotify9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRSurfaceAllocator9 methods */
STDMETHOD( AdviseSurfaceAllocator )( THIS_ DWORD_PTR, IVMRSurfaceAllocator9 * ) PURE;
STDMETHOD( SetD3DDevice )( THIS_ IDirect3DDevice9 *, HMONITOR ) PURE;
STDMETHOD( ChangeD3DDevice )( THIS_ IDirect3DDevice9 *, HMONITOR ) PURE;
STDMETHOD( AllocateSurfaceHelper )( THIS_ VMR9AllocationInfo *, DWORD *, IDirect3DDevice9 ** ) PURE;
STDMETHOD( NotifyEvent )( THIS_ LONG, LONG_PTR, LONG_PTR ) PURE;
};
/* IVMRWindowslessControl9 interface */
#undef INTERFACE
#define INTERFACE IVMRWindowlessControl9
DECLARE_INTERFACE_( IVMRWindowlessControl9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRWindowlessControl9 methods */
STDMETHOD( GetNativeVideoSize )( THIS_ LONG *, LONG *, LONG *, LONG * ) PURE;
STDMETHOD( GetMinIdealVideoSize )( THIS_ LONG *, LONG * ) PURE;
STDMETHOD( GetMaxIdealVideoSize )( THIS_ LONG *, LONG * ) PURE;
STDMETHOD( SetVideoPosition )( THIS_ LPRECT, LPRECT ) PURE;
STDMETHOD( GetVideoPosition )( THIS_ LPRECT, LPRECT ) PURE;
STDMETHOD( GetAspectRatioMode )( THIS_ DWORD * ) PURE;
STDMETHOD( SetAspectRatioMode )( THIS_ DWORD ) PURE;
STDMETHOD( SetVideoClippingWindow )( THIS_ HWND ) PURE;
STDMETHOD( RepaintVideo )( THIS_ HWND, HDC ) PURE;
STDMETHOD( DisplayModeChanged )( THIS ) PURE;
STDMETHOD( GetCurrentImage )( THIS_ BYTE ** ) PURE;
STDMETHOD( SetBorderColor )( THIS_ COLORREF ) PURE;
STDMETHOD( GetBorderColor )( THIS_ COLORREF * ) PURE;
};
/* IVMRMixerControl9 interface */
#undef INTERFACE
#define INTERFACE IVMRMixerControl9
DECLARE_INTERFACE_( IVMRMixerControl9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRMixerControl9 methods */
STDMETHOD( SetAlpha )( THIS_ DWORD, float ) PURE;
STDMETHOD( GetAlpha )( THIS_ DWORD, float * ) PURE;
STDMETHOD( SetZOrder )( THIS_ DWORD, DWORD ) PURE;
STDMETHOD( GetZOrder )( THIS_ DWORD, DWORD * ) PURE;
STDMETHOD( SetOutputRect )( THIS_ DWORD, const VMR9NormalizedRect * ) PURE;
STDMETHOD( GetOutputRect )( THIS_ DWORD, VMR9NormalizedRect * ) PURE;
STDMETHOD( SetBackgroundClr )( THIS_ COLORREF ) PURE;
STDMETHOD( GetBackgroundClr )( THIS_ COLORREF * ) PURE;
STDMETHOD( SetMixingPrefs )( THIS_ DWORD ) PURE;
STDMETHOD( GetMixingPrefs )( THIS_ DWORD * ) PURE;
STDMETHOD( SetProcAmpControl )( THIS_ DWORD, VMR9ProcAmpControl * ) PURE;
STDMETHOD( GetProcAmpControl )( THIS_ DWORD, VMR9ProcAmpControl * ) PURE;
STDMETHOD( GetProcAmpControlRange )( THIS_ DWORD, VMR9ProcAmpControlRange * ) PURE;
};
/* IVMRMixerBitmap9 interface */
#undef INTERFACE
#define INTERFACE IVMRMixerBitmap9
DECLARE_INTERFACE_( IVMRMixerBitmap9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRMixerBitmap9 methods */
STDMETHOD( SetAlphaBitmap )( THIS_ const VMR9AlphaBitmap * ) PURE;
STDMETHOD( UpdateAlphaBitmapParameters )( THIS_ const VMR9AlphaBitmap * ) PURE;
STDMETHOD( GetAlphaBitmapParameters )( THIS_ VMR9AlphaBitmap * ) PURE;
};
/* IVMRSurface9 interface */
#undef INTERFACE
#define INTERFACE IVMRSurface9
DECLARE_INTERFACE_( IVMRSurface9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRSurface9 methods */
STDMETHOD( IsSurfaceLocked )( THIS ) PURE;
STDMETHOD( LockSurface )( THIS_ BYTE ** ) PURE;
STDMETHOD( UnlockSurface )( THIS ) PURE;
STDMETHOD( GetSurface )( THIS_ IDirect3DSurface9 ** ) PURE;
};
/* IVMRImagePresenterConfig9 interface */
#undef INTERFACE
#define INTERFACE IVMRImagePresenterConfig9
DECLARE_INTERFACE_( IVMRImagePresenterConfig9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRImagePresenterConfig9 methods */
STDMETHOD( SetRenderingPrefs )( THIS_ DWORD ) PURE;
STDMETHOD( GetRenderingPrefs )( THIS_ DWORD * ) PURE;
};
/* IVMRVideoStreamControl9 interface */
#undef INTERFACE
#define INTERFACE IVMRVideoStreamControl9
DECLARE_INTERFACE_( IVMRVideoStreamControl9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRVideoStreamControl9 methods */
STDMETHOD( SetStreamActiveState )( THIS_ BOOL ) PURE;
STDMETHOD( GetStreamActiveState )( THIS_ BOOL * ) PURE;
};
/* IVMRFilterConfig9 interface */
#undef INTERFACE
#define INTERFACE IVMRFilterConfig9
DECLARE_INTERFACE_( IVMRFilterConfig9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRFilterConfig9 methods */
STDMETHOD( SetImageCompositor )( THIS_ IVMRImageCompositor9 * ) PURE;
STDMETHOD( SetNumberOfStreams )( THIS_ DWORD ) PURE;
STDMETHOD( GetNumberOfStreams )( THIS_ DWORD * ) PURE;
STDMETHOD( SetRenderingPrefs )( THIS_ DWORD ) PURE;
STDMETHOD( GetRenderingPrefs )( THIS_ DWORD * ) PURE;
STDMETHOD( SetRenderingMode )( THIS_ DWORD ) PURE;
STDMETHOD( GetRenderingMode )( THIS_ DWORD * ) PURE;
};
/* IVMRAspectRatioControl9 interface */
#undef INTERFACE
#define INTERFACE IVMRAspectRatioControl9
DECLARE_INTERFACE_( IVMRAspectRatioControl9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRAspectRatioControl9 methods */
STDMETHOD( GetAspectRatioMode )( THIS_ LPDWORD ) PURE;
STDMETHOD( SetAspectRatioMode )( THIS_ DWORD ) PURE;
};
/* IVMRMonitorConfig9 interface */
#undef INTERFACE
#define INTERFACE IVMRMonitorConfig9
DECLARE_INTERFACE_( IVMRMonitorConfig9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRMonitorConfig9 methods */
STDMETHOD( SetMonitor )( THIS_ UINT ) PURE;
STDMETHOD( GetMonitor )( THIS_ UINT * ) PURE;
STDMETHOD( SetDefaultMonitor )( THIS_ UINT ) PURE;
STDMETHOD( GetDefaultMonitor )( THIS_ UINT * ) PURE;
STDMETHOD( GetAvailableMonitors )( THIS_ VMR9MonitorInfo *, DWORD, DWORD * ) PURE;
};
/* IVMRDeinterlaceControl9 interface */
#undef INTERFACE
#define INTERFACE IVMRDeinterlaceControl9
DECLARE_INTERFACE_( IVMRDeinterlaceControl9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRDeinterlaceControl9 methods */
STDMETHOD( GetNumberOfDeinterlaceModes )( THIS_ VMR9VideoDesc *, LPDWORD, LPGUID ) PURE;
STDMETHOD( GetDeinterlaceModeCaps )( THIS_ LPGUID, VMR9VideoDesc *, VMR9DeinterlaceCaps * ) PURE;
STDMETHOD( GetDeinterlaceMode )( THIS_ DWORD, LPGUID ) PURE;
STDMETHOD( SetDeinterlaceMode )( THIS_ DWORD, LPGUID ) PURE;
STDMETHOD( GetDeinterlacePrefs )( THIS_ LPDWORD ) PURE;
STDMETHOD( SetDeinterlacePrefs )( THIS_ DWORD ) PURE;
STDMETHOD( GetActualDeinterlaceMode )( THIS_ DWORD, LPGUID ) PURE;
};
/* IVMRImageCompositor9 interface */
#undef INTERFACE
#define INTERFACE IVMRImageCompositor9
DECLARE_INTERFACE_( IVMRImageCompositor9, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IVMRImageCompositor9 methods */
STDMETHOD( InitCompositionDevice )( THIS_ IUnknown * ) PURE;
STDMETHOD( TermCompositionDevice )( THIS_ IUnknown * ) PURE;
STDMETHOD( SetStreamMediaType )( THIS_ DWORD, AM_MEDIA_TYPE *, BOOL ) PURE;
STDMETHOD( CompositeImage )( THIS_ IUnknown *, IDirect3DSurface9 *, AM_MEDIA_TYPE *, REFERENCE_TIME, REFERENCE_TIME, D3DCOLOR, VMR9VideoStreamInfo *, UINT ) PURE;
};
/* C object macros */
#if (!defined( __cplusplus ) || defined( CINTERFACE )) && defined( COBJMACROS )
#define IVMRImagePresenter9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRImagePresenter9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRImagePresenter9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRImagePresenter9_StartPresenting( x, p ) \
(x)->lpVtbl->StartPresenting( x, p )
#define IVMRImagePresenter9_StopPresenting( x, p ) \
(x)->lpVtbl->StopPresenting( x, p )
#define IVMRImagePresenter9_PresentImage( x, p1, p2 ) \
(x)->lpVtbl->PresentImage( x, p1, p2 )
#define IVMRSurfaceAllocator9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRSurfaceAllocator9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRSurfaceAllocator9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRSurfaceAllocator9_InitializeDevice( x, p1, p2, p3 ) \
(x)->lpVtbl->InitializeDevice( x, p1, p2, p3 )
#define IVMRSurfaceAllocator9_TerminateDevice( x, p ) \
(x)->lpVtbl->TerminateDevice( x, p )
#define IVMRSurfaceAllocator9_GetSurface( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->GetSurface( x, p1, p2, p3, p4 )
#define IVMRSurfaceAllocator9_AdviseNotify( x, p ) \
(x)->lpVtbl->AdviseNotify( x, p )
#define IVMRSurfaceAllocatorEx9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRSurfaceAllocatorEx9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRSurfaceAllocatorEx9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRSurfaceAllocatorEx9_InitializeDevice( x, p1, p2, p3 ) \
(x)->lpVtbl->InitializeDevice( x, p1, p2, p3 )
#define IVMRSurfaceAllocatorEx9_TerminateDevice( x, p ) \
(x)->lpVtbl->TerminateDevice( x, p )
#define IVMRSurfaceAllocatorEx9_GetSurface( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->GetSurface( x, p1, p2, p3, p4 )
#define IVMRSurfaceAllocatorEx9_AdviseNotify( x, p ) \
(x)->lpVtbl->AdviseNotify( x, p )
#define IVMRSurfaceAllocatorEx9_GetSurfaceEx( x, p1, p2, p3, p4, p5 ) \
(x)->lpVtbl->GetSurfaceEx( x, p1, p2, p3, p4, p5 )
#define IVMRSurfaceAllocatorNotify9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRSurfaceAllocatorNotify9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRSurfaceAllocatorNotify9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRSurfaceAllocatorNotify9_AdviseSurfaceAllocator( x, p1, p2 ) \
(x)->lpVtbl->AdviseSurfaceAllocator( x, p1, p2 )
#define IVMRSurfaceAllocatorNotify9_SetD3DDevice( x, p1, p2 ) \
(x)->lpVtbl->SetD3DDevice( x, p1, p2 )
#define IVMRSurfaceAllocatorNotify9_ChangeD3DDevice( x, p1, p2 ) \
(x)->lpVtbl->ChangeD3DDevice( x, p1, p2 )
#define IVMRSurfaceAllocatorNotify9_AllocateSurfaceHelper( x, p1, p2, p3 ) \
(x)->lpVtbl->AllocateSurfaceHelper( x, p1, p2, p3 )
#define IVMRSurfaceAllocatorNotify9_NotifyEvent( x, p1, p2, p3 ) \
(x)->lpVtbl->NotifyEvent( x, p1, p2, p3 )
#define IVMRWindowlessControl9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRWindowlessControl9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRWindowlessControl9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRWindowlessControl9_GetNativeVideoSize( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->GetNativeVideoSize( x, p1, p2, p3, p4 )
#define IVMRWindowlessControl9_GetMinIdealVideoSize( x, p1, p2 ) \
(x)->lpVtbl->GetMinIdealVideoSize( x, p1, p2 )
#define IVMRWindowlessControl9_GetMaxIdealVideoSize( x, p1, p2 ) \
(x)->lpVtbl->GetMaxIdealVideoSize( x, p1, p2 )
#define IVMRWindowlessControl9_SetVideoPosition( x, p1, p2 ) \
(x)->lpVtbl->SetVideoPosition( x, p1, p2 )
#define IVMRWindowlessControl9_GetVideoPosition( x, p1, p2 ) \
(x)->lpVtbl->GetVideoPosition( x, p1, p2 )
#define IVMRWindowlessControl9_GetAspectRatioMode( x, p ) \
(x)->lpVtbl->GetAspectRatioMode( x, p )
#define IVMRWindowlessControl9_SetAspectRatioMode( x, p ) \
(x)->lpVtbl->SetAspectRatioMode( x, p )
#define IVMRWindowlessControl9_SetVideoClippingWindow( x, p ) \
(x)->lpVtbl->SetVideoClippingWindow( x, p )
#define IVMRWindowlessControl9_RepaintVideo( x, p1, p2 ) \
(x)->lpVtbl->RepaintVideo( x, p1, p2 )
#define IVMRWindowlessControl9_DisplayModeChanged( x ) \
(x)->lpVtbl->DisplayModeChanged( x )
#define IVMRWindowlessControl9_GetCurrentImage( x, p ) \
(x)->lpVtbl->GetCurrentImage( x, p )
#define IVMRWindowlessControl9_SetBorderColor( x, p ) \
(x)->lpVtbl->SetBorderColor( x, p )
#define IVMRWindowlessControl9_GetBorderColor( x, p ) \
(x)->lpVtbl->GetBorderColor( x, p )
#define IVMRMixerControl9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRMixerControl9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRMixerControl9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRMixerControl9_SetAlpha( x, p1, p2 ) \
(x)->lpVtbl->SetAlpha( x, p1, p2 )
#define IVMRMixerControl9_GetAlpha( x, p1, p2 ) \
(x)->lpVtbl->GetAlpha( x, p1, p2 )
#define IVMRMixerControl9_SetZOrder( x, p1, p2 ) \
(x)->lpVtbl->SetZOrder( x, p1, p2 )
#define IVMRMixerControl9_GetZOrder( x, p1, p2 ) \
(x)->lpVtbl->GetZOrder( x, p1, p2 )
#define IVMRMixerControl9_SetOutputRect( x, p1, p2 ) \
(x)->lpVtbl->SetOutputRect( x, p1, p2 )
#define IVMRMixerControl9_GetOutputRect( x, p1, p2 ) \
(x)->lpVtbl->GetOutputRect( x, p1, p2 )
#define IVMRMixerControl9_SetBackgroundClr( x, p ) \
(x)->lpVtbl->SetBackgroundClr( x, p )
#define IVMRMixerContorl9_GetBackgroundClr( x, p ) \
(x)->lpVtbl->GetBackgroundClr( x, p )
#define IVMRMixerControl9_SetMixingPrefs( x, p ) \
(x)->lpVtbl->SetMixingPrefs( x, p )
#define IVMRMixerControl9_GetMixingPrefs( x, p ) \
(x)->lpVtbl->GetMixingPrefs( x, p )
#define IVMRMixerControl9_SetProcAmpControl( x, p1, p2 ) \
(x)->lpVtbl->SetProcAmpControl( x, p1, p2 )
#define IVMRMixerControl9_GetProcAmpControl( x, p1, p2 ) \
(x)->lpVtbl->GetProcAmpControl( x, p1, p2 )
#define IVMRMixerControl9_GetProcAmpControlRange( x, p1, p2 ) \
(x)->lpVtbl->GetProcAmpControlRange( x, p1, p2 )
#define IVMRMixerBitmap9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRMixerBitmap9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRMixerBitmap9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRMixerBitmap9_SetAlphaBitmap( x, p ) \
(x)->lpVtbl->SetAlphaBitmap( x, p )
#define IVMRMixerBitmap9_UpdateAlphaBitmapParameters( x, p ) \
(x)->lpVtbl->UpdateAlphaBitmapParameters( x, p )
#define IVMRMixerBitmap9_GetAlphaBitmapParameters( x, p ) \
(x)->lpVtbl->GetAlphaBitmapParameters( x, p )
#define IVMRSurface9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRSurface9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRSurface9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRSurface9_IsSurfaceLocked( x ) \
(x)->lpVtbl->IsSurfaceLocked( x )
#define IVMRSurface9_LockSurface( x, p ) \
(x)->lpVtbl->LockSurface( x, p )
#define IVMRSurface9_UnlockSurface( x ) \
(x)->lpVtbl->UnlockSurface( x )
#define IVMRSurface9_GetSurface( x, p ) \
(x)->lpVtbl->GetSurface( x, p )
#define IVMRImagePresenterConfig9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRImagePresenterConfig9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRImagePresenterConfig9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRImagePresenterConfig9_SetRenderingPrefs( x, p ) \
(x)->lpVtbl->SetRenderingPrefs( x, p )
#define IVMRImagePresenterConfig9_GetRenderingPrefs( x, p ) \
(x)->lpVtbl->GetRenderingPrefs( x, p )
#define IVMRVideoStreamControl9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRVideoStreamControl9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRVideoStreamControl9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRVideoStreamControl9_SetStreamActiveState( x, p ) \
(x)->lpVtbl->SetStreamActiveState( x, p )
#define IVMRVideoStreamControl9_GetStreamActiveState( x, p ) \
(x)->lpVtbl->GetStreamActiveState( x, p )
#define IVMRFilterConfig9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRFilterConfig9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRFilterConfig9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRFilterConfig9_SetImageCompositor( x, p ) \
(x)->lpVtbl->SetImageCompositor( x, p )
#define IVMRFilterConfig9_SetNumberOfStreams( x, p ) \
(x)->lpVtbl->SetNumberOfStreams( x, p )
#define IVMRFilterConfig9_GetNumberOfStreams( x, p ) \
(x)->lpVtbl->GetNumberOfStreams( x, p )
#define IVMRFilterConfig9_SetRenderingPrefs( x, p ) \
(x)->lpVtbl->SetRenderingPrefs( x, p )
#define IVMRFilterConfig9_GetRenderingPrefs( x, p ) \
(x)->lpVtbl->GetRenderingPrefs( x, p )
#define IVMRFilterConfig9_SetRenderingMode( x, p ) \
(x)->lpVtbl->SetRenderingMode( x, p )
#define IVMRFilterConfig9_GetRenderingMode( x, p ) \
(x)->lpVtbl->GetRenderingMode( x, p )
#define IVMRAspectRatioControl9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRAspectRatioControl9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRAspectRatioControl9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRAspectRatioControl9_GetAspectRatioMode( x, p ) \
(x)->lpVtbl->GetAspectRatioMode( x, p )
#define IVMRAspectRatioControl9_SetAspectRatioMode( x, p ) \
(x)->lpVtbl->SetAspectRatioMode( x, p )
#define IVMRMonitorConfig9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRMonitorConfig9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRMonitorConfig9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRMonitorConfig9_SetMonitor( x, p ) \
(x)->lpVtbl->SetMonitor( x, p )
#define IVMRMonitorConfig9_GetMonitor( x, p ) \
(x)->lpVtbl->GetMonitor( x, p )
#define IVMRMonitorConfig9_SetDefaultMonitor( x, p ) \
(x)->lpVtbl->SetDefaultMonitor( x, p )
#define IVMRMonitorConfig9_GetDefaultMonitor( x, p ) \
(x)->lpVtbl->GetDefaultMonitor( x, p )
#define IVMRMonitorConfig9_GetAvailableMonitors( x, p1, p2, p3 ) \
(x)->lpVtbl->GetAvailableMonitors( x, p1, p2, p3 )
#define IVMRDeinterlaceControl9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRDeinterlaceControl9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRDeinterlaceControl9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRDeinterlaceControl9_GetNumberOfDeinterlaceModes( x, p1, p2, p3 ) \
(x)->lpVtbl->GetNumberOfDeinterlaceModes( x, p1, p2, p3 )
#define IVMRDeinterlaceControl9_GetDeinterlaceModeCaps( x, p1, p2, p3 ) \
(x)->lpVtbl->GetDeinterlaceModeCaps( x, p1, p2, p3 )
#define IVMRDeinterlaceControl9_GetDeinterlaceMode( x, p1, p2 ) \
(x)->lpVtbl->GetDeinterlaceMode( x, p1, p2 )
#define IVMRDeinterlaceControl9_SetDeinterlaceMode( x, p1, p2 ) \
(x)->lpVtbl->SetDeinterlaceMode( x, p1, p2 )
#define IVMRDeinterlaceControl9_GetDeinterlacePrefs( x, p ) \
(x)->lpVtbl->GetDeinterlacePrefs( x, p )
#define IVMRDeinterlaceControl9_SetDeinterlacePrefs( x, p ) \
(x)->lpVtbl->SetDeinterlacePrefs( x, p )
#define IVMRDeinterlaceControl9_GetActualDeinterlaceMode( x, p1, p2 ) \
(x)->lpVtbl->GetActualDeinterlaceMode( x, p1, p2 )
#define IVMRImageCompositor9_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IVMRImageCompositor9_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IVMRImageCompositor9_Release( x ) \
(x)->lpVtbl->Release( x )
#define IVMRImageCompositor9_InitCompositionDevice( x, p ) \
(x)->lpVtbl->InitCompositionDevice( x, p )
#define IVMRImageCompositor9_TermCompositionDevice( x, p ) \
(x)->lpVtbl->TermCompositionDevice( x, p )
#define IVMRImageCompositor9_SetStreamMediaType( x, p1, p2, p3 ) \
(x)->lpVtbl->SetStreamMediaType( x, p1, p2, p3 )
#define IVMRImageCompositor9_CompositeImage( x, p1, p2, p3, p4, p5, p6, p7, p8 ) \
(x)->lpVtbl->CompositeImage( x, p1, p2, p3, p4, p5, p6, p7, p8 )
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* __vmr9_h__ */