Redesign of the server communication protocol to allow arbitrary sized
[wine] / include / amvideo.h
1 #ifndef __WINE_AMVIDEO_H_
2 #define __WINE_AMVIDEO_H_
3
4 #include "ddraw.h"
5
6
7 typedef struct IBaseVideoMixer IBaseVideoMixer;
8 typedef struct IDirectDrawVideo IDirectDrawVideo;
9 typedef struct IFullScreenVideo IFullScreenVideo;
10 typedef struct IFullScreenVideoEx IFullScreenVideoEx;
11 typedef struct IQualProp IQualProp;
12
13
14 #define iEGA_COLORS     16
15 #define iPALETTE_COLORS 256
16 #define iMASK_COLORS    3
17 #define iRED    0
18 #define iGREEN  1
19 #define iBLUE   2
20
21 #define WIDTHBYTES(bits)        ((DWORD)((((DWORD)(bits)+31U)&(~31U))>>3))
22 #define DIBWIDTHBYTES(bi)       ((DWORD)WIDTHBYTES((bi).biWidth*(bi).biBitCount))
23 #define DIBSIZE(bi)     (DIBWIDTHBYTES(bi)*(DWORD)abs((bi).biHeight))
24
25
26 typedef struct
27 {
28         DWORD   dwBitMasks[iMASK_COLORS];
29         RGBQUAD bmiColors[iPALETTE_COLORS];
30 } TRUECOLORINFO;
31
32 typedef struct
33 {
34         RECT    rcSource;
35         RECT    rcTarget;
36         DWORD   dwBitRate;
37         DWORD   dwBitErrorRate;
38         REFERENCE_TIME  AvgTimePerFrame;
39         BITMAPINFOHEADER        bmiHeader;
40 } VIDEOINFOHEADER;
41
42 typedef struct
43 {
44         RECT    rcSource;
45         RECT    rcTarget;
46         DWORD   dwBitRate;
47         DWORD   dwBitErrorRate;
48         REFERENCE_TIME  AvgTimePerFrame;
49         BITMAPINFOHEADER        bmiHeader;
50
51     union {
52                 RGBQUAD bmiColors[iPALETTE_COLORS];
53                 DWORD   dwBitMasks[iMASK_COLORS];
54                 TRUECOLORINFO   TrueColorInfo;
55     } DUMMYUNIONNAME;
56 } VIDEOINFO;
57
58 typedef struct
59 {
60         VIDEOINFOHEADER hdr;
61         DWORD   dwStartTimeCode;
62         DWORD   cbSequenceHeader;
63         BYTE    bSequenceHeader[1];
64 } MPEG1VIDEOINFO;
65
66 typedef struct
67 {
68         RECT    rcSource;
69         RECT    rcTarget;
70         DWORD   dwActiveWidth;
71         DWORD   dwActiveHeight;
72         REFERENCE_TIME  AvgTimePerFrame;
73 } ANALOGVIDEOINFO;
74
75
76 /**************************************************************************
77  *
78  * IBaseVideoMixer interface
79  *
80  */
81
82 #define ICOM_INTERFACE IBaseVideoMixer
83 #define IBaseVideoMixer_METHODS \
84     ICOM_METHOD1(HRESULT,SetLeadPin,int,a1) \
85     ICOM_METHOD1(HRESULT,GetLeadPin,int*,a1) \
86     ICOM_METHOD1(HRESULT,GetInputPinCount,int*,a1) \
87     ICOM_METHOD1(HRESULT,IsUsingClock,int*,a1) \
88     ICOM_METHOD1(HRESULT,SetUsingClock,int,a1) \
89     ICOM_METHOD1(HRESULT,GetClockPeriod,int*,a1) \
90     ICOM_METHOD1(HRESULT,SetClockPeriod,int,a1)
91
92 #define IBaseVideoMixer_IMETHODS \
93     IUnknown_IMETHODS \
94     IBaseVideoMixer_METHODS
95
96 ICOM_DEFINE(IBaseVideoMixer,IUnknown)
97 #undef ICOM_INTERFACE
98
99     /*** IUnknown methods ***/
100 #define IBaseVideoMixer_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
101 #define IBaseVideoMixer_AddRef(p) ICOM_CALL (AddRef,p)
102 #define IBaseVideoMixer_Release(p) ICOM_CALL (Release,p)
103     /*** IBaseVideoMixer methods ***/
104 #define IBaseVideoMixer_SetLeadPin(p,a1) ICOM_CALL1(SetLeadPin,p,a1)
105 #define IBaseVideoMixer_GetLeadPin(p,a1) ICOM_CALL1(GetLeadPin,p,a1)
106 #define IBaseVideoMixer_GetInputPinCount(p,a1) ICOM_CALL1(GetInputPinCount,p,a1)
107 #define IBaseVideoMixer_IsUsingClock(p,a1) ICOM_CALL1(IsUsingClock,p,a1)
108 #define IBaseVideoMixer_SetUsingClock(p,a1) ICOM_CALL1(SetUsingClock,p,a1)
109 #define IBaseVideoMixer_GetClockPeriod(p,a1) ICOM_CALL1(GetClockPeriod,p,a1)
110 #define IBaseVideoMixer_SetClockPeriod(p,a1) ICOM_CALL1(SetClockPeriod,p,a1)
111
112 /**************************************************************************
113  *
114  * IDirectDrawVideo interface
115  *
116  */
117
118 #define ICOM_INTERFACE IDirectDrawVideo
119 #define IDirectDrawVideo_METHODS \
120     ICOM_METHOD1(HRESULT,GetSwitches,DWORD*,a1) \
121     ICOM_METHOD1(HRESULT,SetSwitches,DWORD,a1) \
122     ICOM_METHOD1(HRESULT,GetCaps,DDCAPS*,a1) \
123     ICOM_METHOD1(HRESULT,GetEmulatedCaps,DDCAPS*,a1) \
124     ICOM_METHOD1(HRESULT,GetSurfaceDesc,DDSURFACEDESC*,a1) \
125     ICOM_METHOD2(HRESULT,GetFourCCCodes,DWORD*,a1,DWORD*,a2) \
126     ICOM_METHOD1(HRESULT,SetDirectDraw,LPDIRECTDRAW,a1) \
127     ICOM_METHOD1(HRESULT,GetDirectDraw,LPDIRECTDRAW*,a1) \
128     ICOM_METHOD1(HRESULT,GetSurfaceType,DWORD*,a1) \
129     ICOM_METHOD(HRESULT,SetDefault) \
130     ICOM_METHOD1(HRESULT,UseScanLine,long,a1) \
131     ICOM_METHOD1(HRESULT,CanUseScanLine,long*,a1) \
132     ICOM_METHOD1(HRESULT,UseOverlayStretch,long,a1) \
133     ICOM_METHOD1(HRESULT,CanUseOverlayStretch,long*,a1) \
134     ICOM_METHOD1(HRESULT,UseWhenFullScreen,long,a1) \
135     ICOM_METHOD1(HRESULT,WillUseFullScreen,long*,a1)
136
137 #define IDirectDrawVideo_IMETHODS \
138     IUnknown_IMETHODS \
139     IDirectDrawVideo_METHODS
140
141 ICOM_DEFINE(IDirectDrawVideo,IUnknown)
142 #undef ICOM_INTERFACE
143
144     /*** IUnknown methods ***/
145 #define IDirectDrawVideo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
146 #define IDirectDrawVideo_AddRef(p) ICOM_CALL (AddRef,p)
147 #define IDirectDrawVideo_Release(p) ICOM_CALL (Release,p)
148     /*** IDirectDrawVideo methods ***/
149 #define IDirectDrawVideo_GetSwitches(p,a1) ICOM_CALL1(GetSwitches,p,a1)
150 #define IDirectDrawVideo_SetSwitches(p,a1) ICOM_CALL1(SetSwitches,p,a1)
151 #define IDirectDrawVideo_GetCaps(p,a1) ICOM_CALL1(GetCaps,p,a1)
152 #define IDirectDrawVideo_GetEmulatedCaps(p,a1) ICOM_CALL1(GetEmulatedCaps,p,a1)
153 #define IDirectDrawVideo_GetSurfaceDesc(p,a1) ICOM_CALL1(GetSurfaceDesc,p,a1)
154 #define IDirectDrawVideo_GetFourCCCodes(p,a1,a2) ICOM_CALL2(GetFourCCCodes,p,a1,a2)
155 #define IDirectDrawVideo_SetDirectDraw(p,a1) ICOM_CALL1(SetDirectDraw,p,a1)
156 #define IDirectDrawVideo_GetDirectDraw(p,a1) ICOM_CALL1(GetDirectDraw,p,a1)
157 #define IDirectDrawVideo_GetSurfaceType(p,a1) ICOM_CALL1(GetSurfaceType,p,a1)
158 #define IDirectDrawVideo_SetDefault(p) ICOM_CALL (SetDefault,p)
159 #define IDirectDrawVideo_UseScanLine(p,a1) ICOM_CALL1(UseScanLine,p,a1)
160 #define IDirectDrawVideo_CanUseScanLine(p,a1) ICOM_CALL1(CanUseScanLine,p,a1)
161 #define IDirectDrawVideo_UseOverlayStretch(p,a1) ICOM_CALL1(UseOverlayStretch,p,a1)
162 #define IDirectDrawVideo_CanUseOverlayStretch(p,a1) ICOM_CALL1(CanUseOverlayStretch,p,a1)
163 #define IDirectDrawVideo_UseWhenFullScreen(p,a1) ICOM_CALL1(UseWhenFullScreen,p,a1)
164 #define IDirectDrawVideo_WillUseFullScreen(p,a1) ICOM_CALL1(WillUseFullScreen,p,a1)
165
166 /**************************************************************************
167  *
168  * IFullScreenVideo interface
169  *
170  */
171
172 #define ICOM_INTERFACE IFullScreenVideo
173 #define IFullScreenVideo_METHODS \
174     ICOM_METHOD1(HRESULT,CountModes,long*,a1) \
175     ICOM_METHOD4(HRESULT,GetModeInfo,long,a1,long*,a2,long*,a3,long*,a4) \
176     ICOM_METHOD1(HRESULT,GetCurrentMode,long*,a1) \
177     ICOM_METHOD1(HRESULT,IsModeAvailable,long,a1) \
178     ICOM_METHOD1(HRESULT,IsModeEnabled,long,a1) \
179     ICOM_METHOD2(HRESULT,SetEnabled,long,a1,long,a2) \
180     ICOM_METHOD1(HRESULT,GetClipFactor,long*,a1) \
181     ICOM_METHOD1(HRESULT,SetClipFactor,long,a1) \
182     ICOM_METHOD1(HRESULT,SetMessageDrain,HWND,a1) \
183     ICOM_METHOD1(HRESULT,GetMessageDrain,HWND*,a1) \
184     ICOM_METHOD1(HRESULT,SetMonitor,long,a1) \
185     ICOM_METHOD1(HRESULT,GetMonitor,long*,a1) \
186     ICOM_METHOD1(HRESULT,HideOnDeactivate,long,a1) \
187     ICOM_METHOD(HRESULT,IsHideOnDeactivate) \
188     ICOM_METHOD1(HRESULT,SetCaption,BSTR,a1) \
189     ICOM_METHOD1(HRESULT,GetCaption,BSTR*,a1) \
190     ICOM_METHOD(HRESULT,SetDefault)
191
192 #define IFullScreenVideo_IMETHODS \
193     IUnknown_IMETHODS \
194     IFullScreenVideo_METHODS
195
196 ICOM_DEFINE(IFullScreenVideo,IUnknown)
197 #undef ICOM_INTERFACE
198
199     /*** IUnknown methods ***/
200 #define IFullScreenVideo_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
201 #define IFullScreenVideo_AddRef(p) ICOM_CALL (AddRef,p)
202 #define IFullScreenVideo_Release(p) ICOM_CALL (Release,p)
203     /*** IFullScreenVideo methods ***/
204 #define IFullScreenVideo_CountModes(p,a1) ICOM_CALL1(CountModes,p,a1)
205 #define IFullScreenVideo_GetModeInfo(p,a1,a2,a3,a4) ICOM_CALL4(GetModeInfo,p,a1,a2,a3,a4)
206 #define IFullScreenVideo_GetCurrentMode(p,a1) ICOM_CALL1(GetCurrentMode,p,a1)
207 #define IFullScreenVideo_IsModeAvailable(p,a1) ICOM_CALL1(IsModeAvailable,p,a1)
208 #define IFullScreenVideo_IsModeEnabled(p,a1) ICOM_CALL1(IsModeEnabled,p,a1)
209 #define IFullScreenVideo_SetEnabled(p,a1,a2) ICOM_CALL2(SetEnabled,p,a1,a2)
210 #define IFullScreenVideo_GetClipFactor(p,a1) ICOM_CALL1(GetClipFactor,p,a1)
211 #define IFullScreenVideo_SetClipFactor(p,a1) ICOM_CALL1(SetClipFactor,p,a1)
212 #define IFullScreenVideo_SetMessageDrain(p,a1) ICOM_CALL1(SetMessageDrain,p,a1)
213 #define IFullScreenVideo_GetMessageDrain(p,a1) ICOM_CALL1(GetMessageDrain,p,a1)
214 #define IFullScreenVideo_SetMonitor(p,a1) ICOM_CALL1(SetMonitor,p,a1)
215 #define IFullScreenVideo_GetMonitor(p,a1) ICOM_CALL1(GetMonitor,p,a1)
216 #define IFullScreenVideo_HideOnDeactivate(p,a1) ICOM_CALL1(HideOnDeactivate,p,a1)
217 #define IFullScreenVideo_IsHideOnDeactivate(p) ICOM_CALL (IsHideOnDeactivate,p)
218 #define IFullScreenVideo_SetCaption(p,a1) ICOM_CALL1(SetCaption,p,a1)
219 #define IFullScreenVideo_GetCaption(p,a1) ICOM_CALL1(GetCaption,p,a1)
220 #define IFullScreenVideo_SetDefault(p) ICOM_CALL (SetDefault,p)
221
222 /**************************************************************************
223  *
224  * IFullScreenVideoEx interface
225  *
226  */
227
228 #define ICOM_INTERFACE IFullScreenVideoEx
229 #define IFullScreenVideoEx_METHODS \
230     ICOM_METHOD2(HRESULT,SetAcceleratorTable,HWND,a1,HACCEL,a2) \
231     ICOM_METHOD2(HRESULT,GetAcceleratorTable,HWND*,a1,HACCEL*,a2) \
232     ICOM_METHOD1(HRESULT,KeepPixelAspectRatio,long,a1) \
233     ICOM_METHOD1(HRESULT,IsKeepPixelAspectRatio,long*,a1)
234
235 #define IFullScreenVideoEx_IMETHODS \
236     IFullScreenVideo_IMETHODS \
237     IFullScreenVideoEx_METHODS
238
239 ICOM_DEFINE(IFullScreenVideoEx,IFullScreenVideo)
240 #undef ICOM_INTERFACE
241
242     /*** IUnknown methods ***/
243 #define IFullScreenVideoEx_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
244 #define IFullScreenVideoEx_AddRef(p) ICOM_CALL (AddRef,p)
245 #define IFullScreenVideoEx_Release(p) ICOM_CALL (Release,p)
246     /*** IFullScreenVideo methods ***/
247 #define IFullScreenVideoEx_CountModes(p,a1) ICOM_CALL1(CountModes,p,a1)
248 #define IFullScreenVideoEx_GetModeInfo(p,a1,a2,a3,a4) ICOM_CALL4(GetModeInfo,p,a1,a2,a3,a4)
249 #define IFullScreenVideoEx_GetCurrentMode(p,a1) ICOM_CALL1(GetCurrentMode,p,a1)
250 #define IFullScreenVideoEx_IsModeAvailable(p,a1) ICOM_CALL1(IsModeAvailable,p,a1)
251 #define IFullScreenVideoEx_IsModeEnabled(p,a1) ICOM_CALL1(IsModeEnabled,p,a1)
252 #define IFullScreenVideoEx_SetEnabled(p,a1,a2) ICOM_CALL2(SetEnabled,p,a1,a2)
253 #define IFullScreenVideoEx_GetClipFactor(p,a1) ICOM_CALL1(GetClipFactor,p,a1)
254 #define IFullScreenVideoEx_SetClipFactor(p,a1) ICOM_CALL1(SetClipFactor,p,a1)
255 #define IFullScreenVideoEx_SetMessageDrain(p,a1) ICOM_CALL1(SetMessageDrain,p,a1)
256 #define IFullScreenVideoEx_GetMessageDrain(p,a1) ICOM_CALL1(GetMessageDrain,p,a1)
257 #define IFullScreenVideoEx_SetMonitor(p,a1) ICOM_CALL1(SetMonitor,p,a1)
258 #define IFullScreenVideoEx_GetMonitor(p,a1) ICOM_CALL1(GetMonitor,p,a1)
259 #define IFullScreenVideoEx_HideOnDeactivate(p,a1) ICOM_CALL1(HideOnDeactivate,p,a1)
260 #define IFullScreenVideoEx_IsHideOnDeactivate(p) ICOM_CALL (IsHideOnDeactivate,p)
261 #define IFullScreenVideoEx_SetCaption(p,a1) ICOM_CALL1(SetCaption,p,a1)
262 #define IFullScreenVideoEx_GetCaption(p,a1) ICOM_CALL1(GetCaption,p,a1)
263 #define IFullScreenVideoEx_SetDefault(p) ICOM_CALL (SetDefault,p)
264     /*** IFullScreenVideoEx methods ***/
265 #define IFullScreenVideoEx_SetAcceleratorTable(p,a1,a2) ICOM_CALL2(SetAcceleratorTable,p,a1,a2)
266 #define IFullScreenVideoEx_GetAcceleratorTable(p,a1,a2) ICOM_CALL2(GetAcceleratorTable,p,a1,a2)
267 #define IFullScreenVideoEx_KeepPixelAspectRatio(p,a1) ICOM_CALL1(KeepPixelAspectRatio,p,a1)
268 #define IFullScreenVideoEx_IsKeepPixelAspectRatio(p,a1) ICOM_CALL1(IsKeepPixelAspectRatio,p,a1)
269
270 /**************************************************************************
271  *
272  * IQualProp interface
273  *
274  */
275
276 #define ICOM_INTERFACE IQualProp
277 #define IQualProp_METHODS \
278     ICOM_METHOD1(HRESULT,get_FramesDroppedInRenderer,int*,a1) \
279     ICOM_METHOD1(HRESULT,get_FramesDrawn,int*,a1) \
280     ICOM_METHOD1(HRESULT,get_AvgFrameRate,int*,a1) \
281     ICOM_METHOD1(HRESULT,get_Jitter,int*,a1) \
282     ICOM_METHOD1(HRESULT,get_AvgSyncOffset,int*,a1) \
283     ICOM_METHOD1(HRESULT,get_DevSyncOffset,int*,a1)
284
285 #define IQualProp_IMETHODS \
286     IUnknown_IMETHODS \
287     IQualProp_METHODS
288
289 ICOM_DEFINE(IQualProp,IUnknown)
290 #undef ICOM_INTERFACE
291
292     /*** IUnknown methods ***/
293 #define IQualProp_QueryInterface(p,a1,a2) ICOM_CALL2(QueryInterface,p,a1,a2)
294 #define IQualProp_AddRef(p) ICOM_CALL (AddRef,p)
295 #define IQualProp_Release(p) ICOM_CALL (Release,p)
296     /*** IQualProp methods ***/
297 #define IQualProp_get_FramesDroppedInRenderer(p,a1) ICOM_CALL1(get_FramesDroppedInRenderer,p,a1)
298 #define IQualProp_get_FramesDrawn(p,a1) ICOM_CALL1(get_FramesDrawn,p,a1)
299 #define IQualProp_get_AvgFrameRate(p,a1) ICOM_CALL1(get_AvgFrameRate,p,a1)
300 #define IQualProp_get_Jitter(p,a1) ICOM_CALL1(get_Jitter,p,a1)
301 #define IQualProp_get_AvgSyncOffset(p,a1) ICOM_CALL1(get_AvgSyncOffset,p,a1)
302 #define IQualProp_get_DevSyncOffset(p,a1) ICOM_CALL1(get_DevSyncOffset,p,a1)
303
304
305 #endif  /* __WINE_AMVIDEO_H_ */