Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

564 lines
20 KiB

  1. /*
  2. * Header file for comunication with AVI installable compressors/decompressors
  3. *
  4. * Copyright (c) 1990-1993, Microsoft Corp. All rights reserved.
  5. *
  6. * Win16:
  7. *
  8. * Installable compressors should be listed in SYSTEM.INI as
  9. * follows:
  10. *
  11. * [Drivers]
  12. * VIDC.MSSQ = mssqcomp.drv
  13. * VIDC.XXXX = foodrv.drv
  14. *
  15. * Win32: (NT)
  16. *
  17. * Installable compressors should be listed in the registration database
  18. * under the key
  19. * HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32
  20. * VIDC.MSSQ = mssqcomp.dll
  21. * VIDC.XXXX = foodrv.dll
  22. *
  23. *
  24. * That is, an identifying FOURCC should be the key, and the value
  25. * should be the driver filename
  26. *
  27. */
  28. #ifndef _INC_COMPMAN
  29. #define _INC_COMPMAN
  30. #ifndef VFWAPI
  31. #ifdef WIN32
  32. #define VFWAPI __stdcall
  33. #define VFWAPIV __cdecl
  34. #else
  35. #define VFWAPI FAR PASCAL
  36. #define VFWAPIV FAR CDECL
  37. #endif
  38. #endif
  39. #ifdef __cplusplus
  40. extern "C" { /* Assume C declarations for C++ */
  41. #endif /* __cplusplus */
  42. /************************************************************************
  43. messages and structures.
  44. ************************************************************************/
  45. #ifndef HTASK
  46. #define HTASK HANDLE
  47. #endif
  48. #include <compddk.h> // include this file for the messages.
  49. /************************************************************************
  50. ICM function declarations
  51. ************************************************************************/
  52. BOOL VFWAPI ICInfo(DWORD fccType, DWORD fccHandler, ICINFO FAR * lpicinfo);
  53. BOOL VFWAPI ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags);
  54. BOOL VFWAPI ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags);
  55. LRESULT VFWAPI ICGetInfo(HIC hic, ICINFO FAR *picinfo, DWORD cb);
  56. HIC VFWAPI ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode);
  57. HIC VFWAPI ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, FARPROC lpfnHandler);
  58. LRESULT VFWAPI ICClose(HANDLE hic);
  59. LRESULT VFWAPI ICSendMessage(HIC hic, UINT msg, DWORD dw1, DWORD dw2);
  60. LRESULT VFWAPIV ICMessage(HIC hic, UINT msg, UINT cb, ...);
  61. #if 0 // Defined in COMPMAN.C
  62. #ifdef WIN32
  63. //
  64. // note NT 1.0 MSVFW32.DLL does not have this function, so fake it
  65. // with this bad function that will not work except on i386..
  66. //
  67. static LRESULT VFWAPIV ICMessage(HIC hic, UINT msg, UINT cb, ...)
  68. {
  69. return ICSendMessage(hic, msg, (DWORD)(LPVOID)(&cb+1), cb);
  70. }
  71. #endif
  72. #endif
  73. /* Values for wFlags of ICInstall() */
  74. #define ICINSTALL_FUNCTION 0x0001 // lParam is a DriverProc (function ptr)
  75. #define ICINSTALL_DRIVER 0x0002 // lParam is a driver name (string)
  76. #define ICINSTALL_HDRV 0x0004 // lParam is a HDRVR (driver handle)
  77. /************************************************************************
  78. query macros
  79. ************************************************************************/
  80. #define ICMF_CONFIGURE_QUERY 0x00000001
  81. #define ICMF_ABOUT_QUERY 0x00000001
  82. #define ICQueryAbout(hic) \
  83. (ICSendMessage(hic, ICM_ABOUT, (DWORD) -1, ICMF_ABOUT_QUERY) == ICERR_OK)
  84. #define ICAbout(hic, hwnd) \
  85. ICSendMessage(hic, ICM_ABOUT, (DWORD)(UINT)(hwnd), 0)
  86. #define ICQueryConfigure(hic) \
  87. (ICSendMessage(hic, ICM_CONFIGURE, (DWORD) -1, ICMF_CONFIGURE_QUERY) == ICERR_OK)
  88. #define ICConfigure(hic, hwnd) \
  89. ICSendMessage(hic, ICM_CONFIGURE, (DWORD)(UINT)(hwnd), 0)
  90. /************************************************************************
  91. get/set state macros
  92. ************************************************************************/
  93. #define ICGetState(hic, pv, cb) \
  94. ICSendMessage(hic, ICM_GETSTATE, (DWORD)(LPVOID)(pv), (DWORD)(cb))
  95. #define ICSetState(hic, pv, cb) \
  96. ICSendMessage(hic, ICM_SETSTATE, (DWORD)(LPVOID)(pv), (DWORD)(cb))
  97. #define ICGetStateSize(hic) \
  98. ICGetState(hic, NULL, 0)
  99. /************************************************************************
  100. get value macros
  101. ************************************************************************/
  102. static DWORD dwICValue;
  103. #define ICGetDefaultQuality(hic) \
  104. (ICSendMessage(hic, ICM_GETDEFAULTQUALITY, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD)), dwICValue)
  105. #define ICGetDefaultKeyFrameRate(hic) \
  106. (ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD)), dwICValue)
  107. /************************************************************************
  108. draw window macro
  109. ************************************************************************/
  110. #define ICDrawWindow(hic, prc) \
  111. ICSendMessage(hic, ICM_DRAW_WINDOW, (DWORD)(LPVOID)(prc), sizeof(RECT))
  112. /************************************************************************
  113. compression functions
  114. ************************************************************************/
  115. /*
  116. * ICCompress()
  117. *
  118. * compress a single frame
  119. *
  120. */
  121. DWORD VFWAPIV ICCompress(
  122. HIC hic,
  123. DWORD dwFlags, // flags
  124. LPBITMAPINFOHEADER lpbiOutput, // output format
  125. LPVOID lpData, // output data
  126. LPBITMAPINFOHEADER lpbiInput, // format of frame to compress
  127. LPVOID lpBits, // frame data to compress
  128. LPDWORD lpckid, // ckid for data in AVI file
  129. LPDWORD lpdwFlags, // flags in the AVI index.
  130. LONG lFrameNum, // frame number of seq.
  131. DWORD dwFrameSize, // reqested size in bytes. (if non zero)
  132. DWORD dwQuality, // quality within one frame
  133. LPBITMAPINFOHEADER lpbiPrev, // format of previous frame
  134. LPVOID lpPrev); // previous frame
  135. /*
  136. * ICCompressBegin()
  137. *
  138. * start compression from a source format (lpbiInput) to a dest
  139. * format (lpbiOuput) is supported.
  140. *
  141. */
  142. #define ICCompressBegin(hic, lpbiInput, lpbiOutput) \
  143. ICSendMessage(hic, ICM_COMPRESS_BEGIN, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
  144. /*
  145. * ICCompressQuery()
  146. *
  147. * determines if compression from a source format (lpbiInput) to a dest
  148. * format (lpbiOuput) is supported.
  149. *
  150. */
  151. #define ICCompressQuery(hic, lpbiInput, lpbiOutput) \
  152. ICSendMessage(hic, ICM_COMPRESS_QUERY, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
  153. /*
  154. * ICCompressGetFormat()
  155. *
  156. * get the ouput format, (format of compressed data)
  157. * if lpbiOuput is NULL return the size in bytes needed for format.
  158. *
  159. */
  160. #define ICCompressGetFormat(hic, lpbiInput, lpbiOutput) \
  161. ICSendMessage(hic, ICM_COMPRESS_GET_FORMAT, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
  162. #define ICCompressGetFormatSize(hic, lpbi) \
  163. ICCompressGetFormat(hic, lpbi, NULL)
  164. /*
  165. * ICCompressSize()
  166. *
  167. * return the maximal size of a compressed frame
  168. *
  169. */
  170. #define ICCompressGetSize(hic, lpbiInput, lpbiOutput) \
  171. ICSendMessage(hic, ICM_COMPRESS_GET_SIZE, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
  172. #define ICCompressEnd(hic) \
  173. ICSendMessage(hic, ICM_COMPRESS_END, 0, 0)
  174. /************************************************************************
  175. decompression functions
  176. ************************************************************************/
  177. /*
  178. * ICDecompress()
  179. *
  180. * decompress a single frame
  181. *
  182. */
  183. #define ICDECOMPRESS_HURRYUP 0x80000000L // don't draw just buffer (hurry up!)
  184. DWORD VFWAPIV ICDecompress(
  185. HIC hic,
  186. DWORD dwFlags, // flags (from AVI index...)
  187. LPBITMAPINFOHEADER lpbiFormat, // BITMAPINFO of compressed data
  188. // biSizeImage has the chunk size
  189. LPVOID lpData, // data
  190. LPBITMAPINFOHEADER lpbi, // DIB to decompress to
  191. LPVOID lpBits);
  192. /*
  193. * ICDecompressBegin()
  194. *
  195. * start compression from a source format (lpbiInput) to a dest
  196. * format (lpbiOuput) is supported.
  197. *
  198. */
  199. #define ICDecompressBegin(hic, lpbiInput, lpbiOutput) \
  200. ICSendMessage(hic, ICM_DECOMPRESS_BEGIN, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
  201. /*
  202. * ICDecompressQuery()
  203. *
  204. * determines if compression from a source format (lpbiInput) to a dest
  205. * format (lpbiOuput) is supported.
  206. *
  207. */
  208. #define ICDecompressQuery(hic, lpbiInput, lpbiOutput) \
  209. ICSendMessage(hic, ICM_DECOMPRESS_QUERY, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
  210. /*
  211. * ICDecompressGetFormat()
  212. *
  213. * get the ouput format, (format of un-compressed data)
  214. * if lpbiOuput is NULL return the size in bytes needed for format.
  215. *
  216. */
  217. #define ICDecompressGetFormat(hic, lpbiInput, lpbiOutput) \
  218. ((LONG) ICSendMessage(hic, ICM_DECOMPRESS_GET_FORMAT, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput)))
  219. #define ICDecompressGetFormatSize(hic, lpbi) \
  220. ICDecompressGetFormat(hic, lpbi, NULL)
  221. /*
  222. * ICDecompressGetPalette()
  223. *
  224. * get the ouput palette
  225. *
  226. */
  227. #define ICDecompressGetPalette(hic, lpbiInput, lpbiOutput) \
  228. ICSendMessage(hic, ICM_DECOMPRESS_GET_PALETTE, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
  229. #define ICDecompressSetPalette(hic, lpbiPalette) \
  230. ICSendMessage(hic, ICM_DECOMPRESS_SET_PALETTE, (DWORD)(LPVOID)(lpbiPalette), 0)
  231. #define ICDecompressEnd(hic) \
  232. ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0)
  233. /************************************************************************
  234. decompression (ex) functions
  235. ************************************************************************/
  236. /*
  237. * ICDecompressEx()
  238. *
  239. * decompress a single frame
  240. *
  241. */
  242. #define ICDecompressEx(hic, dwFlags, lpbiSrc, lpSrc, xSrc, ySrc, dxSrc, dySrc, lpbiDst, lpDst, xDst, yDst, dxDst, dyDst) \
  243. ICMessage(hic, ICM_DECOMPRESSEX, sizeof(ICDECOMPRESSEX), \
  244. (DWORD)(dwFlags), \
  245. (LPBITMAPINFOHEADER)(lpbiSrc), (LPVOID)(lpSrc), \
  246. (LPBITMAPINFOHEADER)(lpbiDst), (LPVOID)(lpDst), \
  247. (int)(xDst), (int)(yDst), (int)(dxDst), (int)(dyDst), \
  248. (int)(xSrc), (int)(ySrc), (int)(dxSrc), (int)(dySrc))
  249. /*
  250. * ICDecompressBegin()
  251. *
  252. * start compression from a source format (lpbiInput) to a dest
  253. * format (lpbiOuput) is supported.
  254. *
  255. */
  256. #define ICDecompressExBegin(hic, dwFlags, lpbiSrc, lpSrc, xSrc, ySrc, dxSrc, dySrc, lpbiDst, lpDst, xDst, yDst, dxDst, dyDst) \
  257. ICMessage(hic, ICM_DECOMPRESSEX_BEGIN, sizeof(ICDECOMPRESSEX), \
  258. (DWORD)(dwFlags), \
  259. (LPBITMAPINFOHEADER)(lpbiSrc), (LPVOID)(lpSrc), \
  260. (LPBITMAPINFOHEADER)(lpbiDst), (LPVOID)(lpDst), \
  261. (int)(xDst), (int)(yDst), (int)(dxDst), (int)(dyDst), \
  262. (int)(xSrc), (int)(ySrc), (int)(dxSrc), (int)(dySrc))
  263. /*
  264. * ICDecompressExQuery()
  265. *
  266. */
  267. #define ICDecompressExQuery(hic, dwFlags, lpbiSrc, lpSrc, xSrc, ySrc, dxSrc, dySrc, lpbiDst, lpDst, xDst, yDst, dxDst, dyDst) \
  268. ICMessage(hic, ICM_DECOMPRESSEX_QUERY, sizeof(ICDECOMPRESSEX), \
  269. (DWORD)(dwFlags), \
  270. (LPBITMAPINFOHEADER)(lpbiSrc), (LPVOID)(lpSrc), \
  271. (LPBITMAPINFOHEADER)(lpbiDst), (LPVOID)(lpDst), \
  272. (int)(xDst), (int)(yDst), (int)(dxDst), (int)(dyDst), \
  273. (int)(xSrc), (int)(ySrc), (int)(dxSrc), (int)(dySrc))
  274. #define ICDecompressExEnd(hic) \
  275. ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0)
  276. /************************************************************************
  277. drawing functions
  278. ************************************************************************/
  279. /*
  280. * ICDrawBegin()
  281. *
  282. * start decompressing data with format (lpbiInput) directly to the screen
  283. *
  284. * return zero if the decompressor supports drawing.
  285. *
  286. */
  287. #define ICDRAW_QUERY 0x00000001L // test for support
  288. #define ICDRAW_FULLSCREEN 0x00000002L // draw to full screen
  289. #define ICDRAW_HDC 0x00000004L // draw to a HDC/HWND
  290. DWORD VFWAPIV ICDrawBegin(
  291. HIC hic,
  292. DWORD dwFlags, // flags
  293. HPALETTE hpal, // palette to draw with
  294. HWND hwnd, // window to draw to
  295. HDC hdc, // HDC to draw to
  296. int xDst, // destination rectangle
  297. int yDst,
  298. int dxDst,
  299. int dyDst,
  300. LPBITMAPINFOHEADER lpbi, // format of frame to draw
  301. int xSrc, // source rectangle
  302. int ySrc,
  303. int dxSrc,
  304. int dySrc,
  305. DWORD dwRate, // frames/second = (dwRate/dwScale)
  306. DWORD dwScale);
  307. /*
  308. * ICDraw()
  309. *
  310. * decompress data directly to the screen
  311. *
  312. */
  313. #define ICDRAW_HURRYUP 0x80000000L // don't draw just buffer (hurry up!)
  314. #define ICDRAW_UPDATE 0x40000000L // don't draw just update screen
  315. DWORD VFWAPIV ICDraw(
  316. HIC hic,
  317. DWORD dwFlags, // flags
  318. LPVOID lpFormat, // format of frame to decompress
  319. LPVOID lpData, // frame data to decompress
  320. DWORD cbData, // size of data
  321. LONG lTime); // time to draw this frame
  322. #define ICDrawSuggestFormat(hic,lpbiIn,lpbiOut,dxSrc,dySrc,dxDst,dyDst,hicDecomp) \
  323. ICMessage(hic, ICM_DRAW_SUGGESTFORMAT, sizeof(ICDRAWSUGGEST), \
  324. (LPBITMAPINFOHEADER)(lpbiIn),(LPBITMAPINFOHEADER)(lpbiOut), \
  325. (int)(dxSrc),(int)(dySrc),(int)(dxDst),(int)(dyDst), (HIC)(hicDecomp))
  326. /*
  327. * ICDrawQuery()
  328. *
  329. * determines if the compressor is willing to render the specified format.
  330. *
  331. */
  332. #define ICDrawQuery(hic, lpbiInput) \
  333. ICSendMessage(hic, ICM_DRAW_QUERY, (DWORD)(LPVOID)(lpbiInput), 0L)
  334. #define ICDrawChangePalette(hic, lpbiInput) \
  335. ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, (DWORD)(LPVOID)(lpbiInput), 0L)
  336. #define ICGetBuffersWanted(hic, lpdwBuffers) \
  337. ICSendMessage(hic, ICM_GETBUFFERSWANTED, (DWORD)(LPVOID)(lpdwBuffers), 0)
  338. #define ICDrawEnd(hic) \
  339. ICSendMessage(hic, ICM_DRAW_END, 0, 0)
  340. #define ICDrawStart(hic) \
  341. ICSendMessage(hic, ICM_DRAW_START, 0, 0)
  342. #define ICDrawStartPlay(hic, lFrom, lTo) \
  343. ICSendMessage(hic, ICM_DRAW_START_PLAY, (DWORD)(lFrom), (DWORD)(lTo))
  344. #define ICDrawStop(hic) \
  345. ICSendMessage(hic, ICM_DRAW_STOP, 0, 0)
  346. #define ICDrawStopPlay(hic) \
  347. ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0)
  348. #define ICDrawGetTime(hic, lplTime) \
  349. ICSendMessage(hic, ICM_DRAW_GETTIME, (DWORD)(LPVOID)(lplTime), 0)
  350. #define ICDrawSetTime(hic, lTime) \
  351. ICSendMessage(hic, ICM_DRAW_SETTIME, (DWORD)lTime, 0)
  352. #define ICDrawRealize(hic, hdc, fBackground) \
  353. ICSendMessage(hic, ICM_DRAW_REALIZE, (DWORD)(UINT)(HDC)(hdc), (DWORD)(BOOL)(fBackground))
  354. #define ICDrawFlush(hic) \
  355. ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0)
  356. #define ICDrawRenderBuffer(hic) \
  357. ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0)
  358. /************************************************************************
  359. Status callback functions
  360. ************************************************************************/
  361. /*
  362. * ICSetStatusProc()
  363. *
  364. * Set the status callback function
  365. *
  366. */
  367. #define ICSetStatusProc(hic, dwFlags, lParam, fpfnStatus) \
  368. ICMessage(hic, ICM_SET_STATUS_PROC, sizeof(ICSETSTATUSPROC), \
  369. (DWORD)(dwFlags), \
  370. (LRESULT)(lParam), \
  371. (LONG ((CALLBACK *) ()))(fpfnStatus))
  372. /************************************************************************
  373. helper routines for DrawDib and MCIAVI...
  374. ************************************************************************/
  375. #define ICDecompressOpen(fccType, fccHandler, lpbiIn, lpbiOut) \
  376. ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS)
  377. #define ICDrawOpen(fccType, fccHandler, lpbiIn) \
  378. ICLocate(fccType, fccHandler, lpbiIn, NULL, ICMODE_DRAW)
  379. HIC VFWAPI ICLocate(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, WORD wFlags);
  380. HIC VFWAPI ICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, int BitDepth, int dx, int dy);
  381. /************************************************************************
  382. Higher level functions
  383. ************************************************************************/
  384. HANDLE VFWAPI ICImageCompress(
  385. HIC hic, // compressor to use
  386. UINT uiFlags, // flags (none yet)
  387. LPBITMAPINFO lpbiIn, // format to compress from
  388. LPVOID lpBits, // data to compress
  389. LPBITMAPINFO lpbiOut, // compress to this (NULL ==> default)
  390. LONG lQuality, // quality to use
  391. LONG FAR * plSize); // compress to this size (0=whatever)
  392. HANDLE VFWAPI ICImageDecompress(
  393. HIC hic, // compressor to use
  394. UINT uiFlags, // flags (none yet)
  395. LPBITMAPINFO lpbiIn, // format to decompress from
  396. LPVOID lpBits, // data to decompress
  397. LPBITMAPINFO lpbiOut); // decompress to this (NULL ==> default)
  398. //
  399. // Structure used by ICSeqCompressFrame and ICCompressorChoose routines
  400. // Make sure this matches the autodoc in icm.c!
  401. //
  402. typedef struct {
  403. LONG cbSize; // set to sizeof(COMPVARS) before
  404. // calling ICCompressorChoose
  405. DWORD dwFlags; // see below...
  406. HIC hic; // HIC of chosen compressor
  407. DWORD fccType; // basically ICTYPE_VIDEO
  408. DWORD fccHandler; // handler of chosen compressor or
  409. // "" or "DIB "
  410. LPBITMAPINFO lpbiIn; // input format
  411. LPBITMAPINFO lpbiOut; // output format - will compress to this
  412. LPVOID lpBitsOut;
  413. LPVOID lpBitsPrev;
  414. LONG lFrame;
  415. LONG lKey; // key frames how often?
  416. LONG lDataRate; // desired data rate KB/Sec
  417. LONG lQ; // desired quality
  418. LONG lKeyCount;
  419. LPVOID lpState; // state of compressor
  420. LONG cbState; // size of the state
  421. } COMPVARS, FAR *PCOMPVARS;
  422. // FLAGS for dwFlags element of COMPVARS structure:
  423. // set this flag if you initialize COMPVARS before calling ICCompressorChoose
  424. #define ICMF_COMPVARS_VALID 0x00000001 // COMPVARS contains valid data
  425. //
  426. // allows user to choose compressor, quality etc...
  427. //
  428. BOOL VFWAPI ICCompressorChoose(
  429. HWND hwnd, // parent window for dialog
  430. UINT uiFlags, // flags
  431. LPVOID pvIn, // input format (optional)
  432. LPVOID lpData, // input data (optional)
  433. PCOMPVARS pc, // data about the compressor/dlg
  434. LPSTR lpszTitle); // dialog title (optional)
  435. // defines for uiFlags
  436. #define ICMF_CHOOSE_KEYFRAME 0x0001 // show KeyFrame Every box
  437. #define ICMF_CHOOSE_DATARATE 0x0002 // show DataRate box
  438. #define ICMF_CHOOSE_PREVIEW 0x0004 // allow expanded preview dialog
  439. #define ICMF_CHOOSE_ALLCOMPRESSORS 0x0008 // don't only show those that
  440. // can handle the input format
  441. // or input data
  442. BOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn);
  443. void VFWAPI ICSeqCompressFrameEnd(PCOMPVARS pc);
  444. LPVOID VFWAPI ICSeqCompressFrame(
  445. PCOMPVARS pc, // set by ICCompressorChoose
  446. UINT uiFlags, // flags
  447. LPVOID lpBits, // input DIB bits
  448. BOOL FAR *pfKey, // did it end up being a key frame?
  449. LONG FAR *plSize); // size to compress to/of returned image
  450. void VFWAPI ICCompressorFree(PCOMPVARS pc);
  451. #ifdef __cplusplus
  452. } /* End of extern "C" { */
  453. #endif /* __cplusplus */
  454. #endif /* _INC_COMPMAN */
  455.