xref: /reactos/sdk/include/psdk/dvp.h (revision c2c66aff)
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