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 文件,则应将返回 lpckidlpdwFlags 的信息保存在文件中。

压缩器使用 lpbiPrevlpPrev 来执行临时压缩,并需要外部缓冲区来存储上一帧的格式和数据。 在压缩关键帧时、执行快速压缩或压缩器有自己的缓冲区来存储上一个图像的格式和数据时,请为 lpbiPrevlpPrev 指定 NULL。 如果 ICGetInfo 返回VIDCF_TEMPORAL标志,压缩器正在执行正常压缩,并且要压缩的帧不是关键帧,请为这些参数指定非 NULL 值。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 vfw.h
Library Vfw32.lib
DLL Msvfw32.dll

另请参阅

视频压缩函数

视频压缩管理器