Funzione ICCompress (vfw.h)

La funzione ICCompress comprime una singola immagine video.

Sintassi

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

Parametri

hic

Handle per il compressore da utilizzare.

dwFlags

Flag di compressione. Il valore seguente è definito:

ICCOMPRESS_KEYFRAME

Il compressore deve rendere questo fotogramma un fotogramma chiave.

lpbiOutput

Puntatore a una struttura BITMAPINFOHEADER contenente il formato di output.

lpData

Puntatore a un buffer di output sufficientemente grande da contenere un frame compresso.

lpbiInput

Puntatore a una struttura BITMAPINFOHEADER contenente il formato di input.

lpBits

Puntatore al buffer di input.

lpckid

Riservati; non usare.

lpdwFlags

Puntatore ai flag restituiti usati nell'indice AVI. Il valore seguente è definito:

AVIIF_KEYFRAME

Il fotogramma corrente è un fotogramma chiave.

lFrameNum

Numero di frame.

dwFrameSize

Dimensioni del frame richieste, in byte. Specificare un valore diverso da zero se il compressore supporta una dimensione del frame suggerita, come indicato dalla presenza del flag VIDCF_CRUNCH restituito dalla funzione ICGetInfo . Se questo flag non è impostato o non viene specificata una frequenza dei dati per il frame, specificare zero per questo parametro.

Un compressore potrebbe dover sacrificare la qualità dell'immagine o fare qualche altro compromesso per ottenere l'obiettivo di dimensione specificato in questo parametro.

dwQuality

Valore di qualità richiesto per il frame. Specificare un valore diverso da zero se il compressore supporta un valore di qualità suggerito, come indicato dalla presenza del flag VIDCF_QUALITY restituito da ICGetInfo. In caso contrario, specificare zero per questo parametro.

lpbiPrev

Puntatore a una struttura BITMAPINFOHEADER contenente il formato del frame precedente.

lpPrev

Puntatore all'immagine non compressa del frame precedente. Questo parametro non viene usato per la compressione temporale veloce. Specificare NULL per questo parametro quando si comprime un fotogramma chiave, se il compressore non supporta la compressione temporale o se il compressore non richiede un buffer esterno per archiviare il formato e i dati dell'immagine precedente.

Valore restituito

Restituisce ICERR_OK in caso di esito positivo o di errore.

Commenti

È possibile ottenere l'oggetto richiesto per dimensione del buffer di output inviando il messaggio ICM_COMPRESS_GET_SIZE (o utilizzando la macro ICCompressGetSize ).

Il compressore imposta il contenuto di lpdwFlags su AVIIF_KEYFRAME quando crea un fotogramma chiave. Se l'applicazione crea file AVI, deve salvare le informazioni restituite per lpckid e lpdwFlags nel file.

I compressori usano lpbiPrev e lpPrev per eseguire la compressione temporale e richiedono un buffer esterno per archiviare il formato e i dati del frame precedente. Specificare NULL per lpbiPrev e lpPrev durante la compressione di un fotogramma chiave, quando si esegue una compressione rapida o se il compressore dispone di un proprio buffer per archiviare il formato e i dati dell'immagine precedente. Specificare valori non NULL per questi parametri se ICGetInfo restituisce il flag VIDCF_TEMPORAL , il compressore esegue la compressione normale e il frame da comprimere non è un fotogramma chiave.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione vfw.h
Libreria Vfw32.lib
DLL Msvfw32.dll

Vedi anche

Funzioni di compressione video

Gestione compressione video