确定压缩器输出格式

[与此页面关联的功能 “视频压缩管理器”是一项旧功能。 Microsoft 强烈建议新代码不使用此功能。]

以下示例使用 ICCompressGetFormat 大小宏来确定指定压缩格式的数据所需的缓冲区大小,使用 GlobalAlloc 函数分配适当大小的缓冲区,并使用 ICCompressGetFormat 宏检索压缩格式信息。

LPBITMAPINFOHEADER   lpbiIn, lpbiOut; 
 
// *lpbiIn must be initialized to the input format. 
 
dwFormatSize = ICCompressGetFormatSize(hIC, lpbiIn); 
h = GlobalAlloc(GHND, dwFormatSize); 
lpbiOut = (LPBITMAPINFOHEADER)GlobalLock(h); 
ICCompressGetFormat(hIC, lpbiIn, lpbiOut); 
 

以下示例使用 ICCompressQuery 宏来确定压缩器是否可以处理输入和输出格式。

LPBITMAPINFOHEADER   lpbiIn, lpbiOut; 
 
// Both *lpbiIn and *lpbiOut must be initialized to the respective
// formats.
 

if (ICCompressQuery(hIC, lpbiIn, lpbiOut) == ICERR_OK)
{ 
 
    // Format is supported; use the compressor. 
 
}
 
 

以下示例使用 ICCompressGetSize 宏来确定缓冲区大小,并使用 GlobalAlloc 分配该大小的缓冲区。

// Find the worst-case buffer size. 
dwCompressBufferSize = ICCompressGetSize(hIC, lpbiIn, lpbiOut); 
 
// Allocate a buffer and get lpOutput to point to it. 
h = GlobalAlloc(GHND, dwCompressBufferSize); 
lpOutput = (LPVOID)GlobalLock(h);