icCompress 函数 (vfw.h)
ICCompress 函数压缩单个视频图像。
语法
DWORD VFWAPIV 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
);
参数
hic
要使用的压缩器的句柄。
dwFlags
压缩标志。 定义了以下值:
ICCOMPRESS_KEYFRAME
压缩器应使此帧成为关键帧。
lpbiOutput
指向包含输出格式的 BITMAPINFOHEADER 结构的指针。
lpData
指向足以包含压缩帧的输出缓冲区的指针。
lpbiInput
指向包含输入格式的 BITMAPINFOHEADER 结构的指针。
lpBits
指向输入缓冲区的指针。
lpckid
保留值;请勿使用。
lpdwFlags
指向 AVI 索引中使用的返回标志的指针。 定义了以下值:
AVIIF_KEYFRAME
当前帧是关键帧。
lFrameNum
帧编号。
dwFrameSize
请求的帧大小(以字节为单位)。 如果压缩器支持建议的帧大小,则指定一个非零值,如 ICGetInfo 函数返回的VIDCF_CRUNCH标志的存在所指示。 如果未设置此标志或未指定帧的数据速率,请为此参数指定零。
压缩器可能必须牺牲图像质量或进行一些其他权衡才能获得此参数中指定的大小目标。
dwQuality
帧请求的质量值。 如果压缩器支持建议的质量值,请指定一个非零值,如 ICGetInfo 返回的VIDCF_QUALITY标志的存在所指示的那样。 否则,请为此参数指定零。
lpbiPrev
指向包含上一帧格式的 BITMAPINFOHEADER 结构的指针。
lpPrev
指向上一帧的未压缩图像的指针。 此参数不用于快速时态压缩。 如果压缩器不支持临时压缩,或者压缩器不需要外部缓冲区来存储上一个图像的格式和数据,请在压缩关键帧时为此参数指定 NULL 。
返回值
如果成功,则返回 ICERR_OK ,否则返回错误。
注解
可以通过 (发送 ICM_COMPRESS_GET_SIZE 消息或使用 ICCompressGetSize 宏) ,按输出缓冲区的大小获取所需的 。
压缩器将 lpdwFlags 的内容设置为在创建关键帧时 AVIIF_KEYFRAME 。 如果应用程序创建 AVI 文件,则应将返回 lpckid 和 lpdwFlags 的信息保存在文件中。
压缩器使用 lpbiPrev 和 lpPrev 来执行临时压缩,并需要外部缓冲区来存储上一帧的格式和数据。 在压缩关键帧时、执行快速压缩或压缩器有自己的缓冲区来存储上一个图像的格式和数据时,请为 lpbiPrev 和 lpPrev 指定 NULL。 如果 ICGetInfo 返回VIDCF_TEMPORAL标志,压缩器正在执行正常压缩,并且要压缩的帧不是关键帧,请为这些参数指定非 NULL 值。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | vfw.h |
Library | Vfw32.lib |
DLL | Msvfw32.dll |