/[cvs]/api/include/dvp.h
ViewVC logotype

Contents of /api/include/dvp.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (vendor branch)
Sun Jul 1 20:47:59 2001 UTC (22 years, 10 months ago) by bearsoft
Branch: lazy, MAIN
CVS Tags: start, HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
First import

1 /*==========================================================================;
2 *
3 * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
4 *
5 * File: dvp.h
6 * Content: DirectDrawVideoPort include file
7 *
8 ***************************************************************************/
9
10 #ifndef __DVP_INCLUDED__
11 #define __DVP_INCLUDED__
12
13 /*
14 * GUIDS used by DirectDrawVideoPort objects
15 */
16 #if defined( _WIN32 ) && (!defined( _NO_COM ) || defined( DEFINE_GUID ))
17 DEFINE_GUID( IID_IDDVideoPortContainer, 0x6C142760,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
18 DEFINE_GUID( IID_IDirectDrawVideoPort, 0xB36D93E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
19
20 DEFINE_GUID( DDVPTYPE_E_HREFH_VREFH, 0x54F39980L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
21 DEFINE_GUID( DDVPTYPE_E_HREFH_VREFL, 0x92783220L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
22 DEFINE_GUID( DDVPTYPE_E_HREFL_VREFH, 0xA07A02E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
23 DEFINE_GUID( DDVPTYPE_E_HREFL_VREFL, 0xE09C77E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
24 DEFINE_GUID( DDVPTYPE_CCIR656, 0xFCA326A0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
25 DEFINE_GUID( DDVPTYPE_BROOKTREE, 0x1352A560L,0xDA61,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
26 DEFINE_GUID( DDVPTYPE_PHILIPS, 0x332CF160L,0xDA61,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8);
27 #endif
28
29 #ifndef GUID_DEFS_ONLY
30
31 #if defined( _WIN32 ) && !defined( _NO_COM )
32 #define COM_NO_WINDOWS_H
33 #include <objbase.h>
34 #else
35 #define IUnknown void
36 #endif
37
38 /*
39 * These definitions are required to allow polymorphic structure members (i.e. those
40 * that are referred to both as DWORDs and as pointers) to resolve into a type
41 * of correct size to hold the largest of those two types (i.e. pointer) on 64 bit
42 * systems. For 32 bit environments, ULONG_PTR resolves to a DWORD.
43 */
44 #ifndef MAXULONG_PTR
45 #define ULONG_PTR DWORD
46 #endif //MAXULONG_PTR
47
48 #ifdef __cplusplus
49 extern "C" {
50 #endif
51
52 /*============================================================================
53 *
54 * DirectDraw Structures
55 *
56 * Various structures used to invoke DirectDraw.
57 *
58 *==========================================================================*/
59
60 struct IDirectDraw;
61 struct IDirectDrawSurface;
62 struct IDirectDrawPalette;
63 struct IDirectDrawClipper;
64
65 typedef struct IDDVideoPortContainer FAR *LPDDVIDEOPORTCONTAINER;
66 typedef struct IDirectDrawVideoPort FAR *LPDIRECTDRAWVIDEOPORT;
67
68 typedef struct _DDVIDEOPORTCONNECT FAR *LPDDVIDEOPORTCONNECT;
69 typedef struct _DDVIDEOPORTCAPS FAR *LPDDVIDEOPORTCAPS;
70 typedef struct _DDVIDEOPORTDESC FAR *LPDDVIDEOPORTDESC;
71 typedef struct _DDVIDEOPORTINFO FAR *LPDDVIDEOPORTINFO;
72 typedef struct _DDVIDEOPORTBANDWIDTH FAR *LPDDVIDEOPORTBANDWIDTH;
73 typedef struct _DDVIDEOPORTSTATUS FAR *LPDDVIDEOPORTSTATUS;
74
75 typedef struct IDDVideoPortContainerVtbl DDVIDEOPORTCONTAINERCALLBACKS;
76 typedef struct IDirectDrawVideoPortVtbl DIRECTDRAWVIDEOPORTCALLBACKS;
77
78
79 /*
80 * API's
81 */
82 typedef HRESULT (FAR PASCAL * LPDDENUMVIDEOCALLBACK)(LPDDVIDEOPORTCAPS, LPVOID);
83
84
85 /*
86 * INTERACES FOLLOW:
87 * IDirectDrawVideoPort
88 * IVideoPort
89 */
90
91 /*
92 * IDirectDrawVideoPortContainer
93 */
94 #if defined( _WIN32 ) && !defined( _NO_COM )
95 #undef INTERFACE
96 #define INTERFACE IDDVideoPortContainer
97 DECLARE_INTERFACE_( IDDVideoPortContainer, IUnknown )
98 {
99 /*** IUnknown methods ***/
100 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
101 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
102 STDMETHOD_(ULONG,Release) (THIS) PURE;
103 /*** IDirectDrawVideoPort methods ***/
104 STDMETHOD(CreateVideoPort)(THIS_ DWORD, LPDDVIDEOPORTDESC, LPDIRECTDRAWVIDEOPORT FAR *, IUnknown FAR *) PURE;
105 STDMETHOD(EnumVideoPorts)(THIS_ DWORD, LPDDVIDEOPORTCAPS, LPVOID,LPDDENUMVIDEOCALLBACK ) PURE;
106 STDMETHOD(GetVideoPortConnectInfo)(THIS_ DWORD, LPDWORD, LPDDVIDEOPORTCONNECT ) PURE;
107 STDMETHOD(QueryVideoPortStatus)(THIS_ DWORD, LPDDVIDEOPORTSTATUS ) PURE;
108 };
109
110 #if !defined(__cplusplus) || defined(CINTERFACE)
111 #define IVideoPortContainer_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
112 #define IVideoPortContainer_AddRef(p) (p)->lpVtbl->AddRef(p)
113 #define IVideoPortContainer_Release(p) (p)->lpVtbl->Release(p)
114 #define IVideoPortContainer_CreateVideoPort(p, a, b, c, d) (p)->lpVtbl->CreateVideoPort(p, a, b, c, d)
115 #define IVideoPortContainer_EnumVideoPorts(p, a, b, c, d) (p)->lpVtbl->EnumVideoPorts(p, a, b, c, d)
116 #define IVideoPortContainer_GetVideoPortConnectInfo(p, a, b, c) (p)->lpVtbl->GetVideoPortConnectInfo(p, a, b, c)
117 #define IVideoPortContainer_QueryVideoPortStatus(p, a, b) (p)->lpVtbl->QueryVideoPortStatus(p, a, b)
118 #else
119 #define IVideoPortContainer_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
120 #define IVideoPortContainer_AddRef(p) (p)->AddRef()
121 #define IVideoPortContainer_Release(p) (p)->Release()
122 #define IVideoPortContainer_CreateVideoPort(p, a, b, c, d) (p)->CreateVideoPort(a, b, c, d)
123 #define IVideoPortContainer_EnumVideoPorts(p, a, b, c, d) (p)->EnumVideoPorts(a, b, c, d)
124 #define IVideoPortContainer_GetVideoPortConnectInfo(p, a, b, c) (p)->GetVideoPortConnectInfo(a, b, c)
125 #define IVideoPortContainer_QueryVideoPortStatus(p, a, b) (p)->QueryVideoPortStatus(a, b)
126 #endif
127
128 #endif
129
130
131 /*
132 * IDirectDrawVideoPort
133 */
134 #if defined( _WIN32 ) && !defined( _NO_COM )
135 #undef INTERFACE
136 #define INTERFACE IDirectDrawVideoPort
137 DECLARE_INTERFACE_( IDirectDrawVideoPort, IUnknown )
138 {
139 /*** IUnknown methods ***/
140 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
141 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
142 STDMETHOD_(ULONG,Release) (THIS) PURE;
143 /*** IVideoPort methods ***/
144 STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
145 STDMETHOD(GetBandwidthInfo)(THIS_ LPDDPIXELFORMAT, DWORD, DWORD, DWORD, LPDDVIDEOPORTBANDWIDTH) PURE;
146 STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
147 STDMETHOD(GetInputFormats)(THIS_ LPDWORD, LPDDPIXELFORMAT, DWORD) PURE;
148 STDMETHOD(GetOutputFormats)(THIS_ LPDDPIXELFORMAT, LPDWORD, LPDDPIXELFORMAT, DWORD) PURE;
149 STDMETHOD(GetFieldPolarity)(THIS_ LPBOOL) PURE;
150 STDMETHOD(GetVideoLine)(THIS_ LPDWORD) PURE;
151 STDMETHOD(GetVideoSignalStatus)(THIS_ LPDWORD) PURE;
152 STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
153 STDMETHOD(SetTargetSurface)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
154 STDMETHOD(StartVideo)(THIS_ LPDDVIDEOPORTINFO) PURE;
155 STDMETHOD(StopVideo)(THIS) PURE;
156 STDMETHOD(UpdateVideo)(THIS_ LPDDVIDEOPORTINFO) PURE;
157 STDMETHOD(WaitForSync)(THIS_ DWORD, DWORD, DWORD) PURE;
158 };
159
160 #if !defined(__cplusplus) || defined(CINTERFACE)
161 #define IVideoPort_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
162 #define IVideoPort_AddRef(p) (p)->lpVtbl->AddRef(p)
163 #define IVideoPort_Release(p) (p)->lpVtbl->Release(p)
164 #define IVideoPort_SetTargetSurface(p,a,b) (p)->lpVtbl->SetTargetSurface(p,a,b)
165 #define IVideoPort_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
166 #define IVideoPort_GetBandwidthInfo(p,a,b,c,d,e) (p)->lpVtbl->GetBandwidthInfo(p,a,b,c,d,e)
167 #define IVideoPort_GetColorControls(p,a) (p)->lpVtbl->GetColorControls(p,a)
168 #define IVideoPort_GetInputFormats(p,a,b,c) (p)->lpVtbl->GetInputFormats(p,a,b,c)
169 #define IVideoPort_GetOutputFormats(p,a,b,c,d) (p)->lpVtbl->GetOutputFormats(p,a,b,c,d)
170 #define IVideoPort_GetFieldPolarity(p,a) (p)->lpVtbl->GetFieldPolarity(p,a)
171 #define IVideoPort_GetVideoLine(p,a) (p)->lpVtbl->GetVideoLine(p,a)
172 #define IVideoPort_GetVideoSignalStatus(p,a) (p)->lpVtbl->GetVideoSignalStatus(p,a)
173 #define IVideoPort_SetColorControls(p,a) (p)->lpVtbl->SetColorControls(p,a)
174 #define IVideoPort_StartVideo(p,a) (p)->lpVtbl->StartVideo(p,a)
175 #define IVideoPort_StopVideo(p) (p)->lpVtbl->StopVideo(p)
176 #define IVideoPort_UpdateVideo(p,a) (p)->lpVtbl->UpdateVideo(p,a)
177 #define IVideoPort_WaitForSync(p,a,b,c) (p)->lpVtbl->WaitForSync(p,a,b,c)
178 #else
179 #define IVideoPort_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
180 #define IVideoPort_AddRef(p) (p)->AddRef()
181 #define IVideoPort_Release(p) (p)->Release()
182 #define IVideoPort_SetTargetSurface(p,a,b) (p)->SetTargetSurface(a,b)
183 #define IVideoPort_Flip(p,a,b) (p)->Flip(a,b)
184 #define IVideoPort_GetBandwidthInfo(p,a,b,c,d,e) (p)->GetBandwidthInfo(a,b,c,d,e)
185 #define IVideoPort_GetColorControls(p,a) (p)->GetColorControls(a)
186 #define IVideoPort_GetInputFormats(p,a,b,c) (p)->GetInputFormats(a,b,c)
187 #define IVideoPort_GetOutputFormats(p,a,b,c,d) (p)->GetOutputFormats(a,b,c,d)
188 #define IVideoPort_GetFieldPolarity(p,a) (p)->GetFieldPolarity(a)
189 #define IVideoPort_GetVideoLine(p,a) (p)->GetVideoLine(a)
190 #define IVideoPort_GetVideoSignalStatus(p,a) (p)->GetVideoSignalStatus(a)
191 #define IVideoPort_SetColorControls(p,a) (p)->SetColorControls(a)
192 #define IVideoPort_StartVideo(p,a) (p)->StartVideo(a)
193 #define IVideoPort_StopVideo(p) (p)->StopVideo()
194 #define IVideoPort_UpdateVideo(p,a) (p)->UpdateVideo(a)
195 #define IVideoPort_WaitForSync(p,a,b,c) (p)->WaitForSync(a,b,c)
196 #endif
197
198 #endif
199
200
201 /*
202 * DDVIDEOPORTCONNECT
203 */
204 typedef struct _DDVIDEOPORTCONNECT
205 {
206 DWORD dwSize; // size of the DDVIDEOPORTCONNECT structure
207 DWORD dwPortWidth; // Width of the video port
208 GUID guidTypeID; // Description of video port connection
209 DWORD dwFlags; // Connection flags
210 ULONG_PTR dwReserved1; // Reserved, set to zero.
211 } DDVIDEOPORTCONNECT;
212
213
214 /*
215 * DDVIDEOPORTCAPS
216 */
217 typedef struct _DDVIDEOPORTCAPS
218 {
219 DWORD dwSize; // size of the DDVIDEOPORTCAPS structure
220 DWORD dwFlags; // indicates which fields contain data
221 DWORD dwMaxWidth; // max width of the video port field
222 DWORD dwMaxVBIWidth; // max width of the VBI data
223 DWORD dwMaxHeight; // max height of the video port field
224 DWORD dwVideoPortID; // Video port ID (0 - (dwMaxVideoPorts -1))
225 DWORD dwCaps; // Video port capabilities
226 DWORD dwFX; // More video port capabilities
227 DWORD dwNumAutoFlipSurfaces; // Max number of autoflippable surfaces allowed
228 DWORD dwAlignVideoPortBoundary; // Byte restriction of placement within the surface
229 DWORD dwAlignVideoPortPrescaleWidth;// Byte restriction of width after prescaling
230 DWORD dwAlignVideoPortCropBoundary; // Byte restriction of left cropping
231 DWORD dwAlignVideoPortCropWidth; // Byte restriction of cropping width
232 DWORD dwPreshrinkXStep; // Width can be shrunk in steps of 1/x
233 DWORD dwPreshrinkYStep; // Height can be shrunk in steps of 1/x
234 DWORD dwNumVBIAutoFlipSurfaces; // Max number of VBI autoflippable surfaces allowed
235 DWORD dwNumPreferredAutoflip; // Optimal number of autoflippable surfaces for hardware
236 WORD wNumFilterTapsX; // Number of taps the prescaler uses in the X direction (0 - no prescale, 1 - replication, etc.)
237 WORD wNumFilterTapsY; // Number of taps the prescaler uses in the Y direction (0 - no prescale, 1 - replication, etc.)
238 } DDVIDEOPORTCAPS;
239
240 /*
241 * The dwMaxWidth and dwMaxVBIWidth members are valid
242 */
243 #define DDVPD_WIDTH 0x00000001l
244
245 /*
246 * The dwMaxHeight member is valid
247 */
248 #define DDVPD_HEIGHT 0x00000002l
249
250 /*
251 * The dwVideoPortID member is valid
252 */
253 #define DDVPD_ID 0x00000004l
254
255 /*
256 * The dwCaps member is valid
257 */
258 #define DDVPD_CAPS 0x00000008l
259
260 /*
261 * The dwFX member is valid
262 */
263 #define DDVPD_FX 0x00000010l
264
265 /*
266 * The dwNumAutoFlipSurfaces member is valid
267 */
268 #define DDVPD_AUTOFLIP 0x00000020l
269
270 /*
271 * All of the alignment members are valid
272 */
273 #define DDVPD_ALIGN 0x00000040l
274
275 /*
276 * The dwNumPreferredAutoflip member is valid
277 */
278 #define DDVPD_PREFERREDAUTOFLIP 0x00000080l
279
280 /*
281 * The wNumFilterTapsX and wNumFilterTapsY fields are valid
282 */
283 #define DDVPD_FILTERQUALITY 0x00000100l
284
285 /*
286 * DDVIDEOPORTDESC
287 */
288 typedef struct _DDVIDEOPORTDESC
289 {
290 DWORD dwSize; // size of the DDVIDEOPORTDESC structure
291 DWORD dwFieldWidth; // width of the video port field
292 DWORD dwVBIWidth; // width of the VBI data
293 DWORD dwFieldHeight; // height of the video port field
294 DWORD dwMicrosecondsPerField; // Microseconds per video field
295 DWORD dwMaxPixelsPerSecond; // Maximum pixel rate per second
296 DWORD dwVideoPortID; // Video port ID (0 - (dwMaxVideoPorts -1))
297 DWORD dwReserved1; // Reserved for future use - set to zero (struct padding)
298 DDVIDEOPORTCONNECT VideoPortType; // Description of video port connection
299 ULONG_PTR dwReserved2; // Reserved for future use - set to zero
300 ULONG_PTR dwReserved3; // Reserved for future use - set to zero
301 } DDVIDEOPORTDESC;
302
303
304 /*
305 * DDVIDEOPORTINFO
306 */
307 typedef struct _DDVIDEOPORTINFO
308 {
309 DWORD dwSize; // Size of the structure
310 DWORD dwOriginX; // Placement of the video data within the surface.
311 DWORD dwOriginY; // Placement of the video data within the surface.
312 DWORD dwVPFlags; // Video port options
313 RECT rCrop; // Cropping rectangle (optional).
314 DWORD dwPrescaleWidth; // Determines pre-scaling/zooming in the X direction (optional).
315 DWORD dwPrescaleHeight; // Determines pre-scaling/zooming in the Y direction (optional).
316 LPDDPIXELFORMAT lpddpfInputFormat; // Video format written to the video port
317 LPDDPIXELFORMAT lpddpfVBIInputFormat; // Input format of the VBI data
318 LPDDPIXELFORMAT lpddpfVBIOutputFormat;// Output format of the data
319 DWORD dwVBIHeight; // Specifies the number of lines of data within the vertical blanking interval.
320 ULONG_PTR dwReserved1; // Reserved for future use - set to zero
321 ULONG_PTR dwReserved2; // Reserved for future use - set to zero
322 } DDVIDEOPORTINFO;
323
324
325 /*
326 * DDVIDEOPORTBANDWIDTH
327 */
328 typedef struct _DDVIDEOPORTBANDWIDTH
329 {
330 DWORD dwSize; // Size of the structure
331 DWORD dwCaps;
332 DWORD dwOverlay; // Zoom factor at which overlay is supported
333 DWORD dwColorkey; // Zoom factor at which overlay w/ colorkey is supported
334 DWORD dwYInterpolate; // Zoom factor at which overlay w/ Y interpolation is supported
335 DWORD dwYInterpAndColorkey; // Zoom factor at which ovelray w/ Y interpolation and colorkeying is supported
336 ULONG_PTR dwReserved1; // Reserved for future use - set to zero
337 ULONG_PTR dwReserved2; // Reserved for future use - set to zero
338 } DDVIDEOPORTBANDWIDTH;
339
340
341 /*
342 * DDVIDEOPORTSTATUS
343 */
344 typedef struct _DDVIDEOPORTSTATUS
345 {
346 DWORD dwSize; // Size of the structure
347 BOOL bInUse; // TRUE if video port is currently being used
348 DWORD dwFlags; // Currently not used
349 DWORD dwReserved1; // Reserved for future use
350 DDVIDEOPORTCONNECT VideoPortType; // Information about the connection
351 ULONG_PTR dwReserved2; // Reserved for future use
352 ULONG_PTR dwReserved3; // Reserved for future use
353 } DDVIDEOPORTSTATUS;
354
355 /*============================================================================
356 *
357 * Video Port Flags
358 *
359 * All flags are bit flags.
360 *
361 *==========================================================================*/
362
363 /****************************************************************************
364 *
365 * VIDEOPORT DDVIDEOPORTCONNECT FLAGS
366 *
367 ****************************************************************************/
368
369 /*
370 * When this is set by the driver and passed to the client, this
371 * indicates that the video port is capable of double clocking the data.
372 * When this is set by the client, this indicates that the video port
373 * should enable double clocking. This flag is only valid with external
374 * syncs.
375 */
376 #define DDVPCONNECT_DOUBLECLOCK 0x00000001l
377
378 /*
379 * When this is set by the driver and passed to the client, this
380 * indicates that the video port is capable of using an external VACT
381 * signal. When this is set by the client, this indicates that the
382 * video port should use the external VACT signal.
383 */
384 #define DDVPCONNECT_VACT 0x00000002l
385
386 /*
387 * When this is set by the driver and passed to the client, this
388 * indicates that the video port is capable of treating even fields
389 * like odd fields and visa versa. When this is set by the client,
390 * this indicates that the video port should treat even fields like odd
391 * fields.
392 */
393 #define DDVPCONNECT_INVERTPOLARITY 0x00000004l
394
395 /*
396 * Indicates that any data written to the video port during the VREF
397 * period will not be written into the frame buffer. This flag is read only.
398 */
399 #define DDVPCONNECT_DISCARDSVREFDATA 0x00000008l
400
401 /*
402 * When this is set be the driver and passed to the client, this
403 * indicates that the device will write half lines into the frame buffer
404 * if half lines are provided by the decoder. If this is set by the client,
405 * this indicates that the decoder will be supplying half lines.
406 */
407 #define DDVPCONNECT_HALFLINE 0x00000010l
408
409 /*
410 * Indicates that the signal is interlaced. This flag is only
411 * set by the client.
412 */
413 #define DDVPCONNECT_INTERLACED 0x00000020l
414
415 /*
416 * Indicates that video port is shareable and that this video port
417 * will use the even fields. This flag is only set by the client.
418 */
419 #define DDVPCONNECT_SHAREEVEN 0x00000040l
420
421 /*
422 * Indicates that video port is shareable and that this video port
423 * will use the odd fields. This flag is only set by the client.
424 */
425 #define DDVPCONNECT_SHAREODD 0x00000080l
426
427 /****************************************************************************
428 *
429 * VIDEOPORT DDVIDEOPORTDESC CAPS
430 *
431 ****************************************************************************/
432
433 /*
434 * Flip can be performed automatically to avoid tearing.
435 */
436 #define DDVPCAPS_AUTOFLIP 0x00000001l
437
438 /*
439 * Supports interlaced video
440 */
441 #define DDVPCAPS_INTERLACED 0x00000002l
442
443 /*
444 * Supports non-interlaced video
445 */
446 #define DDVPCAPS_NONINTERLACED 0x00000004l
447
448 /*
449 * Indicates that the device can return whether the current field
450 * of an interlaced signal is even or odd.
451 */
452 #define DDVPCAPS_READBACKFIELD 0x00000008l
453
454 /*
455 * Indicates that the device can return the current line of video
456 * being written into the frame buffer.
457 */
458 #define DDVPCAPS_READBACKLINE 0x00000010l
459
460 /*
461 * Allows two gen-locked video streams to share a single video port,
462 * where one stream uses the even fields and the other uses the odd
463 * fields. Separate parameters (including address, scaling,
464 * cropping, etc.) are maintained for both fields.)
465 */
466 #define DDVPCAPS_SHAREABLE 0x00000020l
467
468 /*
469 * Even fields of video can be automatically discarded.
470 */
471 #define DDVPCAPS_SKIPEVENFIELDS 0x00000040l
472
473 /*
474 * Odd fields of video can be automatically discarded.
475 */
476 #define DDVPCAPS_SKIPODDFIELDS 0x00000080l
477
478 /*
479 * Indicates that the device is capable of driving the graphics
480 * VSYNC with the video port VSYNC.
481 */
482 #define DDVPCAPS_SYNCMASTER 0x00000100l
483
484 /*
485 * Indicates that data within the vertical blanking interval can
486 * be written to a different surface.
487 */
488 #define DDVPCAPS_VBISURFACE 0x00000200l
489
490 /*
491 * Indicates that the video port can perform color operations
492 * on the incoming data before it is written to the frame buffer.
493 */
494 #define DDVPCAPS_COLORCONTROL 0x00000400l
495
496 /*
497 * Indicates that the video port can accept VBI data in a different
498 * width or format than the regular video data.
499 */
500 #define DDVPCAPS_OVERSAMPLEDVBI 0x00000800l
501
502 /*
503 * Indicates that the video port can write data directly to system memory
504 */
505 #define DDVPCAPS_SYSTEMMEMORY 0x00001000l
506
507 /*
508 * Indicates that the VBI and video portions of the video stream can
509 * be controlled by an independent processes.
510 */
511 #define DDVPCAPS_VBIANDVIDEOINDEPENDENT 0x00002000l
512
513 /*
514 * Indicates that the video port contains high quality hardware
515 * de-interlacing hardware that should be used instead of the
516 * bob/weave algorithms.
517 */
518 #define DDVPCAPS_HARDWAREDEINTERLACE 0x00004000l
519
520
521 /****************************************************************************
522 *
523 * VIDEOPORT DDVIDEOPORTDESC FX
524 *
525 ****************************************************************************/
526
527 /*
528 * Limited cropping is available to crop out the vertical interval data.
529 */
530 #define DDVPFX_CROPTOPDATA 0x00000001l
531
532 /*
533 * Incoming data can be cropped in the X direction before it is written
534 * to the surface.
535 */
536 #define DDVPFX_CROPX 0x00000002l
537
538 /*
539 * Incoming data can be cropped in the Y direction before it is written
540 * to the surface.
541 */
542 #define DDVPFX_CROPY 0x00000004l
543
544 /*
545 * Supports interleaving interlaced fields in memory.
546 */
547 #define DDVPFX_INTERLEAVE 0x00000008l
548
549 /*
550 * Supports mirroring left to right as the video data is written
551 * into the frame buffer.
552 */
553 #define DDVPFX_MIRRORLEFTRIGHT 0x00000010l
554
555 /*
556 * Supports mirroring top to bottom as the video data is written
557 * into the frame buffer.
558 */
559 #define DDVPFX_MIRRORUPDOWN 0x00000020l
560
561 /*
562 * Data can be arbitrarily shrunk in the X direction before it
563 * is written to the surface.
564 */
565 #define DDVPFX_PRESHRINKX 0x00000040l
566
567 /*
568 * Data can be arbitrarily shrunk in the Y direction before it
569 * is written to the surface.
570 */
571 #define DDVPFX_PRESHRINKY 0x00000080l
572
573 /*
574 * Data can be binary shrunk (1/2, 1/4, 1/8, etc.) in the X
575 * direction before it is written to the surface.
576 */
577 #define DDVPFX_PRESHRINKXB 0x00000100l
578
579 /*
580 * Data can be binary shrunk (1/2, 1/4, 1/8, etc.) in the Y
581 * direction before it is written to the surface.
582 */
583 #define DDVPFX_PRESHRINKYB 0x00000200l
584
585 /*
586 * Data can be shrunk in increments of 1/x in the X direction
587 * (where X is specified in the DDVIDEOPORTCAPS.dwPreshrinkXStep)
588 * before it is written to the surface.
589 */
590 #define DDVPFX_PRESHRINKXS 0x00000400l
591
592 /*
593 * Data can be shrunk in increments of 1/x in the Y direction
594 * (where X is specified in the DDVIDEOPORTCAPS.dwPreshrinkYStep)
595 * before it is written to the surface.
596 */
597 #define DDVPFX_PRESHRINKYS 0x00000800l
598
599 /*
600 * Data can be arbitrarily stretched in the X direction before
601 * it is written to the surface.
602 */
603 #define DDVPFX_PRESTRETCHX 0x00001000l
604
605 /*
606 * Data can be arbitrarily stretched in the Y direction before
607 * it is written to the surface.
608 */
609 #define DDVPFX_PRESTRETCHY 0x00002000l
610
611 /*
612 * Data can be integer stretched in the X direction before it is
613 * written to the surface.
614 */
615 #define DDVPFX_PRESTRETCHXN 0x00004000l
616
617 /*
618 * Data can be integer stretched in the Y direction before it is
619 * written to the surface.
620 */
621 #define DDVPFX_PRESTRETCHYN 0x00008000l
622
623 /*
624 * Indicates that data within the vertical blanking interval can
625 * be converted independently of the remaining video data.
626 */
627 #define DDVPFX_VBICONVERT 0x00010000l
628
629 /*
630 * Indicates that scaling can be disabled for data within the
631 * vertical blanking interval.
632 */
633 #define DDVPFX_VBINOSCALE 0x00020000l
634
635 /*
636 * Indicates that the video data can ignore the left and right
637 * cropping coordinates when cropping oversampled VBI data.
638 */
639 #define DDVPFX_IGNOREVBIXCROP 0x00040000l
640
641 /*
642 * Indicates that interleaving can be disabled for data within the
643 * vertical blanking interval.
644 */
645 #define DDVPFX_VBINOINTERLEAVE 0x00080000l
646
647
648 /****************************************************************************
649 *
650 * VIDEOPORT DDVIDEOPORTINFO FLAGS
651 *
652 ****************************************************************************/
653
654 /*
655 * Perform automatic flipping. Auto-flipping is performed between
656 * the overlay surface that was attached to the video port using
657 * IDirectDrawVideoPort::AttachSurface and the overlay surfaces that
658 * are attached to the surface via the IDirectDrawSurface::AttachSurface
659 * method. The flip order is the order in which the overlay surfaces
660 * were. attached.
661 */
662 #define DDVP_AUTOFLIP 0x00000001l
663
664 /*
665 * Perform conversion using the ddpfOutputFormat information.
666 */
667 #define DDVP_CONVERT 0x00000002l
668
669 /*
670 * Perform cropping using the specified rectangle.
671 */
672 #define DDVP_CROP 0x00000004l
673
674 /*
675 * Indicates that interlaced fields should be interleaved in memory.
676 */
677 #define DDVP_INTERLEAVE 0x00000008l
678
679 /*
680 * Indicates that the data should be mirrored left to right as it's
681 * written into the frame buffer.
682 */
683 #define DDVP_MIRRORLEFTRIGHT 0x00000010l
684
685 /*
686 * Indicates that the data should be mirrored top to bottom as it's
687 * written into the frame buffer.
688 */
689 #define DDVP_MIRRORUPDOWN 0x00000020l
690
691 /*
692 * Perform pre-scaling/zooming based on the pre-scale parameters.
693 */
694 #define DDVP_PRESCALE 0x00000040l
695
696 /*
697 * Ignore input of even fields.
698 */
699 #define DDVP_SKIPEVENFIELDS 0x00000080l
700
701 /*
702 * Ignore input of odd fields.
703 */
704 #define DDVP_SKIPODDFIELDS 0x00000100l
705
706 /*
707 * Drive the graphics VSYNCs using the video port VYSNCs.
708 */
709 #define DDVP_SYNCMASTER 0x00000200l
710
711 /*
712 * The ddpfVBIOutputFormatFormat member contains data that should be used
713 * to convert the data within the vertical blanking interval.
714 */
715 #define DDVP_VBICONVERT 0x00000400l
716
717 /*
718 * Indicates that data within the vertical blanking interval
719 * should not be scaled.
720 */
721 #define DDVP_VBINOSCALE 0x00000800l
722
723 /*
724 * Indicates that these bob/weave decisions should not be
725 * overriden by other interfaces.
726 */
727 #define DDVP_OVERRIDEBOBWEAVE 0x00001000l
728
729 /*
730 * Indicates that the video data should ignore the left and right
731 * cropping coordinates when cropping the VBI data.
732 */
733 #define DDVP_IGNOREVBIXCROP 0x00002000l
734
735 /*
736 * Indicates that interleaving can be disabled for data within the
737 * vertical blanking interval.
738 */
739 #define DDVP_VBINOINTERLEAVE 0x00004000l
740
741 /*
742 * Indicates that the video port should use the hardware
743 * de-interlacing hardware.
744 */
745 #define DDVP_HARDWAREDEINTERLACE 0x00008000l
746
747 /****************************************************************************
748 *
749 * DIRIRECTDRAWVIDEOPORT GETINPUTFORMAT/GETOUTPUTFORMAT FLAGS
750 *
751 ****************************************************************************/
752
753 /*
754 * Return formats for the video data
755 */
756 #define DDVPFORMAT_VIDEO 0x00000001l
757
758 /*
759 * Return formats for the VBI data
760 */
761 #define DDVPFORMAT_VBI 0x00000002l
762
763 /****************************************************************************
764 *
765 * DIRIRECTDRAWVIDEOPORT SETTARGETSURFACE FLAGS
766 *
767 ****************************************************************************/
768
769 /*
770 * Surface should receive video data (and VBI data if a surface
771 * is not explicitly attached for that purpose)
772 */
773 #define DDVPTARGET_VIDEO 0x00000001l
774
775 /*
776 * Surface should receive VBI data
777 */
778 #define DDVPTARGET_VBI 0x00000002l
779
780
781 /****************************************************************************
782 *
783 * DIRIRECTDRAWVIDEOPORT WAITFORSYNC FLAGS
784 *
785 ****************************************************************************/
786
787 /*
788 * Waits until the beginning of the next VSYNC
789 */
790 #define DDVPWAIT_BEGIN 0x00000001l
791
792 /*
793 * Waits until the end of the next/current VSYNC
794 */
795 #define DDVPWAIT_END 0x00000002l
796
797 /*
798 * Waits until the beginning of the specified line
799 */
800 #define DDVPWAIT_LINE 0x00000003l
801
802 /****************************************************************************
803 *
804 * DIRECTDRAWVIDEOPORT FLIP FLAGS
805 *
806 ****************************************************************************/
807
808 /*
809 * Flips the normal video surface
810 */
811 #define DDVPFLIP_VIDEO 0x00000001l
812
813 /*
814 * Flips the VBI surface
815 */
816 #define DDVPFLIP_VBI 0x00000002l
817
818 /****************************************************************************
819 *
820 * DIRIRECTDRAWVIDEOPORT GETVIDEOSIGNALSTATUS VALUES
821 *
822 ****************************************************************************/
823
824 /*
825 * No video signal is present at the video port
826 */
827 #define DDVPSQ_NOSIGNAL 0x00000001l
828
829 /*
830 * A valid video signal is present at the video port
831 */
832 #define DDVPSQ_SIGNALOK 0x00000002l
833
834 /****************************************************************************
835 *
836 * VIDEOPORTBANDWIDTH Flags
837 *
838 ****************************************************************************/
839
840 /*
841 * The specified height/width refer to the size of the video port data
842 * written into memory, after prescaling has occured.
843 */
844 #define DDVPB_VIDEOPORT 0x00000001l
845
846 /*
847 * The specified height/width refer to the source size of the overlay.
848 */
849 #define DDVPB_OVERLAY 0x00000002l
850
851 /*
852 * This is a query for the device to return which caps this device requires.
853 */
854 #define DDVPB_TYPE 0x00000004l
855
856 /****************************************************************************
857 *
858 * VIDEOPORTBANDWIDTH Caps
859 *
860 ****************************************************************************/
861
862 /*
863 * The bandwidth for this device is dependant on the overlay source size.
864 */
865 #define DDVPBCAPS_SOURCE 0x00000001l
866
867 /*
868 * The bandwidth for this device is dependant on the overlay destination
869 * size.
870 */
871 #define DDVPBCAPS_DESTINATION 0x00000002l
872
873 /****************************************************************************
874 *
875 * DDVIDEOPORTCONTAINER CreateVideoPort flags
876 *
877 ****************************************************************************/
878
879 /*
880 * The process only wants to control the VBI portion of the video stream.
881 */
882 #define DDVPCREATE_VBIONLY 0x00000001l
883
884 /*
885 * The process only wants to control the non-VBI (video) portion of
886 * the video stream.
887 */
888 #define DDVPCREATE_VIDEOONLY 0x00000002l
889
890 /****************************************************************************
891 *
892 * DDVIDEOPORTSTATUS flags
893 *
894 ****************************************************************************/
895
896 /*
897 * The video port interface is only controlling the VBI portion of the
898 * video stream
899 */
900 #define DDVPSTATUS_VBIONLY 0x00000001l
901
902 /*
903 * The video port interface is only controlling the video portion of the
904 * video stream
905 */
906 #define DDVPSTATUS_VIDEOONLY 0x00000002l
907
908
909 #ifdef __cplusplus
910 };
911 #endif
912
913 #endif // GUID_DEFS_ONLY
914
915 #endif
916

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26