Определение формата вывода компрессора
[Функция диспетчера сжатия видео, связанная с этой страницей, является устаревшей функцией. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код не использовал эту функцию.]
В следующем примере макрос 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);