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 |