Compartir a través de


Determinar el formato de salida de un compresor

[La característica asociada a esta página, Administrador de compresión de vídeo, es una característica heredada. Microsoft recomienda encarecidamente que el nuevo código no use esta característica.

En el ejemplo siguiente se usa la macro de tamaño ICCompressGetFormat para determinar el tamaño del búfer necesario para los datos que especifican el formato de compresión, se asigna un búfer del tamaño adecuado mediante la función GlobalAlloc y se recupera la información de formato de compresión mediante la 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); 
 

En el ejemplo siguiente se usa la macro ICCompressQuery para determinar si un compresor puede controlar los formatos de entrada y salida.

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. 
 
}
 
 

En el ejemplo siguiente se usa la macro ICCompressGetSize para determinar el tamaño del búfer y se asigna un búfer de ese tamaño mediante 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);