Implement some DirectDraw related COM-Interfaces.
[reactos.git] / reactos / w32api / include / ddk / dvp.h
1
2 /* $Id$
3 *
4 * COPYRIGHT: See COPYING in the top level directory
5 * PROJECT: ReactOS kernel
6 * FILE:
7 * PURPOSE: Directx headers
8 * PROGRAMMER: Magnus Olsen (greatlrd)
9 *
10 */
11
12 #ifndef __DVP_INCLUDED__
13 #define __DVP_INCLUDED__
14
15 DEFINE_GUID( IID_IDDVideoPortContainer, 0x6C142760,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
16 DEFINE_GUID( IID_IDirectDrawVideoPort, 0xB36D93E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
17 DEFINE_GUID( IID_IDirectDrawVideoPortNotify, 0xA655FB94,0x0589,0x4E57,0xB3,0x33,0x56,0x7A,0x89,0x46,0x8C,0x88);
18
19 DEFINE_GUID( DDVPTYPE_E_HREFH_VREFH, 0x54F39980L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
20 DEFINE_GUID( DDVPTYPE_E_HREFH_VREFL, 0x92783220L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
21 DEFINE_GUID( DDVPTYPE_E_HREFL_VREFH, 0xA07A02E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
22 DEFINE_GUID( DDVPTYPE_E_HREFL_VREFL, 0xE09C77E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
23 DEFINE_GUID( DDVPTYPE_CCIR656, 0xFCA326A0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
24 DEFINE_GUID( DDVPTYPE_BROOKTREE, 0x1352A560L,0xDA61,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
25 DEFINE_GUID( DDVPTYPE_PHILIPS, 0x332CF160L,0xDA61,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
26
27
28 typedef struct _DDVIDEOPORTCONNECT
29 {
30 DWORD dwSize;
31 DWORD dwPortWidth;
32 GUID guidTypeID;
33 DWORD dwFlags;
34 ULONG_PTR dwReserved1;
35 } DDVIDEOPORTCONNECT;
36
37 typedef struct _DDVIDEOPORTDESC {
38 DWORD dwSize;
39 DWORD dwFieldWidth;
40 DWORD dwVBIWidth;
41 DWORD dwFieldHeight;
42 DWORD dwMicrosecondsPerField;
43 DWORD dwMaxPixelsPerSecond;
44 DWORD dwVideoPortID;
45 DWORD dwReserved1;
46 DDVIDEOPORTCONNECT VideoPortType;
47 ULONG_PTR dwReserved2;
48 ULONG_PTR dwReserved3;
49 } DDVIDEOPORTDESC;
50
51 typedef struct _DDVIDEOPORTBANDWIDTH
52 {
53 DWORD dwSize;
54 DWORD dwOverlay;
55 DWORD dwColorkey;
56 DWORD dwYInterpolate;
57 DWORD dwYInterpAndColorkey;
58 ULONG_PTR dwReserved1;
59 ULONG_PTR dwReserved2;
60 } DDVIDEOPORTBANDWIDTH;
61
62 typedef struct _DDVIDEOPORTCAPS
63 {
64 DWORD dwSize;
65 DWORD dwFlags;
66 DWORD dwMaxWidth;
67 DWORD dwMaxVBIWidth;
68 DWORD dwMaxHeight;
69 DWORD dwVideoPortID;
70 DWORD dwCaps;
71 DWORD dwFX;
72 DWORD dwNumAutoFlipSurfaces;
73 DWORD dwAlignVideoPortBoundary;
74 DWORD dwAlignVideoPortPrescaleWidth;
75 DWORD dwAlignVideoPortCropBoundary;
76 DWORD dwAlignVideoPortCropWidth;
77 DWORD dwPreshrinkXStep;
78 DWORD dwPreshrinkYStep;
79 DWORD dwNumVBIAutoFlipSurfaces;
80 DWORD dwNumPreferredAutoflip;
81 WORD wNumFilterTapsX;
82 WORD wNumFilterTapsY;
83 } DDVIDEOPORTCAPS;
84
85 typedef struct _DDVIDEOPORTINFO
86 {
87 DWORD dwSize;
88 DWORD dwOriginX;
89 DWORD dwOriginY;
90 DWORD dwVPFlags;
91 RECT rCrop;
92 DWORD dwPrescaleWidth;
93 DWORD dwPrescaleHeight;
94 LPDDPIXELFORMAT lpddpfInputFormat;
95 LPDDPIXELFORMAT lpddpfVBIInputFormat;
96 LPDDPIXELFORMAT lpddpfVBIOutputFormat;
97 DWORD dwVBIHeight;
98 ULONG_PTR dwReserved1;
99 ULONG_PTR dwReserved2;
100 } DDVIDEOPORTINFO;
101
102 typedef struct _DDVIDEOPORTSTATUS
103 {
104 DWORD dwSize;
105 BOOL bInUse;
106 DWORD dwFlags;
107 DWORD dwReserved1;
108 DDVIDEOPORTCONNECT VideoPortType;
109 ULONG_PTR dwReserved2;
110 ULONG_PTR dwReserved3;
111 } DDVIDEOPORTSTATUS;
112
113 typedef struct _DDVIDEOPORTNOTIFY
114 {
115 LARGE_INTEGER ApproximateTimeStamp;
116 LONG lField;
117 UINT dwSurfaceIndex;
118 LONG lDone;
119 } DDVIDEOPORTNOTIFY;
120
121
122 #define DDVPCONNECT_DOUBLECLOCK 0x00000001
123 #define DDVPCONNECT_VACT 0x00000002
124 #define DDVPCONNECT_INVERTPOLARITY 0x00000004
125 #define DDVPCONNECT_DISCARDSVREFDATA 0x00000008
126 #define DDVPCONNECT_HALFLINE 0x00000010
127 #define DDVPCONNECT_INTERLACED 0x00000020
128 #define DDVPCONNECT_SHAREEVEN 0x00000040
129 #define DDVPCONNECT_SHAREODD 0x00000080
130 #define DDVPCAPS_AUTOFLIP 0x00000001
131 #define DDVPCAPS_INTERLACED 0x00000002
132 #define DDVPCAPS_NONINTERLACED 0x00000004
133 #define DDVPCAPS_READBACKFIELD 0x00000008
134 #define DDVPCAPS_READBACKLINE 0x00000010
135 #define DDVPCAPS_SHAREABLE 0x00000020
136 #define DDVPCAPS_SKIPEVENFIELDS 0x00000040
137 #define DDVPCAPS_SKIPODDFIELDS 0x00000080
138 #define DDVPCAPS_SYNCMASTER 0x00000100
139 #define DDVPCAPS_VBISURFACE 0x00000200
140 #define DDVPCAPS_COLORCONTROL 0x00000400
141 #define DDVPCAPS_OVERSAMPLEDVBI 0x00000800
142 #define DDVPCAPS_SYSTEMMEMORY 0x00001000
143 #define DDVPCAPS_VBIANDVIDEOINDEPENDENT 0x00002000
144 #define DDVPCAPS_HARDWAREDEINTERLACE 0x00004000
145 #define DDVPFX_CROPTOPDATA 0x00000001
146 #define DDVPFX_CROPX 0x00000002
147 #define DDVPFX_CROPY 0x00000004
148 #define DDVPFX_INTERLEAVE 0x00000008
149 #define DDVPFX_MIRRORLEFTRIGHT 0x00000010
150 #define DDVPFX_MIRRORUPDOWN 0x00000020
151 #define DDVPFX_PRESHRINKX 0x00000040
152 #define DDVPFX_PRESHRINKY 0x00000080
153 #define DDVPFX_PRESHRINKXB 0x00000100
154 #define DDVPFX_PRESHRINKYB 0x00000200
155 #define DDVPFX_PRESHRINKXS 0x00000400
156 #define DDVPFX_PRESHRINKYS 0x00000800
157 #define DDVPFX_PRESTRETCHX 0x00001000
158 #define DDVPFX_PRESTRETCHY 0x00002000
159 #define DDVPFX_PRESTRETCHXN 0x00004000
160 #define DDVPFX_PRESTRETCHYN 0x00008000
161 #define DDVPFX_VBICONVERT 0x00010000
162 #define DDVPFX_VBINOSCALE 0x00020000
163 #define DDVPFX_IGNOREVBIXCROP 0x00040000
164 #define DDVPFX_VBINOINTERLEAVE 0x00080000
165 #define DDVP_AUTOFLIP 0x00000001
166 #define DDVP_CONVERT 0x00000002
167 #define DDVP_CROP 0x00000004
168 #define DDVP_INTERLEAVE 0x00000008
169 #define DDVP_MIRRORLEFTRIGHT 0x00000010
170 #define DDVP_MIRRORUPDOWN 0x00000020
171 #define DDVP_PRESCALE 0x00000040
172 #define DDVP_SKIPEVENFIELDS 0x00000080
173 #define DDVP_SKIPODDFIELDS 0x00000100
174 #define DDVP_SYNCMASTER 0x00000200
175 #define DDVP_VBICONVERT 0x00000400
176 #define DDVP_VBINOSCALE 0x00000800
177 #define DDVP_OVERRIDEBOBWEAVE 0x00001000
178 #define DDVP_IGNOREVBIXCROP 0x00002000
179 #define DDVP_VBINOINTERLEAVE 0x00004000
180 #define DDVP_HARDWAREDEINTERLACE 0x00008000
181 #define DDVPFORMAT_VIDEO 0x00000001
182 #define DDVPFORMAT_VBI 0x00000002
183 #define DDVPTARGET_VIDEO 0x00000001
184 #define DDVPTARGET_VBI 0x00000002
185 #define DDVPWAIT_BEGIN 0x00000001
186 #define DDVPWAIT_END 0x00000002
187 #define DDVPWAIT_LINE 0x00000003
188 #define DDVPFLIP_VIDEO 0x00000001
189 #define DDVPFLIP_VBI 0x00000002
190 #define DDVPSQ_NOSIGNAL 0x00000001
191 #define DDVPSQ_SIGNALOK 0x00000002
192 #define DDVPB_VIDEOPORT 0x00000001
193 #define DDVPB_OVERLAY 0x00000002
194 #define DDVPB_TYPE 0x00000004
195 #define DDVPBCAPS_SOURCE 0x00000001
196 #define DDVPBCAPS_DESTINATION 0x00000002
197 #define DDVPCREATE_VBIONLY 0x00000001
198 #define DDVPCREATE_VIDEOONLY 0x00000002
199 #define DDVPSTATUS_VBIONLY 0x00000001
200 #define DDVPSTATUS_VIDEOONLY 0x00000002
201
202 typedef struct _DDVIDEOPORTCONNECT *LPDDVIDEOPORTCONNECT;
203 typedef struct _DDVIDEOPORTCAPS *LPDDVIDEOPORTCAPS;
204 typedef struct _DDVIDEOPORTDESC *LPDDVIDEOPORTDESC;
205 typedef struct _DDVIDEOPORTINFO *LPDDVIDEOPORTINFO;
206 typedef struct _DDVIDEOPORTBANDWIDTH *LPDDVIDEOPORTBANDWIDTH;
207 typedef struct _DDVIDEOPORTSTATUS *LPDDVIDEOPORTSTATUS;
208 typedef struct _DDVIDEOPORTNOTIFY *LPDDVIDEOPORTNOTIFY;
209
210 typedef struct IDirectDrawVideoPort* LPDIRECTDRAWVIDEOPORT;
211 typedef struct IDDVideoPortContainer* LPDDVIDEOPORTCONTAINER;
212
213 typedef HRESULT (FAR PASCAL * LPDDENUMVIDEOCALLBACK)(LPDDVIDEOPORTCAPS, LPVOID);
214
215 #if !defined (_NO_COM) && defined (_WIN32)
216
217 #undef INTERFACE
218 #define INTERFACE IDDVideoPortContainer
219 DECLARE_INTERFACE_ (IDDVideoPortContainer, IUnknown)
220 {
221 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
222 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
223 STDMETHOD_(ULONG,Release) (THIS) PURE;
224 STDMETHOD(CreateVideoPort)(THIS_ DWORD, LPDDVIDEOPORTDESC, LPDIRECTDRAWVIDEOPORT*, IUnknown*) PURE;
225 STDMETHOD(EnumVideoPorts) (THIS_ DWORD, LPDDVIDEOPORTCAPS, LPVOID, LPDDENUMVIDEOCALLBACK) PURE;
226 STDMETHOD(GetVideoPortConnectInfo) (THIS_ DWORD, LPDWORD, LPDDVIDEOPORTCONNECT) PURE;
227 STDMETHOD(QueryVideoPortStatus) (THIS_ DWORD, LPDDVIDEOPORTSTATUS) PURE;
228 };
229
230 #undef INTERFACE
231 #define INTERFACE IDirectDrawVideoPort
232 DECLARE_INTERFACE_ (IDirectDrawVideoPort, IUnknown)
233 {
234 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
235 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
236 STDMETHOD_(ULONG,Release) (THIS) PURE;
237 STDMETHOD(Flip) (THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
238 STDMETHOD(GetBandwidthInfo)(THIS_ LPDDPIXELFORMAT, DWORD, DWORD, DWORD, LPDDVIDEOPORTBANDWIDTH) PURE;
239 STDMETHOD(GetColorControls) (THIS_ LPDDCOLORCONTROL) PURE;
240 STDMETHOD(GetInputFormats)(THIS_ LPDWORD, LPDDPIXELFORMAT, DWORD) PURE;
241 STDMETHOD(GetOutputFormats)(THIS_ LPDDPIXELFORMAT, LPDWORD, LPDDPIXELFORMAT, DWORD) PURE;
242 STDMETHOD(GetFieldPolarity) (THIS_ LPBOOL) PURE;
243 STDMETHOD(GetVideoLine) (THIS_ LPDWORD) PURE;
244 STDMETHOD(GetVideoSignalStatus) (THIS_ LPDWORD) PURE;
245 STDMETHOD(SetColorControls) (THIS_ LPDDCOLORCONTROL) PURE;
246 STDMETHOD(SetTargetSurface) (THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
247 STDMETHOD(StartVideo) (THIS_ LPDDVIDEOPORTINFO) PURE;
248 STDMETHOD(StopVideo) (THIS) PURE;
249 STDMETHOD(UpdateVideo) (THIS_ LPDDVIDEOPORTINFO) PURE;
250 STDMETHOD(WaitForSync) (THIS_ DWORD, DWORD, DWORD) PURE;
251 };
252
253 #undef INTERFACE
254 #define INTERFACE IDirectDrawVideoPortNotify
255 DECLARE_INTERFACE_( IDirectDrawVideoPortNotify, IUnknown )
256 {
257 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
258 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
259 STDMETHOD_(ULONG,Release) (THIS) PURE;
260 STDMETHOD(AcquireNotification) (THIS_ HANDLE*, LPDDVIDEOPORTNOTIFY) PURE;
261 STDMETHOD(ReleaseNotification) (THIS_ HANDLE) PURE;
262 };
263
264 #undef INTERFACE
265
266 #endif // !defined (_NO_COM) && defined (_WIN32)
267 #endif // __DVP_INCLUDED__