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

Annotation of /api/include/dvp.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide 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 bearsoft 1.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