[ACPI]
[reactos.git] / reactos / include / dxsdk / amvideo.h
1 /*
2 * amvideo.h
3 *
4 * DirectX header
5 *
6 * Copyright Magnus Olsen (magnus@greatlord.com)
7 */
8
9 #ifndef __AMVIDEO__
10 #define __AMVIDEO__
11
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15
16 #include <ddraw.h>
17
18 #define AMDDS_NONE 0x00
19 #define AMDDS_DCIPS 0x01
20 #define AMDDS_PS 0x02
21 #define AMDDS_RGBOVR 0x04
22 #define AMDDS_YUVOVR 0x08
23 #define AMDDS_RGBOFF 0x10
24 #define AMDDS_YUVOFF 0x20
25 #define AMDDS_RGBFLP 0x40
26 #define AMDDS_YUVFLP 0x80
27 #define AMDDS_ ALL 0xFF
28 #define AMDDS_DEFAULT AMDDS_ALL
29 #define AMDDS_YUV (AMDDS_YUVOFF | AMDDS_YUVOVR | AMDDS_YUVFLP)
30 #define AMDDS_RGB (AMDDS_RGBOFF | AMDDS_RGBOVR | AMDDS_RGBFLP)
31 #define AMDDS_PRIMARY (AMDDS_DCIPS | AMDDS_PS)
32 #define iPALETTE_COLORS 256
33 #define iEGA_COLORS 16
34 #define iMASK_COLORS 3
35 #define iTRUECOLOR 16
36 #define iRED 0
37 #define iGREEN 1
38 #define iBLUE 2
39 #define iPALETTE 8
40 #define iMAXBITS 8
41
42 typedef struct tag_TRUECOLORINFO
43 {
44 DWORD dwBitMasks[iMASK_COLORS];
45 RGBQUAD bmiColors[iPALETTE_COLORS];
46 } TRUECOLORINFO;
47
48
49 typedef struct tagVIDEOINFOHEADER
50 {
51 RECT rcSource;
52 RECT rcTarget;
53 DWORD dwBitRate;
54 DWORD dwBitErrorRate;
55 REFERENCE_TIME AvgTimePerFrame;
56 BITMAPINFOHEADER bmiHeader;
57 } VIDEOINFOHEADER;
58
59
60 typedef struct tagVIDEOINFO
61 {
62 RECT rcSource;
63 RECT rcTarget;
64 DWORD dwBitRate;
65 DWORD dwBitErrorRate;
66 REFERENCE_TIME AvgTimePerFrame;
67 BITMAPINFOHEADER bmiHeader;
68 union
69 {
70 RGBQUAD bmiColors[iPALETTE_COLORS];
71 DWORD dwBitMasks[iMASK_COLORS];
72 TRUECOLORINFO TrueColorInfo;
73 };
74 } VIDEOINFO;
75
76 typedef struct tagMPEG1VIDEOINFO
77 {
78 VIDEOINFOHEADER hdr;
79 DWORD dwStartTimeCode;
80 DWORD cbSequenceHeader;
81 BYTE bSequenceHeader[1];
82 } MPEG1VIDEOINFO;
83
84 typedef struct tagAnalogVideoInfo
85 {
86 RECT rcSource;
87 RECT rcTarget;
88 DWORD dwActiveWidth;
89 DWORD dwActiveHeight;
90 REFERENCE_TIME AvgTimePerFrame;
91 } ANALOGVIDEOINFO;
92
93 #define TRUECOLOR(PBMIH) ((TRUECOLORINFO *)(((LPBYTE)&((PBMIH)->bmiHeader)) + (PBMIH)->bmiHeader.biSize))
94 #define COLORS(PBMIH) ((RGBQUAD *)(((LPBYTE)&((PBMIH)->bmiHeader)) + (PBMIH)->bmiHeader.biSize))
95 #define BITMASKS(PBMIH) ((DWORD *)(((LPBYTE)&((PBMIH)->bmiHeader)) + (PBMIH)->bmiHeader.biSize))
96
97 #define SIZE_EGA_PALETTE (iEGA_COLORS * sizeof(RGBQUAD))
98 #define SIZE_PALETTE (iPALETTE_COLORS * sizeof(RGBQUAD))
99 #define SIZE_MASKS (iMASK_COLORS * sizeof(DWORD))
100 #define SIZE_PREHEADER (FIELD_OFFSET(VIDEOINFOHEADER,bmiHeader))
101 #define SIZE_VIDEOHEADER (sizeof(BITMAPINFOHEADER) + SIZE_PREHEADER)
102
103 #define WIDTHBYTES(BTIS) ((DWORD)(((BTIS)+31) & (~31)) / 8)
104 #define DIBWIDTHBYTES(BI) (DWORD)(BI).biBitCount) * (DWORD)WIDTHBYTES((DWORD)(BI).biWidth
105 #define _DIBSIZE(BI) (DIBWIDTHBYTES(BI) * (DWORD)(BI).biHeight)
106 #define DIBSIZE(BI) ((BI).biHeight < 0 ? (-1)*(_DIBSIZE(BI)) : _DIBSIZE(BI))
107
108 #define BIT_MASKS_MATCH(PBMIH1,PBMIH2) \
109 ((PBMIH2)->dwBitMasks[iGREEN] == (PBMIH1)->dwBitMasks[iGREEN]) && \
110 (((PBMIH2)->dwBitMasks[iRED] == (PBMIH1)->dwBitMasks[iRED]) && \
111 ((PBMIH2)->dwBitMasks[iBLUE] == (PBMIH1)->dwBitMasks[iBLUE]))
112
113 #define RESET_MASKS(PBMIH) (ZeroMemory((PVOID)(PBMIH)->dwBitFields,SIZE_MASKS))
114 #define RESET_HEADER(PBMIH) (ZeroMemory((PVOID)(PBMIH),SIZE_VIDEOHEADER))
115 #define RESET_PALETTE(PBMIH) (ZeroMemory((PVOID)(PBMIH)->bmiColors,SIZE_PALETTE));
116 #define PALETTISED(PBMIH) ((PBMIH)->bmiHeader.biBitCount <= iPALETTE)
117 #define PALETTE_ENTRIES(PBMIH) ((DWORD) 1 << (PBMIH)->bmiHeader.biBitCount)
118 #define HEADER(pVideoInfo) (&(((VIDEOINFOHEADER *) (pVideoInfo))->bmiHeader))
119 #define MAX_SIZE_MPEG1_SEQUENCE_INFO 140
120 #define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
121 #define SIZE_MPEG1VIDEOINFO(pv) (FIELD_OFFSET(MPEG1VIDEOINFO, bSequenceHeader[0]) + \
122 (pv)->cbSequenceHeader)
123
124 #undef INTERFACE
125 #define INTERFACE IDirectDrawVideo
126
127 DECLARE_INTERFACE_(IDirectDrawVideo, IUnknown)
128 {
129 STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
130 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
131 STDMETHOD_(ULONG,Release)(THIS) PURE;
132 STDMETHOD(GetSwitches)(THIS_ DWORD *pSwitches) PURE;
133 STDMETHOD(SetSwitches)(THIS_ DWORD Switches) PURE;
134 STDMETHOD(GetCaps)(THIS_ DDCAPS *pCaps) PURE;
135 STDMETHOD(GetEmulatedCaps)(THIS_ DDCAPS *pCaps) PURE;
136 STDMETHOD(GetSurfaceDesc)(THIS_ DDSURFACEDESC *pSurfaceDesc) PURE;
137 STDMETHOD(GetFourCCCodes)(THIS_ DWORD *pCount,DWORD *pCodes) PURE;
138 STDMETHOD(SetDirectDraw)(THIS_ LPDIRECTDRAW pDirectDraw) PURE;
139 STDMETHOD(GetDirectDraw)(THIS_ LPDIRECTDRAW *ppDirectDraw) PURE;
140 STDMETHOD(GetSurfaceType)(THIS_ DWORD *pSurfaceType) PURE;
141 STDMETHOD(SetDefault)(THIS) PURE;
142 STDMETHOD(UseScanLine)(THIS_ long UseScanLine) PURE;
143 STDMETHOD(CanUseScanLine)(THIS_ long *UseScanLine) PURE;
144 STDMETHOD(UseOverlayStretch)(THIS_ long UseOverlayStretch) PURE;
145 STDMETHOD(CanUseOverlayStretch)(THIS_ long *UseOverlayStretch) PURE;
146 STDMETHOD(UseWhenFullScreen)(THIS_ long UseWhenFullScreen) PURE;
147 STDMETHOD(WillUseFullScreen)(THIS_ long *UseWhenFullScreen) PURE;
148 };
149
150
151 #undef INTERFACE
152 #define INTERFACE IFullScreenVideo
153
154 DECLARE_INTERFACE_(IFullScreenVideo, IUnknown)
155 {
156 STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
157 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
158 STDMETHOD_(ULONG,Release)(THIS) PURE;
159 STDMETHOD(CountModes)(THIS_ long *pModes) PURE;
160 STDMETHOD(GetModeInfo)(THIS_ long Mode,long *pWidth,long *pHeight,long *pDepth) PURE;
161 STDMETHOD(GetCurrentMode)(THIS_ long *pMode) PURE;
162 STDMETHOD(IsModeAvailable)(THIS_ long Mode) PURE;
163 STDMETHOD(IsModeEnabled)(THIS_ long Mode) PURE;
164 STDMETHOD(SetEnabled)(THIS_ long Mode,long bEnabled) PURE;
165 STDMETHOD(GetClipFactor)(THIS_ long *pClipFactor) PURE;
166 STDMETHOD(SetClipFactor)(THIS_ long ClipFactor) PURE;
167 STDMETHOD(SetMessageDrain)(THIS_ HWND hwnd) PURE;
168 STDMETHOD(GetMessageDrain)(THIS_ HWND *hwnd) PURE;
169 STDMETHOD(SetMonitor)(THIS_ long Monitor) PURE;
170 STDMETHOD(GetMonitor)(THIS_ long *Monitor) PURE;
171 STDMETHOD(HideOnDeactivate)(THIS_ long Hide) PURE;
172 STDMETHOD(IsHideOnDeactivate)(THIS) PURE;
173 STDMETHOD(SetCaption)(THIS_ BSTR strCaption) PURE;
174 STDMETHOD(GetCaption)(THIS_ BSTR *pstrCaption) PURE;
175 STDMETHOD(SetDefault)(THIS) PURE;
176 };
177
178 #undef INTERFACE
179 #define INTERFACE IQualProp
180
181 DECLARE_INTERFACE_(IQualProp, IUnknown)
182 {
183 STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
184 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
185 STDMETHOD_(ULONG,Release)(THIS) PURE;
186 STDMETHOD(get_FramesDroppedInRenderer)(THIS_ int *pcFrames) PURE;
187 STDMETHOD(get_FramesDrawn)(THIS_ int *pcFramesDrawn) PURE;
188 STDMETHOD(get_AvgFrameRate)(THIS_ int *piAvgFrameRate) PURE;
189 STDMETHOD(get_Jitter)(THIS_ int *iJitter) PURE;
190 STDMETHOD(get_AvgSyncOffset)(THIS_ int *piAvg) PURE;
191 STDMETHOD(get_DevSyncOffset)(THIS_ int *piDev) PURE;
192 };
193
194
195 #undef INTERFACE
196 #define INTERFACE IBaseVideoMixer
197
198 DECLARE_INTERFACE_(IBaseVideoMixer, IUnknown)
199 {
200 STDMETHOD(SetLeadPin)(THIS_ int iPin) PURE;
201 STDMETHOD(GetLeadPin)(THIS_ int *piPin) PURE;
202 STDMETHOD(GetInputPinCount)(THIS_ int *piPinCount) PURE;
203 STDMETHOD(IsUsingClock)(THIS_ int *pbValue) PURE;
204 STDMETHOD(SetUsingClock)(THIS_ int bValue) PURE;
205 STDMETHOD(GetClockPeriod)(THIS_ int *pbValue) PURE;
206 STDMETHOD(SetClockPeriod)(THIS_ int bValue) PURE;
207 };
208
209 #undef INTERFACE
210 #define INTERFACE IFullScreenVideoEx
211
212 DECLARE_INTERFACE_(IFullScreenVideoEx, IFullScreenVideo)
213 {
214 STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
215 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
216 STDMETHOD_(ULONG,Release)(THIS) PURE;
217 STDMETHOD(CountModes)(THIS_ long *pModes) PURE;
218 STDMETHOD(GetModeInfo)(THIS_ long Mode,long *pWidth,long *pHeight,long *pDepth) PURE;
219 STDMETHOD(GetCurrentMode)(THIS_ long *pMode) PURE;
220 STDMETHOD(IsModeAvailable)(THIS_ long Mode) PURE;
221 STDMETHOD(IsModeEnabled)(THIS_ long Mode) PURE;
222 STDMETHOD(SetEnabled)(THIS_ long Mode,long bEnabled) PURE;
223 STDMETHOD(GetClipFactor)(THIS_ long *pClipFactor) PURE;
224 STDMETHOD(SetClipFactor)(THIS_ long ClipFactor) PURE;
225 STDMETHOD(SetMessageDrain)(THIS_ HWND hwnd) PURE;
226 STDMETHOD(GetMessageDrain)(THIS_ HWND *hwnd) PURE;
227 STDMETHOD(SetMonitor)(THIS_ long Monitor) PURE;
228 STDMETHOD(GetMonitor)(THIS_ long *Monitor) PURE;
229 STDMETHOD(HideOnDeactivate)(THIS_ long Hide) PURE;
230 STDMETHOD(IsHideOnDeactivate)(THIS) PURE;
231 STDMETHOD(SetCaption)(THIS_ BSTR strCaption) PURE;
232 STDMETHOD(GetCaption)(THIS_ BSTR *pstrCaption) PURE;
233 STDMETHOD(SetDefault)(THIS) PURE;
234 STDMETHOD(SetAcceleratorTable)(THIS_ HWND hwnd,HACCEL hAccel) PURE;
235 STDMETHOD(GetAcceleratorTable)(THIS_ HWND *phwnd,HACCEL *phAccel) PURE;
236 STDMETHOD(KeepPixelAspectRatio)(THIS_ long KeepAspect) PURE;
237 STDMETHOD(IsKeepPixelAspectRatio)(THIS_ long *pKeepAspect) PURE;
238 };
239
240
241
242
243 typedef enum
244 {
245 AM_PROPERTY_FRAMESTEP_STEP = 0x01,
246 AM_PROPERTY_FRAMESTEP_CANCEL = 0x02,
247 AM_PROPERTY_FRAMESTEP_CANSTEP = 0x03,
248 AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 0x04
249 } AM_PROPERTY_FRAMESTEP;
250
251 typedef struct _AM_FRAMESTEP_STEP
252 {
253 DWORD dwFramesToStep;
254 } AM_FRAMESTEP_STEP;
255
256 #ifdef __cplusplus
257 }
258 #endif
259 #endif
260