Функция ICCompress (vfw.h)
Функция ICCompress сжимает одно видеоидент.
Синтаксис
DWORD VFWAPIV ICCompress(
HIC hic,
DWORD dwFlags,
LPBITMAPINFOHEADER lpbiOutput,
LPVOID lpData,
LPBITMAPINFOHEADER lpbiInput,
LPVOID lpBits,
LPDWORD lpckid,
LPDWORD lpdwFlags,
LONG lFrameNum,
DWORD dwFrameSize,
DWORD dwQuality,
LPBITMAPINFOHEADER lpbiPrev,
LPVOID lpPrev
);
Параметры
hic
Ручка к используемому компрессору.
dwFlags
Флаг сжатия. Определяется следующее значение:
ICCOMPRESS_KEYFRAME
Компрессор должен сделать этот кадр ключевым кадром.
lpbiOutput
Указатель на структуру BITMAPINFOHEADER, содержащую формат вывода.
lpData
Указатель на выходной буфер, достаточно большой для размещения сжатого кадра.
lpbiInput
Указатель на структуру BITMAPINFOHEADER, содержащую формат входных данных.
lpBits
Указатель на входной буфер.
lpckid
Защищены; не использовать.
lpdwFlags
Указатель на возвращаемые флаги, используемые в индексе AVI. Определяется следующее значение:
AVIIF_KEYFRAME
Текущий кадр является ключевым кадром.
lFrameNum
Номер кадра.
dwFrameSize
Запрошенный размер кадра в байтах. Укажите ненулевое значение, если компрессор поддерживает предлагаемый размер кадра, о чем свидетельствует наличие флага VIDCF_CRUNCH , возвращаемого функцией ICGetInfo . Если этот флаг не задан или скорость передачи данных для кадра не указана, укажите ноль для этого параметра.
Компрессору может потребоваться пожертвовать качеством изображения или сделать другой компромисс, чтобы получить цель размера, указанную в этом параметре.
dwQuality
Запрошенное значение качества для кадра. Укажите ненулевое значение, если компрессор поддерживает предлагаемое значение качества, о чем свидетельствует наличие флага VIDCF_QUALITY , возвращаемого ICGetInfo. В противном случае укажите ноль для этого параметра.
lpbiPrev
Указатель на структуру BITMAPINFOHEADER, содержащую формат предыдущего кадра.
lpPrev
Указатель на несжатый образ предыдущего кадра. Этот параметр не используется для быстрого темпорального сжатия. Укажите значение NULL для этого параметра при сжатии ключевого кадра, если компрессор не поддерживает темпоральную сжатие или если компрессору не требуется внешний буфер для хранения формата и данных предыдущего изображения.
Возвращаемое значение
Возвращает ICERR_OK в случае успешного выполнения или ошибки в противном случае.
Комментарии
Требуемый размер выходного буфера можно получить, отправив сообщение ICM_COMPRESS_GET_SIZE (или с помощью макроса ICCompressGetSize ).
При создании ключевого кадра компрессор устанавливает содержимое lpdwFlagsна AVIIF_KEYFRAME . Если приложение создает AVI-файлы, оно должно сохранить в файле сведения, возвращаемые для lpckid и lpdwFlags .
Компрессоры используют lpbiPrev и lpPrev для выполнения темпорального сжатия и требуют внешнего буфера для хранения формата и данных предыдущего кадра. Укажите ЗНАЧЕНИЕ NULL для lpbiPrev и lpPrev при сжатии ключевого кадра, при выполнении быстрого сжатия или если у компрессора есть собственный буфер для хранения формата и данных предыдущего изображения. Укажите для этих параметров значения, отличные от NULL , если ICGetInfo возвращает флаг VIDCF_TEMPORAL , компрессор выполняет нормальное сжатие, а кадр для сжатия не является ключевым кадром.
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | vfw.h |
Библиотека | Vfw32.lib |
DLL | Msvfw32.dll |