De uitvoerindeling van een compressor bepalen

[De functie die is gekoppeld aan deze pagina, Video Compression Manager, is een verouderde functie. Microsoft raadt ten zeerste aan dat nieuwe code deze functie niet gebruikt.]

In het volgende voorbeeld wordt de macro ICCompressGetFormat grootte gebruikt om de buffergrootte te bepalen die nodig is voor de gegevens die de compressieindeling opgeven, een buffer van de juiste grootte toewijst met behulp van de functie GlobalAlloc en haalt de informatie over de compressieindeling op met behulp van de ICCompressGetFormat macro.

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); 
 

In het volgende voorbeeld wordt de ICCompressQuery macro gebruikt om te bepalen of een compressor de invoer- en uitvoerindelingen kan verwerken.

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

In het volgende voorbeeld wordt de ICCompressGetSize-macro gebruikt om de buffergrootte te bepalen en wordt een buffer van die grootte toegewezen met behulp van 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);