The ICCompress function compresses a single video image.
DWORD ICCompress(
HIC hic,
DWORD dwFlags,
LPBITMAPINFOHEADER lpbiOutput,
LPVOID lpData,
LPBITMAPINFOHEADER lpbiInput,
LPVOID lpBits,
LPDWORD lpckid,
LPDWORD lpdwFlags,
LONG lFrameNum,
DWORD dwFrameSize,
DWORD dwQuality,
LPBITMAPINFOHEADER lpbiPrev,
LPVOID lpPrev
);
A compressor might have to sacrifice image quality or make some other trade-off to obtain the size goal specified in this parameter.
Returns ICERR_OK if successful or an error otherwise.
You can obtain the required by size of the output buffer by sending the ICM_COMPRESS_GET_SIZE message (or by using the ICCompressGetSize macro).
The compressor sets the contents of lpdwFlags to AVIIF_KEYFRAME when it creates a key frame. If your application creates AVI files, it should save the information returned for lpckid and lpdwFlags in the file.
Compressors use lpbiPrev and lpPrev to perform temporal compression and require an external buffer to store the format and data of the previous frame. Specify NULL for lpbiPrev and lpPrev when compressing a key frame, when performing fast compression, or if the compressor has its own buffer to store the format and data of the previous image. Specify non-NULL values for these parameters if ICGetInfo returns the VIDCF_TEMPORAL flag, the compressor is performing normal compression, and the frame to compress is not a key frame.
Windows NT: Requires version 3.1 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in vfw.h.
Import Library: Use vfw32.lib.
Video Compression Manager Overview, Video Compression Functions, ICGetInfo, BITMAPINFO, ICM_COMPRESS_GET_SIZE