Determinando o formato de saída de um compressor
[O recurso associado a esta página, Gerenciador de Compactação de Vídeo, é um recurso herdado. A Microsoft recomenda fortemente que o novo código não use esse recurso.]
O exemplo a seguir usa a macro de tamanho ICCompressGetFormat para determinar o tamanho do buffer necessário para os dados que especificam o formato de compactação, aloca um buffer do tamanho apropriado usando a função GlobalAlloc e recupera as informações de formato de compactação usando a macro 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);
O exemplo a seguir usa a macro ICCompressQuery para determinar se um compressor pode manipular os formatos de entrada e saída.
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.
}
O exemplo a seguir usa a macro ICCompressGetSize para determinar o tamanho do buffer e aloca um buffer desse tamanho usando 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);