Share via


Función ICCompress (vfw.h)

La función ICCompress comprime una sola imagen de vídeo.

Sintaxis

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

Parámetros

hic

Asa al compresor que se va a utilizar.

dwFlags

Marca de compresión. Se define el siguiente valor:

ICCOMPRESS_KEYFRAME

El compresor debe hacer que este marco sea un fotograma clave.

lpbiOutput

Puntero a una estructura BITMAPINFOHEADER que contiene el formato de salida.

lpData

Puntero a un búfer de salida lo suficientemente grande como para contener un marco comprimido.

lpbiInput

Puntero a una estructura BITMAPINFOHEADER que contiene el formato de entrada.

lpBits

Puntero al búfer de entrada.

lpckid

Reservado; no usar.

lpdwFlags

Puntero a las marcas de retorno usadas en el índice AVI. Se define el siguiente valor:

AVIIF_KEYFRAME

El marco actual es un fotograma clave.

lFrameNum

Número de marco.

dwFrameSize

Tamaño de marco solicitado, en bytes. Especifique un valor distinto de cero si el compresor admite un tamaño de marco sugerido, como se indica en la presencia de la marca VIDCF_CRUNCH devuelta por la función ICGetInfo . Si no se establece esta marca o no se especifica una velocidad de datos para el marco, especifique cero para este parámetro.

Un compresor puede tener que sacrificar la calidad de la imagen o hacer algún otro equilibrio para obtener el objetivo de tamaño especificado en este parámetro.

dwQuality

Valor de calidad solicitado para el marco. Especifique un valor distinto de cero si el compresor admite un valor de calidad sugerido, como indica la presencia de la marca VIDCF_QUALITY devuelta por ICGetInfo. De lo contrario, especifique cero para este parámetro.

lpbiPrev

Puntero a una estructura BITMAPINFOHEADER que contiene el formato del fotograma anterior.

lpPrev

Puntero a la imagen sin comprimir del marco anterior. Este parámetro no se usa para la compresión temporal rápida. Especifique NULL para este parámetro al comprimir un fotograma clave, si el compresor no admite la compresión temporal, o si el compresor no requiere un búfer externo para almacenar el formato y los datos de la imagen anterior.

Valor devuelto

Devuelve ICERR_OK si se ejecuta correctamente o si se produce un error.

Comentarios

Puede obtener el requerido por el tamaño del búfer de salida enviando el mensaje de ICM_COMPRESS_GET_SIZE (o mediante la macro ICCompressGetSize ).

El compresor establece el contenido de lpdwFlags en AVIIF_KEYFRAME cuando crea un fotograma clave. Si la aplicación crea archivos AVI, debe guardar la información devuelta para lpckid y lpdwFlags en el archivo.

Los compresores usan lpbiPrev y lpPrev para realizar la compresión temporal y requieren un búfer externo para almacenar el formato y los datos del fotograma anterior. Especifique NULL para lpbiPrev y lpPrev al comprimir un fotograma clave, al realizar una compresión rápida, o si el compresor tiene su propio búfer para almacenar el formato y los datos de la imagen anterior. Especifique valores distintos de NULL para estos parámetros si ICGetInfo devuelve la marca VIDCF_TEMPORAL , el compresor está realizando compresión normal y el marco que se va a comprimir no es un fotograma clave.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado vfw.h
Library Vfw32.lib
Archivo DLL Msvfw32.dll

Consulte también

Funciones de compresión de vídeo

Administrador de compresión de vídeo