Поделиться через


Определение формата выходных данных для компрессора

[Функция, связанная с этой страницей - Диспетчер сжатия видео- является устаревшим элементом. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код не использовал эту функцию.]

В следующем примере используется макрос 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);