2 * Copyright (C) 2003 Robert Shearman
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 /* trick widl into thinking that it knows the DirectDraw types
22 * as there is no IDL file for them (yet) */
24 typedef void * LPDIRECTDRAW
;
25 typedef void DDSURFACEDESC
,DDCAPS
;
26 typedef DWORD RGBQUAD
;
27 typedef LONGLONG REFERENCE_TIME
;
41 } BITMAPINFOHEADER
, *PBITMAPINFOHEADER
, *LPBITMAPINFOHEADER
;
44 cpp_quote
("#include <ddraw.h>")
46 cpp_quote
("#define AMDDS_NONE 0x00")
47 cpp_quote
("#define AMDDS_DCIPS 0x01")
48 cpp_quote
("#define AMDDS_PS 0x02")
49 cpp_quote
("#define AMDDS_RGBOVR 0x04")
50 cpp_quote
("#define AMDDS_YUVOVR 0x08")
51 cpp_quote
("#define AMDDS_RGBOFF 0x10")
52 cpp_quote
("#define AMDDS_YUVOFF 0x20")
53 cpp_quote
("#define AMDDS_RGBFLP 0x40")
54 cpp_quote
("#define AMDDS_YUVFLP 0x80")
55 cpp_quote
("#define AMDDS_ALL 0xFF")
56 cpp_quote
("#define AMDDS_DEFAULT AMDDS_ALL")
58 cpp_quote
("#define AMDDS_YUV (AMDDS_YUVOFF | AMDDS_YUVOVR | AMDDS_YUVFLP)")
59 cpp_quote
("#define AMDDS_RGB (AMDDS_RGBOFF | AMDDS_RGBOVR | AMDDS_RGBFLP)")
60 cpp_quote
("#define AMDSS_PRIMARY (AMDDS_DCIPS | AMDDS_PS)")
64 pointer_default(unique)
66 interface IDirectDrawVideo
: IUnknown
68 HRESULT GetSwitches
([out] DWORD
* pSwitches
);
69 HRESULT SetSwitches
([in] DWORD Switches
);
70 HRESULT GetCaps
([out] DDCAPS
* pCaps
);
71 HRESULT GetEmulatedCaps
([out] DDCAPS
*pCaps
);
72 HRESULT GetSurfaceDesc
([out] DDSURFACEDESC
* pSurfaceDesc
);
73 HRESULT GetFourCCCodes
([out] DWORD
* pCount
, [out] DWORD
* pCodes
);
74 HRESULT SetDirectDraw
([in] LPDIRECTDRAW pDirectDraw
);
75 HRESULT GetDirectDraw
([out] LPDIRECTDRAW
* ppDirectDraw
);
76 HRESULT GetSurfaceType
([out] DWORD
* pSurfaceType
);
78 HRESULT UseScanLine
([in] long UseScanLine
);
79 HRESULT CanUseScanLine
([out] long * UseScanLine
);
80 HRESULT UseOverlayStretch
([in] long UseOverlayStretch
);
81 HRESULT CanUseOverlayStretch
([out] long * UseOverlayStretch
);
82 HRESULT UseWhenFullScreen
([in] long UseWhenFullScreen
);
83 HRESULT WillUseFullScreen
([out] long * UseWhenFullScreen
);
88 pointer_default(unique)
90 interface IQualProp
: IUnknown
92 [propget] HRESULT FramesDroppedInRenderer
([out] int * pcFrames
);
93 [propget] HRESULT FramesDrawn
([out] int * pcFramesDrawn
);
94 [propget] HRESULT AvgFrameRate
([out] int * piAvgFrameRate
);
95 [propget] HRESULT Jitter
([out] int * iJitter
);
96 [propget] HRESULT AvgSyncOffset
([out] int * piAvg
);
97 [propget] HRESULT DevSyncOffset
([out] int * piDev
);
102 pointer_default(unique)
104 interface IFullScreenVideo
: IUnknown
106 HRESULT CountModes
([out] long * pModes
);
107 HRESULT GetModeInfo
([in] long Mode
, [out] long * pWidth
, [out] long * pHeight
, [out] long * pDepth
);
108 HRESULT GetCurrentMode
([out] long * pMode
);
109 HRESULT IsModeAvailable
([in] long Mode
);
110 HRESULT IsModeEnabled
([in] long Mode
);
111 HRESULT SetEnabled
([in] long Mode
, [in] long bEnabled
);
112 HRESULT GetClipFactor
([out] long * pClipFactor
);
113 HRESULT SetClipFactor
([in] long ClipFactor
);
114 HRESULT SetMessageDrain
([in] HWND hwnd
);
115 HRESULT GetMessageDrain
([out] HWND
* hwnd
);
116 HRESULT SetMonitor
([in] long Monitor
);
117 HRESULT GetMonitor
([out] long * Monitor
);
118 HRESULT HideOnDeactivate
([in] long Hide
);
119 HRESULT IsHideOnDeactivate
();
120 HRESULT SetCaption
([in] BSTR strCaption
);
121 HRESULT GetCaption
([out] BSTR * pstrCaption
);
122 HRESULT SetDefault
();
127 pointer_default(unique)
129 interface IFullScreenVideoEx
: IFullScreenVideo
131 HRESULT SetAcceleratorTable
([in] HWND hwnd
, [in] HACCEL hAccel
);
132 HRESULT GetAcceleratorTable
([out] HWND
* phwnd
, [out] HACCEL
* phAccel
);
133 HRESULT KeepPixelAspectRatio
([in] long KeepAspect
);
134 /* FIXME: not sure is this next method is an [out] */
135 HRESULT IsKeepPixelAspectRatio
([out] long * pKeepAspect
);
140 pointer_default(unique)
142 interface IBaseVideoMixer
: IUnknown
144 HRESULT SetLeadPin
([in] int iPin
);
145 HRESULT GetLeadPin
([out] int * piPin
);
146 HRESULT GetInputPinCount
([out] int * piPinCount
);
147 HRESULT IsUsingClock
([out] int * pbValue
);
148 HRESULT SetUsingClock
([in] int bValue
);
149 HRESULT GetClockPeriod
([out] int * pbValue
);
150 HRESULT SetClockPeriod
([in] int bValue
);
153 #define iPALETTE_COLORS
256
154 #define iMASK_COLORS
3
156 cpp_quote
("#define iPALETTE_COLORS 256")
157 cpp_quote
("#define iEGA_COLORS 16")
158 cpp_quote
("#define iMASK_COLORS 3")
159 cpp_quote
("#define iTRUECOLOR 16")
160 cpp_quote
("#define iRED 0")
161 cpp_quote
("#define iGREEN 1")
162 cpp_quote
("#define iBLUE 2")
163 cpp_quote
("#define iPALETTE 8")
164 cpp_quote
("#define iMAXBITS 8")
166 typedef struct tag_TRUECOLORINFO
168 DWORD dwBitMasks
[iMASK_COLORS
];
169 RGBQUAD bmiColors
[iPALETTE_COLORS
];
172 typedef struct tagVIDEOINFOHEADER
177 DWORD dwBitErrorRate
;
178 REFERENCE_TIME AvgTimePerFrame
;
180 BITMAPINFOHEADER bmiHeader
;
183 typedef struct tagVIDEOINFO
188 DWORD dwBitErrorRate
;
189 REFERENCE_TIME AvgTimePerFrame
;
191 BITMAPINFOHEADER bmiHeader
;
195 RGBQUAD bmiColors
[iPALETTE_COLORS
];
196 DWORD dwBitMasks
[iMASK_COLORS
];
197 TRUECOLORINFO TrueColorInfo
;
201 typedef struct tagMPEG1VIDEOINFO
204 DWORD dwStartTimeCode
;
205 DWORD cbSequenceHeader
;
206 BYTE bSequenceHeader
[1];
209 cpp_quote
("#define MAX_SIZE_MPEG1_SEQUENCE_INFO 140")
210 cpp_quote
("#define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)")
212 typedef struct tagAnalogVideoInfo
217 DWORD dwActiveHeight
;
218 REFERENCE_TIME AvgTimePerFrame
;
223 AM_PROPERTY_FRAMESTEP_STEP
= 0x01,
224 AM_PROPERTY_FRAMESTEP_CANCEL
= 0x02,
225 AM_PROPERTY_FRAMESTEP_CANSTEP
= 0x03,
226 AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE
= 0x04
227 } AM_PROPERTY_FRAMESTEP
;
229 typedef struct _AM_FRAMESTEP_STEP
231 DWORD dwFramesToStep
;