|
1 #ifndef _AMVIDEO_H |
|
2 #define _AMVIDEO_H |
|
3 #if __GNUC__ >=3 |
|
4 #pragma GCC system_header |
|
5 #endif |
|
6 |
|
7 #include <ddraw.h> |
|
8 #include <strmif.h> |
|
9 |
|
10 #ifdef __cplusplus |
|
11 extern "C" { |
|
12 #endif |
|
13 |
|
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)) |
|
36 typedef enum { |
|
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 { |
|
43 DWORD dwBitMasks[3]; |
|
44 RGBQUAD bmiColors[256]; |
|
45 } TRUECOLORINFO; |
|
46 typedef struct tagVIDEOINFOHEADER { |
|
47 RECT rcSource; |
|
48 RECT rcTarget; |
|
49 DWORD dwBitRate; |
|
50 DWORD dwBitErrorRate; |
|
51 REFERENCE_TIME AvgTimePerFrame; |
|
52 BITMAPINFOHEADER bmiHeader; |
|
53 } VIDEOINFOHEADER; |
|
54 typedef struct tagVIDEOINFO { |
|
55 RECT rcSource, |
|
56 RECT rcTarget, |
|
57 DWORD dwBitRate, |
|
58 DWORD dwBitErrorRate, |
|
59 REFERENCE_TIME AvgTimePerFrame; |
|
60 BITMAPINFOHEADER bmiHeader; |
|
61 union { |
|
62 RGBQUAD bmiColors[256]; |
|
63 DWORD dwBitMasks[3]; |
|
64 TRUECOLORINFO TrueColorInfo; |
|
65 }; |
|
66 } VIDEOINFO; |
|
67 typedef struct tagMPEG1VIDEOINFO { |
|
68 VIDEOINFOHEADER hdr; |
|
69 DWORD dwStartTimeCode; |
|
70 DWORD cbSequenceHeader; |
|
71 BYTE bSequenceHeader[1]; |
|
72 } MPEG1VIDEOINFO; |
|
73 typedef struct tagAnalogVideoInfo { |
|
74 RECT rcSource; |
|
75 RECT rcTarget; |
|
76 DWORD dwActiveWidth; |
|
77 DWORD dwActiveHeight; |
|
78 REFERENCE_TIME AvgTimePerFrame; |
|
79 } ANALOGVIDEOINFO; |
|
80 typedef struct _AM_FRAMESTEP_STEP { |
|
81 DWORD dwFramesToStep; |
|
82 } AM_FRAMESTEP_STEP; |
|
83 #define INTERFACE IDirectDrawVideo |
|
84 DECLARE_INTERFACE_(IDirectDrawVideo, IUnknown) |
|
85 { |
|
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; |
|
105 }; |
|
106 #undef INTERFACE |
|
107 #define INTERFACE IQualProp |
|
108 DECLARE_INTERFACE_(IQualProp, IUnknown) |
|
109 { |
|
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; |
|
119 }; |
|
120 #undef INTERFACE |
|
121 #define INTERFACE IFullScreenVideo |
|
122 DECLARE_INTERFACE_(IFullScreenVideo, IUnknown) |
|
123 { |
|
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; |
|
144 }; |
|
145 #undef INTERFACE |
|
146 #define INTERFACE IFullScreenVideoEx |
|
147 DECLARE_INTERFACE_(IFullScreenVideoEx, IFullScreenVideo) |
|
148 { |
|
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; |
|
173 }; |
|
174 #undef INTERFACE |
|
175 |
|
176 #ifdef __cplusplus |
|
177 } |
|
178 #endif |
|
179 #endif |