Função ICCompress (vfw.h)
A função ICCompress compacta uma única imagem de vídeo.
Sintaxe
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
Manipule para o compressor a ser usado.
dwFlags
Sinalizador de compactação. O seguinte valor é definido:
ICCOMPRESS_KEYFRAME
O compressor deve tornar esse quadro um quadro-chave.
lpbiOutput
Ponteiro para uma estrutura BITMAPINFOHEADER que contém o formato de saída.
lpData
Ponteiro para um buffer de saída grande o suficiente para conter um quadro compactado.
lpbiInput
Ponteiro para uma estrutura BITMAPINFOHEADER que contém o formato de entrada.
lpBits
Ponteiro para o buffer de entrada.
lpckid
Reservado; não use.
lpdwFlags
Ponteiro para os sinalizadores de retorno usados no índice AVI. O seguinte valor é definido:
AVIIF_KEYFRAME
O quadro atual é um quadro-chave.
lFrameNum
Número do quadro.
dwFrameSize
Tamanho do quadro solicitado, em bytes. Especifique um valor diferente de zero se o compressor der suporte a um tamanho de quadro sugerido, conforme indicado pela presença do sinalizador VIDCF_CRUNCH retornado pela função ICGetInfo . Se esse sinalizador não estiver definido ou uma taxa de dados para o quadro não for especificada, especifique zero para esse parâmetro.
Um compressor pode ter que sacrificar a qualidade da imagem ou fazer alguma outra compensação para obter a meta de tamanho especificada nesse parâmetro.
dwQuality
Valor de qualidade solicitado para o quadro. Especifique um valor diferente de zero se o compressor der suporte a um valor de qualidade sugerido, conforme indicado pela presença do sinalizador VIDCF_QUALITY retornado por ICGetInfo. Caso contrário, especifique zero para esse parâmetro.
lpbiPrev
Ponteiro para uma estrutura BITMAPINFOHEADER que contém o formato do quadro anterior.
lpPrev
Ponteiro para a imagem descompactada do quadro anterior. Esse parâmetro não é usado para compactação temporal rápida. Especifique NULL para esse parâmetro ao compactar um quadro-chave, se o compressor não der suporte à compactação temporal ou se o compressor não exigir um buffer externo para armazenar o formato e os dados da imagem anterior.
Valor retornado
Retorna ICERR_OK se tiver êxito ou um erro de outra forma.
Comentários
Você pode obter o necessário pelo tamanho do buffer de saída enviando a mensagem ICM_COMPRESS_GET_SIZE (ou usando a macro ICCompressGetSize ).
O compressor define o conteúdo de lpdwFlags como AVIIF_KEYFRAME quando cria um quadro-chave. Se o aplicativo criar arquivos AVI, ele deverá salvar as informações retornadas para lpckid e lpdwFlags no arquivo.
Os compressores usam lpbiPrev e lpPrev para executar a compactação temporal e exigem um buffer externo para armazenar o formato e os dados do quadro anterior. Especifique NULL para lpbiPrev e lpPrev ao compactar um quadro-chave, ao executar compactação rápida ou se o compressor tiver seu próprio buffer para armazenar o formato e os dados da imagem anterior. Especifique valores não NULL para esses parâmetros se ICGetInfo retornar o sinalizador VIDCF_TEMPORAL , o compressor estiver executando compactação normal e o quadro a ser compactado não for um quadro-chave.
Requisitos
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | vfw.h |
Biblioteca | Vfw32.lib |
DLL | Msvfw32.dll |