Added the possibility (it is optional for backward compability) to
[wine.git] / include / amvideo.h
blob50cd4389d0a79e4769dab9bc600713a78fdab9ac
1 #ifndef __WINE_AMVIDEO_H_
2 #define __WINE_AMVIDEO_H_
4 #include "ddraw.h"
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;
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
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))
26 typedef struct
28 DWORD dwBitMasks[iMASK_COLORS];
29 RGBQUAD bmiColors[iPALETTE_COLORS];
30 } TRUECOLORINFO;
32 typedef struct
34 RECT rcSource;
35 RECT rcTarget;
36 DWORD dwBitRate;
37 DWORD dwBitErrorRate;
38 REFERENCE_TIME AvgTimePerFrame;
39 BITMAPINFOHEADER bmiHeader;
40 } VIDEOINFOHEADER;
42 typedef struct
44 RECT rcSource;
45 RECT rcTarget;
46 DWORD dwBitRate;
47 DWORD dwBitErrorRate;
48 REFERENCE_TIME AvgTimePerFrame;
49 BITMAPINFOHEADER bmiHeader;
51 union {
52 RGBQUAD bmiColors[iPALETTE_COLORS];
53 DWORD dwBitMasks[iMASK_COLORS];
54 TRUECOLORINFO TrueColorInfo;
55 } DUMMYUNIONNAME;
56 } VIDEOINFO;
58 typedef struct
60 VIDEOINFOHEADER hdr;
61 DWORD dwStartTimeCode;
62 DWORD cbSequenceHeader;
63 BYTE bSequenceHeader[1];
64 } MPEG1VIDEOINFO;
66 typedef struct
68 RECT rcSource;
69 RECT rcTarget;
70 DWORD dwActiveWidth;
71 DWORD dwActiveHeight;
72 REFERENCE_TIME AvgTimePerFrame;
73 } ANALOGVIDEOINFO;
76 /**************************************************************************
78 * IBaseVideoMixer interface
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)
92 #define IBaseVideoMixer_IMETHODS \
93 IUnknown_IMETHODS \
94 IBaseVideoMixer_METHODS
96 ICOM_DEFINE(IBaseVideoMixer,IUnknown)
97 #undef ICOM_INTERFACE
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)
112 /**************************************************************************
114 * IDirectDrawVideo interface
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)
137 #define IDirectDrawVideo_IMETHODS \
138 IUnknown_IMETHODS \
139 IDirectDrawVideo_METHODS
141 ICOM_DEFINE(IDirectDrawVideo,IUnknown)
142 #undef ICOM_INTERFACE
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)
166 /**************************************************************************
168 * IFullScreenVideo interface
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)
192 #define IFullScreenVideo_IMETHODS \
193 IUnknown_IMETHODS \
194 IFullScreenVideo_METHODS
196 ICOM_DEFINE(IFullScreenVideo,IUnknown)
197 #undef ICOM_INTERFACE
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)
222 /**************************************************************************
224 * IFullScreenVideoEx interface
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)
235 #define IFullScreenVideoEx_IMETHODS \
236 IFullScreenVideo_IMETHODS \
237 IFullScreenVideoEx_METHODS
239 ICOM_DEFINE(IFullScreenVideoEx,IFullScreenVideo)
240 #undef ICOM_INTERFACE
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)
270 /**************************************************************************
272 * IQualProp interface
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)
285 #define IQualProp_IMETHODS \
286 IUnknown_IMETHODS \
287 IQualProp_METHODS
289 ICOM_DEFINE(IQualProp,IUnknown)
290 #undef ICOM_INTERFACE
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)
305 #endif /* __WINE_AMVIDEO_H_ */