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


Функция 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

См. также раздел

Функции сжатия видео

Диспетчер сжатия видео