1 #ifndef _INC_VFW
2 #define _INC_VFW
3 
4 #include <mmsystem.h>
5 
6 #ifndef aviTWOCC
7 #define aviTWOCC(C0,C1) ((WORD)(BYTE)(C0)|((WORD)(BYTE)(C1) << 8))
8 #endif
9 
10 #ifndef ICTYPE_VIDEO
11 #define ICTYPE_VIDEO mmioFOURCC('v', 'i', 'd', 'c')
12 #define ICTYPE_AUDIO mmioFOURCC('a', 'u', 'd', 'c')
13 #endif
14 
15 #ifndef ICERR_OK
16 #define ICERR_OK 0L
17 #define ICERR_DONTDRAW 1L
18 #define ICERR_NEWPALETTE 2L
19 #define ICERR_GOTOKEYFRAME 3L
20 #define ICERR_STOPDRAWING 4L
21 
22 #define ICERR_UNSUPPORTED -1L
23 #define ICERR_BADFORMAT -2L
24 #define ICERR_MEMORY -3L
25 #define ICERR_INTERNAL -4L
26 #define ICERR_BADFLAGS -5L
27 #define ICERR_BADPARAM -6L
28 #define ICERR_BADSIZE -7L
29 #define ICERR_BADHANDLE -8L
30 #define ICERR_CANTUPDATE -9L
31 #define ICERR_ABORT -10L
32 #define ICERR_ERROR -100L
33 #define ICERR_BADBITDEPTH -200L
34 #define ICERR_BADIMAGESIZE -201L
35 
36 #define ICERR_CUSTOM -400L
37 #endif
38 
39 #ifndef ICMODE_COMPRESS
40 #define ICMODE_COMPRESS 1
41 #define ICMODE_DECOMPRESS 2
42 #define ICMODE_FASTDECOMPRESS 3
43 #define ICMODE_QUERY 4
44 #define ICMODE_FASTCOMPRESS 5
45 #define ICMODE_DRAW 8
46 #endif
47 
48 #define AVIIF_LIST 0x00000001L
49 #define AVIIF_TWOCC 0x00000002L
50 #define AVIIF_KEYFRAME 0x00000010L
51 
52 #define ICCOMPRESS_KEYFRAME 0x00000001L
53 
54 typedef struct {
55 	DWORD dwFlags;
56 	LPBITMAPINFOHEADER lpbiOutput;
57 	LPVOID lpOutput;
58 	LPBITMAPINFOHEADER lpbiInput;
59 	LPVOID lpInput;
60 	LPDWORD lpckid;
61 	LPDWORD lpdwFlags;
62 	LONG lFrameNum;
63 	DWORD dwFrameSize;
64 	DWORD dwQuality;
65 	LPBITMAPINFOHEADER lpbiPrev;
66 	LPVOID lpPrev;
67 } ICCOMPRESS;
68 
69 #define ICCOMPRESSFRAMES_PADDING 0x00000001
70 
71 typedef struct {
72 	DWORD dwFlags;
73 	LPBITMAPINFOHEADER lpbiOutput;
74 	LPARAM lOutput;
75 	LPBITMAPINFOHEADER lpbiInput;
76 	LPARAM lInput;
77 	LONG lStartFrame;
78 	LONG lFrameCount;
79 	LONG lQuality;
80 	LONG lDataRate;
81 	LONG lKeyRate;
82 	DWORD dwRate;
83 	DWORD dwScale;
84 	DWORD dwOverheadPerFrame;
85 	DWORD dwReserved2;
86 	LONG (CALLBACK *GetData)(LPARAM,LONG,LPVOID,LONG);
87 	LONG (CALLBACK *PutData)(LPARAM,LONG,LPVOID,LONG);
88 } ICCOMPRESSFRAMES;
89 
90 #define ICDECOMPRESS_HURRYUP 0x80000000L
91 #define ICDECOMPRESS_UPDATE 0x40000000L
92 #define ICDECOMPRESS_PREROLL 0x20000000L
93 #define ICDECOMPRESS_NULLFRAME 0x10000000L
94 #define ICDECOMPRESS_NOTKEYFRAME 0x08000000L
95 
96 typedef struct {
97 	DWORD dwFlags;
98 	LPBITMAPINFOHEADER lpbiInput;
99 	LPVOID lpInput;
100 	LPBITMAPINFOHEADER lpbiOutput;
101 	LPVOID lpOutput;
102 	DWORD ckid;
103 } ICDECOMPRESS;
104 
105 typedef struct {
106 	DWORD dwSize;
107 	DWORD fccType;
108 	DWORD fccHandler;
109 	DWORD dwVersion;
110 	DWORD dwFlags;
111 	LRESULT dwError;
112 	LPVOID pV1Reserved;
113 	LPVOID pV2Reserved;
114 	DWORD dnDevNode;
115 } ICOPEN;
116 
117 #define ICM_USER (DRV_USER+0x0000)
118 
119 #define ICM_RESERVED ICM_RESERVED_LOW
120 #define ICM_RESERVED_LOW (DRV_USER+0x1000)
121 #define ICM_RESERVED_HIGH (DRV_USER+0x2000)
122 
123 #define ICM_GETSTATE (ICM_RESERVED+0)
124 #define ICM_SETSTATE (ICM_RESERVED+1)
125 #define ICM_GETINFO (ICM_RESERVED+2)
126 #define ICM_CONFIGURE (ICM_RESERVED+10)
127 #define ICM_ABOUT (ICM_RESERVED+11)
128 #define ICM_GETERRORTEXT (ICM_RESERVED+12)
129 #define ICM_GETFORMATNAME (ICM_RESERVED+20)
130 #define ICM_ENUMFORMATS (ICM_RESERVED+21)
131 #define ICM_GETDEFAULTQUALITY (ICM_RESERVED+30)
132 #define ICM_GETQUALITY (ICM_RESERVED+31)
133 #define ICM_SETQUALITY (ICM_RESERVED+32)
134 #define ICM_SET (ICM_RESERVED+40)
135 #define ICM_GET (ICM_RESERVED+41)
136 
137 #define ICM_FRAMERATE mmioFOURCC('F','r','m','R')
138 #define ICM_KEYFRAMERATE mmioFOURCC('K','e','y','R')
139 
140 typedef struct {
141 	DWORD dwSize;
142 	DWORD fccType;
143 	DWORD fccHandler;
144 	DWORD dwFlags;
145 	DWORD dwVersion;
146 	DWORD dwVersionICM;
147 	WCHAR szName[16];
148 	WCHAR szDescription[128];
149 	WCHAR szDriver[128];
150 } ICINFO;
151 
152 #define VIDCF_QUALITY 0x0001
153 #define VIDCF_CRUNCH 0x0002
154 #define VIDCF_TEMPORAL 0x0004
155 #define VIDCF_COMPRESSFRAMES 0x0008
156 #define VIDCF_DRAW 0x0010
157 #define VIDCF_FASTTEMPORALC 0x0020
158 #define VIDCF_FASTTEMPORALD 0x0080
159 #define VIDCF_QUALITYTIME 0x0040
160 #define VIDCF_FASTTEMPORAL (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
161 
162 #define ICVERSION 0x0104
163 
164 #define ICM_COMPRESS_GET_FORMAT (ICM_USER+4)
165 #define ICM_COMPRESS_GET_SIZE (ICM_USER+5)
166 #define ICM_COMPRESS_QUERY (ICM_USER+6)
167 #define ICM_COMPRESS_BEGIN (ICM_USER+7)
168 #define ICM_COMPRESS (ICM_USER+8)
169 #define ICM_COMPRESS_END (ICM_USER+9)
170 
171 #define ICM_DECOMPRESS_GET_FORMAT (ICM_USER+10)
172 #define ICM_DECOMPRESS_QUERY (ICM_USER+11)
173 #define ICM_DECOMPRESS_BEGIN (ICM_USER+12)
174 #define ICM_DECOMPRESS (ICM_USER+13)
175 #define ICM_DECOMPRESS_END (ICM_USER+14)
176 #define ICM_DECOMPRESS_SET_PALETTE (ICM_USER+29)
177 #define ICM_DECOMPRESS_GET_PALETTE (ICM_USER+30)
178 
179 #define ICM_DRAW_QUERY (ICM_USER+31)
180 #define ICM_DRAW_BEGIN (ICM_USER+15)
181 #define ICM_DRAW_GET_PALETTE (ICM_USER+16)
182 #define ICM_DRAW_UPDATE (ICM_USER+17)
183 #define ICM_DRAW_START (ICM_USER+18)
184 #define ICM_DRAW_STOP (ICM_USER+19)
185 #define ICM_DRAW_BITS (ICM_USER+20)
186 #define ICM_DRAW_END (ICM_USER+21)
187 #define ICM_DRAW_GETTIME (ICM_USER+32)
188 #define ICM_DRAW (ICM_USER+33)
189 #define ICM_DRAW_WINDOW (ICM_USER+34)
190 #define ICM_DRAW_SETTIME (ICM_USER+35)
191 #define ICM_DRAW_REALIZE (ICM_USER+36)
192 #define ICM_DRAW_FLUSH (ICM_USER+37)
193 #define ICM_DRAW_RENDERBUFFER (ICM_USER+38)
194 #define ICM_DRAW_START_PLAY (ICM_USER+39)
195 #define ICM_DRAW_STOP_PLAY (ICM_USER+40)
196 #define ICM_DRAW_SUGGESTFORMAT (ICM_USER+50)
197 #define ICM_DRAW_CHANGEPALETTE (ICM_USER+51)
198 #define ICM_DRAW_IDLE (ICM_USER+52)
199 #define ICM_GETBUFFERSWANTED (ICM_USER+41)
200 #define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER+42)
201 #define ICM_DECOMPRESSEX_BEGIN (ICM_USER+60)
202 #define ICM_DECOMPRESSEX_QUERY (ICM_USER+61)
203 #define ICM_DECOMPRESSEX (ICM_USER+62)
204 #define ICM_DECOMPRESSEX_END (ICM_USER+63)
205 #define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70)
206 #define ICM_COMPRESS_FRAMES (ICM_USER+71)
207 #define ICM_SET_STATUS_PROC (ICM_USER+72)
208 
209 #endif /* _INC_VFW */
210