4 #pragma GCC system_header
14 #define AMDDS_NONE 0x0000
15 #define AMDDS_DCIPS 0x0001
16 #define AMDDS_PS 0x0002
17 #define AMDDS_RGBOVR 0x0004
18 #define AMDDS_YUVOVR 0x0008
19 #define AMDDS_RGBOFF 0x0010
20 #define AMDDS_YUVOFF 0x0020
21 #define AMDDS_RGBFLP 0x0040
22 #define AMDDS_YUVFLP 0x0080
23 #define AMDDS_ ALL 0x00FF
24 #define AMDDS_DEFAULT 0x00FF
25 #define AMDDS_YUV (AMDDS_YUVOFF|AMDDS_YUVOVR|AMDDS_YUVFLP)
26 #define AMDDS_RGB (AMDDS_RGBOFF|AMDDS_RGBOVR|AMDDS_RGBFLP)
27 #define AMDDS_PRIMARY (AMDDS_DCIPS|AMDDS_PS)
28 #define BIT_MASKS_MATCH(pbmi1,pbmi2) ((pbmi1)->dwBitMasks[0] == (pbmi2)->dwBitMasks[0] && (pbmi1)->dwBitMasks[1] == (pbmi2)->dwBitMasks[1] && (pbmi1)->dwBitMasks[2] == (pbmi2)->dwBitMasks[2])
29 #define PALETTISED(pbmi) ((pbmi)->bmiHeader.biBitCount <= 8)
30 #define PALETTE_ENTRIES(pbmi) (1 << (pbmi)->bmiHeader.biBitCount)
31 #define RESET_MASKS(pbmi) (ZeroMemory((PVOID)(pbmi)->dwBitFields,3*sizeof(DWORD)))
32 #define RESET_PALETTE(pbmi) (ZeroMemory((PVOID)(pbmi)->bmiColors,256*sizeof(RGBQUAD)));
33 #define SIZE_EGA_PALETTE (16*sizeof(RGBQUAD))
34 #define SIZE_MASKS (3*sizeof(DWORD))
35 #define SIZE_PALETTE (256*sizeof(RGBQUAD))
37 AM_PROPERTY_FRAMESTEP_STEP
= 1,
38 AM_PROPERTY_FRAMESTEP_CANCEL
= 2,
39 AM_PROPERTY_FRAMESTEP_CANSTEP
= 3,
40 AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE
= 4
41 } AM_PROPERTY_FRAMESTEP
;
42 typedef struct tag_TRUECOLORINFO
{
44 RGBQUAD bmiColors
[256];
46 typedef struct tagVIDEOINFOHEADER
{
51 REFERENCE_TIME AvgTimePerFrame
;
52 BITMAPINFOHEADER bmiHeader
;
54 typedef struct tagVIDEOINFO
{
59 REFERENCE_TIME AvgTimePerFrame
;
60 BITMAPINFOHEADER bmiHeader
;
62 RGBQUAD bmiColors
[256];
64 TRUECOLORINFO TrueColorInfo
;
67 typedef struct tagMPEG1VIDEOINFO
{
69 DWORD dwStartTimeCode
;
70 DWORD cbSequenceHeader
;
71 BYTE bSequenceHeader
[1];
73 typedef struct tagAnalogVideoInfo
{
78 REFERENCE_TIME AvgTimePerFrame
;
80 typedef struct _AM_FRAMESTEP_STEP
{
83 #define INTERFACE IDirectDrawVideo
84 DECLARE_INTERFACE_(IDirectDrawVideo
, IUnknown
)
86 STDMETHOD(QueryInterface
)(THIS_ REFIID
,LPVOID
*) PURE
;
87 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
88 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
89 STDMETHOD(CanUseOverlayStretch
)(THIS_
long*) PURE
;
90 STDMETHOD(CanUseScanLine
)(THIS_
long*) PURE
;
91 STDMETHOD(GetCaps
)(THIS_ DDCAPS
*) PURE
;
92 STDMETHOD(GetDirectDraw
)(THIS_ LPDIRECTDRAW
*) PURE
;
93 STDMETHOD(GetEmulatedCaps
)(THIS_ DDCAPS
*) PURE
;
94 STDMETHOD(GetFourCCCodes
)(THIS_ DWORD
*,DWORD
*) PURE
;
95 STDMETHOD(GetSurfaceDesc
)(THIS_ DDSURFACEDESC
*) PURE
;
96 STDMETHOD(GetSurfaceType
)(THIS_ DWORD
*) PURE
;
97 STDMETHOD(GetSwitches
)(THIS_ DWORD
*) PURE
;
98 STDMETHOD(SetDefault
)(THIS
) PURE
;
99 STDMETHOD(SetDirectDraw
)(THIS_ LPDIRECTDRAW
) PURE
;
100 STDMETHOD(SetSwitches
)(THIS_ DWORD
) PURE
;
101 STDMETHOD(UseOverlayStretch
)(THIS_
long) PURE
;
102 STDMETHOD(UseScanLine
)(THIS_
long) PURE
;
103 STDMETHOD(UseWhenFullScreen
)(THIS_
long) PURE
;
104 STDMETHOD(WillUseFullScreen
)(THIS_
long*) PURE
;
107 #define INTERFACE IQualProp
108 DECLARE_INTERFACE_(IQualProp
, IUnknown
)
110 STDMETHOD(QueryInterface
)(THIS_ REFIID
,LPVOID
*) PURE
;
111 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
112 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
113 STDMETHOD(get_AvgFrameRate
)(THIS_
int*) PURE
;
114 STDMETHOD(get_AvgSyncOffset
)(THIS_
int*) PURE
;
115 STDMETHOD(get_DevSyncOffset
)(THIS_
int*) PURE
;
116 STDMETHOD(get_FramesDrawn
)(THIS_
int*) PURE
;
117 STDMETHOD(get_FramesDroppedInRenderer
)(THIS_
int*) PURE
;
118 STDMETHOD(get_Jitter
)(THIS_
int*) PURE
;
121 #define INTERFACE IFullScreenVideo
122 DECLARE_INTERFACE_(IFullScreenVideo
, IUnknown
)
124 STDMETHOD(QueryInterface
)(THIS_ REFIID
,LPVOID
*) PURE
;
125 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
126 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
127 STDMETHOD(CountModes
)(THIS_
long*) PURE
;
128 STDMETHOD(GetCaption
)(THIS_ BSTR
*) PURE
;
129 STDMETHOD(GetClipFactor
)(THIS_
long*) PURE
;
130 STDMETHOD(GetCurrentMode
)(THIS_
long*) PURE
;
131 STDMETHOD(GetMessageDrain
)(THIS_ HWND
*) PURE
;
132 STDMETHOD(GetModeInfo
)(THIS_
long,long*,long*,long*) PURE
;
133 STDMETHOD(GetMonitor
)(THIS_
long*) PURE
;
134 STDMETHOD(HideOnDeactivate
)(THIS_
long) PURE
;
135 STDMETHOD(IsHideOnDeactivate
)(THIS
) PURE
;
136 STDMETHOD(IsModeAvailable
)(THIS_
long) PURE
;
137 STDMETHOD(IsModeEnabled
)(THIS_
long) PURE
;
138 STDMETHOD(SetCaption
)(THIS_ BSTR
) PURE
;
139 STDMETHOD(SetClipFactor
)(THIS_
long) PURE
;
140 STDMETHOD(SetDefault
)(THIS
) PURE
;
141 STDMETHOD(SetEnabled
)(THIS_
long,long) PURE
;
142 STDMETHOD(SetMessageDrain
)(THIS_ HWND
) PURE
;
143 STDMETHOD(SetMonitor
)(THIS_
long) PURE
;
146 #define INTERFACE IFullScreenVideoEx
147 DECLARE_INTERFACE_(IFullScreenVideoEx
, IFullScreenVideo
)
149 STDMETHOD(QueryInterface
)(THIS_ REFIID
, LPVOID
*) PURE
;
150 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
151 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
152 STDMETHOD(CountModes
)(THIS_
long*) PURE
;
153 STDMETHOD(GetAcceleratorTable
)(THIS_ HWND
*,HACCEL
*) PURE
;
154 STDMETHOD(GetCaption
)(THIS_ BSTR
*) PURE
;
155 STDMETHOD(GetClipFactor
)(THIS_
long*) PURE
;
156 STDMETHOD(GetCurrentMode
)(THIS_
long*) PURE
;
157 STDMETHOD(GetMessageDrain
)(THIS_ HWND
*) PURE
;
158 STDMETHOD(GetModeInfo
)(THIS_
long,long*,long*,long*) PURE
;
159 STDMETHOD(GetMonitor
)(THIS_
long*) PURE
;
160 STDMETHOD(HideOnDeactivate
)(THIS_
long) PURE
;
161 STDMETHOD(IsHideOnDeactivate
)(THIS
) PURE
;
162 STDMETHOD(IsKeepPixelAspectRatio
)(THIS_
long*) PURE
;
163 STDMETHOD(IsModeAvailable
)(THIS_
long) PURE
;
164 STDMETHOD(IsModeEnabled
)(THIS_
long) PURE
;
165 STDMETHOD(KeepPixelAspectRatio
)(THIS_
long) PURE
;
166 STDMETHOD(SetAcceleratorTable
)(THIS_ HWND
,HACCEL
) PURE
;
167 STDMETHOD(SetCaption
)(THIS_ BSTR
) PURE
;
168 STDMETHOD(SetClipFactor
)(THIS_
long) PURE
;
169 STDMETHOD(SetDefault
)(THIS
) PURE
;
170 STDMETHOD(SetEnabled
)(THIS_
long,long) PURE
;
171 STDMETHOD(SetMessageDrain
)(THIS_ HWND
) PURE
;
172 STDMETHOD(SetMonitor
)(THIS_
long) PURE
;