Share via


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

Confira também

Funções de compactação de vídeo

Gerenciador de Compactação de Vídeo