1*c2c66affSColin Finck /* 2*c2c66affSColin Finck * COPYRIGHT: This file is in the public domain. 3*c2c66affSColin Finck * PROJECT: ReactOS kernel 4*c2c66affSColin Finck * FILE: include/psdk/dvp.h 5*c2c66affSColin Finck * PURPOSE: Directx headers 6*c2c66affSColin Finck * PROGRAMMER: Magnus Olsen (greatlrd) 7*c2c66affSColin Finck * 8*c2c66affSColin Finck */ 9*c2c66affSColin Finck 10*c2c66affSColin Finck #ifndef __DVP_INCLUDED__ 11*c2c66affSColin Finck #define __DVP_INCLUDED__ 12*c2c66affSColin Finck 13*c2c66affSColin Finck #if defined( _WIN32 ) && !defined( _NO_COM ) 14*c2c66affSColin Finck DEFINE_GUID( IID_IDDVideoPortContainer, 0x6C142760,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 ); 15*c2c66affSColin Finck DEFINE_GUID( IID_IDirectDrawVideoPort, 0xB36D93E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 ); 16*c2c66affSColin Finck DEFINE_GUID( IID_IDirectDrawVideoPortNotify, 0xA655FB94,0x0589,0x4E57,0xB3,0x33,0x56,0x7A,0x89,0x46,0x8C,0x88); 17*c2c66affSColin Finck 18*c2c66affSColin Finck DEFINE_GUID( DDVPTYPE_E_HREFH_VREFH, 0x54F39980L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); 19*c2c66affSColin Finck DEFINE_GUID( DDVPTYPE_E_HREFH_VREFL, 0x92783220L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); 20*c2c66affSColin Finck DEFINE_GUID( DDVPTYPE_E_HREFL_VREFH, 0xA07A02E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); 21*c2c66affSColin Finck DEFINE_GUID( DDVPTYPE_E_HREFL_VREFL, 0xE09C77E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); 22*c2c66affSColin Finck DEFINE_GUID( DDVPTYPE_CCIR656, 0xFCA326A0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); 23*c2c66affSColin Finck DEFINE_GUID( DDVPTYPE_BROOKTREE, 0x1352A560L,0xDA61,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); 24*c2c66affSColin Finck DEFINE_GUID( DDVPTYPE_PHILIPS, 0x332CF160L,0xDA61,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8); 25*c2c66affSColin Finck #endif 26*c2c66affSColin Finck 27*c2c66affSColin Finck #ifndef GUID_DEFS_ONLY 28*c2c66affSColin Finck #if defined( _WIN32 ) && !defined( _NO_COM ) 29*c2c66affSColin Finck #define COM_NO_WINDOWS_H 30*c2c66affSColin Finck #include <objbase.h> 31*c2c66affSColin Finck #else 32*c2c66affSColin Finck #define IUnknown void 33*c2c66affSColin Finck #endif 34*c2c66affSColin Finck 35*c2c66affSColin Finck #ifndef MAXULONG_PTR 36*c2c66affSColin Finck #define ULONG_PTR DWORD 37*c2c66affSColin Finck #endif 38*c2c66affSColin Finck 39*c2c66affSColin Finck #ifdef __cplusplus 40*c2c66affSColin Finck extern "C" { 41*c2c66affSColin Finck #endif 42*c2c66affSColin Finck 43*c2c66affSColin Finck typedef struct _DDVIDEOPORTCONNECT 44*c2c66affSColin Finck { 45*c2c66affSColin Finck DWORD dwSize; 46*c2c66affSColin Finck DWORD dwPortWidth; 47*c2c66affSColin Finck GUID guidTypeID; 48*c2c66affSColin Finck DWORD dwFlags; 49*c2c66affSColin Finck ULONG_PTR dwReserved1; 50*c2c66affSColin Finck } DDVIDEOPORTCONNECT, *LPDDVIDEOPORTCONNECT; 51*c2c66affSColin Finck 52*c2c66affSColin Finck typedef struct _DDVIDEOPORTDESC 53*c2c66affSColin Finck { 54*c2c66affSColin Finck DWORD dwSize; 55*c2c66affSColin Finck DWORD dwFieldWidth; 56*c2c66affSColin Finck DWORD dwVBIWidth; 57*c2c66affSColin Finck DWORD dwFieldHeight; 58*c2c66affSColin Finck DWORD dwMicrosecondsPerField; 59*c2c66affSColin Finck DWORD dwMaxPixelsPerSecond; 60*c2c66affSColin Finck DWORD dwVideoPortID; 61*c2c66affSColin Finck DWORD dwReserved1; 62*c2c66affSColin Finck DDVIDEOPORTCONNECT VideoPortType; 63*c2c66affSColin Finck ULONG_PTR dwReserved2; 64*c2c66affSColin Finck ULONG_PTR dwReserved3; 65*c2c66affSColin Finck } DDVIDEOPORTDESC, *LPDDVIDEOPORTDESC; 66*c2c66affSColin Finck 67*c2c66affSColin Finck typedef struct _DDVIDEOPORTBANDWIDTH 68*c2c66affSColin Finck { 69*c2c66affSColin Finck DWORD dwSize; 70*c2c66affSColin Finck DWORD dwOverlay; 71*c2c66affSColin Finck DWORD dwColorkey; 72*c2c66affSColin Finck DWORD dwYInterpolate; 73*c2c66affSColin Finck DWORD dwYInterpAndColorkey; 74*c2c66affSColin Finck ULONG_PTR dwReserved1; 75*c2c66affSColin Finck ULONG_PTR dwReserved2; 76*c2c66affSColin Finck } DDVIDEOPORTBANDWIDTH, *LPDDVIDEOPORTBANDWIDTH; 77*c2c66affSColin Finck 78*c2c66affSColin Finck typedef struct _DDVIDEOPORTCAPS 79*c2c66affSColin Finck { 80*c2c66affSColin Finck DWORD dwSize; 81*c2c66affSColin Finck DWORD dwFlags; 82*c2c66affSColin Finck DWORD dwMaxWidth; 83*c2c66affSColin Finck DWORD dwMaxVBIWidth; 84*c2c66affSColin Finck DWORD dwMaxHeight; 85*c2c66affSColin Finck DWORD dwVideoPortID; 86*c2c66affSColin Finck DWORD dwCaps; 87*c2c66affSColin Finck DWORD dwFX; 88*c2c66affSColin Finck DWORD dwNumAutoFlipSurfaces; 89*c2c66affSColin Finck DWORD dwAlignVideoPortBoundary; 90*c2c66affSColin Finck DWORD dwAlignVideoPortPrescaleWidth; 91*c2c66affSColin Finck DWORD dwAlignVideoPortCropBoundary; 92*c2c66affSColin Finck DWORD dwAlignVideoPortCropWidth; 93*c2c66affSColin Finck DWORD dwPreshrinkXStep; 94*c2c66affSColin Finck DWORD dwPreshrinkYStep; 95*c2c66affSColin Finck DWORD dwNumVBIAutoFlipSurfaces; 96*c2c66affSColin Finck DWORD dwNumPreferredAutoflip; 97*c2c66affSColin Finck WORD wNumFilterTapsX; 98*c2c66affSColin Finck WORD wNumFilterTapsY; 99*c2c66affSColin Finck } DDVIDEOPORTCAPS, *LPDDVIDEOPORTCAPS; 100*c2c66affSColin Finck 101*c2c66affSColin Finck typedef struct _DDVIDEOPORTINFO 102*c2c66affSColin Finck { 103*c2c66affSColin Finck DWORD dwSize; 104*c2c66affSColin Finck DWORD dwOriginX; 105*c2c66affSColin Finck DWORD dwOriginY; 106*c2c66affSColin Finck DWORD dwVPFlags; 107*c2c66affSColin Finck RECT rCrop; 108*c2c66affSColin Finck DWORD dwPrescaleWidth; 109*c2c66affSColin Finck DWORD dwPrescaleHeight; 110*c2c66affSColin Finck LPDDPIXELFORMAT lpddpfInputFormat; 111*c2c66affSColin Finck LPDDPIXELFORMAT lpddpfVBIInputFormat; 112*c2c66affSColin Finck LPDDPIXELFORMAT lpddpfVBIOutputFormat; 113*c2c66affSColin Finck DWORD dwVBIHeight; 114*c2c66affSColin Finck ULONG_PTR dwReserved1; 115*c2c66affSColin Finck ULONG_PTR dwReserved2; 116*c2c66affSColin Finck } DDVIDEOPORTINFO, *LPDDVIDEOPORTINFO; 117*c2c66affSColin Finck 118*c2c66affSColin Finck typedef struct _DDVIDEOPORTSTATUS 119*c2c66affSColin Finck { 120*c2c66affSColin Finck DWORD dwSize; 121*c2c66affSColin Finck BOOL bInUse; 122*c2c66affSColin Finck DWORD dwFlags; 123*c2c66affSColin Finck DWORD dwReserved1; 124*c2c66affSColin Finck DDVIDEOPORTCONNECT VideoPortType; 125*c2c66affSColin Finck ULONG_PTR dwReserved2; 126*c2c66affSColin Finck ULONG_PTR dwReserved3; 127*c2c66affSColin Finck } DDVIDEOPORTSTATUS, *LPDDVIDEOPORTSTATUS; 128*c2c66affSColin Finck 129*c2c66affSColin Finck typedef struct _DDVIDEOPORTNOTIFY 130*c2c66affSColin Finck { 131*c2c66affSColin Finck LARGE_INTEGER ApproximateTimeStamp; 132*c2c66affSColin Finck LONG lField; 133*c2c66affSColin Finck UINT dwSurfaceIndex; 134*c2c66affSColin Finck LONG lDone; 135*c2c66affSColin Finck } DDVIDEOPORTNOTIFY, *LPDDVIDEOPORTNOTIFY; 136*c2c66affSColin Finck 137*c2c66affSColin Finck 138*c2c66affSColin Finck #define DDVPD_WIDTH 0x00000001 139*c2c66affSColin Finck #define DDVPD_HEIGHT 0x00000002 140*c2c66affSColin Finck #define DDVPD_ID 0x00000004 141*c2c66affSColin Finck #define DDVPD_CAPS 0x00000008 142*c2c66affSColin Finck #define DDVPD_FX 0x00000010 143*c2c66affSColin Finck #define DDVPD_AUTOFLIP 0x00000020 144*c2c66affSColin Finck #define DDVPD_ALIGN 0x00000040 145*c2c66affSColin Finck #define DDVPD_PREFERREDAUTOFLIP 0x00000080 146*c2c66affSColin Finck #define DDVPD_FILTERQUALITY 0x00000100 147*c2c66affSColin Finck #define DDVPCONNECT_DOUBLECLOCK 0x00000001 148*c2c66affSColin Finck #define DDVPCONNECT_VACT 0x00000002 149*c2c66affSColin Finck #define DDVPCONNECT_INVERTPOLARITY 0x00000004 150*c2c66affSColin Finck #define DDVPCONNECT_DISCARDSVREFDATA 0x00000008 151*c2c66affSColin Finck #define DDVPCONNECT_HALFLINE 0x00000010 152*c2c66affSColin Finck #define DDVPCONNECT_INTERLACED 0x00000020 153*c2c66affSColin Finck #define DDVPCONNECT_SHAREEVEN 0x00000040 154*c2c66affSColin Finck #define DDVPCONNECT_SHAREODD 0x00000080 155*c2c66affSColin Finck #define DDVPCAPS_AUTOFLIP 0x00000001 156*c2c66affSColin Finck #define DDVPCAPS_INTERLACED 0x00000002 157*c2c66affSColin Finck #define DDVPCAPS_NONINTERLACED 0x00000004 158*c2c66affSColin Finck #define DDVPCAPS_READBACKFIELD 0x00000008 159*c2c66affSColin Finck #define DDVPCAPS_READBACKLINE 0x00000010 160*c2c66affSColin Finck #define DDVPCAPS_SHAREABLE 0x00000020 161*c2c66affSColin Finck #define DDVPCAPS_SKIPEVENFIELDS 0x00000040 162*c2c66affSColin Finck #define DDVPCAPS_SKIPODDFIELDS 0x00000080 163*c2c66affSColin Finck #define DDVPCAPS_SYNCMASTER 0x00000100 164*c2c66affSColin Finck #define DDVPCAPS_VBISURFACE 0x00000200 165*c2c66affSColin Finck #define DDVPCAPS_COLORCONTROL 0x00000400 166*c2c66affSColin Finck #define DDVPCAPS_OVERSAMPLEDVBI 0x00000800 167*c2c66affSColin Finck #define DDVPCAPS_SYSTEMMEMORY 0x00001000 168*c2c66affSColin Finck #define DDVPCAPS_VBIANDVIDEOINDEPENDENT 0x00002000 169*c2c66affSColin Finck #define DDVPCAPS_HARDWAREDEINTERLACE 0x00004000 170*c2c66affSColin Finck #define DDVPFX_CROPTOPDATA 0x00000001 171*c2c66affSColin Finck #define DDVPFX_CROPX 0x00000002 172*c2c66affSColin Finck #define DDVPFX_CROPY 0x00000004 173*c2c66affSColin Finck #define DDVPFX_INTERLEAVE 0x00000008 174*c2c66affSColin Finck #define DDVPFX_MIRRORLEFTRIGHT 0x00000010 175*c2c66affSColin Finck #define DDVPFX_MIRRORUPDOWN 0x00000020 176*c2c66affSColin Finck #define DDVPFX_PRESHRINKX 0x00000040 177*c2c66affSColin Finck #define DDVPFX_PRESHRINKY 0x00000080 178*c2c66affSColin Finck #define DDVPFX_PRESHRINKXB 0x00000100 179*c2c66affSColin Finck #define DDVPFX_PRESHRINKYB 0x00000200 180*c2c66affSColin Finck #define DDVPFX_PRESHRINKXS 0x00000400 181*c2c66affSColin Finck #define DDVPFX_PRESHRINKYS 0x00000800 182*c2c66affSColin Finck #define DDVPFX_PRESTRETCHX 0x00001000 183*c2c66affSColin Finck #define DDVPFX_PRESTRETCHY 0x00002000 184*c2c66affSColin Finck #define DDVPFX_PRESTRETCHXN 0x00004000 185*c2c66affSColin Finck #define DDVPFX_PRESTRETCHYN 0x00008000 186*c2c66affSColin Finck #define DDVPFX_VBICONVERT 0x00010000 187*c2c66affSColin Finck #define DDVPFX_VBINOSCALE 0x00020000 188*c2c66affSColin Finck #define DDVPFX_IGNOREVBIXCROP 0x00040000 189*c2c66affSColin Finck #define DDVPFX_VBINOINTERLEAVE 0x00080000 190*c2c66affSColin Finck #define DDVP_AUTOFLIP 0x00000001 191*c2c66affSColin Finck #define DDVP_CONVERT 0x00000002 192*c2c66affSColin Finck #define DDVP_CROP 0x00000004 193*c2c66affSColin Finck #define DDVP_INTERLEAVE 0x00000008 194*c2c66affSColin Finck #define DDVP_MIRRORLEFTRIGHT 0x00000010 195*c2c66affSColin Finck #define DDVP_MIRRORUPDOWN 0x00000020 196*c2c66affSColin Finck #define DDVP_PRESCALE 0x00000040 197*c2c66affSColin Finck #define DDVP_SKIPEVENFIELDS 0x00000080 198*c2c66affSColin Finck #define DDVP_SKIPODDFIELDS 0x00000100 199*c2c66affSColin Finck #define DDVP_SYNCMASTER 0x00000200 200*c2c66affSColin Finck #define DDVP_VBICONVERT 0x00000400 201*c2c66affSColin Finck #define DDVP_VBINOSCALE 0x00000800 202*c2c66affSColin Finck #define DDVP_OVERRIDEBOBWEAVE 0x00001000 203*c2c66affSColin Finck #define DDVP_IGNOREVBIXCROP 0x00002000 204*c2c66affSColin Finck #define DDVP_VBINOINTERLEAVE 0x00004000 205*c2c66affSColin Finck #define DDVP_HARDWAREDEINTERLACE 0x00008000 206*c2c66affSColin Finck #define DDVPFORMAT_VIDEO 0x00000001 207*c2c66affSColin Finck #define DDVPFORMAT_VBI 0x00000002 208*c2c66affSColin Finck #define DDVPTARGET_VIDEO 0x00000001 209*c2c66affSColin Finck #define DDVPTARGET_VBI 0x00000002 210*c2c66affSColin Finck #define DDVPWAIT_BEGIN 0x00000001 211*c2c66affSColin Finck #define DDVPWAIT_END 0x00000002 212*c2c66affSColin Finck #define DDVPWAIT_LINE 0x00000003 213*c2c66affSColin Finck #define DDVPFLIP_VIDEO 0x00000001 214*c2c66affSColin Finck #define DDVPFLIP_VBI 0x00000002 215*c2c66affSColin Finck #define DDVPSQ_NOSIGNAL 0x00000001 216*c2c66affSColin Finck #define DDVPSQ_SIGNALOK 0x00000002 217*c2c66affSColin Finck #define DDVPB_VIDEOPORT 0x00000001 218*c2c66affSColin Finck #define DDVPB_OVERLAY 0x00000002 219*c2c66affSColin Finck #define DDVPB_TYPE 0x00000004 220*c2c66affSColin Finck #define DDVPBCAPS_SOURCE 0x00000001 221*c2c66affSColin Finck #define DDVPBCAPS_DESTINATION 0x00000002 222*c2c66affSColin Finck #define DDVPCREATE_VBIONLY 0x00000001 223*c2c66affSColin Finck #define DDVPCREATE_VIDEOONLY 0x00000002 224*c2c66affSColin Finck #define DDVPSTATUS_VBIONLY 0x00000001 225*c2c66affSColin Finck #define DDVPSTATUS_VIDEOONLY 0x00000002 226*c2c66affSColin Finck 227*c2c66affSColin Finck struct IDirectDraw; 228*c2c66affSColin Finck struct IDirectDrawSurface; 229*c2c66affSColin Finck struct IDirectDrawPalette; 230*c2c66affSColin Finck struct IDirectDrawClipper; 231*c2c66affSColin Finck typedef struct IDirectDrawVideoPort *LPDIRECTDRAWVIDEOPORT; 232*c2c66affSColin Finck typedef struct IDDVideoPortContainer *LPDDVIDEOPORTCONTAINER; 233*c2c66affSColin Finck typedef struct IDirectDrawVideoPortNotify *LPDIRECTDRAWVIDEOPORTNOTIFY; 234*c2c66affSColin Finck 235*c2c66affSColin Finck typedef struct IDDVideoPortContainerVtbl DDVIDEOPORTCONTAINERCALLBACKS; 236*c2c66affSColin Finck typedef struct IDirectDrawVideoPortVtbl DIRECTDRAWVIDEOPORTCALLBACKS; 237*c2c66affSColin Finck typedef struct IDirectDrawVideoPortNotifyVtbl DIRECTDRAWVIDEOPORTNOTIFYCALLBACKS; 238*c2c66affSColin Finck 239*c2c66affSColin Finck typedef HRESULT (*LPDDENUMVIDEOCALLBACK)(LPDDVIDEOPORTCAPS, LPVOID); 240*c2c66affSColin Finck 241*c2c66affSColin Finck 242*c2c66affSColin Finck 243*c2c66affSColin Finck #if defined( _WIN32 ) && !defined( _NO_COM ) 244*c2c66affSColin Finck #undef INTERFACE 245*c2c66affSColin Finck #define INTERFACE IDDVideoPortContainer DECLARE_INTERFACE_(IDDVideoPortContainer,IUnknown)246*c2c66affSColin Finck DECLARE_INTERFACE_( IDDVideoPortContainer, IUnknown ) 247*c2c66affSColin Finck { 248*c2c66affSColin Finck STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE; 249*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef) (THIS) PURE; 250*c2c66affSColin Finck STDMETHOD_(ULONG,Release) (THIS) PURE; 251*c2c66affSColin Finck STDMETHOD(CreateVideoPort)(THIS_ DWORD, LPDDVIDEOPORTDESC, LPDIRECTDRAWVIDEOPORT *, IUnknown *) PURE; 252*c2c66affSColin Finck STDMETHOD(EnumVideoPorts)(THIS_ DWORD, LPDDVIDEOPORTCAPS, LPVOID,LPDDENUMVIDEOCALLBACK ) PURE; 253*c2c66affSColin Finck STDMETHOD(GetVideoPortConnectInfo)(THIS_ DWORD, LPDWORD, LPDDVIDEOPORTCONNECT ) PURE; 254*c2c66affSColin Finck STDMETHOD(QueryVideoPortStatus)(THIS_ DWORD, LPDDVIDEOPORTSTATUS ) PURE; 255*c2c66affSColin Finck }; 256*c2c66affSColin Finck 257*c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE) 258*c2c66affSColin Finck #define IVideoPortContainer_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b) 259*c2c66affSColin Finck #define IVideoPortContainer_AddRef(p) (p)->lpVtbl->AddRef(p) 260*c2c66affSColin Finck #define IVideoPortContainer_Release(p) (p)->lpVtbl->Release(p) 261*c2c66affSColin Finck #define IVideoPortContainer_CreateVideoPort(p, a, b, c, d) (p)->lpVtbl->CreateVideoPort(p, a, b, c, d) 262*c2c66affSColin Finck #define IVideoPortContainer_EnumVideoPorts(p, a, b, c, d) (p)->lpVtbl->EnumVideoPorts(p, a, b, c, d) 263*c2c66affSColin Finck #define IVideoPortContainer_GetVideoPortConnectInfo(p, a, b, c) (p)->lpVtbl->GetVideoPortConnectInfo(p, a, b, c) 264*c2c66affSColin Finck #define IVideoPortContainer_QueryVideoPortStatus(p, a, b) (p)->lpVtbl->QueryVideoPortStatus(p, a, b) 265*c2c66affSColin Finck #else 266*c2c66affSColin Finck #define IVideoPortContainer_QueryInterface(p, a, b) (p)->QueryInterface(a, b) 267*c2c66affSColin Finck #define IVideoPortContainer_AddRef(p) (p)->AddRef() 268*c2c66affSColin Finck #define IVideoPortContainer_Release(p) (p)->Release() 269*c2c66affSColin Finck #define IVideoPortContainer_CreateVideoPort(p, a, b, c, d) (p)->CreateVideoPort(a, b, c, d) 270*c2c66affSColin Finck #define IVideoPortContainer_EnumVideoPorts(p, a, b, c, d) (p)->EnumVideoPorts(a, b, c, d) 271*c2c66affSColin Finck #define IVideoPortContainer_GetVideoPortConnectInfo(p, a, b, c) (p)->GetVideoPortConnectInfo(a, b, c) 272*c2c66affSColin Finck #define IVideoPortContainer_QueryVideoPortStatus(p, a, b) (p)->QueryVideoPortStatus(a, b) 273*c2c66affSColin Finck #endif 274*c2c66affSColin Finck #endif 275*c2c66affSColin Finck 276*c2c66affSColin Finck #if defined( _WIN32 ) && !defined( _NO_COM ) 277*c2c66affSColin Finck #undef INTERFACE 278*c2c66affSColin Finck #define INTERFACE IDirectDrawVideoPort DECLARE_INTERFACE_(IDirectDrawVideoPort,IUnknown)279*c2c66affSColin Finck DECLARE_INTERFACE_( IDirectDrawVideoPort, IUnknown ) 280*c2c66affSColin Finck { 281*c2c66affSColin Finck STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; 282*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef) (THIS) PURE; 283*c2c66affSColin Finck STDMETHOD_(ULONG,Release) (THIS) PURE; 284*c2c66affSColin Finck STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE; 285*c2c66affSColin Finck STDMETHOD(GetBandwidthInfo)(THIS_ LPDDPIXELFORMAT, DWORD, DWORD, DWORD, LPDDVIDEOPORTBANDWIDTH) PURE; 286*c2c66affSColin Finck STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; 287*c2c66affSColin Finck STDMETHOD(GetInputFormats)(THIS_ LPDWORD, LPDDPIXELFORMAT, DWORD) PURE; 288*c2c66affSColin Finck STDMETHOD(GetOutputFormats)(THIS_ LPDDPIXELFORMAT, LPDWORD, LPDDPIXELFORMAT, DWORD) PURE; 289*c2c66affSColin Finck STDMETHOD(GetFieldPolarity)(THIS_ LPBOOL) PURE; 290*c2c66affSColin Finck STDMETHOD(GetVideoLine)(THIS_ LPDWORD) PURE; 291*c2c66affSColin Finck STDMETHOD(GetVideoSignalStatus)(THIS_ LPDWORD) PURE; 292*c2c66affSColin Finck STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE; 293*c2c66affSColin Finck STDMETHOD(SetTargetSurface)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE; 294*c2c66affSColin Finck STDMETHOD(StartVideo)(THIS_ LPDDVIDEOPORTINFO) PURE; 295*c2c66affSColin Finck STDMETHOD(StopVideo)(THIS) PURE; 296*c2c66affSColin Finck STDMETHOD(UpdateVideo)(THIS_ LPDDVIDEOPORTINFO) PURE; 297*c2c66affSColin Finck STDMETHOD(WaitForSync)(THIS_ DWORD, DWORD, DWORD) PURE; 298*c2c66affSColin Finck }; 299*c2c66affSColin Finck 300*c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE) 301*c2c66affSColin Finck #define IVideoPort_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 302*c2c66affSColin Finck #define IVideoPort_AddRef(p) (p)->lpVtbl->AddRef(p) 303*c2c66affSColin Finck #define IVideoPort_Release(p) (p)->lpVtbl->Release(p) 304*c2c66affSColin Finck #define IVideoPort_SetTargetSurface(p,a,b) (p)->lpVtbl->SetTargetSurface(p,a,b) 305*c2c66affSColin Finck #define IVideoPort_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b) 306*c2c66affSColin Finck #define IVideoPort_GetBandwidthInfo(p,a,b,c,d,e) (p)->lpVtbl->GetBandwidthInfo(p,a,b,c,d,e) 307*c2c66affSColin Finck #define IVideoPort_GetColorControls(p,a) (p)->lpVtbl->GetColorControls(p,a) 308*c2c66affSColin Finck #define IVideoPort_GetInputFormats(p,a,b,c) (p)->lpVtbl->GetInputFormats(p,a,b,c) 309*c2c66affSColin Finck #define IVideoPort_GetOutputFormats(p,a,b,c,d) (p)->lpVtbl->GetOutputFormats(p,a,b,c,d) 310*c2c66affSColin Finck #define IVideoPort_GetFieldPolarity(p,a) (p)->lpVtbl->GetFieldPolarity(p,a) 311*c2c66affSColin Finck #define IVideoPort_GetVideoLine(p,a) (p)->lpVtbl->GetVideoLine(p,a) 312*c2c66affSColin Finck #define IVideoPort_GetVideoSignalStatus(p,a) (p)->lpVtbl->GetVideoSignalStatus(p,a) 313*c2c66affSColin Finck #define IVideoPort_SetColorControls(p,a) (p)->lpVtbl->SetColorControls(p,a) 314*c2c66affSColin Finck #define IVideoPort_StartVideo(p,a) (p)->lpVtbl->StartVideo(p,a) 315*c2c66affSColin Finck #define IVideoPort_StopVideo(p) (p)->lpVtbl->StopVideo(p) 316*c2c66affSColin Finck #define IVideoPort_UpdateVideo(p,a) (p)->lpVtbl->UpdateVideo(p,a) 317*c2c66affSColin Finck #define IVideoPort_WaitForSync(p,a,b,c) (p)->lpVtbl->WaitForSync(p,a,b,c) 318*c2c66affSColin Finck #else 319*c2c66affSColin Finck #define IVideoPort_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 320*c2c66affSColin Finck #define IVideoPort_AddRef(p) (p)->AddRef() 321*c2c66affSColin Finck #define IVideoPort_Release(p) (p)->Release() 322*c2c66affSColin Finck #define IVideoPort_SetTargetSurface(p,a,b) (p)->SetTargetSurface(a,b) 323*c2c66affSColin Finck #define IVideoPort_Flip(p,a,b) (p)->Flip(a,b) 324*c2c66affSColin Finck #define IVideoPort_GetBandwidthInfo(p,a,b,c,d,e) (p)->GetBandwidthInfo(a,b,c,d,e) 325*c2c66affSColin Finck #define IVideoPort_GetColorControls(p,a) (p)->GetColorControls(a) 326*c2c66affSColin Finck #define IVideoPort_GetInputFormats(p,a,b,c) (p)->GetInputFormats(a,b,c) 327*c2c66affSColin Finck #define IVideoPort_GetOutputFormats(p,a,b,c,d) (p)->GetOutputFormats(a,b,c,d) 328*c2c66affSColin Finck #define IVideoPort_GetFieldPolarity(p,a) (p)->GetFieldPolarity(a) 329*c2c66affSColin Finck #define IVideoPort_GetVideoLine(p,a) (p)->GetVideoLine(a) 330*c2c66affSColin Finck #define IVideoPort_GetVideoSignalStatus(p,a) (p)->GetVideoSignalStatus(a) 331*c2c66affSColin Finck #define IVideoPort_SetColorControls(p,a) (p)->SetColorControls(a) 332*c2c66affSColin Finck #define IVideoPort_StartVideo(p,a) (p)->StartVideo(a) 333*c2c66affSColin Finck #define IVideoPort_StopVideo(p) (p)->StopVideo() 334*c2c66affSColin Finck #define IVideoPort_UpdateVideo(p,a) (p)->UpdateVideo(a) 335*c2c66affSColin Finck #define IVideoPort_WaitForSync(p,a,b,c) (p)->WaitForSync(a,b,c) 336*c2c66affSColin Finck #endif 337*c2c66affSColin Finck #endif 338*c2c66affSColin Finck 339*c2c66affSColin Finck #if defined( _WIN32 ) && !defined( _NO_COM ) 340*c2c66affSColin Finck #undef INTERFACE 341*c2c66affSColin Finck #define INTERFACE IDirectDrawVideoPortNotify 342*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectDrawVideoPortNotify,IUnknown)343*c2c66affSColin Finck DECLARE_INTERFACE_( IDirectDrawVideoPortNotify, IUnknown ) 344*c2c66affSColin Finck { 345*c2c66affSColin Finck STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; 346*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef) (THIS) PURE; 347*c2c66affSColin Finck STDMETHOD_(ULONG,Release) (THIS) PURE; 348*c2c66affSColin Finck STDMETHOD(AcquireNotification)(THIS_ HANDLE *, LPDDVIDEOPORTNOTIFY) PURE; 349*c2c66affSColin Finck STDMETHOD(ReleaseNotification)(THIS_ HANDLE) PURE; 350*c2c66affSColin Finck }; 351*c2c66affSColin Finck 352*c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE) 353*c2c66affSColin Finck #define IVideoPortNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 354*c2c66affSColin Finck #define IVideoPortNotify_AddRef(p) (p)->lpVtbl->AddRef(p) 355*c2c66affSColin Finck #define IVideoPortNotify_Release(p) (p)->lpVtbl->Release(p) 356*c2c66affSColin Finck #define IVideoPortNotify_AcquireNotification(p,a,b) (p)->lpVtbl->AcquireNotification(p,a,b) 357*c2c66affSColin Finck #define IVideoPortNotify_ReleaseNotification(p,a) (p)->lpVtbl->ReleaseNotification(p,a) 358*c2c66affSColin Finck #else 359*c2c66affSColin Finck #define IVideoPortNotify_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 360*c2c66affSColin Finck #define IVideoPortNotify_AddRef(p) (p)->AddRef() 361*c2c66affSColin Finck #define IVideoPortNotify_Release(p) (p)->Release() 362*c2c66affSColin Finck #define IVideoPortNotify_AcquireNotification(p,a,b) (p)->lpVtbl->AcquireNotification(a,b) 363*c2c66affSColin Finck #define IVideoPortNotify_ReleaseNotification(p,a) (p)->lpVtbl->ReleaseNotification(a) 364*c2c66affSColin Finck #endif 365*c2c66affSColin Finck #endif 366*c2c66affSColin Finck 367*c2c66affSColin Finck #ifdef __cplusplus 368*c2c66affSColin Finck } 369*c2c66affSColin Finck #endif 370*c2c66affSColin Finck #endif 371*c2c66affSColin Finck #endif 372