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 |